Skip to content

Commit 0857051

Browse files
authored
Update GCB scripts (#2661)
1 parent e62d970 commit 0857051

11 files changed

+141
-116
lines changed

release/cloudbuild-delete.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ steps:
4343
4444
gcloud auth activate-service-account --key-file=tool-credential.json
4545
46-
for service in default pubapi backend bsa tools
46+
for service in default pubapi backend bsa tools console
4747
do
4848
for version in $(gcloud app versions list \
4949
--filter="SERVICE:$service AND SERVING_STATUS:STOPPED" \

release/cloudbuild-dev-resource.yaml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -10,21 +10,21 @@
1010
# https://cloud.google.com/cloud-build/docs/running-builds/automate-builds
1111
steps:
1212
# Compile javadoc
13-
- name: 'gcr.io/${PROJECT_ID}/builder:latest'
13+
- name: 'gcr.io/${PROJECT_ID}/builder:live'
1414
entrypoint: /bin/bash
1515
args: ['./gradlew', ':javadoc']
1616
# Upload the files to GCS
1717
# We don't use GCB's built-in artifacts uploader because we want to delete
1818
# the existing files in the bucket first, and we want to parallelize the
1919
# uploading process.
20-
- name: 'gcr.io/${PROJECT_ID}/builder:latest'
20+
- name: 'gcr.io/${PROJECT_ID}/builder:live'
2121
entrypoint: /bin/bash
2222
args: ['gsutil', '-m', 'rsync', '-d', '-r', 'build/docs/javadoc', 'gs://${PROJECT_ID}-javadoc']
2323
# Upload the files to GCS
2424
# We don't use GCB's built-in artifacts uploader because we want to delete
2525
# the existing files in the bucket first, and we want to parallelize the
2626
# uploading process.
27-
- name: 'gcr.io/${PROJECT_ID}/builder:latest'
27+
- name: 'gcr.io/${PROJECT_ID}/builder:live'
2828
entrypoint: /bin/bash
2929
args: ['gsutil', '-m', 'rsync', '-d', '-r', 'db/src/main/resources/sql/er_diagram',
3030
'gs://${PROJECT_ID}-er-diagram']

release/cloudbuild-kythe.yaml

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
# https://cloud.google.com/cloud-build/docs/running-builds/automate-builds
1010
steps:
1111
# Download Kythe
12-
- name: 'gcr.io/${PROJECT_ID}/builder:latest'
12+
- name: 'gcr.io/${PROJECT_ID}/builder:live'
1313
entrypoint: /bin/bash
1414
args:
1515
- -c
@@ -20,7 +20,7 @@ steps:
2020
rm kythe-${_KYTHE_VERSION}.tar.gz
2121
mv kythe-${_KYTHE_VERSION} kythe
2222
# Build Nomulus with the Kythe wrapper
23-
- name: 'gcr.io/${PROJECT_ID}/builder:latest'
23+
- name: 'gcr.io/${PROJECT_ID}/builder:live'
2424
entrypoint: /bin/bash
2525
args:
2626
- -c
@@ -44,7 +44,7 @@ steps:
4444
./gradlew clean testClasses \
4545
-Dno_werror=true -PenableCrossReferencing=true
4646
# Merge kzip files
47-
- name: 'gcr.io/${PROJECT_ID}/builder:latest'
47+
- name: 'gcr.io/${PROJECT_ID}/builder:live'
4848
entrypoint: /bin/bash
4949
args:
5050
- -c
@@ -53,13 +53,11 @@ steps:
5353
./kythe/tools/kzip merge \
5454
--output $${KYTHE_OUTPUT_DIRECTORY}/merged/${COMMIT_SHA}.kzip \
5555
$${KYTHE_OUTPUT_DIRECTORY}/*.kzip
56-
5756
artifacts:
5857
objects:
5958
location: 'gs://${PROJECT_ID}-codesearch'
6059
paths:
6160
- 'kythe_output/merged/${COMMIT_SHA}.kzip'
62-
6361
timeout: 3600s
6462
options:
6563
machineType: 'E2_HIGHCPU_32'

release/cloudbuild-nomulus.yaml

Lines changed: 3 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -92,11 +92,8 @@ steps:
9292
set -e
9393
digest=$(gcloud container images list-tags gcr.io/${PROJECT_ID}/nomulus-tool \
9494
--format="get(digest)" --filter="tags = ${TAG_NAME}")
95-
sed -i s/'$${_IMAGE}'/nomulus-tool/g release/cloudbuild-tag.yaml
96-
sed -i s/':$${TAG_NAME}'/@$digest/g release/cloudbuild-tag.yaml
97-
sed -i s/'nomulus-tool:latest'/nomulus-tool@$digest/g release/cloudbuild-deploy-*.yaml
9895
# schema-deploy and schema-verify scripts
99-
sed -i s/'nomulus-tool:latest'/nomulus-tool@$digest/g release/cloudbuild-schema-*.yaml
96+
sed -i s/nomulus-tool:latest/nomulus-tool@$digest/g release/cloudbuild-schema-*.yaml
10097
# Build and upload the prober_cert_updater image. This image extends from the `builder` and the
10198
# nomulus.jar built earlier.
10299
- name: 'gcr.io/${PROJECT_ID}/builder:latest'
@@ -114,17 +111,6 @@ steps:
114111
docker push gcr.io/${PROJECT_ID}/prober_cert_updater:${TAG_NAME}
115112
docker push gcr.io/${PROJECT_ID}/prober_cert_updater:latest
116113
dir: 'release/prober-cert-updater/'
117-
# Update the prober_updater image digest in relevant GCB files.
118-
- name: 'gcr.io/${PROJECT_ID}/builder:latest'
119-
entrypoint: /bin/bash
120-
args:
121-
- -c
122-
- |
123-
set -e
124-
digest=$(gcloud container images list-tags gcr.io/${PROJECT_ID}/prober_cert_updater \
125-
--format="get(digest)" --filter="tags = ${TAG_NAME}")
126-
sed -i s/prober_cert_updater:latest/prober_cert_updater@$digest/g \
127-
release/cloudbuild-renew-prober-certs-*.yaml
128114
# Build and upload the db_object_updater image. This image extends from the `builder` and the
129115
# nomulus.jar built earlier.
130116
- name: 'gcr.io/${PROJECT_ID}/builder:latest'
@@ -142,17 +128,6 @@ steps:
142128
docker push gcr.io/${PROJECT_ID}/db_object_updater:${TAG_NAME}
143129
docker push gcr.io/${PROJECT_ID}/db_object_updater:latest
144130
dir: 'release/db-object-updater/'
145-
# Update the db_object_updater image digest in relevant GCB files.
146-
- name: 'gcr.io/${PROJECT_ID}/builder:latest'
147-
entrypoint: /bin/bash
148-
args:
149-
- -c
150-
- |
151-
set -e
152-
digest=$(gcloud container images list-tags gcr.io/${PROJECT_ID}/db_object_updater \
153-
--format="get(digest)" --filter="tags = ${TAG_NAME}")
154-
sed -i s/db_object_updater:latest/db_object_updater@$digest/g \
155-
release/cloudbuild-sync-db-objects-*.yaml
156131
# Build and stage Dataflow Flex templates.
157132
- name: 'gcr.io/${PROJECT_ID}/builder:latest'
158133
entrypoint: /bin/bash
@@ -215,14 +190,11 @@ artifacts:
215190
- 'output/tag_name'
216191
- 'output/nomulus.jar'
217192
- 'output/schema.jar'
218-
- 'release/cloudbuild-tag.yaml'
219-
- 'release/cloudbuild-sync.yaml'
193+
- 'release/cloudbuild-sync-and-tag.yaml'
220194
- 'release/cloudbuild-deploy-*.yaml'
221195
- 'release/cloudbuild-delete-*.yaml'
222-
- 'release/cloudbuild-renew-prober-certs-*.yaml'
223196
- 'release/cloudbuild-schema-deploy-*.yaml'
224197
- 'release/cloudbuild-schema-verify-*.yaml'
225-
- 'release/cloudbuild-sync-db-objects-*.yaml'
226198
- 'jetty/kubernetes/*.yaml'
227199
- 'jetty/kubernetes/gateway/*.yaml'
228200
# The images are already uploaded, but we still need to include them there so that
@@ -232,4 +204,4 @@ images:
232204
- 'gcr.io/${PROJECT_ID}/proxy:${TAG_NAME}'
233205
timeout: 7200s
234206
options:
235-
machineType: 'E2_HIGHCPU_32'
207+
machineType: 'E2_HIGHCPU_32'

release/cloudbuild-proxy.yaml

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -43,8 +43,6 @@ steps:
4343
--keyversion-project=${PROJECT_ID} --keyversion-location=global \
4444
--keyversion-keyring=attestor-keys --keyversion-key=signing \
4545
--keyversion=1
46-
sed -i s/'$${_IMAGE}'/proxy/g release/cloudbuild-tag.yaml
47-
sed -i s/':$${TAG_NAME}'/@$digest/g release/cloudbuild-tag.yaml
4846
# Images to upload to GCR. Even though the image has already been uploaded, we still include it
4947
# here so that the GCB pubsub message contains it (for Spinnaker to consume).
5048
images: ['gcr.io/${PROJECT_ID}/proxy:${TAG_NAME}']
@@ -55,7 +53,6 @@ artifacts:
5553
# This cannot be regexs because of how Spinnaker constructs artifact paths.
5654
paths:
5755
- 'proxy/kubernetes/proxy-*.yaml'
58-
- 'release/cloudbuild-tag.yaml'
5956
timeout: 3600s
6057
options:
6158
machineType: 'E2_HIGHCPU_32'

release/cloudbuild-release.yaml

Lines changed: 20 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -83,13 +83,12 @@ steps:
8383
sed -i s/builder:latest/builder@$builder_digest/g release/cloudbuild-proxy.yaml
8484
sed -i s/builder:latest/builder@$builder_digest/g release/cloudbuild-nomulus.yaml
8585
sed -i s/builder:latest/builder@$builder_digest/g release/cloudbuild-deploy.yaml
86-
sed -i s/builder:latest/builder@$builder_digest/g release/cloudbuild-sync.yaml
87-
sed -i s/builder:latest/builder@$builder_digest/g release/cloudbuild-tag.yaml
86+
sed -i s/builder:latest/builder@$builder_digest/g release/cloudbuild-sync-and-tag.yaml
8887
sed -i s/builder:latest/builder@$builder_digest/g release/cloudbuild-schema-deploy.yaml
8988
sed -i s/builder:latest/builder@$builder_digest/g release/cloudbuild-schema-verify.yaml
9089
sed -i s/builder:latest/builder@$builder_digest/g release/cloudbuild-delete.yaml
9190
sed -i s/GCP_PROJECT/${PROJECT_ID}/ proxy/kubernetes/proxy-*.yaml
92-
sed -i s/'$${TAG_NAME}'/${TAG_NAME}/g release/cloudbuild-sync.yaml
91+
sed -i s/'$${TAG_NAME}'/${TAG_NAME}/g release/cloudbuild-sync-and-tag.yaml
9392
sed -i s/'$${TAG_NAME}'/${TAG_NAME}/g release/cloudbuild-deploy.yaml
9493
for environment in alpha crash qa sandbox production; do
9594
sed s/'$${_ENV}'/${environment}/g release/cloudbuild-deploy.yaml \
@@ -154,10 +153,6 @@ steps:
154153
> release/cloudbuild-schema-deploy-${environment}.yaml
155154
sed s/'$${_ENV}'/${environment}/g release/cloudbuild-schema-verify.yaml \
156155
> release/cloudbuild-schema-verify-${environment}.yaml
157-
sed s/'$${_ENV}'/${environment}/g release/cloudbuild-renew-prober-certs.yaml \
158-
> release/cloudbuild-renew-prober-certs-${environment}.yaml
159-
sed s/'$${_ENV}'/${environment}/g release/cloudbuild-sync-db-objects.yaml \
160-
> release/cloudbuild-sync-db-objects-${environment}.yaml
161156
done
162157
# Do text replacement in the k8s manifests.
163158
- name: 'gcr.io/cloud-builders/gcloud'
@@ -168,6 +163,14 @@ steps:
168163
set -e
169164
for env in alpha crash qa sandbox production
170165
do
166+
# This is the project where Nomulus runs, and we need it to correctly bind the k8s service
167+
# account to the GCP service account.
168+
if [ ${env} == production ]
169+
then
170+
project="domain-registry"
171+
else
172+
project="domain-registry-${env}"
173+
fi
171174
base_domain=$(grep baseDomain \
172175
./core/src/main/java/google/registry/config/files/nomulus-config-${env}.yaml | \
173176
awk '{print $2}')
@@ -179,6 +182,11 @@ steps:
179182
sed s/PROXY_ENV/${env}/g | \
180183
sed s/EPP/epp/g | \
181184
sed s/WHOIS/whois/g > ./jetty/kubernetes/nomulus-${env}-${service}.yaml
185+
if [ ${service} == frontend ]
186+
then
187+
sed -i s/${PROJECT_ID}.iam.gserviceaccount.com/${project}.iam.gserviceaccount.com/g \
188+
./jetty/kubernetes/nomulus-${env}-${service}.yaml
189+
fi
182190
# canary
183191
sed s/GCP_PROJECT/${PROJECT_ID}/g ./jetty/kubernetes/nomulus-${service}.yaml | \
184192
sed s/ENVIRONMENT/${env}/g | \
@@ -187,6 +195,11 @@ steps:
187195
sed s/WHOIS/whois-canary/g | \
188196
sed s/${service}/${service}-canary/g \
189197
> ./jetty/kubernetes/nomulus-${env}-${service}-canary.yaml
198+
if [ ${service} == frontend ]
199+
then
200+
sed -i s/${PROJECT_ID}.iam.gserviceaccount.com/${project}.iam.gserviceaccount.com/g \
201+
./jetty/kubernetes/nomulus-${env}-${service}-canary.yaml
202+
fi
190203
# gateway
191204
sed s/BASE_DOMAIN/${base_domain}/g \
192205
./jetty/kubernetes/gateway/nomulus-route-${service}.yaml \

release/cloudbuild-renew-prober-certs.yaml

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@
2121
# Please refer to ./cloudbuild-release.yaml for more details.
2222
steps:
2323
# Generate new SSL certs
24-
- name: 'gcr.io/$PROJECT_ID/builder:latest'
24+
- name: 'gcr.io/$PROJECT_ID/builder:live'
2525
entrypoint: /bin/bash
2626
args:
2727
- -c
@@ -46,7 +46,7 @@ steps:
4646
-password file:./passphrase.txt
4747
# Download the nomulus-tools credential, which has the privilege to invoke tools
4848
# commands. Also download the list of probers.
49-
- name: 'gcr.io/$PROJECT_ID/builder:latest'
49+
- name: 'gcr.io/$PROJECT_ID/builder:live'
5050
entrypoint: /bin/bash
5151
args:
5252
- -c
@@ -63,15 +63,15 @@ steps:
6363
> nomulus_tool_credential.json
6464
# Install the new pem cert in the Nomulus server. After this step, both the
6565
# current cert and the new cert are accepted for login by the server.
66-
- name: 'gcr.io/$PROJECT_ID/prober_cert_updater:latest'
66+
- name: 'gcr.io/$PROJECT_ID/prober_cert_updater:live'
6767
args:
6868
- ${_ENV}
6969
- ./prober-client-tls.pem
7070
- ./prober-list
7171
- ./nomulus_tool_credential.json
7272
# Add the p12 cert to SecretManager. Prober instances will start using this
7373
# cert when they restart.
74-
- name: 'gcr.io/$PROJECT_ID/builder:latest'
74+
- name: 'gcr.io/$PROJECT_ID/builder:live'
7575
entrypoint: /bin/bash
7676
args:
7777
- -c
Lines changed: 102 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,102 @@
1+
# This pipeline syncs the folder gs://[PROJECT_ID]-deploy/[TAG] to gs://[PROJECT_ID]-deploy/live.
2+
# It also adds a "live" tag to various images in gcr.io/[PROJECT_ID]/[IMAGE]:[TAG].
3+
# The PROJECT_ID is the current project name that gcloud uses.
4+
#
5+
# To manually trigger a build on GCB, run:
6+
# gcloud builds submit --config cloudbuild-sync-and-tag.yaml --substitutions TAG_NAME=[TAG] ..
7+
#
8+
# To trigger a build automatically, follow the instructions below and add a trigger:
9+
# https://cloud.google.com/cloud-build/docs/running-builds/automate-builds
10+
#
11+
# Note: to work around issue in Spinnaker's 'Deployment Manifest' stage,
12+
# variable references must avoid the ${var} format. Valid formats include
13+
# $var or ${"${var}"}. This file use the former. Since TAG_NAME is
14+
# expanded in the copies sent to Spinnaker, we preserve the brackets around
15+
# them for safe pattern matching during release.
16+
# See https://github.com/spinnaker/spinnaker/issues/3028 for more information.
17+
steps:
18+
# Rsync the folder where deployment artifacts are uploaded.
19+
- name: 'gcr.io/$PROJECT_ID/builder:latest'
20+
args:
21+
- gsutil
22+
- -m
23+
- rsync
24+
- -d
25+
- -r
26+
- gs://$PROJECT_ID-deploy/${TAG_NAME}
27+
- gs://$PROJECT_ID-deploy/live
28+
- # Tag nomulus
29+
- name: 'gcr.io/$PROJECT_ID/builder:latest'
30+
args:
31+
- gcloud
32+
- container
33+
- images
34+
- add-tag
35+
- gcr.io/$PROJECT_ID/nomulus:${TAG_NAME}
36+
- gcr.io/$PROJECT_ID/nomulus:live
37+
- # Tag proxy
38+
- name: 'gcr.io/$PROJECT_ID/builder:latest'
39+
args:
40+
- gcloud
41+
- container
42+
- images
43+
- add-tag
44+
- gcr.io/$PROJECT_ID/proxy:${TAG_NAME}
45+
- gcr.io/$PROJECT_ID/proxy:live
46+
- # Tag nomulus tool
47+
- name: 'gcr.io/$PROJECT_ID/builder:latest'
48+
args:
49+
- gcloud
50+
- container
51+
- images
52+
- add-tag
53+
- gcr.io/$PROJECT_ID/nomulus-tool:${TAG_NAME}
54+
- gcr.io/$PROJECT_ID/nomulus-tool:live
55+
# Tag builder
56+
- name: 'gcr.io/$PROJECT_ID/builder:latest'
57+
args:
58+
- gcloud
59+
- container
60+
- images
61+
- add-tag
62+
- gcr.io/$PROJECT_ID/builder:${TAG_NAME}
63+
- gcr.io/$PROJECT_ID/builder:live
64+
# Update db_object_updater
65+
- name: 'gcr.io/$PROJECT_ID/builder:latest'
66+
args:
67+
- gcloud
68+
- container
69+
- images
70+
- add-tag
71+
- gcr.io/$PROJECT_ID/db_object_updater:${TAG_NAME}
72+
- gcr.io/$PROJECT_ID/db_object_updater:live
73+
# Update prober cert updater
74+
- name: 'gcr.io/$PROJECT_ID/builder:latest'
75+
args:
76+
- gcloud
77+
- container
78+
- images
79+
- add-tag
80+
- gcr.io/$PROJECT_ID/prober_cert_updater:${TAG_NAME}
81+
- gcr.io/$PROJECT_ID/prober_cert_updater:live
82+
# Update schema verifier
83+
- name: 'gcr.io/$PROJECT_ID/builder:latest'
84+
args:
85+
- gcloud
86+
- container
87+
- images
88+
- add-tag
89+
- gcr.io/$PROJECT_ID/schema_verifier:${TAG_NAME}
90+
- gcr.io/$PROJECT_ID/schema_verifier:live
91+
# Update schema deployer
92+
- name: 'gcr.io/$PROJECT_ID/builder:latest'
93+
args:
94+
- gcloud
95+
- container
96+
- images
97+
- add-tag
98+
- gcr.io/$PROJECT_ID/schema_deployer:${TAG_NAME}
99+
- gcr.io/$PROJECT_ID/schema_deployer:live
100+
timeout: 3600s
101+
options:
102+
machineType: 'E2_HIGHCPU_32'

0 commit comments

Comments
 (0)