@catladder/pipeline 1.75.4 → 1.76.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.
Files changed (112) hide show
  1. package/dist/build/base/createBuildJob.js +5 -27
  2. package/dist/build/base/writeBuildInfo.js +0 -3
  3. package/dist/build/custom/buildJob.js +3 -23
  4. package/dist/build/custom/index.js +3 -10
  5. package/dist/build/docker.js +5 -40
  6. package/dist/build/index.js +0 -8
  7. package/dist/build/node/buildJob.js +3 -25
  8. package/dist/build/node/cache.js +3 -21
  9. package/dist/build/node/index.js +3 -16
  10. package/dist/build/node/meteor.js +3 -20
  11. package/dist/build/node/testJob.js +5 -22
  12. package/dist/build/node/yarn.js +5 -18
  13. package/dist/build/rails/build.js +2 -8
  14. package/dist/build/rails/index.js +3 -11
  15. package/dist/build/rails/test.js +5 -18
  16. package/dist/build/types.d.ts +0 -9
  17. package/dist/build/types.js +0 -4
  18. package/dist/bundles/catladder-gitlab/index.js +1 -1
  19. package/dist/catladder-gitlab.js +6 -24
  20. package/dist/config/{configruedEnvs.test.d.ts → __tests__/configruedEnvs.test.d.ts} +0 -0
  21. package/dist/config/{configruedEnvs.test.js → __tests__/configruedEnvs.test.js} +10 -12
  22. package/dist/config/configruedEnvs.js +7 -22
  23. package/dist/config/index.js +0 -4
  24. package/dist/config/readConfig.js +2 -13
  25. package/dist/constants.js +1 -1
  26. package/dist/context/{resolveReferences.test.d.ts → __tests__/resolveReferences.test.d.ts} +0 -0
  27. package/dist/context/{resolveReferences.test.js → __tests__/resolveReferences.test.js} +52 -103
  28. package/dist/context/getEnvConfig.js +0 -8
  29. package/dist/context/getEnvType.js +0 -5
  30. package/dist/context/getEnvironment.js +13 -49
  31. package/dist/context/getEnvironmentContext.js +0 -5
  32. package/dist/context/getEnvironmentVariables.js +20 -83
  33. package/dist/context/getLabels.js +2 -13
  34. package/dist/context/index.js +13 -58
  35. package/dist/context/resolveReferences.js +36 -126
  36. package/dist/deploy/base.js +4 -19
  37. package/dist/deploy/cloudRun/deployJob.js +19 -61
  38. package/dist/deploy/cloudRun/index.js +17 -39
  39. package/dist/deploy/cloudRun/utils/database.js +11 -29
  40. package/dist/deploy/cloudRun/utils/gcloudServiceAccountLoginCommands.js +0 -4
  41. package/dist/deploy/cloudRun/utils/jobName.js +0 -2
  42. package/dist/deploy/custom/deployJob.js +3 -18
  43. package/dist/deploy/custom/index.js +0 -2
  44. package/dist/deploy/dockerTag/deployJob.js +0 -9
  45. package/dist/deploy/dockerTag/index.js +0 -2
  46. package/dist/deploy/index.js +0 -11
  47. package/dist/deploy/kubernetes/additionalSecretKeys.js +0 -9
  48. package/dist/deploy/kubernetes/cloudSql/index.js +0 -12
  49. package/dist/deploy/kubernetes/deployJob.js +3 -24
  50. package/dist/deploy/kubernetes/index.js +7 -17
  51. package/dist/deploy/kubernetes/kubeEnv.d.ts +0 -1
  52. package/dist/deploy/kubernetes/kubeEnv.js +5 -23
  53. package/dist/deploy/kubernetes/kubeValues.js +6 -24
  54. package/dist/deploy/kubernetes/mongodb.js +0 -24
  55. package/dist/deploy/kubernetes/processSecretsAsFiles.js +2 -10
  56. package/dist/deploy/types/base.d.ts +0 -1
  57. package/dist/deploy/types/custom.d.ts +0 -6
  58. package/dist/deploy/types/googleCloudRun.d.ts +4 -12
  59. package/dist/deploy/types/index.js +0 -10
  60. package/dist/deploy/types/kubernetes.d.ts +0 -28
  61. package/dist/deploy/utils.js +0 -11
  62. package/dist/index.js +0 -10
  63. package/dist/pipeline/commitInfo/getBuildId.d.ts +1 -0
  64. package/dist/pipeline/{createChildPipeline.test.js → commitInfo/getBuildId.js} +25 -84
  65. package/dist/pipeline/commitInfo/getCommitInfo.d.ts +2 -0
  66. package/dist/{build/tests/storybook.test.js → pipeline/commitInfo/getCommitInfo.js} +30 -104
  67. package/dist/pipeline/createChildPipeline.js +19 -76
  68. package/dist/pipeline/createJobs.js +35 -135
  69. package/dist/pipeline/gitlab/makeGitlabJob.d.ts +1 -0
  70. package/dist/pipeline/gitlab/makeGitlabJob.js +13 -15
  71. package/dist/pipeline/index.js +0 -4
  72. package/dist/pipeline/packageManager.js +20 -173
  73. package/dist/pipeline/yarn/yarnUtils.d.ts +4 -0
  74. package/dist/pipeline/yarn/yarnUtils.js +193 -0
  75. package/dist/runner/index.js +0 -3
  76. package/dist/tsconfig.tsbuildinfo +1 -1
  77. package/dist/types/config.d.ts +0 -13
  78. package/dist/types/config.js +5 -15
  79. package/dist/types/context.d.ts +0 -2
  80. package/dist/types/environmentContext.d.ts +0 -1
  81. package/dist/types/gitlab-types.d.ts +0 -1
  82. package/dist/types/index.js +0 -6
  83. package/dist/types/jobs.d.ts +5 -15
  84. package/dist/utils/gitlab.js +3 -13
  85. package/dist/utils/index.js +5 -15
  86. package/examples/__snapshots__/cloud-run-with-sql.ts.snap +1765 -0
  87. package/examples/__snapshots__/custom-build-job.ts.snap +1174 -0
  88. package/examples/__snapshots__/custom-envs.ts.snap +261 -0
  89. package/examples/__snapshots__/wait-for-other-deploy.ts.snap +1626 -0
  90. package/examples/__utils__/helpers.ts +14 -0
  91. package/examples/{cloud-sql.ts → cloud-run-with-sql.ts} +12 -15
  92. package/examples/custom-build-job.ts +4 -1
  93. package/examples/custom-envs.ts +31 -0
  94. package/examples/wait-for-other-deploy.ts +36 -0
  95. package/package.json +2 -2
  96. package/src/config/{configruedEnvs.test.ts → __tests__/configruedEnvs.test.ts} +3 -3
  97. package/src/context/{resolveReferences.test.ts → __tests__/resolveReferences.test.ts} +3 -3
  98. package/src/deploy/cloudRun/index.ts +2 -1
  99. package/src/deploy/types/googleCloudRun.ts +5 -0
  100. package/src/pipeline/commitInfo/getBuildId.ts +6 -0
  101. package/src/pipeline/commitInfo/getCommitInfo.ts +12 -0
  102. package/src/pipeline/createChildPipeline.ts +6 -1
  103. package/src/pipeline/createJobs.ts +3 -10
  104. package/src/pipeline/gitlab/makeGitlabJob.ts +7 -1
  105. package/src/pipeline/packageManager.ts +4 -38
  106. package/src/pipeline/yarn/yarnUtils.ts +37 -0
  107. package/src/types/jobs.ts +2 -1
  108. package/tsconfig.json +1 -1
  109. package/dist/build/tests/storybook.test.d.ts +0 -1
  110. package/dist/pipeline/createChildPipeline.test.d.ts +0 -1
  111. package/src/build/tests/storybook.test.ts +0 -54
  112. package/src/pipeline/createChildPipeline.test.ts +0 -49
@@ -0,0 +1,1174 @@
1
+ // Jest Snapshot v1, https://goo.gl/fbAQLP
2
+
3
+ exports[`matches snapshot 1`] = `
4
+ {
5
+ "mainBranch": {
6
+ "image": "path/to/docker/jobs-default:the-version",
7
+ "jobs": {
8
+ "www 🔨 app | dev ": {
9
+ "artifacts": {
10
+ "paths": [
11
+ "www/__build_info.json",
12
+ "www/dist",
13
+ ],
14
+ "reports": {
15
+ "junit": undefined,
16
+ },
17
+ },
18
+ "cache": [],
19
+ "environment": undefined,
20
+ "image": "foo",
21
+ "interruptible": true,
22
+ "needs": [],
23
+ "retry": {
24
+ "max": 2,
25
+ "when": [
26
+ "runner_system_failure",
27
+ "stuck_or_timeout_failure",
28
+ ],
29
+ },
30
+ "script": [
31
+ "echo '{"id":"some-id","time":"01-01-2023 12:13:14"}' > www/__build_info.json",
32
+ "if [ -f ./.nvmrc ]; then source /root/.nvm/nvm.sh && nvm install <<< .nvmrc; fi",
33
+ "cd www",
34
+ ],
35
+ "services": undefined,
36
+ "stage": "build",
37
+ "variables": {
38
+ "APP_DIR": "www",
39
+ "ENV_SHORT": "dev",
40
+ "ENV_TYPE": "dev",
41
+ "GCLOUD_DEPLOY_credentialsKey": "$CL_dev_www_GCLOUD_DEPLOY_credentialsKey",
42
+ "HOST": "pan-test-app-dev-www-undefined",
43
+ "HOST_CANONICAL": "pan-test-app-dev-www-undefined",
44
+ "KUBERNETES_CPU_LIMIT": "2",
45
+ "KUBERNETES_CPU_REQUEST": "0.5",
46
+ "KUBERNETES_MEMORY_LIMIT": "4Gi",
47
+ "KUBERNETES_MEMORY_REQUEST": "2Gi",
48
+ "ROOT_URL": "https://pan-test-app-dev-www-undefined",
49
+ "_ALL_ENV_VAR_KEYS": "["ENV_SHORT","APP_DIR","ENV_TYPE","HOST","ROOT_URL","HOST_CANONICAL","GCLOUD_DEPLOY_credentialsKey"]",
50
+ },
51
+ },
52
+ "www 🔨 docker | dev ": {
53
+ "environment": undefined,
54
+ "image": "path/to/docker/docker-build:the-version",
55
+ "interruptible": true,
56
+ "needs": [
57
+ "www 🔨 app | dev ",
58
+ ],
59
+ "retry": {
60
+ "max": 2,
61
+ "when": [
62
+ "runner_system_failure",
63
+ "stuck_or_timeout_failure",
64
+ ],
65
+ },
66
+ "script": [
67
+ "ensureNginxDockerfile",
68
+ "docker login --username gitlab-ci-token --password $CI_JOB_TOKEN $CI_REGISTRY",
69
+ "docker version",
70
+ "docker build --network host --cache-from $DOCKER_CACHE_IMAGE --tag $DOCKER_IMAGE:$DOCKER_IMAGE_TAG -f $APP_DIR/Dockerfile . --build-arg BUILDKIT_INLINE_CACHE=1",
71
+ "docker push $DOCKER_IMAGE:$DOCKER_IMAGE_TAG",
72
+ "docker tag $DOCKER_IMAGE:$DOCKER_IMAGE_TAG $DOCKER_CACHE_IMAGE",
73
+ "docker push $DOCKER_CACHE_IMAGE",
74
+ ],
75
+ "services": [
76
+ {
77
+ "command": [
78
+ "--tls=false",
79
+ ],
80
+ "name": "docker:20-dind",
81
+ },
82
+ ],
83
+ "stage": "build",
84
+ "variables": {
85
+ "APP_DIR": "www",
86
+ "DOCKERFILE_ADDITIONS": undefined,
87
+ "DOCKERFILE_ADDITIONS_END": undefined,
88
+ "DOCKER_BUILDKIT": "1",
89
+ "DOCKER_CACHE_IMAGE": "$DOCKER_REGISTRY_IMAGE_PATH/caches/www",
90
+ "DOCKER_DIR": ".",
91
+ "DOCKER_DRIVER": "overlay2",
92
+ "DOCKER_HOST": "tcp://0.0.0.0:2375",
93
+ "DOCKER_IMAGE": "$DOCKER_REGISTRY_IMAGE_PATH/$DOCKER_IMAGE_NAME",
94
+ "DOCKER_IMAGE_NAME": "dev/www",
95
+ "DOCKER_IMAGE_TAG": "$CI_COMMIT_SHA",
96
+ "DOCKER_REGISTRY": "$CI_REGISTRY",
97
+ "DOCKER_REGISTRY_IMAGE_PATH": "$CI_REGISTRY_IMAGE",
98
+ "DOCKER_TLS_CERTDIR": "",
99
+ "KUBERNETES_CPU_LIMIT": "1",
100
+ "KUBERNETES_CPU_REQUEST": "0.5",
101
+ "KUBERNETES_MEMORY_LIMIT": "2Gi",
102
+ "KUBERNETES_MEMORY_REQUEST": "1Gi",
103
+ },
104
+ },
105
+ "www 🚀 Deploy | dev ": {
106
+ "allow_failure": false,
107
+ "artifacts": {
108
+ "paths": [
109
+ "____envvars.yaml",
110
+ ],
111
+ },
112
+ "environment": {
113
+ "auto_stop_in": "4 weeks",
114
+ "name": "dev/www",
115
+ "on_stop": "www 🛑 Stop ⚠️ | dev ",
116
+ "url": "https://pan-test-app-dev-www-undefined",
117
+ },
118
+ "image": "path/to/docker/gcloud:the-version",
119
+ "interruptible": true,
120
+ "needs": [
121
+ {
122
+ "artifacts": false,
123
+ "job": "www 🔨 app | dev ",
124
+ },
125
+ {
126
+ "artifacts": false,
127
+ "job": "www 🔨 docker | dev ",
128
+ },
129
+ ],
130
+ "retry": {
131
+ "max": 2,
132
+ "when": [
133
+ "runner_system_failure",
134
+ "stuck_or_timeout_failure",
135
+ ],
136
+ },
137
+ "rules": [
138
+ {
139
+ "when": "on_success",
140
+ },
141
+ ],
142
+ "script": [
143
+ "echo $CL_dev_www_GCLOUD_DEPLOY_credentialsKey > ./____keyfile.json
144
+ ",
145
+ "gcloud auth activate-service-account --key-file="./____keyfile.json"",
146
+ "export GCLOUD_PROJECT_NUMBER=$(gcloud projects describe asdf --format="value(projectNumber)")",
147
+ "echo "GCLOUD_PROJECT_NUMBER: $GCLOUD_PROJECT_NUMBER"",
148
+ "docker login --username gitlab-ci-token --password $CI_JOB_TOKEN $CI_REGISTRY",
149
+ "gcloud auth configure-docker asia-east1-docker.pkg.dev",
150
+ "docker pull $DOCKER_IMAGE:$DOCKER_IMAGE_TAG",
151
+ "docker tag $DOCKER_IMAGE:$DOCKER_IMAGE_TAG asia-east1-docker.pkg.dev/asdf/catladder-deploy/pan-test-app/$DOCKER_IMAGE_NAME:$DOCKER_IMAGE_TAG",
152
+ "docker push asia-east1-docker.pkg.dev/asdf/catladder-deploy/pan-test-app/$DOCKER_IMAGE_NAME:$DOCKER_IMAGE_TAG",
153
+ "echo "$ENV_VARS" > ____envvars.yaml",
154
+ "gcloud run deploy pan-test-app-dev-www --image asia-east1-docker.pkg.dev/asdf/catladder-deploy/pan-test-app/$DOCKER_IMAGE_NAME:$DOCKER_IMAGE_TAG --project asdf --region=asia-east1 --labels customer-name=pan,app-name=test-app,env-type=dev,env-name=dev,build-type=custom --env-vars-file=____envvars.yaml --allow-unauthenticated",
155
+ "docker image rm asia-east1-docker.pkg.dev/asdf/catladder-deploy/pan-test-app/$DOCKER_IMAGE_NAME:$DOCKER_IMAGE_TAG",
156
+ ],
157
+ "services": [
158
+ {
159
+ "command": [
160
+ "--tls=false",
161
+ ],
162
+ "name": "docker:20-dind",
163
+ },
164
+ ],
165
+ "stage": "deploy dev",
166
+ "variables": {
167
+ "APP_DIR": "www",
168
+ "CLOUDSDK_CORE_DISABLE_PROMPTS": "1",
169
+ "DOCKERFILE_ADDITIONS": undefined,
170
+ "DOCKERFILE_ADDITIONS_END": undefined,
171
+ "DOCKER_BUILDKIT": "1",
172
+ "DOCKER_CACHE_IMAGE": "$DOCKER_REGISTRY_IMAGE_PATH/caches/www",
173
+ "DOCKER_DIR": ".",
174
+ "DOCKER_DRIVER": "overlay2",
175
+ "DOCKER_HOST": "tcp://0.0.0.0:2375",
176
+ "DOCKER_IMAGE": "$DOCKER_REGISTRY_IMAGE_PATH/$DOCKER_IMAGE_NAME",
177
+ "DOCKER_IMAGE_NAME": "dev/www",
178
+ "DOCKER_IMAGE_TAG": "$CI_COMMIT_SHA",
179
+ "DOCKER_REGISTRY": "$CI_REGISTRY",
180
+ "DOCKER_REGISTRY_IMAGE_PATH": "$CI_REGISTRY_IMAGE",
181
+ "DOCKER_TLS_CERTDIR": "",
182
+ "ENV_SHORT": "dev",
183
+ "ENV_TYPE": "dev",
184
+ "ENV_VARS": "ENV_SHORT: 'dev'
185
+ APP_DIR: 'www'
186
+ ENV_TYPE: 'dev'
187
+ HOST: 'pan-test-app-dev-www-undefined'
188
+ ROOT_URL: 'https://pan-test-app-dev-www-undefined'
189
+ HOST_CANONICAL: 'pan-test-app-dev-www-undefined'
190
+ _ALL_ENV_VAR_KEYS: '["ENV_SHORT","APP_DIR","ENV_TYPE","HOST","ROOT_URL","HOST_CANONICAL","GCLOUD_DEPLOY_credentialsKey"]'
191
+ ",
192
+ "GCLOUD_DEPLOY_credentialsKey": "$CL_dev_www_GCLOUD_DEPLOY_credentialsKey",
193
+ "HOST": "pan-test-app-dev-www-undefined",
194
+ "HOST_CANONICAL": "pan-test-app-dev-www-undefined",
195
+ "KUBERNETES_CPU_LIMIT": "1",
196
+ "KUBERNETES_CPU_REQUEST": "0.5",
197
+ "KUBERNETES_MEMORY_LIMIT": "2Gi",
198
+ "KUBERNETES_MEMORY_REQUEST": "1Gi",
199
+ "ROOT_URL": "https://pan-test-app-dev-www-undefined",
200
+ "_ALL_ENV_VAR_KEYS": "["ENV_SHORT","APP_DIR","ENV_TYPE","HOST","ROOT_URL","HOST_CANONICAL","GCLOUD_DEPLOY_credentialsKey"]",
201
+ },
202
+ },
203
+ "www 🛑 Stop ⚠️ | dev ": {
204
+ "environment": {
205
+ "action": "stop",
206
+ "name": "dev/www",
207
+ "url": "https://pan-test-app-dev-www-undefined",
208
+ },
209
+ "image": "path/to/docker/gcloud:the-version",
210
+ "interruptible": true,
211
+ "needs": [],
212
+ "retry": {
213
+ "max": 2,
214
+ "when": [
215
+ "runner_system_failure",
216
+ "stuck_or_timeout_failure",
217
+ ],
218
+ },
219
+ "rules": [
220
+ {
221
+ "allow_failure": true,
222
+ "if": "$CI_COMMIT_BRANCH =~ /^[0-9]+\\.([0-9]+|x)\\.x$/",
223
+ "when": "on_success",
224
+ },
225
+ {
226
+ "allow_failure": true,
227
+ "when": "manual",
228
+ },
229
+ ],
230
+ "script": [
231
+ "echo $CL_dev_www_GCLOUD_DEPLOY_credentialsKey > ./____keyfile.json
232
+ ",
233
+ "gcloud auth activate-service-account --key-file="./____keyfile.json"",
234
+ "gcloud run services delete pan-test-app-dev-www --project asdf --region=asia-east1",
235
+ ],
236
+ "stage": "stop dev",
237
+ "variables": {
238
+ "CLOUDSDK_CORE_DISABLE_PROMPTS": "1",
239
+ "GIT_STRATEGY": "none",
240
+ "KUBERNETES_CPU_LIMIT": "1",
241
+ "KUBERNETES_CPU_REQUEST": "0.5",
242
+ "KUBERNETES_MEMORY_LIMIT": "500Mi",
243
+ "KUBERNETES_MEMORY_REQUEST": "200Mi",
244
+ },
245
+ },
246
+ },
247
+ "stages": [
248
+ "setup",
249
+ "setup dev",
250
+ "setup review",
251
+ "setup stage",
252
+ "setup prod",
253
+ "setup local",
254
+ "test",
255
+ "test dev",
256
+ "test review",
257
+ "test stage",
258
+ "test prod",
259
+ "test local",
260
+ "build",
261
+ "build dev",
262
+ "build review",
263
+ "build stage",
264
+ "build prod",
265
+ "build local",
266
+ "deploy",
267
+ "deploy dev",
268
+ "deploy review",
269
+ "deploy stage",
270
+ "deploy prod",
271
+ "deploy local",
272
+ "verify",
273
+ "verify dev",
274
+ "verify review",
275
+ "verify stage",
276
+ "verify prod",
277
+ "verify local",
278
+ "rollback",
279
+ "rollback dev",
280
+ "rollback review",
281
+ "rollback stage",
282
+ "rollback prod",
283
+ "rollback local",
284
+ "stop",
285
+ "stop dev",
286
+ "stop review",
287
+ "stop stage",
288
+ "stop prod",
289
+ "stop local",
290
+ ],
291
+ "variables": {
292
+ "FF_USE_FASTZIP": "true",
293
+ },
294
+ "workflow": {
295
+ "rules": [
296
+ {
297
+ "if": "$CI_COMMIT_TAG",
298
+ },
299
+ {
300
+ "if": "$CI_COMMIT_MESSAGE =~ /^chore\\(release\\).*/",
301
+ "when": "never",
302
+ },
303
+ {
304
+ "if": "$CI_COMMIT_BRANCH =~ /^[0-9]+.([0-9]+|x).x$/",
305
+ },
306
+ {
307
+ "if": "$CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH",
308
+ },
309
+ {
310
+ "if": "$CI_MERGE_REQUEST_ID",
311
+ },
312
+ ],
313
+ },
314
+ },
315
+ "mr": {
316
+ "image": "path/to/docker/jobs-default:the-version",
317
+ "jobs": {
318
+ "www 🔨 app | review ": {
319
+ "artifacts": {
320
+ "paths": [
321
+ "www/__build_info.json",
322
+ "www/dist",
323
+ ],
324
+ "reports": {
325
+ "junit": undefined,
326
+ },
327
+ },
328
+ "cache": [],
329
+ "environment": undefined,
330
+ "image": "foo",
331
+ "interruptible": true,
332
+ "needs": [],
333
+ "retry": {
334
+ "max": 2,
335
+ "when": [
336
+ "runner_system_failure",
337
+ "stuck_or_timeout_failure",
338
+ ],
339
+ },
340
+ "script": [
341
+ "echo '{"id":"some-id","time":"01-01-2023 12:13:14"}' > www/__build_info.json",
342
+ "if [ -f ./.nvmrc ]; then source /root/.nvm/nvm.sh && nvm install <<< .nvmrc; fi",
343
+ "cd www",
344
+ ],
345
+ "services": undefined,
346
+ "stage": "build",
347
+ "variables": {
348
+ "APP_DIR": "www",
349
+ "ENV_SHORT": "review",
350
+ "ENV_TYPE": "review",
351
+ "GCLOUD_DEPLOY_credentialsKey": "$CL_review_www_GCLOUD_DEPLOY_credentialsKey",
352
+ "HOST": "pan-test-app-review-mr1234-www-undefined",
353
+ "HOST_CANONICAL": "pan-test-app-review-mr1234-www-undefined",
354
+ "KUBERNETES_CPU_LIMIT": "2",
355
+ "KUBERNETES_CPU_REQUEST": "0.5",
356
+ "KUBERNETES_MEMORY_LIMIT": "4Gi",
357
+ "KUBERNETES_MEMORY_REQUEST": "2Gi",
358
+ "ROOT_URL": "https://pan-test-app-review-mr1234-www-undefined",
359
+ "_ALL_ENV_VAR_KEYS": "["ENV_SHORT","APP_DIR","ENV_TYPE","HOST","ROOT_URL","HOST_CANONICAL","GCLOUD_DEPLOY_credentialsKey"]",
360
+ },
361
+ },
362
+ "www 🔨 docker | review ": {
363
+ "environment": undefined,
364
+ "image": "path/to/docker/docker-build:the-version",
365
+ "interruptible": true,
366
+ "needs": [
367
+ "www 🔨 app | review ",
368
+ ],
369
+ "retry": {
370
+ "max": 2,
371
+ "when": [
372
+ "runner_system_failure",
373
+ "stuck_or_timeout_failure",
374
+ ],
375
+ },
376
+ "script": [
377
+ "ensureNginxDockerfile",
378
+ "docker login --username gitlab-ci-token --password $CI_JOB_TOKEN $CI_REGISTRY",
379
+ "docker version",
380
+ "docker build --network host --cache-from $DOCKER_CACHE_IMAGE --tag $DOCKER_IMAGE:$DOCKER_IMAGE_TAG -f $APP_DIR/Dockerfile . --build-arg BUILDKIT_INLINE_CACHE=1",
381
+ "docker push $DOCKER_IMAGE:$DOCKER_IMAGE_TAG",
382
+ "docker tag $DOCKER_IMAGE:$DOCKER_IMAGE_TAG $DOCKER_CACHE_IMAGE",
383
+ "docker push $DOCKER_CACHE_IMAGE",
384
+ ],
385
+ "services": [
386
+ {
387
+ "command": [
388
+ "--tls=false",
389
+ ],
390
+ "name": "docker:20-dind",
391
+ },
392
+ ],
393
+ "stage": "build",
394
+ "variables": {
395
+ "APP_DIR": "www",
396
+ "DOCKERFILE_ADDITIONS": undefined,
397
+ "DOCKERFILE_ADDITIONS_END": undefined,
398
+ "DOCKER_BUILDKIT": "1",
399
+ "DOCKER_CACHE_IMAGE": "$DOCKER_REGISTRY_IMAGE_PATH/caches/www",
400
+ "DOCKER_DIR": ".",
401
+ "DOCKER_DRIVER": "overlay2",
402
+ "DOCKER_HOST": "tcp://0.0.0.0:2375",
403
+ "DOCKER_IMAGE": "$DOCKER_REGISTRY_IMAGE_PATH/$DOCKER_IMAGE_NAME",
404
+ "DOCKER_IMAGE_NAME": "review/www",
405
+ "DOCKER_IMAGE_TAG": "$CI_COMMIT_SHA",
406
+ "DOCKER_REGISTRY": "$CI_REGISTRY",
407
+ "DOCKER_REGISTRY_IMAGE_PATH": "$CI_REGISTRY_IMAGE",
408
+ "DOCKER_TLS_CERTDIR": "",
409
+ "KUBERNETES_CPU_LIMIT": "1",
410
+ "KUBERNETES_CPU_REQUEST": "0.5",
411
+ "KUBERNETES_MEMORY_LIMIT": "2Gi",
412
+ "KUBERNETES_MEMORY_REQUEST": "1Gi",
413
+ },
414
+ },
415
+ "www 🚀 Deploy | review ": {
416
+ "allow_failure": false,
417
+ "artifacts": {
418
+ "paths": [
419
+ "____envvars.yaml",
420
+ ],
421
+ },
422
+ "environment": {
423
+ "auto_stop_in": "2 week",
424
+ "name": "review/some-commit/www",
425
+ "on_stop": "www 🛑 Stop ⚠️ | review ",
426
+ "url": "https://pan-test-app-review-mr1234-www-undefined",
427
+ },
428
+ "image": "path/to/docker/gcloud:the-version",
429
+ "interruptible": true,
430
+ "needs": [
431
+ {
432
+ "artifacts": false,
433
+ "job": "www 🔨 app | review ",
434
+ },
435
+ {
436
+ "artifacts": false,
437
+ "job": "www 🔨 docker | review ",
438
+ },
439
+ ],
440
+ "retry": {
441
+ "max": 2,
442
+ "when": [
443
+ "runner_system_failure",
444
+ "stuck_or_timeout_failure",
445
+ ],
446
+ },
447
+ "rules": [
448
+ {
449
+ "when": "on_success",
450
+ },
451
+ ],
452
+ "script": [
453
+ "echo $CL_review_www_GCLOUD_DEPLOY_credentialsKey > ./____keyfile.json
454
+ ",
455
+ "gcloud auth activate-service-account --key-file="./____keyfile.json"",
456
+ "export GCLOUD_PROJECT_NUMBER=$(gcloud projects describe asdf --format="value(projectNumber)")",
457
+ "echo "GCLOUD_PROJECT_NUMBER: $GCLOUD_PROJECT_NUMBER"",
458
+ "docker login --username gitlab-ci-token --password $CI_JOB_TOKEN $CI_REGISTRY",
459
+ "gcloud auth configure-docker asia-east1-docker.pkg.dev",
460
+ "docker pull $DOCKER_IMAGE:$DOCKER_IMAGE_TAG",
461
+ "docker tag $DOCKER_IMAGE:$DOCKER_IMAGE_TAG asia-east1-docker.pkg.dev/asdf/catladder-deploy/pan-test-app/$DOCKER_IMAGE_NAME:$DOCKER_IMAGE_TAG",
462
+ "docker push asia-east1-docker.pkg.dev/asdf/catladder-deploy/pan-test-app/$DOCKER_IMAGE_NAME:$DOCKER_IMAGE_TAG",
463
+ "echo "$ENV_VARS" > ____envvars.yaml",
464
+ "gcloud run deploy pan-test-app-review-mr1234-www --image asia-east1-docker.pkg.dev/asdf/catladder-deploy/pan-test-app/$DOCKER_IMAGE_NAME:$DOCKER_IMAGE_TAG --project asdf --region=asia-east1 --labels customer-name=pan,app-name=test-app,env-type=review,env-name=review,build-type=custom --env-vars-file=____envvars.yaml --allow-unauthenticated",
465
+ "docker image rm asia-east1-docker.pkg.dev/asdf/catladder-deploy/pan-test-app/$DOCKER_IMAGE_NAME:$DOCKER_IMAGE_TAG",
466
+ ],
467
+ "services": [
468
+ {
469
+ "command": [
470
+ "--tls=false",
471
+ ],
472
+ "name": "docker:20-dind",
473
+ },
474
+ ],
475
+ "stage": "deploy review",
476
+ "variables": {
477
+ "APP_DIR": "www",
478
+ "CLOUDSDK_CORE_DISABLE_PROMPTS": "1",
479
+ "DOCKERFILE_ADDITIONS": undefined,
480
+ "DOCKERFILE_ADDITIONS_END": undefined,
481
+ "DOCKER_BUILDKIT": "1",
482
+ "DOCKER_CACHE_IMAGE": "$DOCKER_REGISTRY_IMAGE_PATH/caches/www",
483
+ "DOCKER_DIR": ".",
484
+ "DOCKER_DRIVER": "overlay2",
485
+ "DOCKER_HOST": "tcp://0.0.0.0:2375",
486
+ "DOCKER_IMAGE": "$DOCKER_REGISTRY_IMAGE_PATH/$DOCKER_IMAGE_NAME",
487
+ "DOCKER_IMAGE_NAME": "review/www",
488
+ "DOCKER_IMAGE_TAG": "$CI_COMMIT_SHA",
489
+ "DOCKER_REGISTRY": "$CI_REGISTRY",
490
+ "DOCKER_REGISTRY_IMAGE_PATH": "$CI_REGISTRY_IMAGE",
491
+ "DOCKER_TLS_CERTDIR": "",
492
+ "ENV_SHORT": "review",
493
+ "ENV_TYPE": "review",
494
+ "ENV_VARS": "ENV_SHORT: 'review'
495
+ APP_DIR: 'www'
496
+ ENV_TYPE: 'review'
497
+ HOST: 'pan-test-app-review-mr1234-www-undefined'
498
+ ROOT_URL: 'https://pan-test-app-review-mr1234-www-undefined'
499
+ HOST_CANONICAL: 'pan-test-app-review-mr1234-www-undefined'
500
+ _ALL_ENV_VAR_KEYS: '["ENV_SHORT","APP_DIR","ENV_TYPE","HOST","ROOT_URL","HOST_CANONICAL","GCLOUD_DEPLOY_credentialsKey"]'
501
+ ",
502
+ "GCLOUD_DEPLOY_credentialsKey": "$CL_review_www_GCLOUD_DEPLOY_credentialsKey",
503
+ "HOST": "pan-test-app-review-mr1234-www-undefined",
504
+ "HOST_CANONICAL": "pan-test-app-review-mr1234-www-undefined",
505
+ "KUBERNETES_CPU_LIMIT": "1",
506
+ "KUBERNETES_CPU_REQUEST": "0.5",
507
+ "KUBERNETES_MEMORY_LIMIT": "2Gi",
508
+ "KUBERNETES_MEMORY_REQUEST": "1Gi",
509
+ "ROOT_URL": "https://pan-test-app-review-mr1234-www-undefined",
510
+ "_ALL_ENV_VAR_KEYS": "["ENV_SHORT","APP_DIR","ENV_TYPE","HOST","ROOT_URL","HOST_CANONICAL","GCLOUD_DEPLOY_credentialsKey"]",
511
+ },
512
+ },
513
+ "www 🛑 Stop ⚠️ | review ": {
514
+ "environment": {
515
+ "action": "stop",
516
+ "name": "review/some-commit/www",
517
+ "url": "https://pan-test-app-review-mr1234-www-undefined",
518
+ },
519
+ "image": "path/to/docker/gcloud:the-version",
520
+ "interruptible": true,
521
+ "needs": [],
522
+ "retry": {
523
+ "max": 2,
524
+ "when": [
525
+ "runner_system_failure",
526
+ "stuck_or_timeout_failure",
527
+ ],
528
+ },
529
+ "rules": [
530
+ {
531
+ "allow_failure": true,
532
+ "if": "$CI_COMMIT_BRANCH =~ /^[0-9]+\\.([0-9]+|x)\\.x$/",
533
+ "when": "on_success",
534
+ },
535
+ {
536
+ "allow_failure": true,
537
+ "when": "manual",
538
+ },
539
+ ],
540
+ "script": [
541
+ "echo $CL_review_www_GCLOUD_DEPLOY_credentialsKey > ./____keyfile.json
542
+ ",
543
+ "gcloud auth activate-service-account --key-file="./____keyfile.json"",
544
+ "gcloud run services delete pan-test-app-review-mr1234-www --project asdf --region=asia-east1",
545
+ ],
546
+ "stage": "stop review",
547
+ "variables": {
548
+ "CLOUDSDK_CORE_DISABLE_PROMPTS": "1",
549
+ "GIT_STRATEGY": "none",
550
+ "KUBERNETES_CPU_LIMIT": "1",
551
+ "KUBERNETES_CPU_REQUEST": "0.5",
552
+ "KUBERNETES_MEMORY_LIMIT": "500Mi",
553
+ "KUBERNETES_MEMORY_REQUEST": "200Mi",
554
+ },
555
+ },
556
+ },
557
+ "stages": [
558
+ "setup",
559
+ "setup dev",
560
+ "setup review",
561
+ "setup stage",
562
+ "setup prod",
563
+ "setup local",
564
+ "test",
565
+ "test dev",
566
+ "test review",
567
+ "test stage",
568
+ "test prod",
569
+ "test local",
570
+ "build",
571
+ "build dev",
572
+ "build review",
573
+ "build stage",
574
+ "build prod",
575
+ "build local",
576
+ "deploy",
577
+ "deploy dev",
578
+ "deploy review",
579
+ "deploy stage",
580
+ "deploy prod",
581
+ "deploy local",
582
+ "verify",
583
+ "verify dev",
584
+ "verify review",
585
+ "verify stage",
586
+ "verify prod",
587
+ "verify local",
588
+ "rollback",
589
+ "rollback dev",
590
+ "rollback review",
591
+ "rollback stage",
592
+ "rollback prod",
593
+ "rollback local",
594
+ "stop",
595
+ "stop dev",
596
+ "stop review",
597
+ "stop stage",
598
+ "stop prod",
599
+ "stop local",
600
+ ],
601
+ "variables": {
602
+ "FF_USE_FASTZIP": "true",
603
+ },
604
+ "workflow": {
605
+ "rules": [
606
+ {
607
+ "if": "$CI_COMMIT_TAG",
608
+ },
609
+ {
610
+ "if": "$CI_COMMIT_MESSAGE =~ /^chore\\(release\\).*/",
611
+ "when": "never",
612
+ },
613
+ {
614
+ "if": "$CI_COMMIT_BRANCH =~ /^[0-9]+.([0-9]+|x).x$/",
615
+ },
616
+ {
617
+ "if": "$CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH",
618
+ },
619
+ {
620
+ "if": "$CI_MERGE_REQUEST_ID",
621
+ },
622
+ ],
623
+ },
624
+ },
625
+ "taggedRelease": {
626
+ "image": "path/to/docker/jobs-default:the-version",
627
+ "jobs": {
628
+ "www 🔨 app | prod ": {
629
+ "artifacts": {
630
+ "paths": [
631
+ "www/__build_info.json",
632
+ "www/dist",
633
+ ],
634
+ "reports": {
635
+ "junit": undefined,
636
+ },
637
+ },
638
+ "cache": [],
639
+ "environment": undefined,
640
+ "image": "foo",
641
+ "interruptible": true,
642
+ "needs": [],
643
+ "retry": {
644
+ "max": 2,
645
+ "when": [
646
+ "runner_system_failure",
647
+ "stuck_or_timeout_failure",
648
+ ],
649
+ },
650
+ "script": [
651
+ "echo '{"id":"some-id","time":"01-01-2023 12:13:14"}' > www/__build_info.json",
652
+ "if [ -f ./.nvmrc ]; then source /root/.nvm/nvm.sh && nvm install <<< .nvmrc; fi",
653
+ "cd www",
654
+ ],
655
+ "services": undefined,
656
+ "stage": "build",
657
+ "variables": {
658
+ "APP_DIR": "www",
659
+ "ENV_SHORT": "prod",
660
+ "ENV_TYPE": "prod",
661
+ "GCLOUD_DEPLOY_credentialsKey": "$CL_prod_www_GCLOUD_DEPLOY_credentialsKey",
662
+ "HOST": "pan-test-app-prod-www-undefined",
663
+ "HOST_CANONICAL": "pan-test-app-prod-www-undefined",
664
+ "KUBERNETES_CPU_LIMIT": "2",
665
+ "KUBERNETES_CPU_REQUEST": "0.5",
666
+ "KUBERNETES_MEMORY_LIMIT": "4Gi",
667
+ "KUBERNETES_MEMORY_REQUEST": "2Gi",
668
+ "ROOT_URL": "https://pan-test-app-prod-www-undefined",
669
+ "_ALL_ENV_VAR_KEYS": "["ENV_SHORT","APP_DIR","ENV_TYPE","HOST","ROOT_URL","HOST_CANONICAL","GCLOUD_DEPLOY_credentialsKey"]",
670
+ },
671
+ },
672
+ "www 🔨 app | stage ": {
673
+ "artifacts": {
674
+ "paths": [
675
+ "www/__build_info.json",
676
+ "www/dist",
677
+ ],
678
+ "reports": {
679
+ "junit": undefined,
680
+ },
681
+ },
682
+ "cache": [],
683
+ "environment": undefined,
684
+ "image": "foo",
685
+ "interruptible": true,
686
+ "needs": [],
687
+ "retry": {
688
+ "max": 2,
689
+ "when": [
690
+ "runner_system_failure",
691
+ "stuck_or_timeout_failure",
692
+ ],
693
+ },
694
+ "script": [
695
+ "echo '{"id":"some-id","time":"01-01-2023 12:13:14"}' > www/__build_info.json",
696
+ "if [ -f ./.nvmrc ]; then source /root/.nvm/nvm.sh && nvm install <<< .nvmrc; fi",
697
+ "cd www",
698
+ ],
699
+ "services": undefined,
700
+ "stage": "build",
701
+ "variables": {
702
+ "APP_DIR": "www",
703
+ "ENV_SHORT": "stage",
704
+ "ENV_TYPE": "stage",
705
+ "GCLOUD_DEPLOY_credentialsKey": "$CL_stage_www_GCLOUD_DEPLOY_credentialsKey",
706
+ "HOST": "pan-test-app-stage-www-undefined",
707
+ "HOST_CANONICAL": "pan-test-app-stage-www-undefined",
708
+ "KUBERNETES_CPU_LIMIT": "2",
709
+ "KUBERNETES_CPU_REQUEST": "0.5",
710
+ "KUBERNETES_MEMORY_LIMIT": "4Gi",
711
+ "KUBERNETES_MEMORY_REQUEST": "2Gi",
712
+ "ROOT_URL": "https://pan-test-app-stage-www-undefined",
713
+ "_ALL_ENV_VAR_KEYS": "["ENV_SHORT","APP_DIR","ENV_TYPE","HOST","ROOT_URL","HOST_CANONICAL","GCLOUD_DEPLOY_credentialsKey"]",
714
+ },
715
+ },
716
+ "www 🔨 docker | prod ": {
717
+ "environment": undefined,
718
+ "image": "path/to/docker/docker-build:the-version",
719
+ "interruptible": true,
720
+ "needs": [
721
+ "www 🔨 app | prod ",
722
+ ],
723
+ "retry": {
724
+ "max": 2,
725
+ "when": [
726
+ "runner_system_failure",
727
+ "stuck_or_timeout_failure",
728
+ ],
729
+ },
730
+ "script": [
731
+ "ensureNginxDockerfile",
732
+ "docker login --username gitlab-ci-token --password $CI_JOB_TOKEN $CI_REGISTRY",
733
+ "docker version",
734
+ "docker build --network host --cache-from $DOCKER_CACHE_IMAGE --tag $DOCKER_IMAGE:$DOCKER_IMAGE_TAG -f $APP_DIR/Dockerfile . --build-arg BUILDKIT_INLINE_CACHE=1",
735
+ "docker push $DOCKER_IMAGE:$DOCKER_IMAGE_TAG",
736
+ "docker tag $DOCKER_IMAGE:$DOCKER_IMAGE_TAG $DOCKER_CACHE_IMAGE",
737
+ "docker push $DOCKER_CACHE_IMAGE",
738
+ ],
739
+ "services": [
740
+ {
741
+ "command": [
742
+ "--tls=false",
743
+ ],
744
+ "name": "docker:20-dind",
745
+ },
746
+ ],
747
+ "stage": "build",
748
+ "variables": {
749
+ "APP_DIR": "www",
750
+ "DOCKERFILE_ADDITIONS": undefined,
751
+ "DOCKERFILE_ADDITIONS_END": undefined,
752
+ "DOCKER_BUILDKIT": "1",
753
+ "DOCKER_CACHE_IMAGE": "$DOCKER_REGISTRY_IMAGE_PATH/caches/www",
754
+ "DOCKER_DIR": ".",
755
+ "DOCKER_DRIVER": "overlay2",
756
+ "DOCKER_HOST": "tcp://0.0.0.0:2375",
757
+ "DOCKER_IMAGE": "$DOCKER_REGISTRY_IMAGE_PATH/$DOCKER_IMAGE_NAME",
758
+ "DOCKER_IMAGE_NAME": "prod/www",
759
+ "DOCKER_IMAGE_TAG": "$CI_COMMIT_SHA",
760
+ "DOCKER_REGISTRY": "$CI_REGISTRY",
761
+ "DOCKER_REGISTRY_IMAGE_PATH": "$CI_REGISTRY_IMAGE",
762
+ "DOCKER_TLS_CERTDIR": "",
763
+ "KUBERNETES_CPU_LIMIT": "1",
764
+ "KUBERNETES_CPU_REQUEST": "0.5",
765
+ "KUBERNETES_MEMORY_LIMIT": "2Gi",
766
+ "KUBERNETES_MEMORY_REQUEST": "1Gi",
767
+ },
768
+ },
769
+ "www 🔨 docker | stage ": {
770
+ "environment": undefined,
771
+ "image": "path/to/docker/docker-build:the-version",
772
+ "interruptible": true,
773
+ "needs": [
774
+ "www 🔨 app | stage ",
775
+ ],
776
+ "retry": {
777
+ "max": 2,
778
+ "when": [
779
+ "runner_system_failure",
780
+ "stuck_or_timeout_failure",
781
+ ],
782
+ },
783
+ "script": [
784
+ "ensureNginxDockerfile",
785
+ "docker login --username gitlab-ci-token --password $CI_JOB_TOKEN $CI_REGISTRY",
786
+ "docker version",
787
+ "docker build --network host --cache-from $DOCKER_CACHE_IMAGE --tag $DOCKER_IMAGE:$DOCKER_IMAGE_TAG -f $APP_DIR/Dockerfile . --build-arg BUILDKIT_INLINE_CACHE=1",
788
+ "docker push $DOCKER_IMAGE:$DOCKER_IMAGE_TAG",
789
+ "docker tag $DOCKER_IMAGE:$DOCKER_IMAGE_TAG $DOCKER_CACHE_IMAGE",
790
+ "docker push $DOCKER_CACHE_IMAGE",
791
+ ],
792
+ "services": [
793
+ {
794
+ "command": [
795
+ "--tls=false",
796
+ ],
797
+ "name": "docker:20-dind",
798
+ },
799
+ ],
800
+ "stage": "build",
801
+ "variables": {
802
+ "APP_DIR": "www",
803
+ "DOCKERFILE_ADDITIONS": undefined,
804
+ "DOCKERFILE_ADDITIONS_END": undefined,
805
+ "DOCKER_BUILDKIT": "1",
806
+ "DOCKER_CACHE_IMAGE": "$DOCKER_REGISTRY_IMAGE_PATH/caches/www",
807
+ "DOCKER_DIR": ".",
808
+ "DOCKER_DRIVER": "overlay2",
809
+ "DOCKER_HOST": "tcp://0.0.0.0:2375",
810
+ "DOCKER_IMAGE": "$DOCKER_REGISTRY_IMAGE_PATH/$DOCKER_IMAGE_NAME",
811
+ "DOCKER_IMAGE_NAME": "stage/www",
812
+ "DOCKER_IMAGE_TAG": "$CI_COMMIT_SHA",
813
+ "DOCKER_REGISTRY": "$CI_REGISTRY",
814
+ "DOCKER_REGISTRY_IMAGE_PATH": "$CI_REGISTRY_IMAGE",
815
+ "DOCKER_TLS_CERTDIR": "",
816
+ "KUBERNETES_CPU_LIMIT": "1",
817
+ "KUBERNETES_CPU_REQUEST": "0.5",
818
+ "KUBERNETES_MEMORY_LIMIT": "2Gi",
819
+ "KUBERNETES_MEMORY_REQUEST": "1Gi",
820
+ },
821
+ },
822
+ "www 🚀 Deploy | prod ": {
823
+ "allow_failure": true,
824
+ "artifacts": {
825
+ "paths": [
826
+ "____envvars.yaml",
827
+ ],
828
+ },
829
+ "environment": {
830
+ "auto_stop_in": undefined,
831
+ "name": "prod/www",
832
+ "on_stop": "www 🛑 Stop ⚠️ | prod ",
833
+ "url": "https://pan-test-app-prod-www-undefined",
834
+ },
835
+ "image": "path/to/docker/gcloud:the-version",
836
+ "interruptible": true,
837
+ "needs": [
838
+ {
839
+ "artifacts": false,
840
+ "job": "www 🔨 app | prod ",
841
+ },
842
+ {
843
+ "artifacts": false,
844
+ "job": "www 🔨 docker | prod ",
845
+ },
846
+ ],
847
+ "retry": {
848
+ "max": 2,
849
+ "when": [
850
+ "runner_system_failure",
851
+ "stuck_or_timeout_failure",
852
+ ],
853
+ },
854
+ "rules": [
855
+ {
856
+ "when": "manual",
857
+ },
858
+ ],
859
+ "script": [
860
+ "echo $CL_prod_www_GCLOUD_DEPLOY_credentialsKey > ./____keyfile.json
861
+ ",
862
+ "gcloud auth activate-service-account --key-file="./____keyfile.json"",
863
+ "export GCLOUD_PROJECT_NUMBER=$(gcloud projects describe asdf --format="value(projectNumber)")",
864
+ "echo "GCLOUD_PROJECT_NUMBER: $GCLOUD_PROJECT_NUMBER"",
865
+ "docker login --username gitlab-ci-token --password $CI_JOB_TOKEN $CI_REGISTRY",
866
+ "gcloud auth configure-docker asia-east1-docker.pkg.dev",
867
+ "docker pull $DOCKER_IMAGE:$DOCKER_IMAGE_TAG",
868
+ "docker tag $DOCKER_IMAGE:$DOCKER_IMAGE_TAG asia-east1-docker.pkg.dev/asdf/catladder-deploy/pan-test-app/$DOCKER_IMAGE_NAME:$DOCKER_IMAGE_TAG",
869
+ "docker push asia-east1-docker.pkg.dev/asdf/catladder-deploy/pan-test-app/$DOCKER_IMAGE_NAME:$DOCKER_IMAGE_TAG",
870
+ "echo "$ENV_VARS" > ____envvars.yaml",
871
+ "gcloud run deploy pan-test-app-prod-www --image asia-east1-docker.pkg.dev/asdf/catladder-deploy/pan-test-app/$DOCKER_IMAGE_NAME:$DOCKER_IMAGE_TAG --project asdf --region=asia-east1 --labels customer-name=pan,app-name=test-app,env-type=prod,env-name=prod,build-type=custom --env-vars-file=____envvars.yaml --allow-unauthenticated",
872
+ "docker image rm asia-east1-docker.pkg.dev/asdf/catladder-deploy/pan-test-app/$DOCKER_IMAGE_NAME:$DOCKER_IMAGE_TAG",
873
+ ],
874
+ "services": [
875
+ {
876
+ "command": [
877
+ "--tls=false",
878
+ ],
879
+ "name": "docker:20-dind",
880
+ },
881
+ ],
882
+ "stage": "deploy prod",
883
+ "variables": {
884
+ "APP_DIR": "www",
885
+ "CLOUDSDK_CORE_DISABLE_PROMPTS": "1",
886
+ "DOCKERFILE_ADDITIONS": undefined,
887
+ "DOCKERFILE_ADDITIONS_END": undefined,
888
+ "DOCKER_BUILDKIT": "1",
889
+ "DOCKER_CACHE_IMAGE": "$DOCKER_REGISTRY_IMAGE_PATH/caches/www",
890
+ "DOCKER_DIR": ".",
891
+ "DOCKER_DRIVER": "overlay2",
892
+ "DOCKER_HOST": "tcp://0.0.0.0:2375",
893
+ "DOCKER_IMAGE": "$DOCKER_REGISTRY_IMAGE_PATH/$DOCKER_IMAGE_NAME",
894
+ "DOCKER_IMAGE_NAME": "prod/www",
895
+ "DOCKER_IMAGE_TAG": "$CI_COMMIT_SHA",
896
+ "DOCKER_REGISTRY": "$CI_REGISTRY",
897
+ "DOCKER_REGISTRY_IMAGE_PATH": "$CI_REGISTRY_IMAGE",
898
+ "DOCKER_TLS_CERTDIR": "",
899
+ "ENV_SHORT": "prod",
900
+ "ENV_TYPE": "prod",
901
+ "ENV_VARS": "ENV_SHORT: 'prod'
902
+ APP_DIR: 'www'
903
+ ENV_TYPE: 'prod'
904
+ HOST: 'pan-test-app-prod-www-undefined'
905
+ ROOT_URL: 'https://pan-test-app-prod-www-undefined'
906
+ HOST_CANONICAL: 'pan-test-app-prod-www-undefined'
907
+ _ALL_ENV_VAR_KEYS: '["ENV_SHORT","APP_DIR","ENV_TYPE","HOST","ROOT_URL","HOST_CANONICAL","GCLOUD_DEPLOY_credentialsKey"]'
908
+ ",
909
+ "GCLOUD_DEPLOY_credentialsKey": "$CL_prod_www_GCLOUD_DEPLOY_credentialsKey",
910
+ "HOST": "pan-test-app-prod-www-undefined",
911
+ "HOST_CANONICAL": "pan-test-app-prod-www-undefined",
912
+ "KUBERNETES_CPU_LIMIT": "1",
913
+ "KUBERNETES_CPU_REQUEST": "0.5",
914
+ "KUBERNETES_MEMORY_LIMIT": "2Gi",
915
+ "KUBERNETES_MEMORY_REQUEST": "1Gi",
916
+ "ROOT_URL": "https://pan-test-app-prod-www-undefined",
917
+ "_ALL_ENV_VAR_KEYS": "["ENV_SHORT","APP_DIR","ENV_TYPE","HOST","ROOT_URL","HOST_CANONICAL","GCLOUD_DEPLOY_credentialsKey"]",
918
+ },
919
+ },
920
+ "www 🚀 Deploy | stage ": {
921
+ "allow_failure": false,
922
+ "artifacts": {
923
+ "paths": [
924
+ "____envvars.yaml",
925
+ ],
926
+ },
927
+ "environment": {
928
+ "auto_stop_in": undefined,
929
+ "name": "stage/www",
930
+ "on_stop": "www 🛑 Stop ⚠️ | stage ",
931
+ "url": "https://pan-test-app-stage-www-undefined",
932
+ },
933
+ "image": "path/to/docker/gcloud:the-version",
934
+ "interruptible": true,
935
+ "needs": [
936
+ {
937
+ "artifacts": false,
938
+ "job": "www 🔨 app | stage ",
939
+ },
940
+ {
941
+ "artifacts": false,
942
+ "job": "www 🔨 docker | stage ",
943
+ },
944
+ ],
945
+ "retry": {
946
+ "max": 2,
947
+ "when": [
948
+ "runner_system_failure",
949
+ "stuck_or_timeout_failure",
950
+ ],
951
+ },
952
+ "rules": [
953
+ {
954
+ "when": "on_success",
955
+ },
956
+ ],
957
+ "script": [
958
+ "echo $CL_stage_www_GCLOUD_DEPLOY_credentialsKey > ./____keyfile.json
959
+ ",
960
+ "gcloud auth activate-service-account --key-file="./____keyfile.json"",
961
+ "export GCLOUD_PROJECT_NUMBER=$(gcloud projects describe asdf --format="value(projectNumber)")",
962
+ "echo "GCLOUD_PROJECT_NUMBER: $GCLOUD_PROJECT_NUMBER"",
963
+ "docker login --username gitlab-ci-token --password $CI_JOB_TOKEN $CI_REGISTRY",
964
+ "gcloud auth configure-docker asia-east1-docker.pkg.dev",
965
+ "docker pull $DOCKER_IMAGE:$DOCKER_IMAGE_TAG",
966
+ "docker tag $DOCKER_IMAGE:$DOCKER_IMAGE_TAG asia-east1-docker.pkg.dev/asdf/catladder-deploy/pan-test-app/$DOCKER_IMAGE_NAME:$DOCKER_IMAGE_TAG",
967
+ "docker push asia-east1-docker.pkg.dev/asdf/catladder-deploy/pan-test-app/$DOCKER_IMAGE_NAME:$DOCKER_IMAGE_TAG",
968
+ "echo "$ENV_VARS" > ____envvars.yaml",
969
+ "gcloud run deploy pan-test-app-stage-www --image asia-east1-docker.pkg.dev/asdf/catladder-deploy/pan-test-app/$DOCKER_IMAGE_NAME:$DOCKER_IMAGE_TAG --project asdf --region=asia-east1 --labels customer-name=pan,app-name=test-app,env-type=stage,env-name=stage,build-type=custom --env-vars-file=____envvars.yaml --allow-unauthenticated",
970
+ "docker image rm asia-east1-docker.pkg.dev/asdf/catladder-deploy/pan-test-app/$DOCKER_IMAGE_NAME:$DOCKER_IMAGE_TAG",
971
+ ],
972
+ "services": [
973
+ {
974
+ "command": [
975
+ "--tls=false",
976
+ ],
977
+ "name": "docker:20-dind",
978
+ },
979
+ ],
980
+ "stage": "deploy stage",
981
+ "variables": {
982
+ "APP_DIR": "www",
983
+ "CLOUDSDK_CORE_DISABLE_PROMPTS": "1",
984
+ "DOCKERFILE_ADDITIONS": undefined,
985
+ "DOCKERFILE_ADDITIONS_END": undefined,
986
+ "DOCKER_BUILDKIT": "1",
987
+ "DOCKER_CACHE_IMAGE": "$DOCKER_REGISTRY_IMAGE_PATH/caches/www",
988
+ "DOCKER_DIR": ".",
989
+ "DOCKER_DRIVER": "overlay2",
990
+ "DOCKER_HOST": "tcp://0.0.0.0:2375",
991
+ "DOCKER_IMAGE": "$DOCKER_REGISTRY_IMAGE_PATH/$DOCKER_IMAGE_NAME",
992
+ "DOCKER_IMAGE_NAME": "stage/www",
993
+ "DOCKER_IMAGE_TAG": "$CI_COMMIT_SHA",
994
+ "DOCKER_REGISTRY": "$CI_REGISTRY",
995
+ "DOCKER_REGISTRY_IMAGE_PATH": "$CI_REGISTRY_IMAGE",
996
+ "DOCKER_TLS_CERTDIR": "",
997
+ "ENV_SHORT": "stage",
998
+ "ENV_TYPE": "stage",
999
+ "ENV_VARS": "ENV_SHORT: 'stage'
1000
+ APP_DIR: 'www'
1001
+ ENV_TYPE: 'stage'
1002
+ HOST: 'pan-test-app-stage-www-undefined'
1003
+ ROOT_URL: 'https://pan-test-app-stage-www-undefined'
1004
+ HOST_CANONICAL: 'pan-test-app-stage-www-undefined'
1005
+ _ALL_ENV_VAR_KEYS: '["ENV_SHORT","APP_DIR","ENV_TYPE","HOST","ROOT_URL","HOST_CANONICAL","GCLOUD_DEPLOY_credentialsKey"]'
1006
+ ",
1007
+ "GCLOUD_DEPLOY_credentialsKey": "$CL_stage_www_GCLOUD_DEPLOY_credentialsKey",
1008
+ "HOST": "pan-test-app-stage-www-undefined",
1009
+ "HOST_CANONICAL": "pan-test-app-stage-www-undefined",
1010
+ "KUBERNETES_CPU_LIMIT": "1",
1011
+ "KUBERNETES_CPU_REQUEST": "0.5",
1012
+ "KUBERNETES_MEMORY_LIMIT": "2Gi",
1013
+ "KUBERNETES_MEMORY_REQUEST": "1Gi",
1014
+ "ROOT_URL": "https://pan-test-app-stage-www-undefined",
1015
+ "_ALL_ENV_VAR_KEYS": "["ENV_SHORT","APP_DIR","ENV_TYPE","HOST","ROOT_URL","HOST_CANONICAL","GCLOUD_DEPLOY_credentialsKey"]",
1016
+ },
1017
+ },
1018
+ "www 🛑 Stop ⚠️ | prod ": {
1019
+ "environment": {
1020
+ "action": "stop",
1021
+ "name": "prod/www",
1022
+ "url": "https://pan-test-app-prod-www-undefined",
1023
+ },
1024
+ "image": "path/to/docker/gcloud:the-version",
1025
+ "interruptible": true,
1026
+ "needs": [],
1027
+ "retry": {
1028
+ "max": 2,
1029
+ "when": [
1030
+ "runner_system_failure",
1031
+ "stuck_or_timeout_failure",
1032
+ ],
1033
+ },
1034
+ "rules": [
1035
+ {
1036
+ "allow_failure": true,
1037
+ "if": "$CI_COMMIT_BRANCH =~ /^[0-9]+\\.([0-9]+|x)\\.x$/",
1038
+ "when": "on_success",
1039
+ },
1040
+ {
1041
+ "allow_failure": true,
1042
+ "when": "manual",
1043
+ },
1044
+ ],
1045
+ "script": [
1046
+ "echo $CL_prod_www_GCLOUD_DEPLOY_credentialsKey > ./____keyfile.json
1047
+ ",
1048
+ "gcloud auth activate-service-account --key-file="./____keyfile.json"",
1049
+ "gcloud run services delete pan-test-app-prod-www --project asdf --region=asia-east1",
1050
+ ],
1051
+ "stage": "stop prod",
1052
+ "variables": {
1053
+ "CLOUDSDK_CORE_DISABLE_PROMPTS": "1",
1054
+ "GIT_STRATEGY": "none",
1055
+ "KUBERNETES_CPU_LIMIT": "1",
1056
+ "KUBERNETES_CPU_REQUEST": "0.5",
1057
+ "KUBERNETES_MEMORY_LIMIT": "500Mi",
1058
+ "KUBERNETES_MEMORY_REQUEST": "200Mi",
1059
+ },
1060
+ },
1061
+ "www 🛑 Stop ⚠️ | stage ": {
1062
+ "environment": {
1063
+ "action": "stop",
1064
+ "name": "stage/www",
1065
+ "url": "https://pan-test-app-stage-www-undefined",
1066
+ },
1067
+ "image": "path/to/docker/gcloud:the-version",
1068
+ "interruptible": true,
1069
+ "needs": [],
1070
+ "retry": {
1071
+ "max": 2,
1072
+ "when": [
1073
+ "runner_system_failure",
1074
+ "stuck_or_timeout_failure",
1075
+ ],
1076
+ },
1077
+ "rules": [
1078
+ {
1079
+ "allow_failure": true,
1080
+ "if": "$CI_COMMIT_BRANCH =~ /^[0-9]+\\.([0-9]+|x)\\.x$/",
1081
+ "when": "on_success",
1082
+ },
1083
+ {
1084
+ "allow_failure": true,
1085
+ "when": "manual",
1086
+ },
1087
+ ],
1088
+ "script": [
1089
+ "echo $CL_stage_www_GCLOUD_DEPLOY_credentialsKey > ./____keyfile.json
1090
+ ",
1091
+ "gcloud auth activate-service-account --key-file="./____keyfile.json"",
1092
+ "gcloud run services delete pan-test-app-stage-www --project asdf --region=asia-east1",
1093
+ ],
1094
+ "stage": "stop stage",
1095
+ "variables": {
1096
+ "CLOUDSDK_CORE_DISABLE_PROMPTS": "1",
1097
+ "GIT_STRATEGY": "none",
1098
+ "KUBERNETES_CPU_LIMIT": "1",
1099
+ "KUBERNETES_CPU_REQUEST": "0.5",
1100
+ "KUBERNETES_MEMORY_LIMIT": "500Mi",
1101
+ "KUBERNETES_MEMORY_REQUEST": "200Mi",
1102
+ },
1103
+ },
1104
+ },
1105
+ "stages": [
1106
+ "setup",
1107
+ "setup dev",
1108
+ "setup review",
1109
+ "setup stage",
1110
+ "setup prod",
1111
+ "setup local",
1112
+ "test",
1113
+ "test dev",
1114
+ "test review",
1115
+ "test stage",
1116
+ "test prod",
1117
+ "test local",
1118
+ "build",
1119
+ "build dev",
1120
+ "build review",
1121
+ "build stage",
1122
+ "build prod",
1123
+ "build local",
1124
+ "deploy",
1125
+ "deploy dev",
1126
+ "deploy review",
1127
+ "deploy stage",
1128
+ "deploy prod",
1129
+ "deploy local",
1130
+ "verify",
1131
+ "verify dev",
1132
+ "verify review",
1133
+ "verify stage",
1134
+ "verify prod",
1135
+ "verify local",
1136
+ "rollback",
1137
+ "rollback dev",
1138
+ "rollback review",
1139
+ "rollback stage",
1140
+ "rollback prod",
1141
+ "rollback local",
1142
+ "stop",
1143
+ "stop dev",
1144
+ "stop review",
1145
+ "stop stage",
1146
+ "stop prod",
1147
+ "stop local",
1148
+ ],
1149
+ "variables": {
1150
+ "FF_USE_FASTZIP": "true",
1151
+ },
1152
+ "workflow": {
1153
+ "rules": [
1154
+ {
1155
+ "if": "$CI_COMMIT_TAG",
1156
+ },
1157
+ {
1158
+ "if": "$CI_COMMIT_MESSAGE =~ /^chore\\(release\\).*/",
1159
+ "when": "never",
1160
+ },
1161
+ {
1162
+ "if": "$CI_COMMIT_BRANCH =~ /^[0-9]+.([0-9]+|x).x$/",
1163
+ },
1164
+ {
1165
+ "if": "$CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH",
1166
+ },
1167
+ {
1168
+ "if": "$CI_MERGE_REQUEST_ID",
1169
+ },
1170
+ ],
1171
+ },
1172
+ },
1173
+ }
1174
+ `;