Skip to content

Commit a566d38

Browse files
committed
CI: Build in serial, to reduce save/load steps
1 parent 7deb80f commit a566d38

File tree

1 file changed

+21
-93
lines changed

1 file changed

+21
-93
lines changed

.circleci/config.yml

Lines changed: 21 additions & 93 deletions
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ jobs:
3535
- docker/Dockerfile.base-pruned
3636
- docker/get_base_image.sh
3737

38-
fetch_base:
38+
build_images:
3939
machine:
4040
# Ubuntu 14.04 with Docker 17.10.0-ce
4141
image: circleci/classic:201710-02
@@ -72,32 +72,6 @@ jobs:
7272
echo "Error: method to get base image not understood"
7373
exit 1
7474
fi
75-
- run:
76-
name: Save Docker images to workspace
77-
no_output_timeout: 60m
78-
command: |
79-
docker save nipype/nipype:base | gzip -1 > /tmp/docker/nipype-base.tar.gz \
80-
&& du -h /tmp/docker/nipype-base.tar.gz
81-
- persist_to_workspace:
82-
root: /tmp
83-
paths:
84-
- docker/*
85-
86-
build_py2:
87-
machine:
88-
# Ubuntu 14.04 with Docker 17.10.0-ce
89-
image: circleci/classic:201710-02
90-
working_directory: /home/circleci/nipype
91-
steps:
92-
- checkout:
93-
path: /home/circleci/nipype
94-
- attach_workspace:
95-
at: /tmp
96-
- run:
97-
name: Load saved Docker images.
98-
no_output_timeout: 60m
99-
command: |
100-
docker load < /tmp/docker/nipype-base.tar.gz
10175
- run:
10276
name: Get test dependencies and generate Dockerfiles
10377
command: |
@@ -110,86 +84,49 @@ jobs:
11084
sed -i -E "s/(__version__ = )'[A-Za-z0-9.-]+'/\1'$CIRCLE_TAG'/" nipype/info.py
11185
fi
11286
- run:
113-
name: Build main image (py27)
87+
name: Build main image (py36)
11488
no_output_timeout: 60m
11589
command: |
11690
e=1 && for i in {1..5}; do
11791
docker build \
11892
--rm=false \
119-
--tag nipype/nipype:py27 \
120-
--build-arg PYTHON_VERSION_MAJOR=2 \
121-
--build-arg PYTHON_VERSION_MINOR=7 \
93+
--tag nipype/nipype:latest \
94+
--tag nipype/nipype:py36 \
12295
--build-arg BUILD_DATE="$(date -u +"%Y-%m-%dT%H:%M:%SZ")" \
12396
--build-arg VCS_REF="$(git rev-parse --short HEAD)" \
124-
--build-arg VERSION="${CIRCLE_TAG}-py27" /home/circleci/nipype \
97+
--build-arg VERSION="${CIRCLE_TAG}" /home/circleci/nipype \
12598
&& e=0 && break || sleep 15
12699
done && [ "$e" -eq "0" ]
127100
- run:
128-
name: Save Docker images to workspace
129-
no_output_timeout: 60m
130-
command: |
131-
docker save nipype/nipype:py27 | gzip -1 > /tmp/docker/nipype-py27.tar.gz \
132-
&& du -h /tmp/docker/nipype-py27.tar.gz
133-
- persist_to_workspace:
134-
root: /tmp
135-
paths:
136-
- docker/*
137-
138-
139-
build_py3:
140-
machine:
141-
# Ubuntu 14.04 with Docker 17.10.0-ce
142-
image: circleci/classic:201710-02
143-
working_directory: /home/circleci/nipype
144-
steps:
145-
- checkout:
146-
path: /home/circleci/nipype
147-
- attach_workspace:
148-
at: /tmp
149-
- run:
150-
name: Load saved Docker images.
151-
no_output_timeout: 60m
152-
command: |
153-
docker load < /tmp/docker/nipype-base.tar.gz
154-
- run:
155-
name: Get test dependencies and generate Dockerfiles
156-
command: |
157-
pip install --no-cache-dir codecov
158-
make gen-dockerfiles
159-
- run:
160-
name: Modify Nipype version if necessary
161-
command: |
162-
if [ "$CIRCLE_TAG" != "" ]; then
163-
sed -i -E "s/(__version__ = )'[A-Za-z0-9.-]+'/\1'$CIRCLE_TAG'/" nipype/info.py
164-
fi
165-
- run:
166-
name: Build main image (py36)
101+
name: Build main image (py27)
167102
no_output_timeout: 60m
168103
command: |
169104
e=1 && for i in {1..5}; do
170105
docker build \
171106
--rm=false \
172-
--tag nipype/nipype:latest \
173-
--tag nipype/nipype:py36 \
107+
--tag nipype/nipype:py27 \
108+
--build-arg PYTHON_VERSION_MAJOR=2 \
109+
--build-arg PYTHON_VERSION_MINOR=7 \
174110
--build-arg BUILD_DATE="$(date -u +"%Y-%m-%dT%H:%M:%SZ")" \
175111
--build-arg VCS_REF="$(git rev-parse --short HEAD)" \
176-
--build-arg VERSION="${CIRCLE_TAG}" /home/circleci/nipype \
112+
--build-arg VERSION="${CIRCLE_TAG}-py27" /home/circleci/nipype \
177113
&& e=0 && break || sleep 15
178114
done && [ "$e" -eq "0" ]
179115
- run:
180116
name: Save Docker images to workspace
181117
no_output_timeout: 60m
182118
command: |
183-
docker save nipype/nipype:latest \
184-
nipype/nipype:py36 | gzip -1 > /tmp/docker/nipype-latest-py36.tar.gz \
185-
&& du -h /tmp/docker/nipype-latest-py36.tar.gz
119+
docker save nipype/nipype:base \
120+
nipype/nipype:latest \
121+
nipype/nipype:py27 \
122+
nipype/nipype:py36 | gzip -1 > /tmp/docker/nipype-base-latest-py36-py27.tar.gz \
123+
&& du -h /tmp/docker/nipype-base-latest-py36-py27.tar.gz
186124
- persist_to_workspace:
187125
root: /tmp
188126
paths:
189127
- docker/*
190128

191-
192-
build_and_test:
129+
test:
193130
machine:
194131
# Ubuntu 14.04 with Docker 17.10.0-ce
195132
image: circleci/classic:201710-02
@@ -201,9 +138,7 @@ jobs:
201138
name: Load saved Docker images.
202139
no_output_timeout: 60m
203140
command: |
204-
docker load < /tmp/docker/nipype-base.tar.gz \
205-
&& docker load < /tmp/docker/nipype-py27.tar.gz \
206-
&& docker load < /tmp/docker/nipype-latest-py36.tar.gz
141+
docker load < /tmp/docker/nipype-base-latest-py36-py27.tar.gz
207142
- checkout:
208143
path: /home/circleci/nipype
209144
- run:
@@ -275,22 +210,15 @@ workflows:
275210
build_test_deploy:
276211
jobs:
277212
- compare_base_dockerfiles
278-
- fetch_base:
213+
- build_images:
279214
requires:
280215
- compare_base_dockerfiles
281-
- build_py2:
282-
requires:
283-
- fetch_base
284-
- build_py3:
285-
requires:
286-
- fetch_base
287-
- build_and_test:
216+
- test:
288217
requires:
289-
- build_py2
290-
- build_py3
218+
- build_images
291219
- deploy:
292220
filters:
293221
branches:
294222
only: master
295223
requires:
296-
- build_and_test
224+
- test

0 commit comments

Comments
 (0)