@catladder/pipeline 3.34.2 → 3.36.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,665 @@
1
+ // Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html
2
+
3
+ exports[`matches snapshot for cloud-run-existing-image local pipeline YAML 1`] = `
4
+ "image: path/to/docker/jobs-default:the-version
5
+ stages:
6
+ - setup
7
+ - setup dev
8
+ - setup review
9
+ - setup stage
10
+ - setup prod
11
+ - test
12
+ - test dev
13
+ - test review
14
+ - test stage
15
+ - test prod
16
+ - build
17
+ - build dev
18
+ - build review
19
+ - build stage
20
+ - build prod
21
+ - deploy
22
+ - deploy dev
23
+ - deploy review
24
+ - deploy stage
25
+ - deploy prod
26
+ - verify
27
+ - verify dev
28
+ - verify review
29
+ - verify stage
30
+ - verify prod
31
+ - agents
32
+ - agents dev
33
+ - agents review
34
+ - agents stage
35
+ - agents prod
36
+ - rollback
37
+ - rollback dev
38
+ - rollback review
39
+ - rollback stage
40
+ - rollback prod
41
+ - stop
42
+ - stop dev
43
+ - stop review
44
+ - stop stage
45
+ - stop prod
46
+ - release
47
+ variables:
48
+ FF_USE_FASTZIP: 'true'
49
+ ARTIFACT_COMPRESSION_LEVEL: fast
50
+ CACHE_COMPRESSION_LEVEL: fast
51
+ TRANSFER_METER_FREQUENCY: 5s
52
+ GIT_DEPTH: '1'
53
+ workflow:
54
+ name: $PIPELINE_ICON $PIPELINE_NAME
55
+ rules:
56
+ - if: $CI_PIPELINE_SOURCE == "trigger"
57
+ variables:
58
+ PIPELINE_ICON: 🤖
59
+ PIPELINE_NAME: Thinking...
60
+ - if: $CI_MERGE_REQUEST_ID
61
+ variables:
62
+ PIPELINE_ICON: 🐱🔨
63
+ PIPELINE_NAME: mr$CI_MERGE_REQUEST_IID - $CI_MERGE_REQUEST_TITLE
64
+ - if: $CI_COMMIT_TAG
65
+ variables:
66
+ PIPELINE_ICON: 🐱📦
67
+ PIPELINE_NAME: Release $CI_COMMIT_TAG
68
+ - if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH && $CI_COMMIT_MESSAGE !~ /^chore\\(release\\).*/
69
+ variables:
70
+ PIPELINE_ICON: 🐱🔨
71
+ PIPELINE_NAME: Main - $CI_COMMIT_TITLE
72
+ - when: always
73
+ variables:
74
+ PIPELINE_ICON: 🐱❓
75
+ PIPELINE_NAME: Default
76
+ before_script:
77
+ - |-
78
+ function escapeForDotEnv () {
79
+ input="\${1:-$(cat)}"
80
+ input="\${input//$'\\n'/\\\\n}"
81
+ if [[ "$input" == *\\\\n* ]]; then
82
+ if [[ "$input" == *\\"* && "$input" == *\\'* && "$input" == *\\\`* ]]; then
83
+ printf "\\"%s\\"\\n" "$input"
84
+ elif [[ "$input" == *\\"* && "$input" == *\\'* ]]; then
85
+ printf "\`%s\`\\n" "$input"
86
+ elif [[ "$input" == *\\"* ]]; then
87
+ printf "'%s'\\n" "$input"
88
+ else
89
+ printf "\\"%s\\"\\n" "$input"
90
+ fi
91
+ else
92
+ printf "%s\\n" "$input"
93
+ fi
94
+ }
95
+ - |-
96
+ function collapseable_section_start () {
97
+ local section_title="\${1}"
98
+ local section_description="\${2:-$section_title}"
99
+ echo -e "section_start:\`date +%s\`:\${section_title}[collapsed=true]\\r\\e[0K\${section_description}"
100
+ }
101
+ - |-
102
+ function collapseable_section_end () {
103
+ local section_title="\${1}"
104
+ echo -e "section_end:\`date +%s\`:\${section_title}\\r\\e[0K"
105
+ }
106
+ 'www 🚀 Deploy | dev ':
107
+ stage: deploy dev
108
+ image: path/to/docker/gcloud:the-version
109
+ variables:
110
+ KUBERNETES_CPU_REQUEST: '0.22'
111
+ KUBERNETES_MEMORY_REQUEST: 200Mi
112
+ KUBERNETES_MEMORY_LIMIT: 400Mi
113
+ script:
114
+ - collapseable_section_start "injectvars" "Injecting variables"
115
+ - export ENV_SHORT="dev"
116
+ - export APP_DIR="app"
117
+ - export ENV_TYPE="dev"
118
+ - export BUILD_INFO_BUILD_ID="$(git describe --tags 2>/dev/null || git rev-parse HEAD)"
119
+ - export BUILD_INFO_BUILD_TIME="$CI_JOB_STARTED_AT"
120
+ - export BUILD_INFO_CURRENT_VERSION="$(tag=$(git ls-remote origin "refs/tags/v*[0-9]" 2>/dev/null | cut -f 2- | sort -V | tail -1 | sed 's/refs\\/tags\\/v//'); [ -z "$tag" ] && echo "0.0.0" || echo "$tag")"
121
+ - export HOSTNAME="$(printf %s "pan-test-app-dev-www-$CL_dev_www_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')"
122
+ - export ROOT_URL="https://$(printf %s "pan-test-app-dev-www-$CL_dev_www_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')"
123
+ - export HOSTNAME_INTERNAL="$(printf %s "pan-test-app-dev-www-$CL_dev_www_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')"
124
+ - export ROOT_URL_INTERNAL="https://$(printf %s "pan-test-app-dev-www-$CL_dev_www_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')"
125
+ - export DEPLOY_CLOUD_RUN_PROJECT_ID="google-project-id"
126
+ - export DEPLOY_CLOUD_RUN_REGION="europe-west6"
127
+ - export GCLOUD_DEPLOY_credentialsKey="$CL_dev_www_GCLOUD_DEPLOY_credentialsKey"
128
+ - export GCLOUD_RUN_canonicalHostSuffix="$CL_dev_www_GCLOUD_RUN_canonicalHostSuffix"
129
+ - export _ALL_ENV_VAR_KEYS="[\\"ENV_SHORT\\",\\"APP_DIR\\",\\"ENV_TYPE\\",\\"BUILD_INFO_BUILD_ID\\",\\"BUILD_INFO_BUILD_TIME\\",\\"BUILD_INFO_CURRENT_VERSION\\",\\"HOSTNAME\\",\\"ROOT_URL\\",\\"HOSTNAME_INTERNAL\\",\\"ROOT_URL_INTERNAL\\",\\"DEPLOY_CLOUD_RUN_PROJECT_ID\\",\\"DEPLOY_CLOUD_RUN_REGION\\",\\"GCLOUD_DEPLOY_credentialsKey\\",\\"GCLOUD_RUN_canonicalHostSuffix\\"]"
130
+ - export DOCKER_REGISTRY="europe-west6-docker.pkg.dev"
131
+ - export DOCKER_IMAGE="europe-west6-docker.pkg.dev/google-project-id/catladder-deploy/pan-test-app/dev/www"
132
+ - export DOCKER_CACHE_IMAGE="europe-west6-docker.pkg.dev/google-project-id/catladder-deploy/pan-test-app/caches/www"
133
+ - export DOCKER_IMAGE_TAG="$CI_COMMIT_SHA"
134
+ - export CLOUDSDK_CORE_DISABLE_PROMPTS="1"
135
+ - collapseable_section_end "injectvars"
136
+ - collapseable_section_start "prepare" "Prepare..."
137
+ - gcloud auth activate-service-account --key-file=<(echo "$CL_dev_www_GCLOUD_DEPLOY_credentialsKey")
138
+ - export GCLOUD_PROJECT_NUMBER=$(gcloud projects describe google-project-id --format="value(projectNumber)")
139
+ - 'echo "GCLOUD_PROJECT_NUMBER: $GCLOUD_PROJECT_NUMBER"'
140
+ - collapseable_section_end "prepare"
141
+ - collapseable_section_start "writeenvvars" "Write env vars to file"
142
+ - |
143
+ cat > ____envvars.yaml <<EOF
144
+ ENV_SHORT: |-
145
+ dev
146
+ APP_DIR: |-
147
+ app
148
+ ENV_TYPE: |-
149
+ dev
150
+ BUILD_INFO_BUILD_ID: |-
151
+ $(printf %s "$(git describe --tags 2>/dev/null || git rev-parse HEAD)" | sed '1!s/^/ /')
152
+ BUILD_INFO_BUILD_TIME: |-
153
+ $(printf %s "$CI_JOB_STARTED_AT" | sed '1!s/^/ /')
154
+ BUILD_INFO_CURRENT_VERSION: |-
155
+ $(printf %s "$(tag=$(git ls-remote origin "refs/tags/v*[0-9]" 2>/dev/null | cut -f 2- | sort -V | tail -1 | sed 's/refs\\/tags\\/v//'); [ -z "$tag" ] && echo "0.0.0" || echo "$tag")" | sed '1!s/^/ /')
156
+ HOSTNAME: |-
157
+ $(printf %s "$(printf %s "pan-test-app-dev-www-$CL_dev_www_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')" | sed '1!s/^/ /')
158
+ ROOT_URL: |-
159
+ $(printf %s "https://$(printf %s "pan-test-app-dev-www-$CL_dev_www_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')" | sed '1!s/^/ /')
160
+ HOSTNAME_INTERNAL: |-
161
+ $(printf %s "$(printf %s "pan-test-app-dev-www-$CL_dev_www_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')" | sed '1!s/^/ /')
162
+ ROOT_URL_INTERNAL: |-
163
+ $(printf %s "https://$(printf %s "pan-test-app-dev-www-$CL_dev_www_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')" | sed '1!s/^/ /')
164
+ DEPLOY_CLOUD_RUN_PROJECT_ID: |-
165
+ google-project-id
166
+ DEPLOY_CLOUD_RUN_REGION: |-
167
+ europe-west6
168
+ GCLOUD_RUN_canonicalHostSuffix: |-
169
+ $(printf %s "$CL_dev_www_GCLOUD_RUN_canonicalHostSuffix" | sed '1!s/^/ /')
170
+ _ALL_ENV_VAR_KEYS: |-
171
+ ["ENV_SHORT","APP_DIR","ENV_TYPE","BUILD_INFO_BUILD_ID","BUILD_INFO_BUILD_TIME","BUILD_INFO_CURRENT_VERSION","HOSTNAME","ROOT_URL","HOSTNAME_INTERNAL","ROOT_URL_INTERNAL","DEPLOY_CLOUD_RUN_PROJECT_ID","DEPLOY_CLOUD_RUN_REGION","GCLOUD_DEPLOY_credentialsKey","GCLOUD_RUN_canonicalHostSuffix"]
172
+
173
+ EOF
174
+ - collapseable_section_end "writeenvvars"
175
+ - collapseable_section_start "deploy" "Deploy to cloud run"
176
+ - gcloud run deploy pan-test-app-dev-www --command="" --image=gcr.io/google-project-id/my-image:latest --project=google-project-id --region=europe-west6 --labels=customer-name=pan,component-name=www,app-name=test-app,env-type=dev,env-name=dev,build-type=disabled,cloud-run-service-name=pan-test-app-dev-www --env-vars-file=____envvars.yaml --min-instances=0 --max-instances=100 --cpu-throttling --allow-unauthenticated --ingress=all --cpu-boost
177
+ - collapseable_section_end "deploy"
178
+ - collapseable_section_start "cleanup" "Cleanup"
179
+ - set +e
180
+ - gcloud run revisions list --project=google-project-id --region=europe-west6 --service=pan-test-app-dev-www --limit=unlimited --sort-by=metadata.creationTimestamp --format="value(name)" --filter='(status.conditions.status=False OR status.conditions.status=Unknown)' | while read -r revisionname; do gcloud run revisions delete --project=google-project-id --region=europe-west6 --quiet $revisionname ; done
181
+ - gcloud artifacts docker images list europe-west6-docker.pkg.dev/google-project-id/catladder-deploy/pan-test-app/dev/www --sort-by=~CREATE_TIME --format="value(version)" | tail -n +2 | while read -r version; do gcloud artifacts docker images delete europe-west6-docker.pkg.dev/google-project-id/catladder-deploy/pan-test-app/dev/www@$version --quiet --delete-tags; done
182
+ - gcloud artifacts docker images list europe-west6-docker.pkg.dev/google-project-id/catladder-deploy/pan-test-app/caches/www --sort-by=~CREATE_TIME --format="value(version)" | tail -n +2 | while read -r version; do gcloud artifacts docker images delete europe-west6-docker.pkg.dev/google-project-id/catladder-deploy/pan-test-app/caches/www@$version --quiet --delete-tags; done
183
+ - set -e
184
+ - collapseable_section_end "cleanup"
185
+ - echo "CL_GITLAB_ENVIRONMENT_URL=$ROOT_URL" >> gitlab_environment.env
186
+ environment:
187
+ name: dev/www
188
+ url: $CL_GITLAB_ENVIRONMENT_URL
189
+ on_stop: 'www 🛑 Stop ⚠️ | dev '
190
+ auto_stop_in: 4 weeks
191
+ artifacts:
192
+ reports:
193
+ dotenv: gitlab_environment.env
194
+ rules:
195
+ - when: never
196
+ if: $CI_PIPELINE_SOURCE == "trigger"
197
+ - when: on_success
198
+ if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH && $CI_COMMIT_MESSAGE !~ /^chore\\(release\\).*/
199
+ needs: []
200
+ retry: &a1
201
+ max: 2
202
+ interruptible: true
203
+ allow_failure: false
204
+ 'www 🛑 Stop ⚠️ | dev ':
205
+ stage: stop dev
206
+ image: path/to/docker/gcloud:the-version
207
+ variables:
208
+ KUBERNETES_CPU_REQUEST: '0.22'
209
+ KUBERNETES_MEMORY_REQUEST: 200Mi
210
+ KUBERNETES_MEMORY_LIMIT: 400Mi
211
+ GIT_STRATEGY: none
212
+ script:
213
+ - collapseable_section_start "injectvars" "Injecting variables"
214
+ - export CLOUDSDK_CORE_DISABLE_PROMPTS="1"
215
+ - collapseable_section_end "injectvars"
216
+ - set +e
217
+ - gcloud auth activate-service-account --key-file=<(echo "$CL_dev_www_GCLOUD_DEPLOY_credentialsKey")
218
+ - gcloud run services delete pan-test-app-dev-www --project=google-project-id --region=europe-west6
219
+ - gcloud artifacts docker images delete europe-west6-docker.pkg.dev/google-project-id/catladder-deploy/pan-test-app/dev/www --quiet --delete-tags
220
+ - gcloud artifacts docker images list europe-west6-docker.pkg.dev/google-project-id/catladder-deploy/pan-test-app/caches/www --sort-by=~CREATE_TIME --format="value(version)" | tail -n +2 | while read -r version; do gcloud artifacts docker images delete europe-west6-docker.pkg.dev/google-project-id/catladder-deploy/pan-test-app/caches/www@$version --quiet --delete-tags; done
221
+ - set -e
222
+ environment:
223
+ name: dev/www
224
+ action: stop
225
+ rules:
226
+ - if: $CI_COMMIT_BRANCH =~ /^[0-9]+\\.([0-9]+|x)\\.x$/
227
+ when: on_success
228
+ - when: never
229
+ if: $CI_PIPELINE_SOURCE == "trigger"
230
+ - when: manual
231
+ if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH && $CI_COMMIT_MESSAGE !~ /^chore\\(release\\).*/
232
+ needs: []
233
+ retry: *a1
234
+ interruptible: true
235
+ allow_failure: true
236
+ 'www 🚀 Deploy | review ':
237
+ stage: deploy review
238
+ image: path/to/docker/gcloud:the-version
239
+ variables:
240
+ KUBERNETES_CPU_REQUEST: '0.22'
241
+ KUBERNETES_MEMORY_REQUEST: 200Mi
242
+ KUBERNETES_MEMORY_LIMIT: 400Mi
243
+ script:
244
+ - collapseable_section_start "injectvars" "Injecting variables"
245
+ - export ENV_SHORT="review"
246
+ - export APP_DIR="app"
247
+ - export ENV_TYPE="review"
248
+ - export BUILD_INFO_BUILD_ID="$(git describe --tags 2>/dev/null || git rev-parse HEAD)"
249
+ - export BUILD_INFO_BUILD_TIME="$CI_JOB_STARTED_AT"
250
+ - export BUILD_INFO_CURRENT_VERSION="$(tag=$(git ls-remote origin "refs/tags/v*[0-9]" 2>/dev/null | cut -f 2- | sort -V | tail -1 | sed 's/refs\\/tags\\/v//'); [ -z "$tag" ] && echo "0.0.0" || echo "$tag")"
251
+ - export HOSTNAME="$(printf %s "pan-test-app-review-$([ -n "$CI_MERGE_REQUEST_IID" ] && echo "mr$CI_MERGE_REQUEST_IID" || { [ -n "$CI_COMMIT_REF_SLUG" ] && echo "$CI_COMMIT_REF_SLUG" || echo "unknown"; })-www-$CL_review_www_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')"
252
+ - export ROOT_URL="https://$(printf %s "pan-test-app-review-$([ -n "$CI_MERGE_REQUEST_IID" ] && echo "mr$CI_MERGE_REQUEST_IID" || { [ -n "$CI_COMMIT_REF_SLUG" ] && echo "$CI_COMMIT_REF_SLUG" || echo "unknown"; })-www-$CL_review_www_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')"
253
+ - export HOSTNAME_INTERNAL="$(printf %s "pan-test-app-review-$([ -n "$CI_MERGE_REQUEST_IID" ] && echo "mr$CI_MERGE_REQUEST_IID" || { [ -n "$CI_COMMIT_REF_SLUG" ] && echo "$CI_COMMIT_REF_SLUG" || echo "unknown"; })-www-$CL_review_www_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')"
254
+ - export ROOT_URL_INTERNAL="https://$(printf %s "pan-test-app-review-$([ -n "$CI_MERGE_REQUEST_IID" ] && echo "mr$CI_MERGE_REQUEST_IID" || { [ -n "$CI_COMMIT_REF_SLUG" ] && echo "$CI_COMMIT_REF_SLUG" || echo "unknown"; })-www-$CL_review_www_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')"
255
+ - export DEPLOY_CLOUD_RUN_PROJECT_ID="google-project-id"
256
+ - export DEPLOY_CLOUD_RUN_REGION="europe-west6"
257
+ - export GCLOUD_DEPLOY_credentialsKey="$CL_review_www_GCLOUD_DEPLOY_credentialsKey"
258
+ - export GCLOUD_RUN_canonicalHostSuffix="$CL_review_www_GCLOUD_RUN_canonicalHostSuffix"
259
+ - export _ALL_ENV_VAR_KEYS="[\\"ENV_SHORT\\",\\"APP_DIR\\",\\"ENV_TYPE\\",\\"BUILD_INFO_BUILD_ID\\",\\"BUILD_INFO_BUILD_TIME\\",\\"BUILD_INFO_CURRENT_VERSION\\",\\"HOSTNAME\\",\\"ROOT_URL\\",\\"HOSTNAME_INTERNAL\\",\\"ROOT_URL_INTERNAL\\",\\"DEPLOY_CLOUD_RUN_PROJECT_ID\\",\\"DEPLOY_CLOUD_RUN_REGION\\",\\"GCLOUD_DEPLOY_credentialsKey\\",\\"GCLOUD_RUN_canonicalHostSuffix\\"]"
260
+ - export DOCKER_REGISTRY="europe-west6-docker.pkg.dev"
261
+ - export DOCKER_IMAGE="europe-west6-docker.pkg.dev/google-project-id/catladder-deploy/pan-test-app/review/www/$([ -n "$CI_MERGE_REQUEST_IID" ] && echo "mr$CI_MERGE_REQUEST_IID" || { [ -n "$CI_COMMIT_REF_SLUG" ] && echo "$CI_COMMIT_REF_SLUG" || echo "unknown"; })"
262
+ - export DOCKER_CACHE_IMAGE="europe-west6-docker.pkg.dev/google-project-id/catladder-deploy/pan-test-app/caches/www"
263
+ - export DOCKER_IMAGE_TAG="$CI_COMMIT_SHA"
264
+ - export CLOUDSDK_CORE_DISABLE_PROMPTS="1"
265
+ - collapseable_section_end "injectvars"
266
+ - collapseable_section_start "prepare" "Prepare..."
267
+ - gcloud auth activate-service-account --key-file=<(echo "$CL_review_www_GCLOUD_DEPLOY_credentialsKey")
268
+ - export GCLOUD_PROJECT_NUMBER=$(gcloud projects describe google-project-id --format="value(projectNumber)")
269
+ - 'echo "GCLOUD_PROJECT_NUMBER: $GCLOUD_PROJECT_NUMBER"'
270
+ - collapseable_section_end "prepare"
271
+ - collapseable_section_start "writeenvvars" "Write env vars to file"
272
+ - |
273
+ cat > ____envvars.yaml <<EOF
274
+ ENV_SHORT: |-
275
+ review
276
+ APP_DIR: |-
277
+ app
278
+ ENV_TYPE: |-
279
+ review
280
+ BUILD_INFO_BUILD_ID: |-
281
+ $(printf %s "$(git describe --tags 2>/dev/null || git rev-parse HEAD)" | sed '1!s/^/ /')
282
+ BUILD_INFO_BUILD_TIME: |-
283
+ $(printf %s "$CI_JOB_STARTED_AT" | sed '1!s/^/ /')
284
+ BUILD_INFO_CURRENT_VERSION: |-
285
+ $(printf %s "$(tag=$(git ls-remote origin "refs/tags/v*[0-9]" 2>/dev/null | cut -f 2- | sort -V | tail -1 | sed 's/refs\\/tags\\/v//'); [ -z "$tag" ] && echo "0.0.0" || echo "$tag")" | sed '1!s/^/ /')
286
+ HOSTNAME: |-
287
+ $(printf %s "$(printf %s "pan-test-app-review-$([ -n "$CI_MERGE_REQUEST_IID" ] && echo "mr$CI_MERGE_REQUEST_IID" || { [ -n "$CI_COMMIT_REF_SLUG" ] && echo "$CI_COMMIT_REF_SLUG" || echo "unknown"; })-www-$CL_review_www_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')" | sed '1!s/^/ /')
288
+ ROOT_URL: |-
289
+ $(printf %s "https://$(printf %s "pan-test-app-review-$([ -n "$CI_MERGE_REQUEST_IID" ] && echo "mr$CI_MERGE_REQUEST_IID" || { [ -n "$CI_COMMIT_REF_SLUG" ] && echo "$CI_COMMIT_REF_SLUG" || echo "unknown"; })-www-$CL_review_www_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')" | sed '1!s/^/ /')
290
+ HOSTNAME_INTERNAL: |-
291
+ $(printf %s "$(printf %s "pan-test-app-review-$([ -n "$CI_MERGE_REQUEST_IID" ] && echo "mr$CI_MERGE_REQUEST_IID" || { [ -n "$CI_COMMIT_REF_SLUG" ] && echo "$CI_COMMIT_REF_SLUG" || echo "unknown"; })-www-$CL_review_www_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')" | sed '1!s/^/ /')
292
+ ROOT_URL_INTERNAL: |-
293
+ $(printf %s "https://$(printf %s "pan-test-app-review-$([ -n "$CI_MERGE_REQUEST_IID" ] && echo "mr$CI_MERGE_REQUEST_IID" || { [ -n "$CI_COMMIT_REF_SLUG" ] && echo "$CI_COMMIT_REF_SLUG" || echo "unknown"; })-www-$CL_review_www_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')" | sed '1!s/^/ /')
294
+ DEPLOY_CLOUD_RUN_PROJECT_ID: |-
295
+ google-project-id
296
+ DEPLOY_CLOUD_RUN_REGION: |-
297
+ europe-west6
298
+ GCLOUD_RUN_canonicalHostSuffix: |-
299
+ $(printf %s "$CL_review_www_GCLOUD_RUN_canonicalHostSuffix" | sed '1!s/^/ /')
300
+ _ALL_ENV_VAR_KEYS: |-
301
+ ["ENV_SHORT","APP_DIR","ENV_TYPE","BUILD_INFO_BUILD_ID","BUILD_INFO_BUILD_TIME","BUILD_INFO_CURRENT_VERSION","HOSTNAME","ROOT_URL","HOSTNAME_INTERNAL","ROOT_URL_INTERNAL","DEPLOY_CLOUD_RUN_PROJECT_ID","DEPLOY_CLOUD_RUN_REGION","GCLOUD_DEPLOY_credentialsKey","GCLOUD_RUN_canonicalHostSuffix"]
302
+
303
+ EOF
304
+ - collapseable_section_end "writeenvvars"
305
+ - collapseable_section_start "deploy" "Deploy to cloud run"
306
+ - gcloud run deploy $(printf %s "pan-test-app-review-$([ -n "$CI_MERGE_REQUEST_IID" ] && echo "mr$CI_MERGE_REQUEST_IID" || { [ -n "$CI_COMMIT_REF_SLUG" ] && echo "$CI_COMMIT_REF_SLUG" || echo "unknown"; })-www" | awk '{print tolower($0)}') --command="" --image=gcr.io/google-project-id/my-image:latest --project=google-project-id --region=europe-west6 --labels=customer-name=pan,component-name=www,app-name=test-app,env-type=review,env-name=review,build-type=disabled,cloud-run-service-name=$(printf %s "pan-test-app-review-$([ -n "$CI_MERGE_REQUEST_IID" ] && echo "mr$CI_MERGE_REQUEST_IID" || { [ -n "$CI_COMMIT_REF_SLUG" ] && echo "$CI_COMMIT_REF_SLUG" || echo "unknown"; })-www" | awk '{print tolower($0)}') --env-vars-file=____envvars.yaml --min-instances=0 --max-instances=100 --cpu-throttling --allow-unauthenticated --ingress=all --cpu-boost
307
+ - collapseable_section_end "deploy"
308
+ - collapseable_section_start "cleanup" "Cleanup"
309
+ - set +e
310
+ - gcloud run revisions list --project=google-project-id --region=europe-west6 --service=$(printf %s "pan-test-app-review-$([ -n "$CI_MERGE_REQUEST_IID" ] && echo "mr$CI_MERGE_REQUEST_IID" || { [ -n "$CI_COMMIT_REF_SLUG" ] && echo "$CI_COMMIT_REF_SLUG" || echo "unknown"; })-www" | awk '{print tolower($0)}') --limit=unlimited --sort-by=metadata.creationTimestamp --format="value(name)" --filter='(status.conditions.status=False OR status.conditions.status=Unknown)' | while read -r revisionname; do gcloud run revisions delete --project=google-project-id --region=europe-west6 --quiet $revisionname ; done
311
+ - gcloud artifacts docker images list europe-west6-docker.pkg.dev/google-project-id/catladder-deploy/pan-test-app/review/www/$([ -n "$CI_MERGE_REQUEST_IID" ] && echo "mr$CI_MERGE_REQUEST_IID" || { [ -n "$CI_COMMIT_REF_SLUG" ] && echo "$CI_COMMIT_REF_SLUG" || echo "unknown"; }) --sort-by=~CREATE_TIME --format="value(version)" | tail -n +2 | while read -r version; do gcloud artifacts docker images delete europe-west6-docker.pkg.dev/google-project-id/catladder-deploy/pan-test-app/review/www/$([ -n "$CI_MERGE_REQUEST_IID" ] && echo "mr$CI_MERGE_REQUEST_IID" || { [ -n "$CI_COMMIT_REF_SLUG" ] && echo "$CI_COMMIT_REF_SLUG" || echo "unknown"; })@$version --quiet --delete-tags; done
312
+ - gcloud artifacts docker images list europe-west6-docker.pkg.dev/google-project-id/catladder-deploy/pan-test-app/caches/www --sort-by=~CREATE_TIME --format="value(version)" | tail -n +2 | while read -r version; do gcloud artifacts docker images delete europe-west6-docker.pkg.dev/google-project-id/catladder-deploy/pan-test-app/caches/www@$version --quiet --delete-tags; done
313
+ - set +e
314
+ - gcloud artifacts docker images delete europe-west6-docker.pkg.dev/google-project-id/catladder-deploy/pan-test-app/review/www --quiet --delete-tags
315
+ - set -e
316
+ - set -e
317
+ - collapseable_section_end "cleanup"
318
+ - echo "CL_GITLAB_ENVIRONMENT_URL=$ROOT_URL" >> gitlab_environment.env
319
+ environment:
320
+ name: review/$CI_COMMIT_REF_NAME/www
321
+ url: $CL_GITLAB_ENVIRONMENT_URL
322
+ on_stop: 'www 🛑 Stop ⚠️ | review '
323
+ auto_stop_in: 1 week
324
+ artifacts:
325
+ reports:
326
+ dotenv: gitlab_environment.env
327
+ rules:
328
+ - when: never
329
+ if: $CI_PIPELINE_SOURCE == "trigger"
330
+ - when: on_success
331
+ if: $CI_MERGE_REQUEST_ID
332
+ needs: []
333
+ retry: *a1
334
+ interruptible: true
335
+ allow_failure: false
336
+ 'www 🛑 Stop ⚠️ | review ':
337
+ stage: stop review
338
+ image: path/to/docker/gcloud:the-version
339
+ variables:
340
+ KUBERNETES_CPU_REQUEST: '0.22'
341
+ KUBERNETES_MEMORY_REQUEST: 200Mi
342
+ KUBERNETES_MEMORY_LIMIT: 400Mi
343
+ GIT_STRATEGY: none
344
+ script:
345
+ - collapseable_section_start "injectvars" "Injecting variables"
346
+ - export CLOUDSDK_CORE_DISABLE_PROMPTS="1"
347
+ - collapseable_section_end "injectvars"
348
+ - set +e
349
+ - gcloud auth activate-service-account --key-file=<(echo "$CL_review_www_GCLOUD_DEPLOY_credentialsKey")
350
+ - gcloud run services delete $(printf %s "pan-test-app-review-$([ -n "$CI_MERGE_REQUEST_IID" ] && echo "mr$CI_MERGE_REQUEST_IID" || { [ -n "$CI_COMMIT_REF_SLUG" ] && echo "$CI_COMMIT_REF_SLUG" || echo "unknown"; })-www" | awk '{print tolower($0)}') --project=google-project-id --region=europe-west6
351
+ - gcloud artifacts docker images delete europe-west6-docker.pkg.dev/google-project-id/catladder-deploy/pan-test-app/review/www/$([ -n "$CI_MERGE_REQUEST_IID" ] && echo "mr$CI_MERGE_REQUEST_IID" || { [ -n "$CI_COMMIT_REF_SLUG" ] && echo "$CI_COMMIT_REF_SLUG" || echo "unknown"; }) --quiet --delete-tags
352
+ - gcloud artifacts docker images list europe-west6-docker.pkg.dev/google-project-id/catladder-deploy/pan-test-app/caches/www --sort-by=~CREATE_TIME --format="value(version)" | tail -n +2 | while read -r version; do gcloud artifacts docker images delete europe-west6-docker.pkg.dev/google-project-id/catladder-deploy/pan-test-app/caches/www@$version --quiet --delete-tags; done
353
+ - set +e
354
+ - gcloud artifacts docker images delete europe-west6-docker.pkg.dev/google-project-id/catladder-deploy/pan-test-app/review/www --quiet --delete-tags
355
+ - set -e
356
+ - set -e
357
+ environment:
358
+ name: review/$CI_COMMIT_REF_NAME/www
359
+ action: stop
360
+ rules:
361
+ - if: $CI_COMMIT_BRANCH =~ /^[0-9]+\\.([0-9]+|x)\\.x$/
362
+ when: on_success
363
+ - when: never
364
+ if: $CI_PIPELINE_SOURCE == "trigger"
365
+ - when: manual
366
+ if: $CI_MERGE_REQUEST_ID
367
+ needs: []
368
+ retry: *a1
369
+ interruptible: true
370
+ allow_failure: true
371
+ 'www 🚀 Deploy | stage ':
372
+ stage: deploy stage
373
+ image: path/to/docker/gcloud:the-version
374
+ variables:
375
+ KUBERNETES_CPU_REQUEST: '0.22'
376
+ KUBERNETES_MEMORY_REQUEST: 200Mi
377
+ KUBERNETES_MEMORY_LIMIT: 400Mi
378
+ script:
379
+ - collapseable_section_start "injectvars" "Injecting variables"
380
+ - export ENV_SHORT="stage"
381
+ - export APP_DIR="app"
382
+ - export ENV_TYPE="stage"
383
+ - export BUILD_INFO_BUILD_ID="$(git describe --tags 2>/dev/null || git rev-parse HEAD)"
384
+ - export BUILD_INFO_BUILD_TIME="$CI_JOB_STARTED_AT"
385
+ - export BUILD_INFO_CURRENT_VERSION="$(tag=$(git ls-remote origin "refs/tags/v*[0-9]" 2>/dev/null | cut -f 2- | sort -V | tail -1 | sed 's/refs\\/tags\\/v//'); [ -z "$tag" ] && echo "0.0.0" || echo "$tag")"
386
+ - export HOSTNAME="$(printf %s "pan-test-app-stage-www-$CL_stage_www_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')"
387
+ - export ROOT_URL="https://$(printf %s "pan-test-app-stage-www-$CL_stage_www_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')"
388
+ - export HOSTNAME_INTERNAL="$(printf %s "pan-test-app-stage-www-$CL_stage_www_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')"
389
+ - export ROOT_URL_INTERNAL="https://$(printf %s "pan-test-app-stage-www-$CL_stage_www_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')"
390
+ - export DEPLOY_CLOUD_RUN_PROJECT_ID="google-project-id"
391
+ - export DEPLOY_CLOUD_RUN_REGION="europe-west6"
392
+ - export GCLOUD_DEPLOY_credentialsKey="$CL_stage_www_GCLOUD_DEPLOY_credentialsKey"
393
+ - export GCLOUD_RUN_canonicalHostSuffix="$CL_stage_www_GCLOUD_RUN_canonicalHostSuffix"
394
+ - export _ALL_ENV_VAR_KEYS="[\\"ENV_SHORT\\",\\"APP_DIR\\",\\"ENV_TYPE\\",\\"BUILD_INFO_BUILD_ID\\",\\"BUILD_INFO_BUILD_TIME\\",\\"BUILD_INFO_CURRENT_VERSION\\",\\"HOSTNAME\\",\\"ROOT_URL\\",\\"HOSTNAME_INTERNAL\\",\\"ROOT_URL_INTERNAL\\",\\"DEPLOY_CLOUD_RUN_PROJECT_ID\\",\\"DEPLOY_CLOUD_RUN_REGION\\",\\"GCLOUD_DEPLOY_credentialsKey\\",\\"GCLOUD_RUN_canonicalHostSuffix\\"]"
395
+ - export DOCKER_REGISTRY="europe-west6-docker.pkg.dev"
396
+ - export DOCKER_IMAGE="europe-west6-docker.pkg.dev/google-project-id/catladder-deploy/pan-test-app/stage/www"
397
+ - export DOCKER_CACHE_IMAGE="europe-west6-docker.pkg.dev/google-project-id/catladder-deploy/pan-test-app/caches/www"
398
+ - export DOCKER_IMAGE_TAG="$CI_COMMIT_SHA"
399
+ - export CLOUDSDK_CORE_DISABLE_PROMPTS="1"
400
+ - collapseable_section_end "injectvars"
401
+ - collapseable_section_start "prepare" "Prepare..."
402
+ - gcloud auth activate-service-account --key-file=<(echo "$CL_stage_www_GCLOUD_DEPLOY_credentialsKey")
403
+ - export GCLOUD_PROJECT_NUMBER=$(gcloud projects describe google-project-id --format="value(projectNumber)")
404
+ - 'echo "GCLOUD_PROJECT_NUMBER: $GCLOUD_PROJECT_NUMBER"'
405
+ - collapseable_section_end "prepare"
406
+ - collapseable_section_start "writeenvvars" "Write env vars to file"
407
+ - |
408
+ cat > ____envvars.yaml <<EOF
409
+ ENV_SHORT: |-
410
+ stage
411
+ APP_DIR: |-
412
+ app
413
+ ENV_TYPE: |-
414
+ stage
415
+ BUILD_INFO_BUILD_ID: |-
416
+ $(printf %s "$(git describe --tags 2>/dev/null || git rev-parse HEAD)" | sed '1!s/^/ /')
417
+ BUILD_INFO_BUILD_TIME: |-
418
+ $(printf %s "$CI_JOB_STARTED_AT" | sed '1!s/^/ /')
419
+ BUILD_INFO_CURRENT_VERSION: |-
420
+ $(printf %s "$(tag=$(git ls-remote origin "refs/tags/v*[0-9]" 2>/dev/null | cut -f 2- | sort -V | tail -1 | sed 's/refs\\/tags\\/v//'); [ -z "$tag" ] && echo "0.0.0" || echo "$tag")" | sed '1!s/^/ /')
421
+ HOSTNAME: |-
422
+ $(printf %s "$(printf %s "pan-test-app-stage-www-$CL_stage_www_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')" | sed '1!s/^/ /')
423
+ ROOT_URL: |-
424
+ $(printf %s "https://$(printf %s "pan-test-app-stage-www-$CL_stage_www_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')" | sed '1!s/^/ /')
425
+ HOSTNAME_INTERNAL: |-
426
+ $(printf %s "$(printf %s "pan-test-app-stage-www-$CL_stage_www_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')" | sed '1!s/^/ /')
427
+ ROOT_URL_INTERNAL: |-
428
+ $(printf %s "https://$(printf %s "pan-test-app-stage-www-$CL_stage_www_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')" | sed '1!s/^/ /')
429
+ DEPLOY_CLOUD_RUN_PROJECT_ID: |-
430
+ google-project-id
431
+ DEPLOY_CLOUD_RUN_REGION: |-
432
+ europe-west6
433
+ GCLOUD_RUN_canonicalHostSuffix: |-
434
+ $(printf %s "$CL_stage_www_GCLOUD_RUN_canonicalHostSuffix" | sed '1!s/^/ /')
435
+ _ALL_ENV_VAR_KEYS: |-
436
+ ["ENV_SHORT","APP_DIR","ENV_TYPE","BUILD_INFO_BUILD_ID","BUILD_INFO_BUILD_TIME","BUILD_INFO_CURRENT_VERSION","HOSTNAME","ROOT_URL","HOSTNAME_INTERNAL","ROOT_URL_INTERNAL","DEPLOY_CLOUD_RUN_PROJECT_ID","DEPLOY_CLOUD_RUN_REGION","GCLOUD_DEPLOY_credentialsKey","GCLOUD_RUN_canonicalHostSuffix"]
437
+
438
+ EOF
439
+ - collapseable_section_end "writeenvvars"
440
+ - collapseable_section_start "deploy" "Deploy to cloud run"
441
+ - gcloud run deploy pan-test-app-stage-www --command="" --image=gcr.io/google-project-id/my-image:latest --project=google-project-id --region=europe-west6 --labels=customer-name=pan,component-name=www,app-name=test-app,env-type=stage,env-name=stage,build-type=disabled,cloud-run-service-name=pan-test-app-stage-www --env-vars-file=____envvars.yaml --min-instances=0 --max-instances=100 --cpu-throttling --allow-unauthenticated --ingress=all --cpu-boost
442
+ - collapseable_section_end "deploy"
443
+ - collapseable_section_start "cleanup" "Cleanup"
444
+ - set +e
445
+ - gcloud run revisions list --project=google-project-id --region=europe-west6 --service=pan-test-app-stage-www --limit=unlimited --sort-by=metadata.creationTimestamp --format="value(name)" --filter='(status.conditions.status=False OR status.conditions.status=Unknown)' | while read -r revisionname; do gcloud run revisions delete --project=google-project-id --region=europe-west6 --quiet $revisionname ; done
446
+ - gcloud artifacts docker images list europe-west6-docker.pkg.dev/google-project-id/catladder-deploy/pan-test-app/stage/www --sort-by=~CREATE_TIME --format="value(version)" | tail -n +2 | while read -r version; do gcloud artifacts docker images delete europe-west6-docker.pkg.dev/google-project-id/catladder-deploy/pan-test-app/stage/www@$version --quiet --delete-tags; done
447
+ - gcloud artifacts docker images list europe-west6-docker.pkg.dev/google-project-id/catladder-deploy/pan-test-app/caches/www --sort-by=~CREATE_TIME --format="value(version)" | tail -n +2 | while read -r version; do gcloud artifacts docker images delete europe-west6-docker.pkg.dev/google-project-id/catladder-deploy/pan-test-app/caches/www@$version --quiet --delete-tags; done
448
+ - set -e
449
+ - collapseable_section_end "cleanup"
450
+ - echo "CL_GITLAB_ENVIRONMENT_URL=$ROOT_URL" >> gitlab_environment.env
451
+ environment:
452
+ name: stage/www
453
+ url: $CL_GITLAB_ENVIRONMENT_URL
454
+ on_stop: 'www 🛑 Stop ⚠️ | stage '
455
+ artifacts:
456
+ reports:
457
+ dotenv: gitlab_environment.env
458
+ rules:
459
+ - when: never
460
+ if: $CI_PIPELINE_SOURCE == "trigger"
461
+ - when: on_success
462
+ if: $CI_COMMIT_TAG
463
+ needs: []
464
+ retry: *a1
465
+ interruptible: true
466
+ allow_failure: false
467
+ 'www 🛑 Stop ⚠️ | stage ':
468
+ stage: stop stage
469
+ image: path/to/docker/gcloud:the-version
470
+ variables:
471
+ KUBERNETES_CPU_REQUEST: '0.22'
472
+ KUBERNETES_MEMORY_REQUEST: 200Mi
473
+ KUBERNETES_MEMORY_LIMIT: 400Mi
474
+ GIT_STRATEGY: none
475
+ script:
476
+ - collapseable_section_start "injectvars" "Injecting variables"
477
+ - export CLOUDSDK_CORE_DISABLE_PROMPTS="1"
478
+ - collapseable_section_end "injectvars"
479
+ - set +e
480
+ - gcloud auth activate-service-account --key-file=<(echo "$CL_stage_www_GCLOUD_DEPLOY_credentialsKey")
481
+ - gcloud run services delete pan-test-app-stage-www --project=google-project-id --region=europe-west6
482
+ - gcloud artifacts docker images delete europe-west6-docker.pkg.dev/google-project-id/catladder-deploy/pan-test-app/stage/www --quiet --delete-tags
483
+ - gcloud artifacts docker images list europe-west6-docker.pkg.dev/google-project-id/catladder-deploy/pan-test-app/caches/www --sort-by=~CREATE_TIME --format="value(version)" | tail -n +2 | while read -r version; do gcloud artifacts docker images delete europe-west6-docker.pkg.dev/google-project-id/catladder-deploy/pan-test-app/caches/www@$version --quiet --delete-tags; done
484
+ - set -e
485
+ environment:
486
+ name: stage/www
487
+ action: stop
488
+ rules:
489
+ - if: $CI_COMMIT_BRANCH =~ /^[0-9]+\\.([0-9]+|x)\\.x$/
490
+ when: on_success
491
+ - when: never
492
+ if: $CI_PIPELINE_SOURCE == "trigger"
493
+ - when: manual
494
+ if: $CI_COMMIT_TAG
495
+ needs: []
496
+ retry: *a1
497
+ interruptible: true
498
+ allow_failure: true
499
+ 'www 🚀 Deploy | prod ':
500
+ stage: deploy prod
501
+ image: path/to/docker/gcloud:the-version
502
+ variables:
503
+ KUBERNETES_CPU_REQUEST: '0.22'
504
+ KUBERNETES_MEMORY_REQUEST: 200Mi
505
+ KUBERNETES_MEMORY_LIMIT: 400Mi
506
+ script:
507
+ - collapseable_section_start "injectvars" "Injecting variables"
508
+ - export ENV_SHORT="prod"
509
+ - export APP_DIR="app"
510
+ - export ENV_TYPE="prod"
511
+ - export BUILD_INFO_BUILD_ID="$(git describe --tags 2>/dev/null || git rev-parse HEAD)"
512
+ - export BUILD_INFO_BUILD_TIME="$CI_JOB_STARTED_AT"
513
+ - export BUILD_INFO_CURRENT_VERSION="$(tag=$(git ls-remote origin "refs/tags/v*[0-9]" 2>/dev/null | cut -f 2- | sort -V | tail -1 | sed 's/refs\\/tags\\/v//'); [ -z "$tag" ] && echo "0.0.0" || echo "$tag")"
514
+ - export HOSTNAME="$(printf %s "pan-test-app-prod-www-$CL_prod_www_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')"
515
+ - export ROOT_URL="https://$(printf %s "pan-test-app-prod-www-$CL_prod_www_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')"
516
+ - export HOSTNAME_INTERNAL="$(printf %s "pan-test-app-prod-www-$CL_prod_www_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')"
517
+ - export ROOT_URL_INTERNAL="https://$(printf %s "pan-test-app-prod-www-$CL_prod_www_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')"
518
+ - export DEPLOY_CLOUD_RUN_PROJECT_ID="google-project-id"
519
+ - export DEPLOY_CLOUD_RUN_REGION="europe-west6"
520
+ - export GCLOUD_DEPLOY_credentialsKey="$CL_prod_www_GCLOUD_DEPLOY_credentialsKey"
521
+ - export GCLOUD_RUN_canonicalHostSuffix="$CL_prod_www_GCLOUD_RUN_canonicalHostSuffix"
522
+ - export _ALL_ENV_VAR_KEYS="[\\"ENV_SHORT\\",\\"APP_DIR\\",\\"ENV_TYPE\\",\\"BUILD_INFO_BUILD_ID\\",\\"BUILD_INFO_BUILD_TIME\\",\\"BUILD_INFO_CURRENT_VERSION\\",\\"HOSTNAME\\",\\"ROOT_URL\\",\\"HOSTNAME_INTERNAL\\",\\"ROOT_URL_INTERNAL\\",\\"DEPLOY_CLOUD_RUN_PROJECT_ID\\",\\"DEPLOY_CLOUD_RUN_REGION\\",\\"GCLOUD_DEPLOY_credentialsKey\\",\\"GCLOUD_RUN_canonicalHostSuffix\\"]"
523
+ - export DOCKER_REGISTRY="europe-west6-docker.pkg.dev"
524
+ - export DOCKER_IMAGE="europe-west6-docker.pkg.dev/google-project-id/catladder-deploy/pan-test-app/prod/www"
525
+ - export DOCKER_CACHE_IMAGE="europe-west6-docker.pkg.dev/google-project-id/catladder-deploy/pan-test-app/caches/www"
526
+ - export DOCKER_IMAGE_TAG="$CI_COMMIT_SHA"
527
+ - export CLOUDSDK_CORE_DISABLE_PROMPTS="1"
528
+ - collapseable_section_end "injectvars"
529
+ - collapseable_section_start "prepare" "Prepare..."
530
+ - gcloud auth activate-service-account --key-file=<(echo "$CL_prod_www_GCLOUD_DEPLOY_credentialsKey")
531
+ - export GCLOUD_PROJECT_NUMBER=$(gcloud projects describe google-project-id --format="value(projectNumber)")
532
+ - 'echo "GCLOUD_PROJECT_NUMBER: $GCLOUD_PROJECT_NUMBER"'
533
+ - collapseable_section_end "prepare"
534
+ - collapseable_section_start "writeenvvars" "Write env vars to file"
535
+ - |
536
+ cat > ____envvars.yaml <<EOF
537
+ ENV_SHORT: |-
538
+ prod
539
+ APP_DIR: |-
540
+ app
541
+ ENV_TYPE: |-
542
+ prod
543
+ BUILD_INFO_BUILD_ID: |-
544
+ $(printf %s "$(git describe --tags 2>/dev/null || git rev-parse HEAD)" | sed '1!s/^/ /')
545
+ BUILD_INFO_BUILD_TIME: |-
546
+ $(printf %s "$CI_JOB_STARTED_AT" | sed '1!s/^/ /')
547
+ BUILD_INFO_CURRENT_VERSION: |-
548
+ $(printf %s "$(tag=$(git ls-remote origin "refs/tags/v*[0-9]" 2>/dev/null | cut -f 2- | sort -V | tail -1 | sed 's/refs\\/tags\\/v//'); [ -z "$tag" ] && echo "0.0.0" || echo "$tag")" | sed '1!s/^/ /')
549
+ HOSTNAME: |-
550
+ $(printf %s "$(printf %s "pan-test-app-prod-www-$CL_prod_www_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')" | sed '1!s/^/ /')
551
+ ROOT_URL: |-
552
+ $(printf %s "https://$(printf %s "pan-test-app-prod-www-$CL_prod_www_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')" | sed '1!s/^/ /')
553
+ HOSTNAME_INTERNAL: |-
554
+ $(printf %s "$(printf %s "pan-test-app-prod-www-$CL_prod_www_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')" | sed '1!s/^/ /')
555
+ ROOT_URL_INTERNAL: |-
556
+ $(printf %s "https://$(printf %s "pan-test-app-prod-www-$CL_prod_www_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')" | sed '1!s/^/ /')
557
+ DEPLOY_CLOUD_RUN_PROJECT_ID: |-
558
+ google-project-id
559
+ DEPLOY_CLOUD_RUN_REGION: |-
560
+ europe-west6
561
+ GCLOUD_RUN_canonicalHostSuffix: |-
562
+ $(printf %s "$CL_prod_www_GCLOUD_RUN_canonicalHostSuffix" | sed '1!s/^/ /')
563
+ _ALL_ENV_VAR_KEYS: |-
564
+ ["ENV_SHORT","APP_DIR","ENV_TYPE","BUILD_INFO_BUILD_ID","BUILD_INFO_BUILD_TIME","BUILD_INFO_CURRENT_VERSION","HOSTNAME","ROOT_URL","HOSTNAME_INTERNAL","ROOT_URL_INTERNAL","DEPLOY_CLOUD_RUN_PROJECT_ID","DEPLOY_CLOUD_RUN_REGION","GCLOUD_DEPLOY_credentialsKey","GCLOUD_RUN_canonicalHostSuffix"]
565
+
566
+ EOF
567
+ - collapseable_section_end "writeenvvars"
568
+ - collapseable_section_start "deploy" "Deploy to cloud run"
569
+ - gcloud run deploy pan-test-app-prod-www --command="" --image=gcr.io/google-project-id/my-image:latest --project=google-project-id --region=europe-west6 --labels=customer-name=pan,component-name=www,app-name=test-app,env-type=prod,env-name=prod,build-type=disabled,cloud-run-service-name=pan-test-app-prod-www --env-vars-file=____envvars.yaml --min-instances=0 --max-instances=100 --cpu-throttling --allow-unauthenticated --ingress=all --cpu-boost
570
+ - collapseable_section_end "deploy"
571
+ - collapseable_section_start "cleanup" "Cleanup"
572
+ - set +e
573
+ - gcloud run revisions list --project=google-project-id --region=europe-west6 --service=pan-test-app-prod-www --limit=unlimited --sort-by=metadata.creationTimestamp --format="value(name)" --filter='(status.conditions.status=False OR status.conditions.status=Unknown)' | tail -n +6 | while read -r revisionname; do gcloud run revisions delete --project=google-project-id --region=europe-west6 --quiet $revisionname ; done
574
+ - gcloud artifacts docker images list europe-west6-docker.pkg.dev/google-project-id/catladder-deploy/pan-test-app/prod/www --sort-by=~CREATE_TIME --format="value(version)" | tail -n +7 | while read -r version; do gcloud artifacts docker images delete europe-west6-docker.pkg.dev/google-project-id/catladder-deploy/pan-test-app/prod/www@$version --quiet --delete-tags; done
575
+ - gcloud artifacts docker images list europe-west6-docker.pkg.dev/google-project-id/catladder-deploy/pan-test-app/caches/www --sort-by=~CREATE_TIME --format="value(version)" | tail -n +2 | while read -r version; do gcloud artifacts docker images delete europe-west6-docker.pkg.dev/google-project-id/catladder-deploy/pan-test-app/caches/www@$version --quiet --delete-tags; done
576
+ - set -e
577
+ - collapseable_section_end "cleanup"
578
+ - echo "CL_GITLAB_ENVIRONMENT_URL=$ROOT_URL" >> gitlab_environment.env
579
+ environment:
580
+ name: prod/www
581
+ url: $CL_GITLAB_ENVIRONMENT_URL
582
+ on_stop: 'www 🛑 Stop ⚠️ | prod '
583
+ artifacts:
584
+ reports:
585
+ dotenv: gitlab_environment.env
586
+ rules:
587
+ - when: never
588
+ if: $CI_PIPELINE_SOURCE == "trigger"
589
+ - when: manual
590
+ if: $CI_COMMIT_TAG
591
+ needs: []
592
+ retry: *a1
593
+ interruptible: true
594
+ allow_failure: true
595
+ 'www 🛑 Stop ⚠️ | prod ':
596
+ stage: stop prod
597
+ image: path/to/docker/gcloud:the-version
598
+ variables:
599
+ KUBERNETES_CPU_REQUEST: '0.22'
600
+ KUBERNETES_MEMORY_REQUEST: 200Mi
601
+ KUBERNETES_MEMORY_LIMIT: 400Mi
602
+ GIT_STRATEGY: none
603
+ script:
604
+ - collapseable_section_start "injectvars" "Injecting variables"
605
+ - export CLOUDSDK_CORE_DISABLE_PROMPTS="1"
606
+ - collapseable_section_end "injectvars"
607
+ - set +e
608
+ - gcloud auth activate-service-account --key-file=<(echo "$CL_prod_www_GCLOUD_DEPLOY_credentialsKey")
609
+ - gcloud run services delete pan-test-app-prod-www --project=google-project-id --region=europe-west6
610
+ - gcloud artifacts docker images delete europe-west6-docker.pkg.dev/google-project-id/catladder-deploy/pan-test-app/prod/www --quiet --delete-tags
611
+ - gcloud artifacts docker images list europe-west6-docker.pkg.dev/google-project-id/catladder-deploy/pan-test-app/caches/www --sort-by=~CREATE_TIME --format="value(version)" | tail -n +2 | while read -r version; do gcloud artifacts docker images delete europe-west6-docker.pkg.dev/google-project-id/catladder-deploy/pan-test-app/caches/www@$version --quiet --delete-tags; done
612
+ - set -e
613
+ environment:
614
+ name: prod/www
615
+ action: stop
616
+ rules:
617
+ - if: $CI_COMMIT_BRANCH =~ /^[0-9]+\\.([0-9]+|x)\\.x$/
618
+ when: on_success
619
+ - when: never
620
+ if: $CI_PIPELINE_SOURCE == "trigger"
621
+ - when: manual
622
+ if: $CI_COMMIT_TAG
623
+ needs: []
624
+ retry: *a1
625
+ interruptible: true
626
+ allow_failure: true
627
+ create release:
628
+ stage: release
629
+ image: path/to/docker/semantic-release:the-version
630
+ script:
631
+ - semanticRelease
632
+ after_script:
633
+ - echo '👉 If this job failed with access denied, the project access token might be invald - run \`project-renew-token\` in catladder CLI to fix.'
634
+ rules:
635
+ - &a2
636
+ if: $CI_COMMIT_MESSAGE =~ /^chore\\(release\\).*/
637
+ when: never
638
+ - &a3
639
+ if: $CI_PIPELINE_SOURCE == "trigger"
640
+ when: never
641
+ - &a4
642
+ if: $CI_PIPELINE_SOURCE == "schedule"
643
+ when: never
644
+ - if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH
645
+ when: manual
646
+ - if: $CI_COMMIT_BRANCH =~ /^[0-9]+.([0-9]+|x).x$/
647
+ when: manual
648
+ ⚠️ force create release:
649
+ stage: release
650
+ image: path/to/docker/semantic-release:the-version
651
+ script:
652
+ - semanticRelease
653
+ after_script:
654
+ - echo '👉 If this job failed with access denied, the project access token might be invald - run \`project-renew-token\` in catladder CLI to fix.'
655
+ rules:
656
+ - *a2
657
+ - *a3
658
+ - *a4
659
+ - if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH
660
+ when: manual
661
+ - if: $CI_COMMIT_BRANCH =~ /^[0-9]+.([0-9]+|x).x$/
662
+ when: manual
663
+ needs: []
664
+ "
665
+ `;