forked from getsentry/relay
-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathcloudbuild.yaml
118 lines (110 loc) · 3.9 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
steps:
# GCB only fetches a source archive, but the build requires an actual git repo. Note that the
# clone behavior changed multiple times between 2017 and 2019 and might not be stable.
# See: https://github.com/GoogleCloudPlatform/cloud-builders/issues/236#issuecomment-558991730
- name: "gcr.io/cloud-builders/git"
entrypoint: "bash"
args:
- "-c"
- |
git init
git remote add origin https://github.com/getsentry/$REPO_NAME.git
git fetch --depth=1 origin $COMMIT_SHA
git reset --hard FETCH_HEAD
git config -f .gitmodules submodule.core.url https://github.com/getsentry/$REPO_NAME.git
- name: "gcr.io/cloud-builders/docker"
entrypoint: "bash"
args:
[
"-c",
"docker pull us.gcr.io/$PROJECT_ID/relay:nightly || true"
]
# Pull the image with the first build stage
- name: "gcr.io/cloud-builders/docker"
entrypoint: "bash"
args:
[
"-c",
"docker pull us.gcr.io/$PROJECT_ID/relay:deps || true"
]
# Build the first stage
- name: "gcr.io/cloud-builders/docker"
args:
[
"build",
"--target", "relay-deps",
"-t", "us.gcr.io/$PROJECT_ID/relay:deps",
"--cache-from", "us.gcr.io/$PROJECT_ID/relay:deps",
".",
]
# Build everything
- name: "gcr.io/cloud-builders/docker"
args:
[
"build",
"-t", "us.gcr.io/$PROJECT_ID/relay:nightly",
"-t", "us.gcr.io/$PROJECT_ID/relay:$COMMIT_SHA",
"--cache-from", "us.gcr.io/$PROJECT_ID/relay:deps",
"--cache-from", "us.gcr.io/$PROJECT_ID/relay:nightly",
".",
]
# We push the image to GCR since the Sentry integration tests are polling
- name: "gcr.io/cloud-builders/docker"
args:
[
"push",
"us.gcr.io/$PROJECT_ID/relay:$COMMIT_SHA"
]
# On-premise Integration tests
- name: 'gcr.io/$PROJECT_ID/docker-compose'
entrypoint: 'bash'
env:
- 'RELAY_IMAGE=us.gcr.io/$PROJECT_ID/relay:$COMMIT_SHA'
- 'SENTRY_TEST_HOST=http://nginx'
- 'CI=1'
args:
- '-e'
- '-c'
- |
mkdir self-hosted && cd self-hosted
curl -L "https://github.com/getsentry/self-hosted/archive/master.tar.gz" | tar xzf - --strip-components=1
# The following trick is from https://stackoverflow.com/a/52400857/90297 with great gratuity
echo '{"version": "3.4", "networks":{"default":{"external":{"name":"cloudbuild"}}}}' > docker-compose.override.yml
./install.sh
./test.sh || docker-compose logs nginx web relay
timeout: 900s
- name: 'gcr.io/cloud-builders/docker'
secretEnv: ['DOCKER_PASSWORD']
entrypoint: 'bash'
args:
- '-e'
- '-c'
- |
# Only push to Docker Hub from master
[ "$BRANCH_NAME" != "master" ] && exit 0
docker push us.gcr.io/$PROJECT_ID/relay:nightly
echo "$$DOCKER_PASSWORD" | docker login --username=sentrybuilder --password-stdin
docker tag us.gcr.io/$PROJECT_ID/relay:$COMMIT_SHA getsentry/relay:$SHORT_SHA
docker push getsentry/relay:$SHORT_SHA
docker tag us.gcr.io/$PROJECT_ID/relay:$COMMIT_SHA getsentry/relay:$COMMIT_SHA
docker push getsentry/relay:$COMMIT_SHA
docker tag us.gcr.io/$PROJECT_ID/relay:$COMMIT_SHA getsentry/relay:nightly
docker push getsentry/relay:nightly
images:
[
"us.gcr.io/$PROJECT_ID/relay:deps",
"us.gcr.io/$PROJECT_ID/relay:$COMMIT_SHA",
]
timeout: 3600s
options:
# Run on bigger machines
machineType: 'E2_HIGHCPU_8'
secrets:
- kmsKeyName: projects/sentryio/locations/global/keyRings/service-credentials/cryptoKeys/cloudbuild
secretEnv:
# This is a personal access token for the sentrybuilder account, encrypted using the
# short guide at http://bit.ly/2Pg6uw9
DOCKER_PASSWORD: |
CiQAE8gN7y3OMxn+a1kofmK4Bi8jQZtdRFj2lYYwaZHVeIIBUzMSTQA9tvn8XCv2vqj6u8CHoeSP
TVW9pLvSCorKoeNtOp0eb+6V1yNJW/+JC07DNO1KLbTbodbuza6jKJHU5xeAJ4kGQI78UY5Vu1Gp
QcMK