@@ -10,33 +10,19 @@ jobs:
1010
1111 steps :
1212 - 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
1816 - run :
1917 name : Setup git-annex
2018 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
2720 git config --global user.name 'NiPy'
2821 git config --global user.email '[email protected] ' 2922 - run :
3023 name : Setup DataLad
3124 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
4026
4127 - restore_cache :
4228 keys :
4632 - run :
4733 name : Install test data from GIN
4834 command : |
49- export PATH=/opt/circleci/git-annex.linux:$PATH
50- pyenv local 3
51- eval "$(pyenv init --path)"
5235 mkdir -p /tmp/data
5336 cd /tmp/data
5437 datalad install -r https://gin.g-node.org/oesteban/nitransforms-tests
@@ -61,10 +44,10 @@ jobs:
6144
6245 - restore_cache :
6346 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 -
6851 paths :
6952 - /tmp/docker
7053 - run :
@@ -81,13 +64,13 @@ jobs:
8164 set -e
8265 if [[ "$success" = "0" ]]; then
8366 echo "Pulling from local registry"
84- docker tag localhost:5000/ubuntu ubuntu:xenial-20200114
67+ docker tag localhost:5000/ubuntu ubuntu:jammy-20250730
8568 docker pull localhost:5000/nitransforms
8669 docker tag localhost:5000/nitransforms nitransforms:latest
8770 else
8871 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
9174 docker push localhost:5000/ubuntu
9275 fi
9376 - run :
9982 -t nitransforms:latest \
10083 --build-arg BUILD_DATE=`date -u +"%Y-%m-%dT%H:%M:%SZ"` \
10184 --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 ) . \
10386 && e=0 && break || sleep 15
10487 done && [ "$e" -eq "0" ]
10588 docker tag nitransforms:latest localhost:5000/nitransforms
@@ -110,13 +93,13 @@ jobs:
11093 docker exec -it registry /bin/registry garbage-collect --delete-untagged \
11194 /etc/docker/registry/config.yml
11295 - save_cache :
113- key : build-v1 -{{ .Branch }}-{{ epoch }}
96+ key : build-v2 -{{ .Branch }}-{{ epoch }}
11497 paths :
11598 - /tmp/docker
11699 - run :
117100 name : Check version packaged in Docker image
118101 command : |
119- THISVERSION=${CIRCLE_TAG:-$(python3 - m setuptools_scm)}
102+ THISVERSION=${CIRCLE_TAG:-$( uv run --no-project -w setuptools_scm - m setuptools_scm )}
120103 INSTALLED_VERSION=$(\
121104 docker run -it --rm --entrypoint=python nitransforms \
122105 -c 'import nitransforms as nit; print(nit.__version__, end="")' )
@@ -136,21 +119,22 @@ jobs:
136119 name : Run unit tests
137120 no_output_timeout : 2h
138121 command : |
139- mkdir -p /tmp/tests/{artifacts,summaries}
122+ mkdir -p /tmp/tests/{artifacts,summaries,coverage }
140123 docker run -u $( id -u ) -it --rm \
141124 -w /src/nitransforms -v $PWD:/src/nitransforms \
142125 -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 \
145128 -v /tmp/tests:/tmp nitransforms:latest \
146129 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 \
148132 nitransforms/
149133 - run :
150134 name : Submit unit test coverage
151135 command : |
152136 cd /tmp/src/nitransforms
153- python3 -m codecov --file /tmp/tests/summaries /unittests.xml \
137+ python3 -m codecov --file /tmp/tests/coverage /unittests.xml \
154138 --flags unittests -e CIRCLE_JOB
155139 - run :
156140 name : Clean up tests directory
0 commit comments