Skip to content

Commit fd2048e

Browse files
authored
Merge pull request #327 from effigies/fix/1.3.x/circleci
CI: Update docker/machine images for 1.3.x branch
2 parents d1b19ae + c75d470 commit fd2048e

File tree

17 files changed

+374
-1498
lines changed

17 files changed

+374
-1498
lines changed

.circleci/config.yml

Lines changed: 66 additions & 70 deletions
Original file line numberDiff line numberDiff line change
@@ -32,43 +32,46 @@ docs_deploy: &docs
3232
name: Deploy docs to gh-pages branch
3333
command: gh-pages --dotfiles --message "doc(update) [skip ci]" --dist docs/_build/html
3434

35-
version: 2
35+
version: 2.1
36+
orbs:
37+
docker: circleci/[email protected]
38+
3639
jobs:
3740
cache_test_data:
3841
docker:
39-
- image: python:3.7.4
42+
- image: cimg/python:3.9.16
4043
working_directory: /tmp/data
4144
environment:
4245
- TEMPLATEFLOW_HOME: /tmp/templateflow
4346
steps:
4447
- restore_cache:
4548
keys:
4649
- env-v2-{{ .Branch }}-
47-
- env-v2-master-
50+
- env-v2-maint/1.3.x-
4851
- env-v2-
4952
- restore_cache:
5053
keys:
5154
- data-v2-{{ .Branch }}-
52-
- data-v2-master-
55+
- data-v2-maint/1.3.x-
5356
- data-v2-
5457

5558
- run:
5659
name: Setup git-annex
5760
command: |
5861
if [[ ! -d /usr/lib/git-annex.linux ]]; then
59-
wget -O- http://neuro.debian.net/lists/trusty.us-ca.full | tee /etc/apt/sources.list.d/neurodebian.sources.list
60-
apt-key adv --recv-keys --keyserver hkp://pool.sks-keyservers.net:80 0xA5D32F012649A5A9
61-
apt update && apt-get install -y --no-install-recommends git-annex-standalone
62+
wget -O- http://neuro.debian.net/lists/jammy.us-nh.full | sudo tee /etc/apt/sources.list.d/neurodebian.sources.list
63+
sudo apt-key adv --recv-keys --keyserver hkps://keyserver.ubuntu.com 0xA5D32F012649A5A9
64+
sudo apt-get update && sudo apt-get install -y --no-install-recommends git-annex-standalone
6265
fi
6366
git config --global user.name 'NiPreps Bot'
6467
git config --global user.email '[email protected]'
6568
6669
- run:
6770
name: Setup DataLad & TemplateFlow
6871
command: |
69-
python -m pip install --no-cache-dir -U pip
70-
python -m pip install --no-cache-dir -U datalad
71-
python -m pip install --no-cache-dir -U templateflow
72+
pip install --no-cache-dir -U pip
73+
pip install --no-cache-dir -U datalad
74+
pip install --no-cache-dir -U templateflow
7275
python -c "from templateflow import api as tfapi; \
7376
tfapi.get('MNI152NLin2009cAsym', resolution=2, desc='brain', suffix='mask'); \
7477
tfapi.get('MNI152NLin2009cAsym', resolution=2, desc='fMRIPrep', suffix='boldref');"
@@ -77,8 +80,6 @@ jobs:
7780
key: env-v2-{{ .Branch }}-{{ .BuildNum }}
7881
paths:
7982
- /tmp/cache/git-annex-standalone.tar.gz
80-
- /usr/local/bin
81-
- /usr/local/lib/python3.7/site-packages
8283
- /usr/bin/git-annex
8384
- /usr/bin/git-annex-shell
8485
- /usr/lib/git-annex.linux
@@ -130,7 +131,8 @@ jobs:
130131
--exclude='freesurfer/subjects/sample-*.mgz' \
131132
--exclude='freesurfer/subjects/V1_average' \
132133
--exclude='freesurfer/trctrain'
133-
echo "b2VzdGViYW5Ac3RhbmZvcmQuZWR1CjMwNzU2CiAqQ1MzYkJ5VXMxdTVNCiBGU2kvUGJsejJxR1V3Cg==" | base64 -d > /tmp/freesurfer/license.txt
134+
pushd /tmp/freesurfer
135+
echo "${FS_LICENSE_CONTENT}" | base64 -d | sh
134136
else
135137
echo "FreeSurfer was cached."
136138
circleci step halt
@@ -142,17 +144,18 @@ jobs:
142144

143145
build_n_pytest:
144146
machine:
145-
image: circleci/classic:201808-01
146-
working_directory: /tmp/tests
147+
image: ubuntu-2204:2022.10.2
148+
working_directory: /tmp/src/sdcflows
147149
environment:
148150
TZ: "/usr/share/zoneinfo/America/Los_Angeles"
149151
steps:
152+
- checkout:
153+
path: /tmp/src/sdcflows
150154
- restore_cache:
151155
keys:
152-
- build-v2-{{ .Branch }}-{{ epoch }}
153-
- build-v2-{{ .Branch }}-
154-
- build-v2-master-
155-
- build-v2-
156+
- build-v3-{{ .Branch }}-{{ epoch }}
157+
- build-v3-{{ .Branch }}-
158+
- build-v3-maint/1.3.x-
156159
paths:
157160
- /tmp/docker
158161
- run:
@@ -174,24 +177,23 @@ jobs:
174177
docker tag localhost:5000/sdcflows nipreps/sdcflows:latest
175178
docker tag localhost:5000/sdcflows nipreps/sdcflows
176179
else
177-
echo "Pulling from Docker Hub"
180+
LATEST=$( git describe --abbrev=0 )
181+
echo "Pulling nipreps/sdcflows:$LATEST from Docker Hub"
178182
docker pull ubuntu:xenial-20191010
179183
docker tag ubuntu:xenial-20191010 localhost:5000/ubuntu
180184
docker push localhost:5000/ubuntu
181-
docker pull nipreps/sdcflows:latest
185+
docker pull nipreps/sdcflows:$LATEST
186+
docker tag nipreps/sdcflows:$LATEST nipreps/sdcflows:latest
182187
fi
183-
- checkout:
184-
path: /tmp/src/sdcflows
185188
- run:
186189
name: Build Docker image
187190
no_output_timeout: 60m
188191
command: |
189-
cd /tmp/src/sdcflows
190-
pyenv local 3.7.0
191-
python3 -m pip install "setuptools ~= 42.0" "setuptools_scm[toml] >= 3.4" "pip>=10.0.1"
192+
python3 -m pip install --upgrade pip
193+
python3 -m pip install --upgrade "setuptools_scm[toml]"
192194
193195
# Get version, update files.
194-
THISVERSION=$( python3 setup.py --version )
196+
THISVERSION=$( python3 -m setuptools_scm )
195197
if [[ ${THISVERSION:0:1} == "0" ]] ; then
196198
echo "WARNING: latest git tag could not be found"
197199
echo "Please, make sure you fetch all tags from upstream with"
@@ -221,7 +223,7 @@ jobs:
221223
docker exec -it registry /bin/registry garbage-collect --delete-untagged \
222224
/etc/docker/registry/config.yml
223225
- save_cache:
224-
key: build-v2-{{ .Branch }}-{{ epoch }}
226+
key: build-v3-{{ .Branch }}-{{ epoch }}
225227
paths:
226228
- /tmp/docker
227229
- run:
@@ -242,17 +244,16 @@ jobs:
242244
- restore_cache:
243245
keys:
244246
- data-v2-{{ .Branch }}-
245-
- data-v2-master-
247+
- data-v2-maint/1.3.x-
246248
- data-v2-
247249
- restore_cache:
248250
keys:
249251
- workdir-v2-{{ .Branch }}-
250-
- workdir-v2-master-
252+
- workdir-v2-maint/1.3.x-
251253
- workdir-v2-
252254
- run:
253255
name: Refreshing cached intermediate results
254256
command: |
255-
cd /tmp/src/sdcflows
256257
COMMIT_MSG=$( git log --format=oneline -n 1 $CIRCLE_SHA1 )
257258
set +e
258259
do_refresh="$( echo "${COMMIT_MSG}" | grep -i -E '\[refresh[ _]?cache\]' )"
@@ -298,7 +299,7 @@ jobs:
298299

299300
build_docs:
300301
docker:
301-
- image: python:3.7.4
302+
- image: cimg/python:3.9.16
302303
working_directory: /tmp/gh-pages
303304
environment:
304305
- FSLOUTPUTTYPE: NIFTI
@@ -310,18 +311,18 @@ jobs:
310311
command: mkdir -p $SUBJECTS_DIR
311312
- run:
312313
name: Install Graphviz
313-
command: apt update && apt -y install graphviz
314+
command: sudo apt-get update && sudo apt-get -y install --no-install-recommends graphviz
314315
- run:
315316
name: Install deps
316317
command: |
317318
pip install --no-cache-dir -r docs/requirements.txt
318-
pip install --no-cache-dir "setuptools ~= 42.0" "setuptools_scm[toml] >= 3.4"
319-
python setup.py --version
319+
pip install --no-cache-dir "setuptools_scm[toml]"
320+
python -m setuptools_scm
320321
- run:
321322
name: Build only this commit
322-
command: make -C docs SPHINXOPTS="-W" BUILDDIR="_build/no_version_html" html
323+
command: make -C docs SPHINXOPTS="-W" BUILDDIR="$HOME/docs" OUTDIR=no_version_html html
323324
- store_artifacts:
324-
path: ./docs/_build/no_version_html/html
325+
path: /home/circleci/docs/no_version_html
325326
destination: noversion
326327
- run:
327328
name: Stop or generate versioned docs?
@@ -340,13 +341,15 @@ jobs:
340341
keys:
341342
- docs-v2-{{ .Branch }}-{{ .Revision }}
342343
- docs-v2-{{ .Branch }}-
343-
- docs-v2-master
344+
- docs-v2-maint/1.3.x
344345
- docs-v2-
345346
paths:
346347
- ./docs/_build
347348
- run:
348349
name: Generate Versioned Docs
349-
command: make -f ./docs/Makefile versioned CURBRANCH=${CIRCLE_TAG:-$CIRCLE_BRANCH}
350+
command: |
351+
BRANCH=$( echo $CIRCLE_BRANCH | sed 's+/+_+g' )
352+
make -C docs SPHINXOPTS="-W" BUILDDIR="$HOME/docs" OUTDIR=${CIRCLE_TAG:-$BRANCH} html
350353
- save_cache:
351354
key: docs-v2-{{ .Branch }}-{{ .Revision }}
352355
paths:
@@ -360,15 +363,15 @@ jobs:
360363

361364
deploy_docker:
362365
machine:
363-
image: circleci/classic:201711-01
366+
image: ubuntu-2204:2022.10.2
364367
working_directory: /tmp/src/
365368
steps:
366369
- restore_cache:
367370
keys:
368-
- build-v2-{{ .Branch }}-{{ epoch }}
369-
- build-v2-{{ .Branch }}-
370-
- build-v2-master-
371-
- build-v2-
371+
- build-v3-{{ .Branch }}-{{ epoch }}
372+
- build-v3-{{ .Branch }}-
373+
- build-v3-maint/1.3.x-
374+
- build-v3-
372375
paths:
373376
- /tmp/docker
374377
- run:
@@ -385,16 +388,15 @@ jobs:
385388
name: Deploy to Docker Hub
386389
no_output_timeout: 40m
387390
command: |
388-
if [[ -n "$DOCKER_PASS" ]]; then
389-
docker login -u $DOCKER_USER -p $DOCKER_PASS
390-
docker push nipreps/sdcflows:latest
391+
if [[ -n "$DOCKER_PAT" ]]; then
392+
docker login -u $DOCKER_USER -p $DOCKER_PAT
391393
docker tag nipreps/sdcflows nipreps/sdcflows:$CIRCLE_TAG
392394
docker push nipreps/sdcflows:$CIRCLE_TAG
393395
fi
394396
395397
test_package:
396398
docker:
397-
- image: circleci/python:3.7.4
399+
- image: cimg/python:3.9.16
398400
working_directory: /tmp/src/sdcflows
399401
steps:
400402
- checkout
@@ -403,9 +405,8 @@ jobs:
403405
command: |
404406
python3 -m venv /tmp/buildenv
405407
source /tmp/buildenv/bin/activate
406-
python3 -m pip install "setuptools ~= 42.0" wheel "setuptools_scm[toml] >= 3.4" \
407-
"pip>=10.0.1" twine docutils
408-
python setup.py sdist bdist_wheel
408+
python3 -m pip install --upgrade pip build twine
409+
python3 -m build
409410
twine check dist/sdcflows*
410411
- store_artifacts:
411412
path: /tmp/src/sdcflows/dist
@@ -417,8 +418,8 @@ jobs:
417418
command: |
418419
python3 -m venv /tmp/install_sdist
419420
source /tmp/install_sdist/bin/activate
420-
python3 -m pip install "setuptools ~= 42.0" "pip>=10.0.1"
421-
THISVERSION=$( python3 setup.py --version )
421+
python3 -m pip install --upgrade pip setuptools_scm
422+
THISVERSION=$( python3 -m setuptools_scm )
422423
THISVERSION=${CIRCLE_TAG:-$THISVERSION}
423424
python3 -m pip install dist/sdcflows*.tar.gz
424425
INSTALLED_VERSION=$(python3 -c 'import sdcflows as sdc; print(sdc.__version__, end="")')
@@ -430,8 +431,8 @@ jobs:
430431
command: |
431432
python3 -m venv /tmp/install_wheel
432433
source /tmp/install_wheel/bin/activate
433-
python3 -m pip install "setuptools ~= 42.0" "pip>=10.0.1"
434-
THISVERSION=$( python3 setup.py --version )
434+
python3 -m pip install --upgrade pip setuptools_scm
435+
THISVERSION=$( python3 -m setuptools_scm )
435436
THISVERSION=${CIRCLE_TAG:-$THISVERSION}
436437
python3 -m pip install dist/sdcflows*.whl
437438
INSTALLED_VERSION=$(python3 -c 'import sdcflows as sdc; print(sdc.__version__, end="")')
@@ -441,7 +442,7 @@ jobs:
441442
442443
deploy_pypi:
443444
docker:
444-
- image: circleci/python:3.7.4
445+
- image: cimg/python:3.9.16
445446
working_directory: /tmp/src/sdcflows
446447
steps:
447448
- attach_workspace:
@@ -458,14 +459,14 @@ jobs:
458459
deploy_docs_tag:
459460
<<: *docs
460461

461-
deploy_docs_master:
462-
<<: *docs
463-
464462
workflows:
465463
version: 2
466464
build_deploy:
467465
jobs:
468466
- cache_test_data:
467+
context:
468+
- nipreps-common
469+
- fs-license
469470
filters:
470471
branches:
471472
ignore:
@@ -484,6 +485,8 @@ workflows:
484485
only: /.*/
485486

486487
- test_package:
488+
context:
489+
- nipreps-common
487490
filters:
488491
branches:
489492
ignore:
@@ -493,6 +496,8 @@ workflows:
493496
only: /.*/
494497

495498
- deploy_pypi:
499+
context:
500+
- nipreps-common
496501
requires:
497502
- build_docs
498503
- test_package
@@ -504,6 +509,8 @@ workflows:
504509
only: /.*/
505510

506511
- deploy_docker:
512+
context:
513+
- nipreps-common
507514
requires:
508515
- deploy_pypi
509516
filters:
@@ -520,17 +527,6 @@ workflows:
520527
tags:
521528
only: /.*/
522529

523-
- deploy_docs_master:
524-
requires:
525-
- build_n_pytest
526-
- test_package
527-
- build_docs
528-
filters:
529-
branches:
530-
only: /master/
531-
tags:
532-
ignore: /.*/
533-
534530
- deploy_docs_tag:
535531
requires:
536532
- deploy_docker

Dockerfile

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -124,6 +124,7 @@ COPY . /src/sdcflows
124124
# Force static versioning within container
125125
ARG VERSION
126126
RUN sed -i "s/fallback_version\s=\s\"0\.0\"/fallback_version = \"${VERSION}\"/g" pyproject.toml && \
127+
pip install --upgrade pip && \
127128
pip install --no-cache-dir .[all] && \
128129
rm -rf $HOME/.cache/pip
129130

docs/Makefile

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ SPHINXOPTS =
66
SPHINXBUILD = sphinx-build
77
PAPER =
88
BUILDDIR = _build
9-
CURBRANCH = master
9+
OUTDIR = html
1010
PYTHONPATH = $(PWD)
1111

1212
# User-friendly check for sphinx-build
@@ -53,10 +53,13 @@ clean:
5353
rm -rf $(BUILDDIR)/*
5454
rm -rf reference/*
5555

56+
docs-coverage:
57+
PYTHONPATH=$(PYTHONPATH) $(SPHINXBUILD) -b coverage $(ALLSPHINXOPTS) $(BUILDDIR)/coverage
58+
5659
html:
57-
PYTHONPATH=$(PYTHONPATH) $(SPHINXBUILD) -b html $(ALLSPHINXOPTS) $(BUILDDIR)/html
60+
PYTHONPATH=$(PYTHONPATH) $(SPHINXBUILD) -b html $(ALLSPHINXOPTS) $(BUILDDIR)/$(OUTDIR)
5861
@echo
59-
@echo "Build finished. The HTML pages are in $(BUILDDIR)/html."
62+
@echo "Build finished. The HTML pages are in $(BUILDDIR)/$(OUTDIR)."
6063

6164
dirhtml:
6265
$(SPHINXBUILD) -b dirhtml $(ALLSPHINXOPTS) $(BUILDDIR)/dirhtml
@@ -179,6 +182,3 @@ pseudoxml:
179182
$(SPHINXBUILD) -b pseudoxml $(ALLSPHINXOPTS) $(BUILDDIR)/pseudoxml
180183
@echo
181184
@echo "Build finished. The pseudo-XML files are in $(BUILDDIR)/pseudoxml."
182-
183-
versioned:
184-
PYTHONPATH=$(PYTHONPATH) sphinx-versioning -vv -l ./docs/conf.py build -r $(CURBRANCH) ./docs/ docs/$(BUILDDIR)/html/

0 commit comments

Comments
 (0)