@@ -10,33 +10,19 @@ jobs:
10
10
11
11
steps :
12
12
- checkout
13
- - restore_cache :
14
- keys :
15
- - env-v6-{{ .Branch }}-
16
- - env-v6-master-
17
- - env-v6-
13
+ - run :
14
+ name : Ensure uv is present
15
+ command : uv -V || curl -LsSf https://astral.sh/uv/install.sh | sh
18
16
- run :
19
17
name : Setup git-annex
20
18
command : |
21
- sudo apt update && sudo apt-get install apt-transport-https ca-certificates -y && sudo update-ca-certificates
22
- if [[ ! -d /opt/circleci/git-annex.linux ]]; then
23
- cd /tmp
24
- wget https://downloads.kitenet.net/git-annex/linux/current/git-annex-standalone-amd64.tar.gz
25
- tar xzf git-annex-standalone-amd64.tar.gz -C /opt/circleci/
26
- fi
19
+ uv tool install git-annex
27
20
git config --global user.name 'NiPy'
28
21
git config --global user.email '[email protected] '
29
22
- run :
30
23
name : Setup DataLad
31
24
command : |
32
- python3 -m pip install --no-cache-dir -U pip "setuptools >= 45.0" "setuptools_scm[toml] >= 6.2"
33
- python3 -m pip install --no-cache-dir -U datalad datalad-osf
34
-
35
- - save_cache :
36
- key : env-v6-{{ .Branch }}-{{ .BuildNum }}
37
- paths :
38
- - /opt/circleci/git-annex.linux
39
- - /opt/circleci/.pyenv/versions
25
+ uv tool install --with-executables-from=datalad-osf,datalad-next datalad
40
26
41
27
- restore_cache :
42
28
keys :
46
32
- run :
47
33
name : Install test data from GIN
48
34
command : |
49
- export PATH=/opt/circleci/git-annex.linux:$PATH
50
- pyenv local 3
51
- eval "$(pyenv init --path)"
52
35
mkdir -p /tmp/data
53
36
cd /tmp/data
54
37
datalad install -r https://gin.g-node.org/oesteban/nitransforms-tests
@@ -61,10 +44,10 @@ jobs:
61
44
62
45
- restore_cache :
63
46
keys :
64
- - build-v1 -{{ .Branch }}-{{ epoch }}
65
- - build-v1 -{{ .Branch }}-
66
- - build-v1 -master-
67
- - build-v1 -
47
+ - build-v2 -{{ .Branch }}-{{ epoch }}
48
+ - build-v2 -{{ .Branch }}-
49
+ - build-v2 -master-
50
+ - build-v2 -
68
51
paths :
69
52
- /tmp/docker
70
53
- run :
@@ -81,13 +64,13 @@ jobs:
81
64
set -e
82
65
if [[ "$success" = "0" ]]; then
83
66
echo "Pulling from local registry"
84
- docker tag localhost:5000/ubuntu ubuntu:xenial-20200114
67
+ docker tag localhost:5000/ubuntu ubuntu:jammy-20250730
85
68
docker pull localhost:5000/nitransforms
86
69
docker tag localhost:5000/nitransforms nitransforms:latest
87
70
else
88
71
echo "Pulling from Docker Hub"
89
- docker pull ubuntu:xenial-20200114
90
- docker tag ubuntu:xenial-20200114 localhost:5000/ubuntu
72
+ docker pull ubuntu:jammy-20250730
73
+ docker tag ubuntu:jammy-20250730 localhost:5000/ubuntu
91
74
docker push localhost:5000/ubuntu
92
75
fi
93
76
- run :
99
82
-t nitransforms:latest \
100
83
--build-arg BUILD_DATE=`date -u +"%Y-%m-%dT%H:%M:%SZ"` \
101
84
--build-arg VCS_REF=`git rev-parse --short HEAD` \
102
- --build-arg VERSION=$( python3 -m setuptools_scm ) . \
85
+ --build-arg VERSION=$( uv run --no-project -w setuptools_scm -m setuptools_scm ) . \
103
86
&& e=0 && break || sleep 15
104
87
done && [ "$e" -eq "0" ]
105
88
docker tag nitransforms:latest localhost:5000/nitransforms
@@ -110,13 +93,13 @@ jobs:
110
93
docker exec -it registry /bin/registry garbage-collect --delete-untagged \
111
94
/etc/docker/registry/config.yml
112
95
- save_cache :
113
- key : build-v1 -{{ .Branch }}-{{ epoch }}
96
+ key : build-v2 -{{ .Branch }}-{{ epoch }}
114
97
paths :
115
98
- /tmp/docker
116
99
- run :
117
100
name : Check version packaged in Docker image
118
101
command : |
119
- THISVERSION=${CIRCLE_TAG:-$(python3 - m setuptools_scm)}
102
+ THISVERSION=${CIRCLE_TAG:-$( uv run --no-project -w setuptools_scm - m setuptools_scm )}
120
103
INSTALLED_VERSION=$(\
121
104
docker run -it --rm --entrypoint=python nitransforms \
122
105
-c 'import nitransforms as nit; print(nit.__version__, end="")' )
@@ -136,21 +119,22 @@ jobs:
136
119
name : Run unit tests
137
120
no_output_timeout : 2h
138
121
command : |
139
- mkdir -p /tmp/tests/{artifacts,summaries}
122
+ mkdir -p /tmp/tests/{artifacts,summaries,coverage }
140
123
docker run -u $( id -u ) -it --rm \
141
124
-w /src/nitransforms -v $PWD:/src/nitransforms \
142
125
-v /tmp/data/nitransforms-tests:/data -e TEST_DATA_HOME=/data \
143
- -e COVERAGE_FILE=/tmp/summaries /.pytest.coverage \
144
- -v /tmp/fslicense/license.txt:/opt /freesurfer/license.txt:ro \
126
+ -e COVERAGE_FILE=/tmp/coverage /.pytest.coverage \
127
+ -v /tmp/fslicense/license.txt:/usr/local /freesurfer/license.txt:ro \
145
128
-v /tmp/tests:/tmp nitransforms:latest \
146
129
pytest --junit-xml=/tmp/summaries/pytest.xml \
147
- --cov nitransforms --cov-report xml:/tmp/summaries/unittests.xml \
130
+ --cov nitransforms --cov-report xml:/tmp/coverage/unittests.xml \
131
+ -n auto \
148
132
nitransforms/
149
133
- run :
150
134
name : Submit unit test coverage
151
135
command : |
152
136
cd /tmp/src/nitransforms
153
- python3 -m codecov --file /tmp/tests/summaries /unittests.xml \
137
+ python3 -m codecov --file /tmp/tests/coverage /unittests.xml \
154
138
--flags unittests -e CIRCLE_JOB
155
139
- run :
156
140
name : Clean up tests directory
0 commit comments