This repository has been archived by the owner on Sep 9, 2020. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 33
/
cloudbuild.yaml
159 lines (140 loc) · 3.95 KB
/
cloudbuild.yaml
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
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
timeout: 3600s # Cache misses are slow to rebuild
substitutions:
# Bump the version if you make changes to `ci/Dockerfile
_BUILD_IMAGE: eu.gcr.io/opensourcecoin/radicle-ci:v4
options:
machineType: N1_HIGHCPU_8
steps:
- id: "Build CI base image"
name: gcr.io/cloud-builders/docker
entrypoint: 'bash'
args:
- '-c'
- |
set -euxo pipefail
if ! docker pull $_BUILD_IMAGE; then
docker build ci --tag $_BUILD_IMAGE
docker push $_BUILD_IMAGE
fi
- id: "Load cache"
name: $_BUILD_IMAGE
entrypoint: 'bash'
args:
- '-c'
- |
set -euxo pipefail
source scripts/ci.sh
load-cache
- id: "Build deps"
name: $_BUILD_IMAGE
env: ['STACK_ROOT=/workspace/.stack']
entrypoint: 'bash'
args:
- '-c'
- |
set -euxo pipefail
stack config set system-ghc --global true
stack config set install-ghc --global false
stack build \
--no-terminal \
--test \
--dependencies-only
- id: "Save cache"
waitFor:
- "Build deps"
name: $_BUILD_IMAGE
entrypoint: 'bash'
env:
- BRANCH_NAME=$BRANCH_NAME
args:
- '-c'
- |
set -euxo pipefail
source scripts/ci.sh
save-cache
- id: "Build"
name: $_BUILD_IMAGE
env: ['STACK_ROOT=/workspace/.stack']
entrypoint: bash
args:
- '-c'
- |
set -euxo pipefail
stack build \
--no-terminal \
--fast \
--pedantic
- id: "Build rad-daemon-radicle image"
waitFor:
- "Build"
name: $_BUILD_IMAGE
entrypoint: bash
env:
- STACK_ROOT=/workspace/.stack
- COMMIT_SHA=$COMMIT_SHA
- BRANCH_NAME=$BRANCH_NAME
args:
- "-c"
- |
set -euxo pipefail
./images/rad-daemon-radicle/ci-copy-bin.sh
image_name="eu.gcr.io/opensourcecoin/rad-daemon-radicle"
short_sha=$(echo "$COMMIT_SHA" | head --bytes=7)
# Looks like this: b2018.12.06-a76a52f
tag="b$(date +%Y.%m.%d)-${short_sha}"
docker build \
--tag "$image_name" \
--cache-from "$image_name" \
./images/rad-daemon-radicle
if [ "$BRANCH_NAME" == "master" ]; then
docker tag "$image_name" "$image_name:$tag"
docker push "$image_name"
docker push "$image_name:$tag"
fi
- id: "Integration tests"
waitFor:
- "Build"
name: $_BUILD_IMAGE
env: ['STACK_ROOT=/workspace/.stack']
entrypoint: 'bash'
args:
- "-c"
- |
set -euxo pipefail
export COMPOSE_FILE=test/docker-compose.yaml
export RAD_BIN="$(stack path --local-install-root)/bin"
ls "$(stack path --local-install-root)/bin"
docker-compose up -d
sleep 1 # Wait for containers to be started
# Connect services to 'cloudbuild' network so they can be
# accessed by other steps
docker network connect cloudbuild test_ipfs-test-network_1 --alias ipfs-test-network
docker network connect cloudbuild test_radicle-daemon1_1 --alias radicle-daemon1
docker network connect cloudbuild test_radicle-daemon2_1 --alias radicle-daemon2
docker exec test_ipfs-test-network_1 /app/wait-until-ready
sleep 10
# Add the empty entry to the IPFS test network. Radicle requires it
echo '{"radicle": true}' | docker exec -i test_ipfs-test-network_1 ipfs dag put --pin
export RAD_IPFS_API_URL=http://ipfs-test-network:5001
export RADPATH="$(pwd)/rad-base/rad"
export IS_CI_NET="yes"
stack test :e2e
- id: "Package"
waitFor:
- "Integration tests"
name: $_BUILD_IMAGE
env:
- STACK_ROOT=/workspace/.stack
- TAG_NAME=$TAG_NAME
entrypoint: 'bash'
args:
- "-c"
- |
set -euxo pipefail
if [[ "$TAG_NAME" == v* ]]; then
VERSION=${TAG_NAME/#'v'} TARGET=debian ./packaging/build-package.sh
cp \
"packaging/out/radicle_${TAG_NAME/#'v'}_amd64.deb" \
"packaging/out/radicle_latest_amd64.deb"
./packaging/upload.sh
fi