|
| 1 | +setup: true |
1 | 2 | version: 2.1
|
2 |
| - |
3 |
| -commands: |
4 |
| - build-images: |
5 |
| - parameters: |
6 |
| - variant: |
7 |
| - type: string |
8 |
| - default: "" |
9 |
| - steps: |
10 |
| - - set-up-variant: |
11 |
| - variant: "<< parameters.variant >>" |
12 |
| - - run: |
13 |
| - name: "Building Docker image" |
14 |
| - command: | |
15 |
| - docker build -t fcpindi/c-pac:${DOCKER_TAG} . ${DOCKERFILE} |
16 |
| - docker save fcpindi/c-pac:${DOCKER_TAG} | gzip > ${DOCKER_TARBALL}.tar.gz |
17 |
| - no_output_timeout: 5h |
18 |
| - - run: |
19 |
| - name: "Starting local registry" |
20 |
| - command: docker run -d -p 5000:5000 --restart=always --name registry registry:2 |
21 |
| - - install-singularity-requirements |
22 |
| - - when: |
23 |
| - condition: |
24 |
| - or: |
25 |
| - - equal: [ "", "<< parameters.variant >>" ] |
26 |
| - - equal: [ "lite", "<< parameters.variant >>" ] |
27 |
| - steps: |
28 |
| - - run: |
29 |
| - name: "Cloning Singularity 2.5.2" |
30 |
| - command: git clone -b 2.5.2 https://github.com/sylabs/singularity |
31 |
| - - set-up-singularity |
32 |
| - - run: |
33 |
| - name: "Building Singularity image from Docker image" |
34 |
| - command: | |
35 |
| - docker load < ${DOCKER_TARBALL}.tar.gz |
36 |
| - docker tag fcpindi/c-pac:${CIRCLE_BRANCH//\//_}${VARIANT} localhost:5000/fcpindi/c-pac:${CIRCLE_BRANCH//\//_}${VARIANT} |
37 |
| - docker push localhost:5000/fcpindi/c-pac:${CIRCLE_BRANCH//\//_}${VARIANT} |
38 |
| - SINGULARITY_NOHTTPS=1 singularity build cpac-singularity-image${VARIANT}.simg docker://localhost:5000/fcpindi/c-pac:${CIRCLE_BRANCH//\//_}${VARIANT} |
39 |
| - no_output_timeout: 5h |
40 |
| - check-for-built-images: |
41 |
| - steps: |
42 |
| - - run: |
43 |
| - name: "Checking for locally built images" |
44 |
| - command: | |
45 |
| - if [[ ! -f cpac-docker-image.tar.gz || ! -f cpac-singularity-image.simg ]] |
46 |
| - then |
47 |
| - circleci step halt |
48 |
| - fi |
49 |
| - configure-git-user: |
50 |
| - steps: |
51 |
| - - add_ssh_keys: |
52 |
| - fingerprints: |
53 |
| - - "12:bc:f2:e4:31:cc:72:54:54:bc:f5:5b:89:e6:d8:ee" |
54 |
| - - run: |
55 |
| - name: "Configuring git user" |
56 |
| - command: | |
57 |
| - sudo apt-key adv --recv-keys --keyserver keyserver.ubuntu.com 78BD65473CB3BD13 |
58 |
| - curl -L https://packagecloud.io/circleci/trusty/gpgkey | sudo apt-key add - |
59 |
| - sudo apt-get update |
60 |
| - sudo apt-get install git -y |
61 |
| - git config --global user.email "${CIRCLE_USERNAME}@users.noreply.github.com" |
62 |
| - git config --global user.name "${CIRCLE_USERNAME} @ CircleCI" |
63 |
| - get-sample-bids-data: |
64 |
| - steps: |
65 |
| - - run: |
66 |
| - name: Getting Sample BIDS Data |
67 |
| - command: git clone https://github.com/bids-standard/bids-examples.git |
68 |
| - set-python-version: |
69 |
| - steps: |
70 |
| - - run: |
71 |
| - name: "Setting Python Version" |
72 |
| - command: | |
73 |
| - cd /opt/circleci/.pyenv/plugins/python-build/../.. && git pull && cd - |
74 |
| - pyenv install -v 3.7.9 |
75 |
| - pyenv global 3.7.9 |
76 |
| - install-singularity-requirements: |
77 |
| - steps: |
78 |
| - - run: |
79 |
| - name: "Installing Singularity requirements" |
80 |
| - command: | |
81 |
| - sudo apt-get update && sudo apt-get install flawfinder squashfs-tools uuid-dev libuuid1 libffi-dev libssl-dev libssl1.1 libarchive-dev libgpgme11-dev libseccomp-dev -y |
82 |
| - run-pytest-docker: |
83 |
| - steps: |
84 |
| - - run: |
85 |
| - name: Running pytest on Docker image |
86 |
| - command: | |
87 |
| - docker load < cpac-docker-image.tar.gz |
88 |
| - docker run -dit -P -v /home/circleci/project/test-results:/code/test-results -v /home/circleci/project/htmlcov:/code/htmlcov --entrypoint=/bin/bash --name docker_test fcpindi/c-pac:${DOCKER_TAG} |
89 |
| - docker exec docker_test /bin/bash ./code/dev/circleci_data/test_in_image.sh |
90 |
| - set-up-singularity: |
91 |
| - steps: |
92 |
| - - run: |
93 |
| - name: "Setting up Singularity" |
94 |
| - command: | |
95 |
| - cd singularity |
96 |
| - ./autogen.sh |
97 |
| - ./configure --prefix=/usr/local --sysconfdir=/etc |
98 |
| - make |
99 |
| - sudo make install |
100 |
| - cd .. |
101 |
| - set-up-variant: |
102 |
| - parameters: |
103 |
| - variant: |
104 |
| - type: string |
105 |
| - steps: |
106 |
| - - run: |
107 |
| - name: "Setting up variant" |
108 |
| - command: | |
109 |
| - DOCKER_TARBALL="cpac-docker-image" |
110 |
| - if [[ -n "<< parameters.variant >>" ]] |
111 |
| - then |
112 |
| - DOCKERFILE="variant-<< parameters.variant >>.Dockerfile" |
113 |
| - if [[ -f ${DOCKERFILE} ]] |
114 |
| - then |
115 |
| - sed -i "s|:latest|:${CIRCLE_BRANCH//\//_}|g" ${DOCKERFILE} |
116 |
| - fi |
117 |
| - DOCKER_TARBALL="${DOCKER_TARBALL}-<< parameters.variant >>" |
118 |
| - VARIANT="-<< parameters.variant >>" |
119 |
| - echo "export DOCKERFILE=\"-f ${DOCKERFILE}\"" >> $BASH_ENV |
120 |
| - fi |
121 |
| - echo "export DOCKER_TARBALL=${DOCKER_TARBALL}" >> $BASH_ENV |
122 |
| - echo "export VARIANT=${VARIANT}" >> $BASH_ENV |
123 |
| - DOCKER_TAG=${CIRCLE_BRANCH//\//_}${VARIANT} |
124 |
| - echo "export DOCKER_TAG=${DOCKER_TAG}" >> $BASH_ENV |
125 |
| - test-singularity-installation: |
126 |
| - steps: |
127 |
| - - run: |
128 |
| - name: Testing Singularity installation |
129 |
| - command: | |
130 |
| - pip install -r dev/circleci_data/requirements.txt |
131 |
| - coverage run -m pytest --junitxml=test-results/junit.xml --continue-on-collection-errors dev/circleci_data/test_install.py |
132 |
| -
|
133 |
| -jobs: |
134 |
| - pytest-docker: |
135 |
| - parameters: |
136 |
| - variant: |
137 |
| - type: string |
138 |
| - default: "" |
139 |
| - machine: |
140 |
| - image: ubuntu-2004:202010-01 |
141 |
| - steps: |
142 |
| - - attach_workspace: |
143 |
| - at: /home/circleci/ |
144 |
| - - set-up-variant: |
145 |
| - variant: "<< parameters.variant >>" |
146 |
| - - check-for-built-images |
147 |
| - - set-python-version |
148 |
| - - get-sample-bids-data |
149 |
| - - run-pytest-docker |
150 |
| - - store_test_results: |
151 |
| - path: test-results |
152 |
| - - store_artifacts: |
153 |
| - path: test-results |
154 |
| - - store_artifacts: |
155 |
| - path: htmlcov |
156 |
| - |
157 |
| - pytest-singularity: |
158 |
| - machine: |
159 |
| - image: ubuntu-2004:202010-01 |
160 |
| - steps: |
161 |
| - - attach_workspace: |
162 |
| - # Must be absolute path or relative path from working_directory |
163 |
| - at: /home/circleci/ |
164 |
| - - check-for-built-images |
165 |
| - - set-python-version |
166 |
| - - install-singularity-requirements |
167 |
| - - set-up-singularity |
168 |
| - - test-singularity-installation |
169 |
| - |
170 |
| - build: |
171 |
| - machine: |
172 |
| - image: ubuntu-2004:202010-01 |
173 |
| - steps: |
174 |
| - - checkout |
175 |
| - - set-python-version |
176 |
| - - configure-git-user |
177 |
| - - run: |
178 |
| - name: "Checking if version needs updated" |
179 |
| - # update version if version needs updated, otherwise just move on |
180 |
| - command: | |
181 |
| - COMMIT_MESSAGE=$(git log -1 --pretty=%B) |
182 |
| - if [[ ! "$COMMIT_MESSAGE" == *"Update version to"* ]] |
183 |
| - then |
184 |
| - cd $HOME/project/CPAC |
185 |
| - VERSION=$(python -c "from info import __version__; print('.'.join(('.'.join(__version__[::-1].split('-')[1].split('.')[1:])[::-1], __version__.split('-')[1])) if '-' in __version__ else __version__)") |
186 |
| - cd .. |
187 |
| - echo "v${VERSION}" > version |
188 |
| - sed -i -r "s/^(# [Vv]ersion ).*$/# Version ${VERSION}/g" dev/docker_data/default_pipeline.yml |
189 |
| - find ./CPAC/resources/configs -name "*.yml" -exec sed -i -r "s/^(# [Vv]ersion ).*$/# Version ${VERSION}/g" {} \; |
190 |
| - git add version CPAC/resources/configs dev/docker_data/default_pipeline.yml |
191 |
| - if [[ ! -z $(git diff origin/${CIRCLE_BRANCH}) ]] |
192 |
| - then |
193 |
| - git commit -m ":bookmark: Update version to ${VERSION} ($COMMIT_MESSAGE)" |
194 |
| - git push origin HEAD:${CIRCLE_BRANCH} || true |
195 |
| - circleci step halt |
196 |
| - fi |
197 |
| - cd .. |
198 |
| - fi |
199 |
| - - build-images |
200 |
| - - store_artifacts: |
201 |
| - path: cpac-docker-image.tar.gz |
202 |
| - - store_artifacts: |
203 |
| - path: cpac-singularity-image.simg |
204 |
| - - persist_to_workspace: |
205 |
| - root: /home/circleci/ |
206 |
| - paths: |
207 |
| - - cpac-docker-image.tar.gz |
208 |
| - - cpac-singularity-image.simg |
209 |
| - - project |
210 |
| - build-lite: |
211 |
| - machine: |
212 |
| - image: ubuntu-2004:202010-01 |
213 |
| - steps: |
214 |
| - - checkout |
215 |
| - - set-python-version |
216 |
| - - build-images: |
217 |
| - variant: lite |
218 |
| - - store_artifacts: |
219 |
| - path: cpac-docker-image-lite.tar.gz |
220 |
| - - store_artifacts: |
221 |
| - path: cpac-singularity-image-lite.simg |
222 |
| - |
| 3 | +orbs: |
| 4 | + continuation: circleci/[email protected] |
223 | 5 | workflows:
|
224 |
| - version: 2 |
225 |
| - build-and-test: |
| 6 | + setup: |
226 | 7 | jobs:
|
227 |
| - - build: |
228 |
| - name: "Build images" |
229 |
| - - build-lite: |
230 |
| - name: "Build lite variant images" |
231 |
| - - pytest-docker: |
232 |
| - name: "Test in Docker" |
233 |
| - requires: |
234 |
| - - "Build images" |
235 |
| - - pytest-docker: |
236 |
| - name: "Test lite variant in Docker" |
237 |
| - requires: |
238 |
| - - "Build lite variant images" |
239 |
| - variant: lite |
240 |
| - - pytest-singularity: |
241 |
| - name: "Test in Singularity" |
242 |
| - requires: |
243 |
| - - "Build images" |
244 |
| - - pytest-singularity: |
245 |
| - name: "Test lite variant in Singularity" |
246 |
| - requires: |
247 |
| - - "Build lite variant images" |
| 8 | + - continuation/continue: |
| 9 | + configuration_path: ".circleci/main.yml" |
| 10 | + parameters: /home/circleci/test.json |
| 11 | + pre-steps: |
| 12 | + - run: |
| 13 | + command: | |
| 14 | + echo '{ "owner": "'${CIRCLE_PROJECT_USERNAME}'", "branch": "'${CIRCLE_BRANCH}'" }' >> /home/circleci/test.json |
| 15 | +
|
0 commit comments