Skip to content

Commit 2e8aadf

Browse files
authored
Merge branch 'master' into enh/reportlet
2 parents 0b7bbe7 + 3a0341f commit 2e8aadf

File tree

4 files changed

+117
-121
lines changed

4 files changed

+117
-121
lines changed

.circleci/config.yml

Lines changed: 104 additions & 92 deletions
Original file line numberDiff line numberDiff line change
@@ -25,12 +25,12 @@ version: 2
2525
jobs:
2626

2727
build:
28+
machine:
29+
image: circleci/classic:201711-01
30+
working_directory: /tmp/src/dmriprep
2831
environment:
2932
TZ: "/usr/share/zoneinfo/America/Los_Angeles"
3033
SCRATCH: "/scratch"
31-
docker:
32-
- image: docker:18.01.0-ce-git
33-
working_directory: /tmp/src/dmriprep
3434
steps:
3535
- checkout
3636
- run:
@@ -40,34 +40,46 @@ jobs:
4040
echo "Only docs build"
4141
circleci step halt
4242
fi
43-
44-
- run:
45-
name: Install parallel gzip and python3
46-
command: |
47-
apk add --no-cache pigz python3
4843
- restore_cache:
4944
keys:
50-
- docker-v0-{{ .Branch }}-{{ .Revision }}
51-
- docker-v0-{{ .Branch }}-
52-
- docker-v0-master-
53-
- docker-v0-
45+
- build-v1-{{ .Branch }}-{{ epoch }}
46+
- build-v1-{{ .Branch }}-
47+
- build-v1-master-
48+
- build-v1-
5449
paths:
55-
- /tmp/cache/docker.tar.gz
56-
- setup_remote_docker
50+
- /tmp/docker
5751
- run:
58-
name: Load Docker image layer cache
59-
no_output_timeout: 30m
52+
name: Set-up a Docker registry
6053
command: |
61-
docker info
62-
set +o pipefail
63-
if [ -f /tmp/cache/docker.tar.gz ]; then
64-
pigz -d --stdout /tmp/cache/docker.tar.gz | docker load
65-
docker images
54+
docker run -d -p 5000:5000 --restart=always --name=registry \
55+
-v /tmp/docker:/var/lib/registry registry:2
56+
- run:
57+
name: Pull images
58+
command: |
59+
set +e
60+
docker pull localhost:5000/ubuntu
61+
success=$?
62+
set -e
63+
if [[ "$success" = "0" ]]; then
64+
echo "Pulling from local registry"
65+
docker tag localhost:5000/ubuntu ubuntu:xenial-20191010
66+
docker pull localhost:5000/dmriprep
67+
docker tag localhost:5000/dmriprep nipreps/dmriprep:latest
68+
docker tag localhost:5000/dmriprep nipreps/dmriprep
69+
else
70+
echo "Pulling from Docker Hub"
71+
docker pull ubuntu:xenial-20191010
72+
docker tag ubuntu:xenial-20191010 localhost:5000/ubuntu
73+
docker push localhost:5000/ubuntu
74+
docker pull nipreps/dmriprep:latest
6675
fi
6776
- run:
6877
name: Build Docker image
6978
no_output_timeout: 60m
7079
command: |
80+
export PY3=$(pyenv versions | grep '3\.' |
81+
sed -e 's/.* 3\./3./' -e 's/ .*//')
82+
pyenv local $PY3
7183
# Get version, update files.
7284
THISVERSION=$( python3 get_version.py )
7385
if [[ ${THISVERSION:0:2} == "0+" ]] ; then
@@ -78,54 +90,34 @@ jobs:
7890
fi
7991
# Build docker image
8092
e=1 && for i in {1..5}; do
81-
docker build \
93+
docker build --rm \
8294
--cache-from=nipreps/dmriprep \
83-
--rm=false \
8495
-t nipreps/dmriprep:latest \
8596
--build-arg BUILD_DATE=`date -u +"%Y-%m-%dT%H:%M:%SZ"` \
8697
--build-arg VCS_REF=`git rev-parse --short HEAD` \
8798
--build-arg VERSION="${CIRCLE_TAG:-$THISVERSION}" . \
8899
&& e=0 && break || sleep 15
89100
done && [ "$e" -eq "0" ]
90-
# test if development image should be built
91-
if [[ "$( git log --format=oneline -n 1 $CIRCLE_SHA1 | grep -i -E '\[build[ _]?devel\]' )" != "" ]]; then
92-
echo "building development container"
93-
docker tag nipreps/dmriprep nipreps/dmriprep:unstable
94-
docker build \
95-
--rm=false \
96-
-t nipreps/dmriprep_devel \
97-
-f Dockerfile_devel .
98-
fi
99-
100101
- run:
101-
name: Docker save
102+
name: Docker push to local registry
102103
no_output_timeout: 40m
103104
command: |
104-
mkdir -p /tmp/cache
105-
docker save ubuntu:xenial-20161213 nipreps/dmriprep:latest \
106-
| pigz -3 > /tmp/cache/docker.tar.gz
107-
- save_cache:
108-
key: docker-v0-{{ .Branch }}-{{ .Revision }}-{{ epoch }}
109-
paths:
110-
- /tmp/cache/docker.tar.gz
111-
105+
docker tag nipreps/dmriprep:latest localhost:5000/dmriprep
106+
docker push localhost:5000/dmriprep
112107
- run:
113-
name: Smoke test Docker image
108+
name: Docker registry garbage collection
114109
command: |
115-
THISVERSION=$( python3 get_version.py )
116-
THISVERSION=${THISVERSION%.dirty*}
117-
THISVERSION=${CIRCLE_TAG:-$THISVERSION}
118-
DOCKERVERSION=$(docker run --rm -it nipreps/dmriprep:latest --version)
119-
DOCKERVERSION=${DOCKERVERSION%$'\r'}
120-
DOCKERVERSION=${DOCKERVERSION#*"dmriprep v"}
121-
echo "VERSION: \"$THISVERSION\""
122-
echo "DOCKERVERSION: \"${DOCKERVERSION}\""
123-
test "$DOCKERVERSION" = "$THISVERSION"
124-
110+
docker exec -it registry /bin/registry garbage-collect --delete-untagged \
111+
/etc/docker/registry/config.yml
112+
- save_cache:
113+
key: build-v1-{{ .Branch }}-{{ epoch }}
114+
paths:
115+
- /tmp/docker
125116
- persist_to_workspace:
126117
root: /tmp
127118
paths:
128119
- src/dmriprep
120+
129121
get_data:
130122
machine:
131123
# Ubuntu 14.04 with Docker 17.10.0-ce
@@ -207,32 +199,30 @@ jobs:
207199
at: /tmp
208200
- restore_cache:
209201
keys:
210-
- docker-v0-{{ .Branch }}-{{ .Revision }}
202+
- data-v0-{{ .Revision }}
211203
- restore_cache:
212204
keys:
213-
- data-v0-{{ .Revision }}
205+
- build-v1-{{ .Branch }}-{{ epoch }}
206+
- build-v1-{{ .Branch }}-
207+
- build-v1-
208+
paths:
209+
- /tmp/docker
210+
- run:
211+
name: Set-up a Docker registry
212+
command: |
213+
docker run -d -p 5000:5000 --restart=always --name=registry \
214+
-v /tmp/docker:/var/lib/registry registry:2
215+
- run:
216+
name: Pull images from local registry
217+
command: |
218+
docker pull localhost:5000/dmriprep
219+
docker tag localhost:5000/dmriprep nipreps/dmriprep:latest
214220
- restore_cache:
215221
keys:
216222
- THP002-anat-v00-{{ .Branch }}-{{ .Revision }}
217223
- THP002-anat-v00-{{ .Branch }}
218224
- THP002-anat-v00-master
219225
- THP002-anat-v00-
220-
- run:
221-
name: Setting up test
222-
command: |
223-
mkdir -p /tmp/THP002/derivatives && sudo setfacl -d -m group:$(id -gn):rwx /tmp/THP002/derivatives && sudo setfacl -m group:$(id -gn):rwx /tmp/THP002/derivatives
224-
pip install --upgrade pip setuptools
225-
- run:
226-
name: Load Docker image layer cache
227-
no_output_timeout: 30m
228-
command: |
229-
docker info
230-
set +o pipefail
231-
if [ -f /tmp/cache/docker.tar.gz ]; then
232-
sudo apt update && sudo apt -y install pigz
233-
pigz -d --stdout /tmp/cache/docker.tar.gz | docker load
234-
docker images
235-
fi
236226
- run:
237227
name: Run anatomical workflow on THP002
238228
no_output_timeout: 2h
@@ -286,21 +276,40 @@ jobs:
286276
image: circleci/classic:201711-01
287277
working_directory: /tmp/src/dmriprep
288278
steps:
289-
279+
- run:
280+
name: Check whether image should be deployed to Docker Hub
281+
command: |
282+
if [[ "$CIRCLE_PROJECT_USERNAME" != "nipreps" ]]; then
283+
echo "Nothing to deploy for $CIRCLE_PROJECT_USERNAME/$CIRCLE_PROJECT_REPONAME."
284+
circleci step halt
285+
fi
286+
- checkout:
287+
path: /home/circleci/src/dmriprep
288+
- run:
289+
name: Check whether build should be skipped
290+
command: |
291+
cd /home/circleci/src/dmriprep
292+
if [[ "$( git log --format='format:%s' -n 1 $CIRCLE_SHA1 | grep -i -E '^docs?(\(\w+\))?:' )" != "" ]]; then
293+
echo "Only docs build"
294+
circleci step halt
295+
fi
290296
- restore_cache:
291297
keys:
292-
- docker-v0-{{ .Branch }}-{{ .Revision }}
298+
- build-v1-{{ .Branch }}-{{ epoch }}
299+
- build-v1-{{ .Branch }}-
300+
- build-v1-
301+
paths:
302+
- /tmp/docker
293303
- run:
294-
name: Load Docker image layer cache
295-
no_output_timeout: 30m
304+
name: Set-up a Docker registry
296305
command: |
297-
docker info
298-
set +o pipefail
299-
if [ -f /tmp/cache/docker.tar.gz ]; then
300-
sudo apt update && sudo apt -y install pigz
301-
pigz -d --stdout /tmp/cache/docker.tar.gz | docker load
302-
docker images
303-
fi
306+
docker run -d -p 5000:5000 --restart=always --name=registry \
307+
-v /tmp/docker:/var/lib/registry registry:2
308+
- run:
309+
name: Pull images from local registry
310+
command: |
311+
docker pull localhost:5000/dmriprep
312+
docker tag localhost:5000/dmriprep nipreps/dmriprep:latest
304313
- run:
305314
name: Deploy to Docker Hub
306315
no_output_timeout: 40m
@@ -335,18 +344,21 @@ jobs:
335344
fi
336345
- restore_cache:
337346
keys:
338-
- docker-v0-{{ .Branch }}-{{ .Revision }}
347+
- build-v1-{{ .Branch }}-{{ epoch }}
348+
- build-v1-{{ .Branch }}-
349+
- build-v1-
350+
paths:
351+
- /tmp/docker
339352
- run:
340-
name: Load Docker image layer cache
341-
no_output_timeout: 30m
353+
name: Set-up a Docker registry
342354
command: |
343-
docker info
344-
set +o pipefail
345-
if [ -f /tmp/cache/docker.tar.gz ]; then
346-
sudo apt update && sudo apt -y install pigz
347-
pigz -d --stdout /tmp/cache/docker.tar.gz | docker load
348-
docker images
349-
fi
355+
docker run -d -p 5000:5000 --restart=always --name=registry \
356+
-v /tmp/docker:/var/lib/registry registry:2
357+
- run:
358+
name: Pull images from local registry
359+
command: |
360+
docker pull localhost:5000/dmriprep
361+
docker tag localhost:5000/dmriprep nipreps/dmriprep:latest
350362
- run:
351363
name: Deploy to Docker Hub
352364
no_output_timeout: 40m

.circleci/pypi_wheel/build-wheels.sh

Lines changed: 0 additions & 22 deletions
This file was deleted.

Dockerfile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
# Use Ubuntu 16.04 LTS
2-
FROM ubuntu:xenial-20161213
2+
FROM ubuntu:xenial-20191010
33

44
# Pre-cache neurodebian key
55
COPY .docker/neurodebian.gpg /usr/local/etc/neurodebian.gpg

dmriprep/data/boilerplate.bib

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,16 @@
11
@article{dmriprep,
2-
author = {Lerma-Usabiaga, Garikoitz and Keshavan, Anisha and Richie-Halford, Adam and Rokem, Ariel and Esteban, Oscar},
3-
title = {{dMRIPrep: a robust preprocessing pipeline for diffusion MRI}},
4-
year = 2019,
5-
doi = {10.5281/zenodo.3392201},
6-
publisher = {Zenodo},
7-
journal = {Software}
2+
author = {Richie-Halford, Adam and
3+
Keshavan, Anisha and
4+
Joseph, Michael and
5+
Lerma-Usabiaga, Garikoitz and
6+
Pisner, Derek and
7+
Rokem, Ariel and
8+
Esteban, Oscar},
9+
title = {{dMRIPrep: a robust preprocessing pipeline for diffusion MRI}},
10+
year = 2019,
11+
doi = {10.5281/zenodo.3571874},
12+
publisher = {Zenodo},
13+
journal = {Software}
814
}
915

1016
@article{fmriprep1,

0 commit comments

Comments
 (0)