Skip to content

Commit 07d59f6

Browse files
authored
Merge pull request #1569 from FCP-INDI/develop
Release v1.8.1
2 parents 0926b45 + 14acd06 commit 07d59f6

File tree

619 files changed

+13743
-52077
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

619 files changed

+13743
-52077
lines changed

.circleci/config.yml

Lines changed: 12 additions & 244 deletions
Original file line numberDiff line numberDiff line change
@@ -1,247 +1,15 @@
1+
setup: true
12
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]
2235
workflows:
224-
version: 2
225-
build-and-test:
6+
setup:
2267
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

Comments
 (0)