1- version : 2
1+ version : 2.1
2+ orbs :
3+ docker :
circleci/[email protected] 4+ codecov :
codecov/[email protected] 5+ python :
circleci/[email protected] 6+
27jobs :
3- tests :
4- docker :
5- - image : cimg/python:3.11
6- auth :
7- username : $DOCKER_USER
8- password : $DOCKER_PAT
9- working_directory : /tmp/tests
10- environment :
11- - OSF_MIRROR_PATH : /tmp/data/templateflow
12- steps :
13- - checkout :
14- path : /tmp/src/templateflow
8+ build :
9+ executor :
10+ name : python/default
11+ tag : ' 3.12'
12+
13+ # docker:
14+ # - auth:
15+ # username: $DOCKER_USERNAME
16+ # password: $DOCKER_PASSWORD
1517
18+ steps :
19+ - checkout
1620 - run :
17- name : Generate requirements.txt
1821 command : |
19- python /tmp/src/templateflow/.maint/update_requirements.py
20-
21- - restore_cache :
22- keys :
23- - deps-v11-{{ checksum "/tmp/src/templateflow/dev-requirements.txt"}}-{{ epoch }}
24- - deps-v11-{{ checksum "/tmp/src/templateflow/dev-requirements.txt"}}-
25- - deps-v11-
22+ echo 'build' > requirements.txt
23+ echo 'wheel' >> requirements.txt
24+ echo 'twine' >> requirements.txt
25+ - python/install-packages :
26+ pkg-manager : pip
27+ cache-version : build-v1
2628 - run :
27- name : Prepare environment
2829 command : |
29- python -m venv /tmp/venv
30- source /tmp/venv/bin/activate
31- python -m pip install -U pip
32- python -m pip install -r /tmp/src/templateflow/dev-requirements.txt
33- python -m pip install -U "datalad ~= 0.19.0"
34- python -m pip install -U build hatch twine pkginfo codecov
30+ python -m build
31+ python -m twine check dist/*
32+ name : Test packaging
33+ - persist_to_workspace :
34+ root : ~/project
35+ paths :
36+ - .
37+
38+ deploy_pypi :
39+ executor :
40+ name : python/default
41+ tag : ' 3.12'
42+
43+ # docker:
44+ # - auth:
45+ # username: $DOCKER_USERNAME
46+ # password: $DOCKER_PASSWORD
47+
48+ steps :
49+ - attach_workspace :
50+ at : ~/project
51+
52+ - python/install-packages :
53+ args : twine
54+ pkg-manager : pip
3555
56+ - run :
57+ command : python -m twine upload dist/*
58+ name : Upload to Pypi
59+
60+ tests :
61+ executor :
62+ name : python/default
63+ tag : ' 3.12'
64+
65+ # docker:
66+ # - auth:
67+ # username: $DOCKER_USERNAME
68+ # password: $DOCKER_PASSWORD
69+
70+ environment :
71+ - OSF_MIRROR_PATH : /tmp/data/templateflow
72+ steps :
73+ - restore_cache :
74+ keys :
75+ - annex-v1-{{ epoch }}
76+ - annex-v1-
3677 - run :
3778 name : Install git and git-annex
3879 command : |
3980 if [[ ! -e "/tmp/cache/git-annex-standalone.tar.gz" ]]; then
4081 wget -O- http://neuro.debian.net/lists/focal.us-ca.full | sudo tee /etc/apt/sources.list.d/neurodebian.sources.list
41- sudo apt-key add /tmp/src/templateflow/ .neurodebian/neurodebian.gpg
82+ sudo apt-key add .neurodebian/neurodebian.gpg
4283 sudo apt-key adv --recv-keys --keyserver hkps://keys.openpgp.org 0xA5D32F012649A5A9 || true
4384 sudo apt update && sudo apt-get install -y --no-install-recommends git-annex-standalone
4485 mkdir -p /tmp/cache
@@ -50,83 +91,80 @@ jobs:
5091 git config --global user.email "[email protected] " 5192
5293 - save_cache :
53- key : deps-v11-{{ checksum "/tmp/src/templateflow/dev-requirements.txt"}} -{{ epoch }}
94+ key : annex-v1 -{{ epoch }}
5495 paths :
5596 - " /tmp/cache"
56- - " /tmp/venv"
97+
98+ - attach_workspace :
99+ at : ~/project
57100
58101 - run :
59- name : Test packaging
60102 command : |
61- source /tmp/venv/bin/activate
62- cd /tmp/src/templateflow
63- python -m build
64- python -m twine check dist/*
103+ python .maint/update_requirements.py
104+ name : Generate requirements.txt
105+
106+ - python/install-packages :
107+ pip-dependency-file : dev-requirements.txt
108+ pkg-manager : pip
109+ cache-version : v1
65110
66111 - run :
67- name : Run tests (w/ DataLad )
112+ name : Run tests (config and others )
68113 command : |
69- source /tmp/venv/bin/activate
70- export TEMPLATEFLOW_USE_DATALAD=on
71- pytest --junit-xml=/tmp/tests/datalad.xml --cov templateflow --cov-report xml:/tmp/cov_api_dl.xml \
72- --doctest-modules /tmp/src/templateflow/templateflow
114+ python -m pytest \
115+ --junit-xml=~/tests/conftests.xml --cov templateflow --cov-report xml:~/coverage/cov_config.xml \
116+ templateflow/tests/
117+
118+ - codecov/upload :
119+ file : ~/coverage/cov_config.xml
120+ flags : config
121+ upload_name : General
73122
74123 - run :
75- name : Submit api test coverage
124+ name : Run tests (w/ DataLad)
76125 command : |
77- source /tmp/venv/bin/activate
78- codecov --file /tmp/cov_api_dl.xml --root /tmp/src/templateflow \
79- --flags api,datalad -e CIRCLE_JOB
126+ mkdir -p ~/tests/ ~/coverage/
127+ export TEMPLATEFLOW_USE_DATALAD=on
128+ python -m pytest \
129+ --junit-xml=~/tests/datalad.xml --cov templateflow --cov-report xml:~/coverage/cov_api_dl.xml \
130+ --doctest-modules templateflow/api.py
131+
132+ - codecov/upload :
133+ file : ~/coverage/cov_api_dl.xml
134+ flags : api,datalad
135+ upload_name : Datalad tests
80136
81137 - run :
82138 name : Run tests (pulling from S3)
83139 command : |
84- source /tmp/venv/bin/activate
85140 export TEMPLATEFLOW_USE_DATALAD=off
86141 export TEMPLATEFLOW_HOME=$HOME/templateflow-s3
87- pytest --junit-xml=/tmp/tests/s3.xml --cov templateflow --cov-report xml:/tmp/cov_api_s3.xml \
88- --doctest-modules /tmp/src/templateflow/templateflow/api.py
142+ python -m pytest \
143+ --junit-xml=~/tests/s3.xml --cov templateflow --cov-report xml:~/coverage/cov_api_s3.xml \
144+ --doctest-modules templateflow/api.py
89145
90- - run :
91- name : Submit api test coverage
92- command : |
93- source /tmp/venv/bin/activate
94- codecov --file /tmp/cov_api_s3.xml --root /tmp/src/templateflow \
95- --flags api,s3 -e CIRCLE_JOB
146+ - codecov/upload :
147+ file : ~/coverage/cov_api_s3.xml
148+ flags : api,s3
149+ upload_name : S3 tests
96150
97151 - run :
98152 name : Run tests (w/ DataLad, bypassed via S3)
99153 command : |
100- source /tmp/venv/bin/activate
101154 export TEMPLATEFLOW_USE_DATALAD=off
102155 export TEMPLATEFLOW_HOME=$HOME/templateflow-clean
103156 datalad install -r -s https://github.com/templateflow/templateflow $TEMPLATEFLOW_HOME
104- pytest --junit-xml=/tmp/tests/dl+s3.xml --cov templateflow --cov-report xml:/tmp/cov_api_dl_s3.xml \
105- --doctest-modules /tmp/src/templateflow/templateflow/api.py
157+ python -m pytest \
158+ --junit-xml=~/tests/dl+s3.xml --cov templateflow --cov-report xml:~/coverage/cov_api_dl_s3.xml \
159+ --doctest-modules templateflow/api.py
106160
107- - run :
108- name : Submit api test coverage
109- command : |
110- source /tmp/venv/bin/activate
111- codecov --file /tmp/cov_api_dl_s3.xml --root /tmp/src/templateflow \
112- --flags api,dls3 -e CIRCLE_JOB
113-
114- - run :
115- name : Run tests (config, parameterized TEMPLATEFLOW_USE_DATALAD)
116- command : |
117- source /tmp/venv/bin/activate
118- pytest --junit-xml=/tmp/tests/conftests.xml --cov templateflow --cov-report xml:/tmp/cov_config.xml \
119- /tmp/src/templateflow/templateflow/conf/tests/test_conf.py
120-
121- - run :
122- name : Submit config test coverage
123- command : |
124- source /tmp/venv/bin/activate
125- codecov --file /tmp/cov_config.xml --root /tmp/src/templateflow \
126- --flags config -e CIRCLE_JOB
161+ - codecov/upload :
162+ file : ~/coverage/cov_api_dl_s3.xml
163+ flags : api,dls3
164+ upload_name : Datalad-S3-bypass
127165
128166 - store_test_results :
129- path : /tmp /tests
167+ path : ~ /tests
130168
131169 build_docs :
132170 machine :
@@ -179,54 +217,38 @@ jobs:
179217 - store_artifacts :
180218 path : ~/html
181219
182- deploy_pypi :
183- docker :
184- - image : cimg/python:3.9
185- working_directory : /tmp/src/templateflow
186- steps :
187- - attach_workspace :
188- at : /tmp
189-
190- - checkout :
191- path : /tmp/src/templateflow
192-
193- - run :
194- name : Generate requirements.txt
195- command : |
196- python /tmp/src/templateflow/.maint/update_requirements.py
197-
198- - restore_cache :
199- keys :
200- - deps-v11-{{ checksum "/tmp/src/templateflow/dev-requirements.txt"}}-{{ epoch }}
201- - deps-v11-{{ checksum "/tmp/src/templateflow/dev-requirements.txt"}}-
202- - deps-v11-
203-
204- - run :
205- name : Deploy to PyPi
206- command : |
207- source /tmp/venv/bin/activate
208- python -m pip install build -U twine pkginfo
209- python -m build
210- python -m twine check dist/*
211- python -m twine upload dist/*
212-
213220workflows :
214221 version : 2
215222 build_test_deploy :
216223 jobs :
224+ - build :
225+ context :
226+ - nipreps-common
227+ filters :
228+ branches :
229+ ignore :
230+ - /docs?\/.*/
231+ tags :
232+ only : /.*/
233+
217234 - tests :
218235 context :
219236 - nipreps-common
237+ requires :
238+ - build
220239 filters :
221240 branches :
222241 ignore :
223242 - /docs?\/.*/
224243 tags :
225244 only : /.*/
245+
226246 - deploy_pypi :
227247 context :
228248 - nipreps-common
229249 requires :
250+ - build
251+ - tests
230252 - build_docs
231253 filters :
232254 branches :
0 commit comments