@@ -56,20 +56,6 @@ _build_main_image_py36: &build_main_image_py36
5656 --build-arg VCS_REF="$(git rev-parse --short HEAD)" \
5757 --build-arg VERSION="${CIRCLE_TAG}" /home/circleci/nipype
5858
59- _build_main_image_py27 : &build_main_image_py27
60- name : Build main image (py27)
61- no_output_timeout : 60m
62- command : |
63- tools/retry_cmd.sh -n 5 -s 15 \
64- docker build \
65- --rm=false \
66- --tag nipype/nipype:py27 \
67- --build-arg PYTHON_VERSION_MAJOR=2 \
68- --build-arg PYTHON_VERSION_MINOR=7 \
69- --build-arg BUILD_DATE="$(date -u +"%Y-%m-%dT%H:%M:%SZ")" \
70- --build-arg VCS_REF="$(git rev-parse --short HEAD)" \
71- --build-arg VERSION="${CIRCLE_TAG}-py27" /home/circleci/nipype
72-
7359_download_test_data : &_download_test_data
7460 name : Download test data
7561 no_output_timeout : 20m
@@ -113,7 +99,6 @@ _run_codecov_smoke: &_run_codecov_smoke
11399
114100version : 2
115101jobs :
116-
117102 compare_base_dockerfiles :
118103 docker :
119104 - image : docker:17.10.0-ce-git
@@ -161,144 +146,32 @@ jobs:
161146 - run : *modify_nipype_version
162147 - run : *get_base_image
163148 - run : *build_main_image_py36
164- - run : *build_main_image_py27
165149 - run : *_get_codecov
166150 - run : *_download_test_data
167151 - run : *prepare_working_directory
168152 - run :
169- name : Run pytests (py36)
170- no_output_timeout : 30m
171- environment : *test_environment
172- command : bash -ux /home/circleci/nipype/.circleci/test_py3_pytest.sh
173- - run :
174- name : Run pytests (py27)
153+ name : Run pytests
175154 no_output_timeout : 30m
176155 environment : *test_environment
177- command : bash -ux /home/circleci/nipype/.circleci/test_py2_pytest .sh
156+ command : bash -ux /home/circleci/nipype/.circleci/test_pytest .sh
178157 - run : *_run_codecov_coverage
179158 - store_artifacts : *store_artifacts_kwds
180159 - store_test_results : *store_artifacts_kwds
181- - run :
182- name : Build docs (py36)
183- no_output_timeout : 30m
184- environment : *test_environment
185- command : bash -ux /home/circleci/nipype/.circleci/test_py3_docs.sh
186- - store_artifacts :
187- path : /home/circleci/work/docs
188160 - run :
189161 name : Save Docker images to workspace if on master
190162 no_output_timeout : 60m
191163 command : |
192164 if [ "$CIRCLE_BRANCH" = "master" -a -z "$CIRCLE_PULL_REQUEST" ]; then
193165 docker save nipype/nipype:base \
194166 nipype/nipype:latest \
195- nipype/nipype:py27 \
196- nipype/nipype:py36 | gzip -1 > /tmp/docker/nipype-base-latest-py36-py27.tar.gz \
197- && du -h /tmp/docker/nipype-base-latest-py36-py27.tar.gz
167+ nipype/nipype:py36 | gzip -1 > /tmp/docker/nipype-base-latest-py36.tar.gz \
168+ && du -h /tmp/docker/nipype-base-latest-py36.tar.gz
198169 fi
199170 - persist_to_workspace :
200171 root : /tmp
201172 paths :
202173 - docker
203174
204- test_py3_fmri_fsl_spm :
205- machine : *machine_kwds
206- working_directory : /home/circleci/nipype
207- steps :
208- - checkout :
209- path : /home/circleci/nipype
210- - attach_workspace :
211- at : /tmp
212- - run : *set_pr_number
213- - run : *generate_dockerfiles
214- - run : *modify_nipype_version
215- - run : *get_base_image
216- - run : *build_main_image_py36
217- - run : *_get_codecov
218- - run : *_download_test_data
219- - run : *prepare_working_directory
220- - run :
221- name : Run FSL reuse pipeline (py36)
222- no_output_timeout : 40m
223- environment : *test_environment
224- command : bash -ux /home/circleci/nipype/.circleci/test_py3_fmri_fsl_reuse_linear_l1.sh
225- - run :
226- name : Run SPM test workflow - 3D inputs (py36)
227- no_output_timeout : 40m
228- environment : *test_environment
229- command : bash -ux /home/circleci/nipype/.circleci/test_py3_fmri_spm_linear_3d.sh
230- - run :
231- name : Run SPM test workflow - 4D inputs (py36)
232- no_output_timeout : 40m
233- environment : *test_environment
234- command : bash -ux /home/circleci/nipype/.circleci/test_py3_fmri_spm_linear_4d.sh
235- - run : *_run_codecov_smoke
236- - store_artifacts : *store_artifacts_kwds
237-
238- test_py3_fmri_spm_dartel_multiproc :
239- machine : *machine_kwds
240- working_directory : /home/circleci/nipype
241- steps :
242- - checkout :
243- path : /home/circleci/nipype
244- - attach_workspace :
245- at : /tmp
246- - run : *set_pr_number
247- - run : *generate_dockerfiles
248- - run : *modify_nipype_version
249- - run : *get_base_image
250- - run : *build_main_image_py36
251- - run : *_get_codecov
252- - run : *_download_test_data
253- - run : *prepare_working_directory
254- - run :
255- name : Run SPM DARTEL Level 1 pipeline (py36)
256- no_output_timeout : 1h
257- environment : *test_environment
258- command : bash -ux /home/circleci/nipype/.circleci/test_py3_fmri_spm_dartel_multiproc_l1.sh
259- - run :
260- name : Run SPM DARTEL Level 2 pipeline (py36)
261- no_output_timeout : 30m
262- environment : *test_environment
263- command : bash -ux /home/circleci/nipype/.circleci/test_py3_fmri_spm_dartel_multiproc_l2.sh
264- - run : *_run_codecov_smoke
265- - store_artifacts : *store_artifacts_kwds
266-
267- test_fmri_spm_nested_fsl_feeds :
268- machine : *machine_kwds
269- working_directory : /home/circleci/nipype
270- steps :
271- - checkout :
272- path : /home/circleci/nipype
273- - attach_workspace :
274- at : /tmp
275- - run : *set_pr_number
276- - run : *generate_dockerfiles
277- - run : *modify_nipype_version
278- - run : *get_base_image
279- - run : *build_main_image_py36
280- - run : *build_main_image_py27
281- - run : *_get_codecov
282- - run : *_download_test_data
283- - run : *prepare_working_directory
284- - run :
285- name : Run SPM Nested Level 1 pipeline (py36)
286- no_output_timeout : 1h
287- environment : *test_environment
288- command : bash -ux /home/circleci/nipype/.circleci/test_py3_fmri_spm_nested_multiproc_l1.sh
289- - run :
290- name : Run SPM Nested Level 2 pipeline (py27)
291- no_output_timeout : 30m
292- environment : *test_environment
293- command : bash -ux /home/circleci/nipype/.circleci/test_py2_fmri_spm_nested_multiproc_l2.sh
294- - run :
295- name : Run FSL FEEDS pipeline (py36)
296- no_output_timeout : 40m
297- environment : *test_environment
298- command : bash -ux /home/circleci/nipype/.circleci/test_py3_fmri_fsl_feeds_linear_l1.sh
299- - run : *_run_codecov_smoke
300- - store_artifacts : *store_artifacts_kwds
301-
302175 deploy_dockerhub :
303176 docker :
304177 - image : docker:17.10.0-ce-git
@@ -310,7 +183,7 @@ jobs:
310183 name : Load saved Docker images.
311184 no_output_timeout : 60m
312185 command : |
313- docker load < /tmp/docker/nipype-base-latest-py36-py27 .tar.gz
186+ docker load < /tmp/docker/nipype-base-latest-py36.tar.gz
314187 - run :
315188 name : Push to DockerHub
316189 no_output_timeout : 120m
@@ -319,7 +192,6 @@ jobs:
319192 docker push nipype/nipype:base
320193 docker push nipype/nipype:latest
321194 docker push nipype/nipype:py36
322- docker push nipype/nipype:py27
323195 - run :
324196 name : Move pruned Dockerfile to /tmp/docker/cache directory
325197 command : |
@@ -339,35 +211,34 @@ jobs:
339211 - run :
340212 name : Check pypi preconditions
341213 command : |
214+ pyenv local 3.6.5
342215 pip install --upgrade pip twine future wheel readme_renderer setuptools
343- python setup.py check -r -s
344216 python setup.py sdist bdist_wheel
345- - run :
346- name : Validate Python 2 installation
347- command : |
348- pyenv local 2.7.12
349- pip install --upgrade pip
350- pip install dist/nipype-*-py2.py3-none-any.whl
351- # Futures should install in Python 2
352- pip show futures 2>/dev/null | grep "Name: futures"
217+ twine check dist/*
353218 - run :
354219 name : Validate Python 3 installation
355220 command : |
356- pyenv local 3.5.2
221+ pyenv local 3.6.5
357222 pip install --upgrade pip
358- pip install dist/nipype-*-py2.py3-none-any.whl
359- # Futures should not install in Python 3
360- test $(pip show futures 2>/dev/null | wc -l) = "0"
223+ pip install dist/nipype-*-py3-none-any.whl
361224 - run :
362225 name : Validate Python 3.7 installation
363226 command : |
364227 pyenv local 3.7.0
365228 pip install --upgrade pip
366229 # Pre-install a version of numpy that will not pass
367230 pip install numpy==1.15.0
368- pip install dist/nipype-*-py2. py3-none-any.whl
231+ pip install dist/nipype-*-py3-none-any.whl
369232 # Numpy should be upgraded to >= 1.15.3
370233 test "$(pip show numpy | grep Version)" \> "Version: 1.15.2"
234+ - run :
235+ name : Check python_requires prevents installation on Python 3.3
236+ command : |
237+ pyenv install 3.3.7
238+ pyenv local 3.3.7
239+ FAIL=false
240+ pip install dist/nipype-*-py2.py3-none-any.whl || FAIL=true
241+ $FAIL
371242 - store_artifacts :
372243 path : /home/circleci/nipype/dist
373244
@@ -380,7 +251,8 @@ jobs:
380251 - run :
381252 name : Deploy to PyPI
382253 command : |
383- pip install --upgrade twine future wheel readme_renderer setuptools
254+ pyenv local 3.6.5
255+ pip install --upgrade twine wheel readme_renderer setuptools
384256 python setup.py check -r -s
385257 python setup.py sdist bdist_wheel
386258 twine upload dist/*
@@ -417,44 +289,72 @@ jobs:
417289 ssh-add ~/.ssh/id_ed25519
418290 /home/circleci/nipype/tools/feedstock.sh
419291
292+ build_docs :
293+ docker :
294+ - image : python:3.7.4
295+ working_directory : /tmp/src/nipype
296+ environment :
297+ - FSLOUTPUTTYPE : ' NIFTI'
298+ steps :
299+ - checkout
300+ - run :
301+ name : Check Python version and upgrade pip
302+ command : |
303+ python --version
304+ python -m pip install -U pip
305+ - run :
306+ name : Install graphviz
307+ command : |
308+ apt-get update
309+ apt-get install -y graphviz
310+ - run :
311+ name : Install Requirements (may contain pinned versions)
312+ command : python -m pip install -r doc/requirements.txt
313+ - run :
314+ name : Install NiPype
315+ command : python -m pip install ".[doc]"
316+ - run :
317+ name : Build documentation
318+ command : make -C doc html
319+ - store_artifacts :
320+ path : /tmp/src/nipype/doc/_build/html
321+
420322workflows :
421323 version : 2
422324 build_test_deploy :
423325 jobs :
326+ - build_docs :
327+ filters :
328+ tags :
329+ only : /.*/
424330 - pypi_precheck :
425331 filters :
426332 branches :
427- only : /rel\/.*/
333+ only : /( rel|dev) \/.*/
428334 tags :
429335 only : /.*/
430336 - compare_base_dockerfiles :
431337 filters :
338+ branches :
339+ ignore :
340+ - /docs?\/.*/
432341 tags :
433342 only : /.*/
434343 - test_pytest :
435344 filters :
345+ branches :
346+ ignore :
347+ - /docs?\/.*/
436348 tags :
437349 only : /.*/
438350 requires :
439351 - compare_base_dockerfiles
440- - test_py3_fmri_fsl_spm :
441- requires :
442- - compare_base_dockerfiles
443- - test_py3_fmri_spm_dartel_multiproc :
444- requires :
445- - compare_base_dockerfiles
446- - test_fmri_spm_nested_fsl_feeds :
447- requires :
448- - compare_base_dockerfiles
449352 - deploy_dockerhub :
450353 filters :
451354 branches :
452355 only : master
453356 requires :
454357 - test_pytest
455- - test_fmri_spm_nested_fsl_feeds
456- - test_py3_fmri_fsl_spm
457- - test_py3_fmri_spm_dartel_multiproc
458358 - deploy_pypi :
459359 filters :
460360 branches :
0 commit comments