Skip to content

Commit 32b276f

Browse files
authored
CI: Simplify circle config by reusing blocks (#209)
1 parent af0013c commit 32b276f

File tree

1 file changed

+64
-132
lines changed

1 file changed

+64
-132
lines changed

.circleci/config.yml

Lines changed: 64 additions & 132 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,52 @@
1+
_machine_defaults: &machine_defaults
2+
environment:
3+
TZ: "/usr/share/zoneinfo/America/New_York"
4+
SCRATCH: "/scratch"
5+
machine:
6+
image: ubuntu-2004:current
7+
docker_layer_caching: true
8+
working_directory: /tmp/src/nibabies
9+
10+
_python_defaults: &python_defaults
11+
docker:
12+
- image: circleci/python:3.9.6
13+
working_directory: /tmp/src/nibabies
14+
15+
16+
_docker_auth: &docker_auth
17+
name: Docker authentication
18+
command: |
19+
if [[ -n $DOCKER_PAT ]]; then
20+
echo "$DOCKER_PAT" | docker login -u $DOCKER_USER --password-stdin
21+
fi
22+
23+
_setup_docker_registry: &setup_docker_registry
24+
name: Set up Docker registry
25+
command: |
26+
if [[ -f /tmp/images/registry.tar.gz ]]; then
27+
echo "Loading saved registry image"
28+
docker load < /tmp/images/registry.tar.gz
29+
else
30+
echo "Pulling registry image from DockerHub"
31+
docker pull registry:2
32+
fi
33+
docker run -d -p 5000:5000 --restart=always --name=registry \
34+
-v /tmp/docker:/var/lib/registry registry:2
35+
36+
_pull_from_registry: &pull_from_registry
37+
name: Pull and tag image from local registry
38+
command: |
39+
docker pull localhost:5000/nibabies
40+
docker tag localhost:5000/nibabies nipreps/nibabies:latest
41+
142
version: 2.1
243
orbs:
344
docker: circleci/[email protected]
445

546
jobs:
647

748
build:
8-
environment:
9-
TZ: "/usr/share/zoneinfo/America/New_York"
10-
SCRATCH: "/scratch"
11-
machine:
12-
image: ubuntu-2004:202107-02
13-
working_directory: /tmp/src/nibabies
49+
<<: *machine_defaults
1450
steps:
1551
- checkout
1652
- run:
@@ -31,26 +67,15 @@ jobs:
3167
- /tmp/docker
3268
- /tmp/images
3369
- docker/install-docker-credential-helper
70+
- run: *docker_auth
71+
- run: *setup_docker_registry
3472
- run:
35-
name: Docker authentication
73+
name: Save Docker registry
3674
command: |
37-
if [[ -n $DOCKER_PAT ]]; then
38-
echo "$DOCKER_PAT" | docker login -u $DOCKER_USER --password-stdin
39-
fi
40-
- run:
41-
name: Set up Docker registry
42-
command: |
43-
if [[ -f /tmp/images/registry.tar.gz ]]; then
44-
echo "Loading saved registry image"
45-
docker load < /tmp/images/registry.tar.gz
46-
else
47-
echo "Pulling registry image from DockerHub"
48-
docker pull registry:2
75+
if [[ ! -f /tmp/images/registry.tar.gz ]]; then
4976
mkdir -p /tmp/images
5077
docker save registry:2 | gzip > /tmp/images/registry.tar.gz
5178
fi
52-
docker run -d -p 5000:5000 --restart=always --name=registry \
53-
-v /tmp/docker:/var/lib/registry registry:2
5479
- run:
5580
name: Pull images
5681
command: |
@@ -188,9 +213,7 @@ jobs:
188213
- bcp/nipype.cfg
189214

190215
test_pytest:
191-
machine:
192-
image: ubuntu-2004:202107-02
193-
working_directory: /tmp/src/nibabies
216+
<<: *machine_defaults
194217
steps:
195218
- checkout:
196219
path: /home/circleci/src/nibabies
@@ -218,29 +241,9 @@ jobs:
218241
keys:
219242
- data-v3-{{ .Branch }}-{{ .Revision }}
220243
- docker/install-docker-credential-helper
221-
- run:
222-
name: Docker authentication
223-
command: |
224-
if [[ -n $DOCKER_PAT ]]; then
225-
echo "$DOCKER_PAT" | docker login -u $DOCKER_USER --password-stdin
226-
fi
227-
- run:
228-
name: Set-up a Docker registry
229-
command: |
230-
if [[ -f /tmp/images/registry.tar.gz ]]; then
231-
echo "Loading saved registry image"
232-
docker load < /tmp/images/registry.tar.gz
233-
else
234-
echo "Pulling registry image from DockerHub"
235-
docker pull registry:2
236-
fi
237-
docker run -d -p 5000:5000 --restart=always --name=registry \
238-
-v /tmp/docker:/var/lib/registry registry:2
239-
- run:
240-
name: Pull images from local registry
241-
command: |
242-
docker pull localhost:5000/nibabies
243-
docker tag localhost:5000/nibabies nipreps/nibabies:latest
244+
- run: *docker_auth
245+
- run: *setup_docker_registry
246+
- run: *pull_from_registry
244247
- run:
245248
name: Run nibabies tests
246249
no_output_timeout: 2h
@@ -279,12 +282,10 @@ jobs:
279282
path: /tmp/data/reports
280283

281284
test_bcp:
282-
machine:
283-
image: ubuntu-2004:202107-02
284-
working_directory: /tmp/bcp
285285
environment:
286286
- FS_LICENSE: /tmp/fslicense/license.txt
287287
- DATASET: bcp
288+
<<: *machine_defaults
288289
steps:
289290
- checkout:
290291
path: /home/circleci/src/nibabies
@@ -323,29 +324,9 @@ jobs:
323324
- bcp-anat-v0-master-
324325
- bcp-anat-v0-
325326
- docker/install-docker-credential-helper
326-
- run:
327-
name: Docker authentication
328-
command: |
329-
if [[ -n $DOCKER_PAT ]]; then
330-
echo "$DOCKER_PAT" | docker login -u $DOCKER_USER --password-stdin
331-
fi
332-
- run:
333-
name: Set-up a Docker registry
334-
command: |
335-
if [[ -f /tmp/images/registry.tar.gz ]]; then
336-
echo "Loading saved registry image"
337-
docker load < /tmp/images/registry.tar.gz
338-
else
339-
echo "Pulling registry image from DockerHub"
340-
docker pull registry:2
341-
fi
342-
docker run -d -p 5000:5000 --restart=always --name=registry \
343-
-v /tmp/docker:/var/lib/registry registry:2
344-
- run:
345-
name: Pull images from local registry
346-
command: |
347-
docker pull localhost:5000/nibabies
348-
docker tag localhost:5000/nibabies nipreps/nibabies:latest
327+
- run: *docker_auth
328+
- run: *setup_docker_registry
329+
- run: *pull_from_registry
349330
- run:
350331
name: Setting up test
351332
command: |
@@ -412,11 +393,8 @@ jobs:
412393
path: /tmp/bcp/derivatives
413394

414395
deploy_docker_patches:
415-
machine:
416-
image: ubuntu-2004:202107-02
417-
working_directory: /tmp/src/nibabies
396+
<<: *machine_defaults
418397
steps:
419-
420398
- run:
421399
name: Check whether image should be deployed to Docker Hub
422400
command: |
@@ -441,29 +419,9 @@ jobs:
441419
- /tmp/docker
442420
- /tmp/images
443421
- docker/install-docker-credential-helper
444-
- run:
445-
name: Docker authentication
446-
command: |
447-
if [[ -n $DOCKER_PAT ]]; then
448-
echo "$DOCKER_PAT" | docker login -u $DOCKER_USER --password-stdin
449-
fi
450-
- run:
451-
name: Setup a Docker registry
452-
command: |
453-
if [[ -f /tmp/images/registry.tar.gz ]]; then
454-
echo "Loading saved registry image"
455-
docker load < /tmp/images/registry.tar.gz
456-
else
457-
echo "Pulling registry image from DockerHub"
458-
docker pull registry:2
459-
fi
460-
docker run -d -p 5000:5000 --restart=always --name=registry \
461-
-v /tmp/docker:/var/lib/registry registry:2
462-
- run:
463-
name: Pull images from local registry
464-
command: |
465-
docker pull localhost:5000/nibabies
466-
docker tag localhost:5000/nibabies nipreps/nibabies:latest
422+
- run: *docker_auth
423+
- run: *setup_docker_registry
424+
- run: *pull_from_registry
467425
- run:
468426
name: Deploy to Docker Hub
469427
no_output_timeout: 40m
@@ -472,9 +430,7 @@ jobs:
472430
docker push nipreps/nibabies:${CIRCLE_BRANCH#docker/}
473431
474432
deploy_docker:
475-
machine:
476-
image: ubuntu-2004:202107-02
477-
working_directory: /tmp/src/nibabies
433+
<<: *machine_defaults
478434
steps:
479435
- checkout:
480436
path: /home/circleci/src/nibabies
@@ -493,29 +449,9 @@ jobs:
493449
- /tmp/docker
494450
- /tmp/images
495451
- docker/install-docker-credential-helper
496-
- run:
497-
name: Docker authentication
498-
command: |
499-
if [[ -n $DOCKER_PAT ]]; then
500-
echo "$DOCKER_PAT" | docker login -u $DOCKER_USER --password-stdin
501-
fi
502-
- run:
503-
name: Set-up a Docker registry
504-
command: |
505-
if [[ -f /tmp/images/registry.tar.gz ]]; then
506-
echo "Loading saved registry image"
507-
docker load < /tmp/images/registry.tar.gz
508-
else
509-
echo "Pulling registry image from DockerHub"
510-
docker pull registry:2
511-
fi
512-
docker run -d -p 5000:5000 --restart=always --name=registry \
513-
-v /tmp/docker:/var/lib/registry registry:2
514-
- run:
515-
name: Pull images from local registry
516-
command: |
517-
docker pull localhost:5000/nibabies
518-
docker tag localhost:5000/nibabies nipreps/nibabies:latest
452+
- run: *docker_auth
453+
- run: *setup_docker_registry
454+
- run: *pull_from_registry
519455
- run:
520456
name: Deploy to Docker Hub
521457
no_output_timeout: 40m
@@ -532,9 +468,7 @@ jobs:
532468
fi
533469
534470
test_deploy_pypi:
535-
docker:
536-
- image: circleci/python:3.9.6
537-
working_directory: /tmp/src/nibabies
471+
<<: *python_defaults
538472
steps:
539473
- checkout
540474
- run:
@@ -603,9 +537,7 @@ jobs:
603537
path: /tmp/src/nibabies/wrapper/dist
604538

605539
deploy_pypi:
606-
docker:
607-
- image: circleci/python:3.9.6
608-
working_directory: /tmp/src/nibabies
540+
<<: *python_defaults
609541
steps:
610542
- checkout
611543
- run:

0 commit comments

Comments
 (0)