Skip to content

Commit 4eba0c7

Browse files
committed
CI: Update workflow with deploy + test
1 parent fc5f091 commit 4eba0c7

File tree

1 file changed

+104
-6
lines changed

1 file changed

+104
-6
lines changed

.circleci/config.yml

Lines changed: 104 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -3,27 +3,125 @@ jobs:
33
build:
44
docker:
55
- image: docker:18.01.0-ce-git
6-
working_directory: /home/circleci/fitlins
6+
working_directory: /tmp/src/fitlins
77
steps:
8-
- checkout:
9-
path: /home/circleci/fitlins
8+
- run:
9+
name: Install parallel gzip
10+
command: |
11+
apk add --no-cache pigz
12+
- checkout
1013
- setup_remote_docker
1114
- run:
1215
name: Build image
1316
no_output_timeout: 30m
1417
command: |
1518
docker build \
16-
--tag fitlins \
19+
--tag poldracklab/fitlins:latest \
1720
--build-arg BUILD_DATE="$(date -u +"%Y-%m-%dT%H:%M:%SZ")" \
1821
--build-arg VCS_REF="$(git rev-parse --short HEAD)" \
19-
--build-arg VERSION="${CIRCLE_TAG}" /home/circleci/fitlins
22+
--build-arg VERSION="${CIRCLE_TAG}" .
2023
- run:
2124
name: Verify executable can be run
22-
command: docker run --rm -it fitlins --help
25+
command: docker run --rm -it poldracklab/fitlins:latest --help
26+
- run:
27+
name: Docker save
28+
no_output_timeout: 40m
29+
command: |
30+
mkdir -p /tmp/cache
31+
docker save poldracklab/fitlins:latest \
32+
| pigz -8 -p 3 > /tmp/cache/docker.tar.gz
33+
- persist_to_workspace:
34+
root: /tmp
35+
paths:
36+
- cache/docker.tar.gz
37+
- src/fitlins
2338

39+
deploy_test:
40+
machine:
41+
image: circleci/classic:201711-01
42+
working_directory: /tmp/src/fitlins
43+
steps:
44+
- attach_workspace:
45+
at: /tmp
46+
- run:
47+
name: Load Docker image layer cache
48+
no_output_timeout: 30m
49+
command: |
50+
docker info
51+
set +o pipefail
52+
if [ -f /tmp/cache/docker.tar.gz ]; then
53+
sudo apt update && sudo apt -y install pigz
54+
pigz -d --stdout /tmp/cache/docker.tar.gz | docker load
55+
docker images
56+
fi
57+
- run:
58+
name: Deploy to Docker Hub
59+
no_output_timeout: 40m
60+
command: |
61+
if [[ -n "$DOCKER_PASS" ]]; then
62+
docker login -u $DOCKER_USER -p $DOCKER_PASS
63+
fi
64+
- run:
65+
name: Deploy to PyPi
66+
command: |
67+
pip install "setuptools>=27.0" twine
68+
echo "${CIRCLE_TAG}" > fitlins/VERSION
69+
python setup.py sdist
70+
71+
deploy:
72+
machine:
73+
image: circleci/classic:201711-01
74+
working_directory: /tmp/src/fitlins
75+
steps:
76+
- attach_workspace:
77+
at: /tmp
78+
- run:
79+
name: Load Docker image layer cache
80+
no_output_timeout: 30m
81+
command: |
82+
docker info
83+
set +o pipefail
84+
if [ -f /tmp/cache/docker.tar.gz ]; then
85+
sudo apt update && sudo apt -y install pigz
86+
pigz -d --stdout /tmp/cache/docker.tar.gz | docker load
87+
docker images
88+
fi
89+
- run:
90+
name: Deploy to Docker Hub
91+
no_output_timeout: 40m
92+
command: |
93+
if [[ -n "$DOCKER_PASS" ]]; then
94+
docker login -u $DOCKER_USER -p $DOCKER_PASS
95+
docker push poldracklab/fitlins:latest
96+
docker tag poldracklab/fitlins poldracklab/fitlins:$CIRCLE_TAG
97+
docker push poldracklab/fitlins:$CIRCLE_TAG
98+
fi
99+
- run:
100+
name: Deploy to PyPi
101+
command: |
102+
pip install "setuptools>=27.0" twine
103+
echo "${CIRCLE_TAG}" > fitlins/VERSION
104+
python setup.py sdist
105+
twine upload dist/*
24106
25107
workflows:
26108
version: 2
27109
fitlins_tests:
28110
jobs:
29111
- build
112+
- deploy_test:
113+
requires:
114+
- build
115+
filters:
116+
branches:
117+
only: /rel\/[\d\.]+/
118+
tags:
119+
ignore: /.*/
120+
- deploy:
121+
requires:
122+
- build
123+
filters:
124+
branches:
125+
ignore: /.*/
126+
tags:
127+
only: /.*/

0 commit comments

Comments
 (0)