Skip to content

Commit 7d42c33

Browse files
committed
fix: update circleci config
1 parent c96b2cb commit 7d42c33

File tree

2 files changed

+132
-108
lines changed

2 files changed

+132
-108
lines changed

.circleci/config.yml

Lines changed: 126 additions & 104 deletions
Original file line numberDiff line numberDiff line change
@@ -1,44 +1,85 @@
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+
27
jobs:
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'
1512

13+
# docker:
14+
# - auth:
15+
# username: $DOCKER_USERNAME
16+
# password: $DOCKER_PASSWORD
17+
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:
67112
name: Run tests (w/ DataLad)
68113
command: |
69-
source /tmp/venv/bin/activate
114+
mkdir -p ~/tests/ ~/coverage/
70115
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
116+
python -m pytest \
117+
--junit-xml=~/tests/datalad.xml --cov templateflow --cov-report xml:~/coverage/cov_api_dl.xml \
118+
--doctest-modules templateflow/
73119
74-
- run:
75-
name: Submit api test coverage
76-
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
120+
- codecov/upload:
121+
file: ~/coverage/cov_api_dl.xml
122+
flags: api,datalad
123+
cli_args: "-e CIRCLE_JOB"
80124

81125
- run:
82126
name: Run tests (pulling from S3)
83127
command: |
84-
source /tmp/venv/bin/activate
85128
export TEMPLATEFLOW_USE_DATALAD=off
86129
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
130+
python -m pytest \
131+
--junit-xml=~/tests/s3.xml --cov templateflow --cov-report xml:~/coverage/cov_api_s3.xml \
132+
--doctest-modules templateflow/api.py
89133
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
134+
- codecov/upload:
135+
file: ~/coverage/cov_api_s3.xml
136+
flags: api,s3
137+
cli_args: "-e CIRCLE_JOB"
96138

97139
- run:
98140
name: Run tests (w/ DataLad, bypassed via S3)
99141
command: |
100-
source /tmp/venv/bin/activate
101142
export TEMPLATEFLOW_USE_DATALAD=off
102143
export TEMPLATEFLOW_HOME=$HOME/templateflow-clean
103144
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
145+
python -m pytest \
146+
--junit-xml=~/tests/dl+s3.xml --cov templateflow --cov-report xml:~/coverage/cov_api_dl_s3.xml \
147+
--doctest-modules templateflow/api.py
106148
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
149+
- codecov/upload:
150+
file: ~/coverage/cov_api_dl_s3.xml
151+
flags: api,dls3
152+
cli_args: "-e CIRCLE_JOB"
113153

114154
- run:
115155
name: Run tests (config, parameterized TEMPLATEFLOW_USE_DATALAD)
116156
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
157+
python -m pytest \
158+
--junit-xml=~/tests/conftests.xml --cov templateflow --cov-report xml:~/coverage/cov_config.xml \
159+
templateflow/conf/tests/test_conf.py
120160
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_config.xml
163+
flags: config
164+
cli_args: "-e CIRCLE_JOB"
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-
213220
workflows:
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:

pyproject.toml

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -37,13 +37,15 @@ Documentation = "https://www.templateflow.org/python-client/"
3737

3838
[project.optional-dependencies]
3939
test = [
40+
"coverage ~= 5.0.0",
4041
"pytest",
42+
"pytest-cov",
43+
"pytest-env",
4144
"pytest-xdist",
42-
"pytest-cov == 2.5.1",
43-
"coverage",
45+
"toml",
4446
]
4547
datalad = [
46-
"datalad ~= 0.19.0"
48+
"datalad ~= 1.0.0"
4749
]
4850
doc = [
4951
"nbsphinx",
@@ -121,7 +123,7 @@ junit_family = "xunit2"
121123

122124
[tool.coverage.run]
123125
branch = true
124-
concurrency = 'multiprocessing'
126+
concurrency = ['multiprocessing']
125127
omit = [
126128
'*/tests/*',
127129
'*/conftest.py',

0 commit comments

Comments
 (0)