-
Notifications
You must be signed in to change notification settings - Fork 34
/
config.yml
121 lines (118 loc) · 6.5 KB
/
config.yml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
version: 2.1
jobs:
build:
machine:
image: circleci/classic:latest
steps:
- checkout
- restore_cache:
keys:
- v_0-image_cache-{{ checksum "Dockerfile" }}
- run:
name: load and build
command: |
if [[ -e ~/docker/image.tar ]]; then docker load -i ~/docker/image.tar; fi
git describe --tags > version
docker build -t bids/${CIRCLE_PROJECT_REPONAME} .
mkdir -p ~/docker; docker save "bids/${CIRCLE_PROJECT_REPONAME}" > ~/docker/image.tar
mkdir -p ~/license; echo "cHJpbnRmICJEeWxhbi5OaWVsc29uQGdtYWlsLmNvbVxuMzcwNjNcbiAqQ1lrZWhQYUNvRDlNXG4gRlM2N1BTWmRFV2lqb1xuIiA+IH4vbGljZW5zZS9saWNlbnNlLnR4dA==" | base64 -d | sh
no_output_timeout: 6h
- save_cache:
key: v_0-image_cache-{{ checksum "Dockerfile" }}-{{ .Revision }}-{{ epoch }}
paths:
- ~/docker
- ~/license
test:
machine:
image: circleci/classic:latest
steps:
- checkout
- restore_cache:
key: v_0-image_cache-{{ checksum "Dockerfile" }}-{{ .Revision }}
- restore_cache:
key: v_0-test_data
- run:
name: get data
command: |
if [[ ! -d ~/data/ds114_test1 ]]; then wget -c -O ${HOME}/ds114_test1.tar "https://files.osf.io/v1/resources/9q7dv/providers/osfstorage/57e54a326c613b01d7d3ed90" && mkdir -p ${HOME}/data && tar xf ${HOME}/ds114_test1.tar -C ${HOME}/data; fi
if [[ ! -d ~/data/ds114_test2 ]]; then wget -c -O ${HOME}/ds114_test2.tar "https://files.osf.io/v1/resources/9q7dv/providers/osfstorage/57e549f9b83f6901d457d162" && mkdir -p ${HOME}/data && tar xf ${HOME}/ds114_test2.tar -C ${HOME}/data; fi
if [[ ! -d ~/data/ds114_test1_freesurfer_precomp_v6.0.0 ]]; then wget -c --no-check-certificate -O ${HOME}/ds114_test1_freesurfer_precomp_v6.0.0.tar "https://osf.io/j6zk2/?action=download&version=1" && mkdir -p ${HOME}/data && tar xf ${HOME}/ds114_test1_freesurfer_precomp_v6.0.0.tar -C ${HOME}/data; fi
if [[ ! -d ~/data/ds114_test2_freesurfer_precomp_v6.0.0 ]]; then wget -c --no-check-certificate -O ${HOME}/ds114_test2_freesurfer_precomp_v6.0.0.tar "https://osf.io/yhzzj/?action=download&version=1" && mkdir -p ${HOME}/data && tar xf ${HOME}/ds114_test2_freesurfer_precomp_v6.0.0.tar -C ${HOME}/data; fi
- save_cache:
key: v_0-test_data
paths:
- ~/data
- run:
name: load image
command: docker load -i ~/docker/image.tar
- run:
name: print version
command: |
docker run -ti --rm --read-only -v ~/license/license.txt:/license.txt --tmpfs /tmp --tmpfs /var/tmp -v $PWD/ds114_test1:/bids_dataset bids/${CIRCLE_PROJECT_REPONAME} --version
docker run -ti --rm --read-only -v ~/license/license.txt:/license.txt --tmpfs /tmp --tmpfs /var/tmp -v ${HOME}/data/ds114_test1:/bids_dataset bids/${CIRCLE_PROJECT_REPONAME} -h
- run:
name: test 1
command: |
docker run -ti --rm --read-only -v ~/license/license.txt:/license.txt --tmpfs /tmp --tmpfs /var/tmp -v ${HOME}/data/ds114_test1:/bids_dataset -v ${HOME}/outputs1:/outputs bids/${CIRCLE_PROJECT_REPONAME} /bids_dataset /outputs participant --participant_label 01 --license_file=/license.txt --stages autorecon1 && cat ${HOME}/outputs1/sub-01/scripts/recon-all.done
no_output_timeout: 6h
- run:
name: test 2
command: |
docker run -ti --rm --read-only -v ~/license/license.txt:/license.txt --tmpfs /tmp --tmpfs /var/tmp -v ${HOME}/data/ds114_test2:/bids_dataset -v ${HOME}/outputs2:/outputs bids/${CIRCLE_PROJECT_REPONAME} /bids_dataset /outputs participant --participant_label 01 --steps cross-sectional --session_label test --license_file=/license.txt --stages autorecon1 && cat ${HOME}/outputs2/sub-01_ses-test/scripts/recon-all.done
no_output_timeout: 6h
- run:
name: group2 test 1
command: |
docker run -ti --rm --read-only -v ~/license/license.txt:/license.txt --tmpfs /tmp --tmpfs /var/tmp -v ${HOME}/data/ds114_test1:/bids_dataset -v ${HOME}/data/ds114_test1_freesurfer_precomp_v6.0.0:/outputs bids/${CIRCLE_PROJECT_REPONAME} /bids_dataset /outputs group2 --license_file=/license.txt && mkdir -p ${HOME}/outputs1/ && sudo mv ${HOME}/data/ds114_test1_freesurfer_precomp_v6.0.0/00_group* ${HOME}/outputs1/ && cat ${HOME}/outputs1/00_group2_stats_tables/lh.aparc.thickness.tsv && cat ${HOME}/outputs1/00_group2_stats_tables/euler.tsv
no_output_timeout: 6h
- run:
name: group2 test 2
command: |
docker run -ti --rm --read-only -v ~/license/license.txt:/license.txt --tmpfs /tmp --tmpfs /var/tmp -v ${HOME}/data/ds114_test2:/bids_dataset -v ${HOME}/data/ds114_test2_freesurfer_precomp_v6.0.0:/outputs bids/${CIRCLE_PROJECT_REPONAME} /bids_dataset /outputs group2 --license_file=/license.txt && mkdir -p ${HOME}/outputs2/ && sudo mv ${HOME}/data/ds114_test2_freesurfer_precomp_v6.0.0/00_group* ${HOME}/outputs2/ && cat ${HOME}/outputs2/00_group2_stats_tables/lh.aparc.thickness.tsv && cat ${HOME}/outputs2/00_group2_stats_tables/euler.tsv
no_output_timeout: 6h
- store_artifacts:
path: ~/outputs1
- store_artifacts:
path: ~/outputs2
deploy:
machine:
image: circleci/classic:latest
steps:
- checkout
- restore_cache:
key: v_0-image_cache-{{ checksum "Dockerfile" }}-{{ .Revision }}
- run:
name: load image
command: docker load -i ~/docker/image.tar
- deploy:
command: |
if [[ -n "$DOCKER_PASS" ]]; then docker login -u $DOCKER_USER -p $DOCKER_PASS && docker push bids/${CIRCLE_PROJECT_REPONAME}:latest; fi
if [[ -n "$DOCKER_PASS" ]]; then docker login -u $DOCKER_USER -p $DOCKER_PASS && docker tag bids/${CIRCLE_PROJECT_REPONAME} bids/${CIRCLE_PROJECT_REPONAME}:$CIRCLE_TAG && docker push bids/${CIRCLE_PROJECT_REPONAME}:$CIRCLE_TAG; fi
no_output_timeout: 6h
workflows:
version: 2.1
build_test_deploy:
jobs:
- build:
filters:
tags:
only: /.*/
branches:
only: /.*/
- test:
requires:
- build
filters:
tags:
only: /.*/
branches:
only: /.*/
- deploy:
requires:
- build
- test
filters:
branches:
ignore: /.*/
tags:
only: /.*/