@@ -35,16 +35,15 @@ jobs:
35
35
- docker/Dockerfile.base-pruned
36
36
- docker/get_base_image.sh
37
37
38
-
39
- build_and_test :
40
- parallelism : 4
38
+ fetch_base :
41
39
machine :
42
40
# Ubuntu 14.04 with Docker 17.10.0-ce
43
41
image : circleci/classic:201710-02
44
42
working_directory : /home/circleci/nipype
45
43
steps :
46
44
- checkout :
47
45
path : /home/circleci/nipype
46
+ - setup_remote_docker
48
47
- attach_workspace :
49
48
at : /tmp
50
49
- run :
@@ -75,34 +74,141 @@ jobs:
75
74
exit 1
76
75
fi
77
76
- run :
78
- name : Build main image (py36)
77
+ name : Save Docker images to workspace
78
+ no_output_timeout : 60m
79
+ command : |
80
+ docker save nipype/nipype:base | gzip -1 > /tmp/docker/nipype-base.tar.gz \
81
+ && du -h /tmp/docker/nipype-base.tar.gz
82
+ - persist_to_workspace :
83
+ root : /tmp
84
+ paths :
85
+ - docker/*
86
+
87
+ build_py2 :
88
+ machine :
89
+ # Ubuntu 14.04 with Docker 17.10.0-ce
90
+ image : circleci/classic:201710-02
91
+ working_directory : /home/circleci/nipype
92
+ steps :
93
+ - checkout :
94
+ path : /home/circleci/nipype
95
+ - setup_remote_docker
96
+ - attach_workspace :
97
+ at : /tmp
98
+ - run :
99
+ name : Load saved Docker images.
100
+ no_output_timeout : 60m
101
+ command : |
102
+ docker load < /tmp/docker/nipype-base.tar.gz
103
+ - run :
104
+ name : Get test dependencies and generate Dockerfiles
105
+ command : |
106
+ pip install --no-cache-dir codecov
107
+ make gen-dockerfiles
108
+ - run :
109
+ name : Modify Nipype version if necessary
110
+ command : |
111
+ if [ "$CIRCLE_TAG" != "" ]; then
112
+ sed -i -E "s/(__version__ = )'[A-Za-z0-9.-]+'/\1'$CIRCLE_TAG'/" nipype/info.py
113
+ fi
114
+ - run :
115
+ name : Build main image (py27)
79
116
no_output_timeout : 60m
80
117
command : |
81
118
e=1 && for i in {1..5}; do
82
119
docker build \
83
120
--rm=false \
84
- --tag nipype/nipype:latest \
85
- --tag nipype/nipype:py36 \
121
+ --tag nipype/nipype:py27 \
122
+ --build-arg PYTHON_VERSION_MAJOR=2 \
123
+ --build-arg PYTHON_VERSION_MINOR=7 \
86
124
--build-arg BUILD_DATE="$(date -u +"%Y-%m-%dT%H:%M:%SZ")" \
87
125
--build-arg VCS_REF="$(git rev-parse --short HEAD)" \
88
- --build-arg VERSION="${CIRCLE_TAG}" /home/circleci/nipype \
126
+ --build-arg VERSION="${CIRCLE_TAG}-py27 " /home/circleci/nipype \
89
127
&& e=0 && break || sleep 15
90
128
done && [ "$e" -eq "0" ]
91
129
- run :
92
- name : Build main image (py27)
130
+ name : Save Docker images to workspace
131
+ no_output_timeout : 60m
132
+ command : |
133
+ docker save nipype/nipype:py27 | gzip -1 > /tmp/docker/nipype-py27.tar.gz \
134
+ && du -h /tmp/docker/nipype-py27.tar.gz
135
+ - persist_to_workspace :
136
+ root : /tmp
137
+ paths :
138
+ - docker/*
139
+
140
+
141
+ build_py3 :
142
+ machine :
143
+ # Ubuntu 14.04 with Docker 17.10.0-ce
144
+ image : circleci/classic:201710-02
145
+ working_directory : /home/circleci/nipype
146
+ steps :
147
+ - checkout :
148
+ path : /home/circleci/nipype
149
+ - setup_remote_docker
150
+ - attach_workspace :
151
+ at : /tmp
152
+ - run :
153
+ name : Load saved Docker images.
154
+ no_output_timeout : 60m
155
+ command : |
156
+ docker load < /tmp/docker/nipype-base.tar.gz
157
+ - run :
158
+ name : Get test dependencies and generate Dockerfiles
159
+ command : |
160
+ pip install --no-cache-dir codecov
161
+ make gen-dockerfiles
162
+ - run :
163
+ name : Modify Nipype version if necessary
164
+ command : |
165
+ if [ "$CIRCLE_TAG" != "" ]; then
166
+ sed -i -E "s/(__version__ = )'[A-Za-z0-9.-]+'/\1'$CIRCLE_TAG'/" nipype/info.py
167
+ fi
168
+ - run :
169
+ name : Build main image (py36)
93
170
no_output_timeout : 60m
94
171
command : |
95
172
e=1 && for i in {1..5}; do
96
173
docker build \
97
174
--rm=false \
98
- --tag nipype/nipype:py27 \
99
- --build-arg PYTHON_VERSION_MAJOR=2 \
100
- --build-arg PYTHON_VERSION_MINOR=7 \
175
+ --tag nipype/nipype:latest \
176
+ --tag nipype/nipype:py36 \
101
177
--build-arg BUILD_DATE="$(date -u +"%Y-%m-%dT%H:%M:%SZ")" \
102
178
--build-arg VCS_REF="$(git rev-parse --short HEAD)" \
103
- --build-arg VERSION="${CIRCLE_TAG}-py27 " /home/circleci/nipype \
179
+ --build-arg VERSION="${CIRCLE_TAG}" /home/circleci/nipype \
104
180
&& e=0 && break || sleep 15
105
181
done && [ "$e" -eq "0" ]
182
+ - run :
183
+ name : Save Docker images to workspace
184
+ no_output_timeout : 60m
185
+ command : |
186
+ docker save nipype/nipype:latest \
187
+ nipype/nipype:py36 | gzip -1 > /tmp/docker/nipype-latest-py36.tar.gz \
188
+ && du -h /tmp/docker/nipype-latest-py36.tar.gz
189
+ - persist_to_workspace :
190
+ root : /tmp
191
+ paths :
192
+ - docker/*
193
+
194
+
195
+ build_and_test :
196
+ machine :
197
+ # Ubuntu 14.04 with Docker 17.10.0-ce
198
+ image : circleci/classic:201710-02
199
+ working_directory : /home/circleci/nipype
200
+ steps :
201
+ - attach_workspace :
202
+ at : /tmp
203
+ - run :
204
+ name : Load saved Docker images.
205
+ no_output_timeout : 60m
206
+ command : |
207
+ docker load < /tmp/docker/nipype-base.tar.gz \
208
+ && docker load < /tmp/docker/nipype-py27.tar.gz \
209
+ && docker load < /tmp/docker/nipype-latest-py36.tar.gz
210
+ - checkout :
211
+ path : /home/circleci/nipype
106
212
- run :
107
213
name : Download test data
108
214
no_output_timeout : 20m
@@ -120,26 +226,15 @@ jobs:
120
226
curl -sSL --retry 5 --connect-timeout 15 "$DATA_NIPYPE_FSL_FEEDS" | tar xz
121
227
- run :
122
228
name : Run tests
123
- no_output_timeout : 4h
229
+ no_output_timeout : 2h
124
230
environment :
125
231
WORKDIR : /home/circleci/work
126
232
command : |
127
233
mkdir -p "$WORKDIR"
128
234
chmod -R 777 "$WORKDIR"
129
- bash /home/circleci/nipype/.circleci/tests .sh
235
+ bash /home/circleci/nipype/.circleci/pytests .sh
130
236
- store_artifacts :
131
237
path : /home/circleci/work/tests
132
- - run :
133
- name : Save Docker images to workspace
134
- no_output_timeout : 60m
135
- command : |
136
- if [ "$CIRCLE_NODE_INDEX" -eq "0" ] && [ "$CIRCLE_BRANCH" == "master" ]; then
137
- docker save nipype/nipype:base \
138
- nipype/nipype:latest \
139
- nipype/nipype:py36 \
140
- nipype/nipype:py27 | gzip -1 > /tmp/docker/nipype-base-latest-py36-py27.tar.gz
141
- du -h /tmp/docker/nipype-base-latest-py36-py27.tar.gz
142
- fi
143
238
- persist_to_workspace :
144
239
root : /tmp
145
240
paths :
@@ -180,12 +275,22 @@ jobs:
180
275
181
276
workflows :
182
277
version : 2
183
- build_test_deply :
278
+ build_test_deploy :
184
279
jobs :
185
280
- compare_base_dockerfiles
186
- - build_and_test :
281
+ - fetch_base :
187
282
requires :
188
283
- compare_base_dockerfiles
284
+ - build_py2 :
285
+ requires :
286
+ - fetch_base
287
+ - build_py3 :
288
+ requires :
289
+ - fetch_base
290
+ - build_and_test :
291
+ requires :
292
+ - build_py2
293
+ - build_py3
189
294
- deploy :
190
295
filters :
191
296
branches :
0 commit comments