@catladder/pipeline 1.80.3 → 1.81.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,1572 @@
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
+ "api 👮 lint": {
9
+ "cache": [
10
+ {
11
+ "key": "api-yarn",
12
+ "paths": [
13
+ "api/.yarn",
14
+ ],
15
+ "policy": "pull-push",
16
+ },
17
+ {
18
+ "key": "api-node-modules",
19
+ "paths": [
20
+ "api/node_modules",
21
+ ],
22
+ "policy": "pull-push",
23
+ },
24
+ ],
25
+ "environment": undefined,
26
+ "interruptible": true,
27
+ "needs": [],
28
+ "retry": {
29
+ "max": 2,
30
+ "when": [
31
+ "runner_system_failure",
32
+ "stuck_or_timeout_failure",
33
+ ],
34
+ },
35
+ "script": [
36
+ "cd api",
37
+ "if [ -f ./.nvmrc ]; then source /root/.nvm/nvm.sh && nvm install <<< .nvmrc; fi",
38
+ "yarn install --immutable",
39
+ "yarn lint",
40
+ ],
41
+ "stage": "test",
42
+ "variables": {
43
+ "APP_PATH": "api",
44
+ "KUBERNETES_CPU_LIMIT": "2",
45
+ "KUBERNETES_CPU_REQUEST": "0.5",
46
+ "KUBERNETES_MEMORY_LIMIT": "4Gi",
47
+ "KUBERNETES_MEMORY_REQUEST": "2Gi",
48
+ },
49
+ },
50
+ "api 🔨 app | dev ": {
51
+ "artifacts": {
52
+ "paths": [
53
+ "api/__build_info.json",
54
+ "api/dist",
55
+ "api/.next",
56
+ ],
57
+ "reports": {
58
+ "junit": undefined,
59
+ },
60
+ },
61
+ "cache": [
62
+ {
63
+ "key": "api-yarn",
64
+ "paths": [
65
+ "api/.yarn",
66
+ ],
67
+ "policy": "pull-push",
68
+ },
69
+ {
70
+ "key": "api-node-modules",
71
+ "paths": [
72
+ "api/node_modules",
73
+ ],
74
+ "policy": "pull-push",
75
+ },
76
+ {
77
+ "key": "api-next-cache",
78
+ "paths": [
79
+ "api/.next/cache/",
80
+ ],
81
+ "policy": "pull-push",
82
+ },
83
+ ],
84
+ "environment": undefined,
85
+ "image": "path/to/docker/jobs-default:the-version",
86
+ "interruptible": true,
87
+ "needs": [],
88
+ "retry": {
89
+ "max": 2,
90
+ "when": [
91
+ "runner_system_failure",
92
+ "stuck_or_timeout_failure",
93
+ ],
94
+ },
95
+ "script": [
96
+ "echo '{"id":"some-id","time":"01-01-2023 12:13:14"}' > api/__build_info.json",
97
+ "if [ -f ./.nvmrc ]; then source /root/.nvm/nvm.sh && nvm install <<< .nvmrc; fi",
98
+ "cd api",
99
+ "if [ -f ./.nvmrc ]; then source /root/.nvm/nvm.sh && nvm install <<< .nvmrc; fi",
100
+ "yarn install --immutable",
101
+ "yarn build",
102
+ ],
103
+ "stage": "build",
104
+ "variables": {
105
+ "APP_DIR": "api",
106
+ "ENV_SHORT": "dev",
107
+ "ENV_TYPE": "dev",
108
+ "GCLOUD_DEPLOY_credentialsKey": "$CL_dev_api_GCLOUD_DEPLOY_credentialsKey",
109
+ "HOST": "pan-test-app-dev-api-undefined",
110
+ "HOST_CANONICAL": "pan-test-app-dev-api-undefined",
111
+ "KUBERNETES_CPU_LIMIT": "2",
112
+ "KUBERNETES_CPU_REQUEST": "0.5",
113
+ "KUBERNETES_MEMORY_LIMIT": "4Gi",
114
+ "KUBERNETES_MEMORY_REQUEST": "2Gi",
115
+ "ROOT_URL": "https://pan-test-app-dev-api-undefined",
116
+ "_ALL_ENV_VAR_KEYS": "["ENV_SHORT","APP_DIR","ENV_TYPE","HOST","ROOT_URL","HOST_CANONICAL","GCLOUD_DEPLOY_credentialsKey"]",
117
+ },
118
+ },
119
+ "api 🔨 docker | dev ": {
120
+ "cache": [
121
+ {
122
+ "key": "api-yarn",
123
+ "paths": [
124
+ "api/.yarn",
125
+ ],
126
+ "policy": "pull",
127
+ },
128
+ ],
129
+ "environment": undefined,
130
+ "image": "path/to/docker/docker-build:the-version",
131
+ "interruptible": true,
132
+ "needs": [
133
+ "api 🔨 app | dev ",
134
+ ],
135
+ "retry": {
136
+ "max": 2,
137
+ "when": [
138
+ "runner_system_failure",
139
+ "stuck_or_timeout_failure",
140
+ ],
141
+ },
142
+ "script": [
143
+ "ensureNodeDockerfile",
144
+ "docker login --username gitlab-ci-token --password $CI_JOB_TOKEN $CI_REGISTRY",
145
+ "docker version",
146
+ "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",
147
+ "docker push $DOCKER_IMAGE:$DOCKER_IMAGE_TAG",
148
+ "docker tag $DOCKER_IMAGE:$DOCKER_IMAGE_TAG $DOCKER_CACHE_IMAGE",
149
+ "docker push $DOCKER_CACHE_IMAGE",
150
+ ],
151
+ "services": [
152
+ {
153
+ "command": [
154
+ "--tls=false",
155
+ ],
156
+ "name": "docker:20-dind",
157
+ },
158
+ ],
159
+ "stage": "build",
160
+ "variables": {
161
+ "APP_DIR": "api",
162
+ "DOCKERFILE_ADDITIONS": undefined,
163
+ "DOCKERFILE_ADDITIONS_END": undefined,
164
+ "DOCKER_BUILDKIT": "1",
165
+ "DOCKER_CACHE_IMAGE": "$DOCKER_REGISTRY_IMAGE_PATH/caches/api",
166
+ "DOCKER_COPY_WORKSPACE_FILES": "COPY --chown=node:node api/package.json /app/api/package.json
167
+ COPY --chown=node:node api/yarn.lock /app/api/yarn.lock",
168
+ "DOCKER_DIR": ".",
169
+ "DOCKER_DRIVER": "overlay2",
170
+ "DOCKER_HOST": "tcp://0.0.0.0:2375",
171
+ "DOCKER_IMAGE": "$DOCKER_REGISTRY_IMAGE_PATH/$DOCKER_IMAGE_NAME",
172
+ "DOCKER_IMAGE_NAME": "dev/api",
173
+ "DOCKER_IMAGE_TAG": "$CI_COMMIT_SHA",
174
+ "DOCKER_REGISTRY": "$CI_REGISTRY",
175
+ "DOCKER_REGISTRY_IMAGE_PATH": "$CI_REGISTRY_IMAGE",
176
+ "DOCKER_TLS_CERTDIR": "",
177
+ "KUBERNETES_CPU_LIMIT": "1",
178
+ "KUBERNETES_CPU_REQUEST": "0.5",
179
+ "KUBERNETES_MEMORY_LIMIT": "2Gi",
180
+ "KUBERNETES_MEMORY_REQUEST": "1Gi",
181
+ "YARN_INSTALL": "yarn plugin import workspace-tools && yarn workspaces focus --production && yarn rebuild",
182
+ "YARN_INSTALL_WITHOUT_SCRIPTS": "YARN_ENABLE_SCRIPTS=false yarn plugin import workspace-tools && yarn workspaces focus --production && yarn rebuild",
183
+ },
184
+ },
185
+ "api 🚀 Deploy | dev ": {
186
+ "allow_failure": false,
187
+ "artifacts": {
188
+ "paths": [
189
+ "____envvars.yaml",
190
+ ],
191
+ },
192
+ "environment": {
193
+ "auto_stop_in": "4 weeks",
194
+ "name": "dev/api",
195
+ "on_stop": "api 🛑 Stop ⚠️ | dev ",
196
+ "url": "https://pan-test-app-dev-api-undefined",
197
+ },
198
+ "image": "path/to/docker/gcloud:the-version",
199
+ "interruptible": true,
200
+ "needs": [
201
+ {
202
+ "artifacts": false,
203
+ "job": "api 👮 lint",
204
+ },
205
+ {
206
+ "artifacts": false,
207
+ "job": "api 🔨 app | dev ",
208
+ },
209
+ {
210
+ "artifacts": false,
211
+ "job": "api 🔨 docker | dev ",
212
+ },
213
+ {
214
+ "artifacts": false,
215
+ "job": "api 🧪 test",
216
+ },
217
+ {
218
+ "artifacts": false,
219
+ "job": "api 🛡 audit",
220
+ },
221
+ ],
222
+ "retry": {
223
+ "max": 2,
224
+ "when": [
225
+ "runner_system_failure",
226
+ "stuck_or_timeout_failure",
227
+ ],
228
+ },
229
+ "rules": [
230
+ {
231
+ "when": "on_success",
232
+ },
233
+ ],
234
+ "script": [
235
+ "echo $CL_dev_api_GCLOUD_DEPLOY_credentialsKey > ./____keyfile.json
236
+ ",
237
+ "gcloud auth activate-service-account --key-file="./____keyfile.json"",
238
+ "export GCLOUD_PROJECT_NUMBER=$(gcloud projects describe asdf --format="value(projectNumber)")",
239
+ "echo "GCLOUD_PROJECT_NUMBER: $GCLOUD_PROJECT_NUMBER"",
240
+ "docker login --username gitlab-ci-token --password $CI_JOB_TOKEN $CI_REGISTRY",
241
+ "gcloud auth configure-docker asia-east1-docker.pkg.dev",
242
+ "docker pull $DOCKER_IMAGE:$DOCKER_IMAGE_TAG",
243
+ "docker tag $DOCKER_IMAGE:$DOCKER_IMAGE_TAG asia-east1-docker.pkg.dev/asdf/catladder-deploy/pan-test-app/$DOCKER_IMAGE_NAME:$DOCKER_IMAGE_TAG",
244
+ "docker push asia-east1-docker.pkg.dev/asdf/catladder-deploy/pan-test-app/$DOCKER_IMAGE_NAME:$DOCKER_IMAGE_TAG",
245
+ "echo "$ENV_VARS" > ____envvars.yaml",
246
+ "gcloud run deploy pan-test-app-dev-api --command="yarn,start" --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=node --env-vars-file=____envvars.yaml --no-allow-unauthenticated",
247
+ "docker image rm asia-east1-docker.pkg.dev/asdf/catladder-deploy/pan-test-app/$DOCKER_IMAGE_NAME:$DOCKER_IMAGE_TAG",
248
+ ],
249
+ "services": [
250
+ {
251
+ "command": [
252
+ "--tls=false",
253
+ ],
254
+ "name": "docker:20-dind",
255
+ },
256
+ ],
257
+ "stage": "deploy dev",
258
+ "variables": {
259
+ "APP_DIR": "api",
260
+ "CLOUDSDK_CORE_DISABLE_PROMPTS": "1",
261
+ "DOCKERFILE_ADDITIONS": undefined,
262
+ "DOCKERFILE_ADDITIONS_END": undefined,
263
+ "DOCKER_BUILDKIT": "1",
264
+ "DOCKER_CACHE_IMAGE": "$DOCKER_REGISTRY_IMAGE_PATH/caches/api",
265
+ "DOCKER_DIR": ".",
266
+ "DOCKER_DRIVER": "overlay2",
267
+ "DOCKER_HOST": "tcp://0.0.0.0:2375",
268
+ "DOCKER_IMAGE": "$DOCKER_REGISTRY_IMAGE_PATH/$DOCKER_IMAGE_NAME",
269
+ "DOCKER_IMAGE_NAME": "dev/api",
270
+ "DOCKER_IMAGE_TAG": "$CI_COMMIT_SHA",
271
+ "DOCKER_REGISTRY": "$CI_REGISTRY",
272
+ "DOCKER_REGISTRY_IMAGE_PATH": "$CI_REGISTRY_IMAGE",
273
+ "DOCKER_TLS_CERTDIR": "",
274
+ "ENV_SHORT": "dev",
275
+ "ENV_TYPE": "dev",
276
+ "ENV_VARS": "ENV_SHORT: 'dev'
277
+ APP_DIR: 'api'
278
+ ENV_TYPE: 'dev'
279
+ HOST: 'pan-test-app-dev-api-undefined'
280
+ ROOT_URL: 'https://pan-test-app-dev-api-undefined'
281
+ HOST_CANONICAL: 'pan-test-app-dev-api-undefined'
282
+ _ALL_ENV_VAR_KEYS: '["ENV_SHORT","APP_DIR","ENV_TYPE","HOST","ROOT_URL","HOST_CANONICAL","GCLOUD_DEPLOY_credentialsKey"]'
283
+ ",
284
+ "GCLOUD_DEPLOY_credentialsKey": "$CL_dev_api_GCLOUD_DEPLOY_credentialsKey",
285
+ "HOST": "pan-test-app-dev-api-undefined",
286
+ "HOST_CANONICAL": "pan-test-app-dev-api-undefined",
287
+ "KUBERNETES_CPU_LIMIT": "1",
288
+ "KUBERNETES_CPU_REQUEST": "0.5",
289
+ "KUBERNETES_MEMORY_LIMIT": "2Gi",
290
+ "KUBERNETES_MEMORY_REQUEST": "1Gi",
291
+ "ROOT_URL": "https://pan-test-app-dev-api-undefined",
292
+ "_ALL_ENV_VAR_KEYS": "["ENV_SHORT","APP_DIR","ENV_TYPE","HOST","ROOT_URL","HOST_CANONICAL","GCLOUD_DEPLOY_credentialsKey"]",
293
+ },
294
+ },
295
+ "api 🛑 Stop ⚠️ | dev ": {
296
+ "environment": {
297
+ "action": "stop",
298
+ "name": "dev/api",
299
+ "url": "https://pan-test-app-dev-api-undefined",
300
+ },
301
+ "image": "path/to/docker/gcloud:the-version",
302
+ "interruptible": true,
303
+ "needs": [],
304
+ "retry": {
305
+ "max": 2,
306
+ "when": [
307
+ "runner_system_failure",
308
+ "stuck_or_timeout_failure",
309
+ ],
310
+ },
311
+ "rules": [
312
+ {
313
+ "allow_failure": true,
314
+ "if": "$CI_COMMIT_BRANCH =~ /^[0-9]+\\.([0-9]+|x)\\.x$/",
315
+ "when": "on_success",
316
+ },
317
+ {
318
+ "allow_failure": true,
319
+ "when": "manual",
320
+ },
321
+ ],
322
+ "script": [
323
+ "echo $CL_dev_api_GCLOUD_DEPLOY_credentialsKey > ./____keyfile.json
324
+ ",
325
+ "gcloud auth activate-service-account --key-file="./____keyfile.json"",
326
+ "gcloud run services delete pan-test-app-dev-api --project=asdf --region=asia-east1",
327
+ ],
328
+ "stage": "stop dev",
329
+ "variables": {
330
+ "CLOUDSDK_CORE_DISABLE_PROMPTS": "1",
331
+ "GIT_STRATEGY": "none",
332
+ "KUBERNETES_CPU_LIMIT": "1",
333
+ "KUBERNETES_CPU_REQUEST": "0.5",
334
+ "KUBERNETES_MEMORY_LIMIT": "500Mi",
335
+ "KUBERNETES_MEMORY_REQUEST": "200Mi",
336
+ },
337
+ },
338
+ "api 🛡 audit": {
339
+ "allow_failure": true,
340
+ "cache": undefined,
341
+ "environment": undefined,
342
+ "interruptible": true,
343
+ "needs": [],
344
+ "retry": {
345
+ "max": 2,
346
+ "when": [
347
+ "runner_system_failure",
348
+ "stuck_or_timeout_failure",
349
+ ],
350
+ },
351
+ "script": [
352
+ "cd api",
353
+ "yarn npm audit --environment production",
354
+ ],
355
+ "stage": "test",
356
+ "variables": {
357
+ "APP_PATH": "api",
358
+ "KUBERNETES_CPU_LIMIT": "2",
359
+ "KUBERNETES_CPU_REQUEST": "0.5",
360
+ "KUBERNETES_MEMORY_LIMIT": "4Gi",
361
+ "KUBERNETES_MEMORY_REQUEST": "2Gi",
362
+ },
363
+ },
364
+ "api 🧪 test": {
365
+ "cache": [
366
+ {
367
+ "key": "api-yarn",
368
+ "paths": [
369
+ "api/.yarn",
370
+ ],
371
+ "policy": "pull-push",
372
+ },
373
+ {
374
+ "key": "api-node-modules",
375
+ "paths": [
376
+ "api/node_modules",
377
+ ],
378
+ "policy": "pull-push",
379
+ },
380
+ ],
381
+ "environment": undefined,
382
+ "image": "path/to/docker/jobs-testing-chrome:the-version",
383
+ "interruptible": true,
384
+ "needs": [],
385
+ "retry": {
386
+ "max": 2,
387
+ "when": [
388
+ "runner_system_failure",
389
+ "stuck_or_timeout_failure",
390
+ ],
391
+ },
392
+ "script": [
393
+ "cd api",
394
+ "if [ -f ./.nvmrc ]; then source /root/.nvm/nvm.sh && nvm install <<< .nvmrc; fi",
395
+ "yarn install --immutable",
396
+ "yarn test",
397
+ ],
398
+ "stage": "test",
399
+ "variables": {
400
+ "APP_PATH": "api",
401
+ "KUBERNETES_CPU_LIMIT": "2",
402
+ "KUBERNETES_CPU_REQUEST": "0.5",
403
+ "KUBERNETES_MEMORY_LIMIT": "4Gi",
404
+ "KUBERNETES_MEMORY_REQUEST": "2Gi",
405
+ },
406
+ },
407
+ },
408
+ "stages": [
409
+ "setup",
410
+ "setup dev",
411
+ "setup review",
412
+ "setup stage",
413
+ "setup prod",
414
+ "setup local",
415
+ "test",
416
+ "test dev",
417
+ "test review",
418
+ "test stage",
419
+ "test prod",
420
+ "test local",
421
+ "build",
422
+ "build dev",
423
+ "build review",
424
+ "build stage",
425
+ "build prod",
426
+ "build local",
427
+ "deploy",
428
+ "deploy dev",
429
+ "deploy review",
430
+ "deploy stage",
431
+ "deploy prod",
432
+ "deploy local",
433
+ "verify",
434
+ "verify dev",
435
+ "verify review",
436
+ "verify stage",
437
+ "verify prod",
438
+ "verify local",
439
+ "rollback",
440
+ "rollback dev",
441
+ "rollback review",
442
+ "rollback stage",
443
+ "rollback prod",
444
+ "rollback local",
445
+ "stop",
446
+ "stop dev",
447
+ "stop review",
448
+ "stop stage",
449
+ "stop prod",
450
+ "stop local",
451
+ ],
452
+ "variables": {
453
+ "FF_USE_FASTZIP": "true",
454
+ },
455
+ "workflow": {
456
+ "rules": [
457
+ {
458
+ "if": "$CI_COMMIT_TAG",
459
+ },
460
+ {
461
+ "if": "$CI_COMMIT_MESSAGE =~ /^chore\\(release\\).*/",
462
+ "when": "never",
463
+ },
464
+ {
465
+ "if": "$CI_COMMIT_BRANCH =~ /^[0-9]+.([0-9]+|x).x$/",
466
+ },
467
+ {
468
+ "if": "$CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH",
469
+ },
470
+ {
471
+ "if": "$CI_MERGE_REQUEST_ID",
472
+ },
473
+ ],
474
+ },
475
+ },
476
+ "mr": {
477
+ "image": "path/to/docker/jobs-default:the-version",
478
+ "jobs": {
479
+ "api 👮 lint": {
480
+ "cache": [
481
+ {
482
+ "key": "api-yarn",
483
+ "paths": [
484
+ "api/.yarn",
485
+ ],
486
+ "policy": "pull-push",
487
+ },
488
+ {
489
+ "key": "api-node-modules",
490
+ "paths": [
491
+ "api/node_modules",
492
+ ],
493
+ "policy": "pull-push",
494
+ },
495
+ ],
496
+ "environment": undefined,
497
+ "interruptible": true,
498
+ "needs": [],
499
+ "retry": {
500
+ "max": 2,
501
+ "when": [
502
+ "runner_system_failure",
503
+ "stuck_or_timeout_failure",
504
+ ],
505
+ },
506
+ "script": [
507
+ "cd api",
508
+ "if [ -f ./.nvmrc ]; then source /root/.nvm/nvm.sh && nvm install <<< .nvmrc; fi",
509
+ "yarn install --immutable",
510
+ "yarn lint",
511
+ ],
512
+ "stage": "test",
513
+ "variables": {
514
+ "APP_PATH": "api",
515
+ "KUBERNETES_CPU_LIMIT": "2",
516
+ "KUBERNETES_CPU_REQUEST": "0.5",
517
+ "KUBERNETES_MEMORY_LIMIT": "4Gi",
518
+ "KUBERNETES_MEMORY_REQUEST": "2Gi",
519
+ },
520
+ },
521
+ "api 🔨 app | review ": {
522
+ "artifacts": {
523
+ "paths": [
524
+ "api/__build_info.json",
525
+ "api/dist",
526
+ "api/.next",
527
+ ],
528
+ "reports": {
529
+ "junit": undefined,
530
+ },
531
+ },
532
+ "cache": [
533
+ {
534
+ "key": "api-yarn",
535
+ "paths": [
536
+ "api/.yarn",
537
+ ],
538
+ "policy": "pull-push",
539
+ },
540
+ {
541
+ "key": "api-node-modules",
542
+ "paths": [
543
+ "api/node_modules",
544
+ ],
545
+ "policy": "pull-push",
546
+ },
547
+ {
548
+ "key": "api-next-cache",
549
+ "paths": [
550
+ "api/.next/cache/",
551
+ ],
552
+ "policy": "pull-push",
553
+ },
554
+ ],
555
+ "environment": undefined,
556
+ "image": "path/to/docker/jobs-default:the-version",
557
+ "interruptible": true,
558
+ "needs": [],
559
+ "retry": {
560
+ "max": 2,
561
+ "when": [
562
+ "runner_system_failure",
563
+ "stuck_or_timeout_failure",
564
+ ],
565
+ },
566
+ "script": [
567
+ "echo '{"id":"some-id","time":"01-01-2023 12:13:14"}' > api/__build_info.json",
568
+ "if [ -f ./.nvmrc ]; then source /root/.nvm/nvm.sh && nvm install <<< .nvmrc; fi",
569
+ "cd api",
570
+ "if [ -f ./.nvmrc ]; then source /root/.nvm/nvm.sh && nvm install <<< .nvmrc; fi",
571
+ "yarn install --immutable",
572
+ "yarn build",
573
+ ],
574
+ "stage": "build",
575
+ "variables": {
576
+ "APP_DIR": "api",
577
+ "ENV_SHORT": "review",
578
+ "ENV_TYPE": "review",
579
+ "GCLOUD_DEPLOY_credentialsKey": "$CL_review_api_GCLOUD_DEPLOY_credentialsKey",
580
+ "HOST": "pan-test-app-review-mr1234-api-undefined",
581
+ "HOST_CANONICAL": "pan-test-app-review-mr1234-api-undefined",
582
+ "KUBERNETES_CPU_LIMIT": "2",
583
+ "KUBERNETES_CPU_REQUEST": "0.5",
584
+ "KUBERNETES_MEMORY_LIMIT": "4Gi",
585
+ "KUBERNETES_MEMORY_REQUEST": "2Gi",
586
+ "ROOT_URL": "https://pan-test-app-review-mr1234-api-undefined",
587
+ "_ALL_ENV_VAR_KEYS": "["ENV_SHORT","APP_DIR","ENV_TYPE","HOST","ROOT_URL","HOST_CANONICAL","GCLOUD_DEPLOY_credentialsKey"]",
588
+ },
589
+ },
590
+ "api 🔨 docker | review ": {
591
+ "cache": [
592
+ {
593
+ "key": "api-yarn",
594
+ "paths": [
595
+ "api/.yarn",
596
+ ],
597
+ "policy": "pull",
598
+ },
599
+ ],
600
+ "environment": undefined,
601
+ "image": "path/to/docker/docker-build:the-version",
602
+ "interruptible": true,
603
+ "needs": [
604
+ "api 🔨 app | review ",
605
+ ],
606
+ "retry": {
607
+ "max": 2,
608
+ "when": [
609
+ "runner_system_failure",
610
+ "stuck_or_timeout_failure",
611
+ ],
612
+ },
613
+ "script": [
614
+ "ensureNodeDockerfile",
615
+ "docker login --username gitlab-ci-token --password $CI_JOB_TOKEN $CI_REGISTRY",
616
+ "docker version",
617
+ "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",
618
+ "docker push $DOCKER_IMAGE:$DOCKER_IMAGE_TAG",
619
+ "docker tag $DOCKER_IMAGE:$DOCKER_IMAGE_TAG $DOCKER_CACHE_IMAGE",
620
+ "docker push $DOCKER_CACHE_IMAGE",
621
+ ],
622
+ "services": [
623
+ {
624
+ "command": [
625
+ "--tls=false",
626
+ ],
627
+ "name": "docker:20-dind",
628
+ },
629
+ ],
630
+ "stage": "build",
631
+ "variables": {
632
+ "APP_DIR": "api",
633
+ "DOCKERFILE_ADDITIONS": undefined,
634
+ "DOCKERFILE_ADDITIONS_END": undefined,
635
+ "DOCKER_BUILDKIT": "1",
636
+ "DOCKER_CACHE_IMAGE": "$DOCKER_REGISTRY_IMAGE_PATH/caches/api",
637
+ "DOCKER_COPY_WORKSPACE_FILES": "COPY --chown=node:node api/package.json /app/api/package.json
638
+ COPY --chown=node:node api/yarn.lock /app/api/yarn.lock",
639
+ "DOCKER_DIR": ".",
640
+ "DOCKER_DRIVER": "overlay2",
641
+ "DOCKER_HOST": "tcp://0.0.0.0:2375",
642
+ "DOCKER_IMAGE": "$DOCKER_REGISTRY_IMAGE_PATH/$DOCKER_IMAGE_NAME",
643
+ "DOCKER_IMAGE_NAME": "review/api",
644
+ "DOCKER_IMAGE_TAG": "$CI_COMMIT_SHA",
645
+ "DOCKER_REGISTRY": "$CI_REGISTRY",
646
+ "DOCKER_REGISTRY_IMAGE_PATH": "$CI_REGISTRY_IMAGE",
647
+ "DOCKER_TLS_CERTDIR": "",
648
+ "KUBERNETES_CPU_LIMIT": "1",
649
+ "KUBERNETES_CPU_REQUEST": "0.5",
650
+ "KUBERNETES_MEMORY_LIMIT": "2Gi",
651
+ "KUBERNETES_MEMORY_REQUEST": "1Gi",
652
+ "YARN_INSTALL": "yarn plugin import workspace-tools && yarn workspaces focus --production && yarn rebuild",
653
+ "YARN_INSTALL_WITHOUT_SCRIPTS": "YARN_ENABLE_SCRIPTS=false yarn plugin import workspace-tools && yarn workspaces focus --production && yarn rebuild",
654
+ },
655
+ },
656
+ "api 🚀 Deploy | review ": {
657
+ "allow_failure": false,
658
+ "artifacts": {
659
+ "paths": [
660
+ "____envvars.yaml",
661
+ ],
662
+ },
663
+ "environment": {
664
+ "auto_stop_in": "2 week",
665
+ "name": "review/some-commit/api",
666
+ "on_stop": "api 🛑 Stop ⚠️ | review ",
667
+ "url": "https://pan-test-app-review-mr1234-api-undefined",
668
+ },
669
+ "image": "path/to/docker/gcloud:the-version",
670
+ "interruptible": true,
671
+ "needs": [
672
+ {
673
+ "artifacts": false,
674
+ "job": "api 👮 lint",
675
+ },
676
+ {
677
+ "artifacts": false,
678
+ "job": "api 🔨 app | review ",
679
+ },
680
+ {
681
+ "artifacts": false,
682
+ "job": "api 🔨 docker | review ",
683
+ },
684
+ {
685
+ "artifacts": false,
686
+ "job": "api 🧪 test",
687
+ },
688
+ {
689
+ "artifacts": false,
690
+ "job": "api 🛡 audit",
691
+ },
692
+ ],
693
+ "retry": {
694
+ "max": 2,
695
+ "when": [
696
+ "runner_system_failure",
697
+ "stuck_or_timeout_failure",
698
+ ],
699
+ },
700
+ "rules": [
701
+ {
702
+ "when": "on_success",
703
+ },
704
+ ],
705
+ "script": [
706
+ "echo $CL_review_api_GCLOUD_DEPLOY_credentialsKey > ./____keyfile.json
707
+ ",
708
+ "gcloud auth activate-service-account --key-file="./____keyfile.json"",
709
+ "export GCLOUD_PROJECT_NUMBER=$(gcloud projects describe asdf --format="value(projectNumber)")",
710
+ "echo "GCLOUD_PROJECT_NUMBER: $GCLOUD_PROJECT_NUMBER"",
711
+ "docker login --username gitlab-ci-token --password $CI_JOB_TOKEN $CI_REGISTRY",
712
+ "gcloud auth configure-docker asia-east1-docker.pkg.dev",
713
+ "docker pull $DOCKER_IMAGE:$DOCKER_IMAGE_TAG",
714
+ "docker tag $DOCKER_IMAGE:$DOCKER_IMAGE_TAG asia-east1-docker.pkg.dev/asdf/catladder-deploy/pan-test-app/$DOCKER_IMAGE_NAME:$DOCKER_IMAGE_TAG",
715
+ "docker push asia-east1-docker.pkg.dev/asdf/catladder-deploy/pan-test-app/$DOCKER_IMAGE_NAME:$DOCKER_IMAGE_TAG",
716
+ "echo "$ENV_VARS" > ____envvars.yaml",
717
+ "gcloud run deploy pan-test-app-review-mr1234-api --command="yarn,start" --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=node --env-vars-file=____envvars.yaml --no-allow-unauthenticated",
718
+ "docker image rm asia-east1-docker.pkg.dev/asdf/catladder-deploy/pan-test-app/$DOCKER_IMAGE_NAME:$DOCKER_IMAGE_TAG",
719
+ ],
720
+ "services": [
721
+ {
722
+ "command": [
723
+ "--tls=false",
724
+ ],
725
+ "name": "docker:20-dind",
726
+ },
727
+ ],
728
+ "stage": "deploy review",
729
+ "variables": {
730
+ "APP_DIR": "api",
731
+ "CLOUDSDK_CORE_DISABLE_PROMPTS": "1",
732
+ "DOCKERFILE_ADDITIONS": undefined,
733
+ "DOCKERFILE_ADDITIONS_END": undefined,
734
+ "DOCKER_BUILDKIT": "1",
735
+ "DOCKER_CACHE_IMAGE": "$DOCKER_REGISTRY_IMAGE_PATH/caches/api",
736
+ "DOCKER_DIR": ".",
737
+ "DOCKER_DRIVER": "overlay2",
738
+ "DOCKER_HOST": "tcp://0.0.0.0:2375",
739
+ "DOCKER_IMAGE": "$DOCKER_REGISTRY_IMAGE_PATH/$DOCKER_IMAGE_NAME",
740
+ "DOCKER_IMAGE_NAME": "review/api",
741
+ "DOCKER_IMAGE_TAG": "$CI_COMMIT_SHA",
742
+ "DOCKER_REGISTRY": "$CI_REGISTRY",
743
+ "DOCKER_REGISTRY_IMAGE_PATH": "$CI_REGISTRY_IMAGE",
744
+ "DOCKER_TLS_CERTDIR": "",
745
+ "ENV_SHORT": "review",
746
+ "ENV_TYPE": "review",
747
+ "ENV_VARS": "ENV_SHORT: 'review'
748
+ APP_DIR: 'api'
749
+ ENV_TYPE: 'review'
750
+ HOST: 'pan-test-app-review-mr1234-api-undefined'
751
+ ROOT_URL: 'https://pan-test-app-review-mr1234-api-undefined'
752
+ HOST_CANONICAL: 'pan-test-app-review-mr1234-api-undefined'
753
+ _ALL_ENV_VAR_KEYS: '["ENV_SHORT","APP_DIR","ENV_TYPE","HOST","ROOT_URL","HOST_CANONICAL","GCLOUD_DEPLOY_credentialsKey"]'
754
+ ",
755
+ "GCLOUD_DEPLOY_credentialsKey": "$CL_review_api_GCLOUD_DEPLOY_credentialsKey",
756
+ "HOST": "pan-test-app-review-mr1234-api-undefined",
757
+ "HOST_CANONICAL": "pan-test-app-review-mr1234-api-undefined",
758
+ "KUBERNETES_CPU_LIMIT": "1",
759
+ "KUBERNETES_CPU_REQUEST": "0.5",
760
+ "KUBERNETES_MEMORY_LIMIT": "2Gi",
761
+ "KUBERNETES_MEMORY_REQUEST": "1Gi",
762
+ "ROOT_URL": "https://pan-test-app-review-mr1234-api-undefined",
763
+ "_ALL_ENV_VAR_KEYS": "["ENV_SHORT","APP_DIR","ENV_TYPE","HOST","ROOT_URL","HOST_CANONICAL","GCLOUD_DEPLOY_credentialsKey"]",
764
+ },
765
+ },
766
+ "api 🛑 Stop ⚠️ | review ": {
767
+ "environment": {
768
+ "action": "stop",
769
+ "name": "review/some-commit/api",
770
+ "url": "https://pan-test-app-review-mr1234-api-undefined",
771
+ },
772
+ "image": "path/to/docker/gcloud:the-version",
773
+ "interruptible": true,
774
+ "needs": [],
775
+ "retry": {
776
+ "max": 2,
777
+ "when": [
778
+ "runner_system_failure",
779
+ "stuck_or_timeout_failure",
780
+ ],
781
+ },
782
+ "rules": [
783
+ {
784
+ "allow_failure": true,
785
+ "if": "$CI_COMMIT_BRANCH =~ /^[0-9]+\\.([0-9]+|x)\\.x$/",
786
+ "when": "on_success",
787
+ },
788
+ {
789
+ "allow_failure": true,
790
+ "when": "manual",
791
+ },
792
+ ],
793
+ "script": [
794
+ "echo $CL_review_api_GCLOUD_DEPLOY_credentialsKey > ./____keyfile.json
795
+ ",
796
+ "gcloud auth activate-service-account --key-file="./____keyfile.json"",
797
+ "gcloud run services delete pan-test-app-review-mr1234-api --project=asdf --region=asia-east1",
798
+ ],
799
+ "stage": "stop review",
800
+ "variables": {
801
+ "CLOUDSDK_CORE_DISABLE_PROMPTS": "1",
802
+ "GIT_STRATEGY": "none",
803
+ "KUBERNETES_CPU_LIMIT": "1",
804
+ "KUBERNETES_CPU_REQUEST": "0.5",
805
+ "KUBERNETES_MEMORY_LIMIT": "500Mi",
806
+ "KUBERNETES_MEMORY_REQUEST": "200Mi",
807
+ },
808
+ },
809
+ "api 🛡 audit": {
810
+ "allow_failure": true,
811
+ "cache": undefined,
812
+ "environment": undefined,
813
+ "interruptible": true,
814
+ "needs": [],
815
+ "retry": {
816
+ "max": 2,
817
+ "when": [
818
+ "runner_system_failure",
819
+ "stuck_or_timeout_failure",
820
+ ],
821
+ },
822
+ "script": [
823
+ "cd api",
824
+ "yarn npm audit --environment production",
825
+ ],
826
+ "stage": "test",
827
+ "variables": {
828
+ "APP_PATH": "api",
829
+ "KUBERNETES_CPU_LIMIT": "2",
830
+ "KUBERNETES_CPU_REQUEST": "0.5",
831
+ "KUBERNETES_MEMORY_LIMIT": "4Gi",
832
+ "KUBERNETES_MEMORY_REQUEST": "2Gi",
833
+ },
834
+ },
835
+ "api 🧪 test": {
836
+ "cache": [
837
+ {
838
+ "key": "api-yarn",
839
+ "paths": [
840
+ "api/.yarn",
841
+ ],
842
+ "policy": "pull-push",
843
+ },
844
+ {
845
+ "key": "api-node-modules",
846
+ "paths": [
847
+ "api/node_modules",
848
+ ],
849
+ "policy": "pull-push",
850
+ },
851
+ ],
852
+ "environment": undefined,
853
+ "image": "path/to/docker/jobs-testing-chrome:the-version",
854
+ "interruptible": true,
855
+ "needs": [],
856
+ "retry": {
857
+ "max": 2,
858
+ "when": [
859
+ "runner_system_failure",
860
+ "stuck_or_timeout_failure",
861
+ ],
862
+ },
863
+ "script": [
864
+ "cd api",
865
+ "if [ -f ./.nvmrc ]; then source /root/.nvm/nvm.sh && nvm install <<< .nvmrc; fi",
866
+ "yarn install --immutable",
867
+ "yarn test",
868
+ ],
869
+ "stage": "test",
870
+ "variables": {
871
+ "APP_PATH": "api",
872
+ "KUBERNETES_CPU_LIMIT": "2",
873
+ "KUBERNETES_CPU_REQUEST": "0.5",
874
+ "KUBERNETES_MEMORY_LIMIT": "4Gi",
875
+ "KUBERNETES_MEMORY_REQUEST": "2Gi",
876
+ },
877
+ },
878
+ },
879
+ "stages": [
880
+ "setup",
881
+ "setup dev",
882
+ "setup review",
883
+ "setup stage",
884
+ "setup prod",
885
+ "setup local",
886
+ "test",
887
+ "test dev",
888
+ "test review",
889
+ "test stage",
890
+ "test prod",
891
+ "test local",
892
+ "build",
893
+ "build dev",
894
+ "build review",
895
+ "build stage",
896
+ "build prod",
897
+ "build local",
898
+ "deploy",
899
+ "deploy dev",
900
+ "deploy review",
901
+ "deploy stage",
902
+ "deploy prod",
903
+ "deploy local",
904
+ "verify",
905
+ "verify dev",
906
+ "verify review",
907
+ "verify stage",
908
+ "verify prod",
909
+ "verify local",
910
+ "rollback",
911
+ "rollback dev",
912
+ "rollback review",
913
+ "rollback stage",
914
+ "rollback prod",
915
+ "rollback local",
916
+ "stop",
917
+ "stop dev",
918
+ "stop review",
919
+ "stop stage",
920
+ "stop prod",
921
+ "stop local",
922
+ ],
923
+ "variables": {
924
+ "FF_USE_FASTZIP": "true",
925
+ },
926
+ "workflow": {
927
+ "rules": [
928
+ {
929
+ "if": "$CI_COMMIT_TAG",
930
+ },
931
+ {
932
+ "if": "$CI_COMMIT_MESSAGE =~ /^chore\\(release\\).*/",
933
+ "when": "never",
934
+ },
935
+ {
936
+ "if": "$CI_COMMIT_BRANCH =~ /^[0-9]+.([0-9]+|x).x$/",
937
+ },
938
+ {
939
+ "if": "$CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH",
940
+ },
941
+ {
942
+ "if": "$CI_MERGE_REQUEST_ID",
943
+ },
944
+ ],
945
+ },
946
+ },
947
+ "taggedRelease": {
948
+ "image": "path/to/docker/jobs-default:the-version",
949
+ "jobs": {
950
+ "api 🔨 app | prod ": {
951
+ "artifacts": {
952
+ "paths": [
953
+ "api/__build_info.json",
954
+ "api/dist",
955
+ "api/.next",
956
+ ],
957
+ "reports": {
958
+ "junit": undefined,
959
+ },
960
+ },
961
+ "cache": [
962
+ {
963
+ "key": "api-yarn",
964
+ "paths": [
965
+ "api/.yarn",
966
+ ],
967
+ "policy": "pull-push",
968
+ },
969
+ {
970
+ "key": "api-node-modules",
971
+ "paths": [
972
+ "api/node_modules",
973
+ ],
974
+ "policy": "pull-push",
975
+ },
976
+ {
977
+ "key": "api-next-cache",
978
+ "paths": [
979
+ "api/.next/cache/",
980
+ ],
981
+ "policy": "pull-push",
982
+ },
983
+ ],
984
+ "environment": undefined,
985
+ "image": "path/to/docker/jobs-default:the-version",
986
+ "interruptible": true,
987
+ "needs": [],
988
+ "retry": {
989
+ "max": 2,
990
+ "when": [
991
+ "runner_system_failure",
992
+ "stuck_or_timeout_failure",
993
+ ],
994
+ },
995
+ "script": [
996
+ "echo '{"id":"some-id","time":"01-01-2023 12:13:14"}' > api/__build_info.json",
997
+ "if [ -f ./.nvmrc ]; then source /root/.nvm/nvm.sh && nvm install <<< .nvmrc; fi",
998
+ "cd api",
999
+ "if [ -f ./.nvmrc ]; then source /root/.nvm/nvm.sh && nvm install <<< .nvmrc; fi",
1000
+ "yarn install --immutable",
1001
+ "yarn build",
1002
+ ],
1003
+ "stage": "build",
1004
+ "variables": {
1005
+ "APP_DIR": "api",
1006
+ "ENV_SHORT": "prod",
1007
+ "ENV_TYPE": "prod",
1008
+ "GCLOUD_DEPLOY_credentialsKey": "$CL_prod_api_GCLOUD_DEPLOY_credentialsKey",
1009
+ "HOST": "pan-test-app-prod-api-undefined",
1010
+ "HOST_CANONICAL": "pan-test-app-prod-api-undefined",
1011
+ "KUBERNETES_CPU_LIMIT": "2",
1012
+ "KUBERNETES_CPU_REQUEST": "0.5",
1013
+ "KUBERNETES_MEMORY_LIMIT": "4Gi",
1014
+ "KUBERNETES_MEMORY_REQUEST": "2Gi",
1015
+ "ROOT_URL": "https://pan-test-app-prod-api-undefined",
1016
+ "_ALL_ENV_VAR_KEYS": "["ENV_SHORT","APP_DIR","ENV_TYPE","HOST","ROOT_URL","HOST_CANONICAL","GCLOUD_DEPLOY_credentialsKey"]",
1017
+ },
1018
+ },
1019
+ "api 🔨 app | stage ": {
1020
+ "artifacts": {
1021
+ "paths": [
1022
+ "api/__build_info.json",
1023
+ "api/dist",
1024
+ "api/.next",
1025
+ ],
1026
+ "reports": {
1027
+ "junit": undefined,
1028
+ },
1029
+ },
1030
+ "cache": [
1031
+ {
1032
+ "key": "api-yarn",
1033
+ "paths": [
1034
+ "api/.yarn",
1035
+ ],
1036
+ "policy": "pull-push",
1037
+ },
1038
+ {
1039
+ "key": "api-node-modules",
1040
+ "paths": [
1041
+ "api/node_modules",
1042
+ ],
1043
+ "policy": "pull-push",
1044
+ },
1045
+ {
1046
+ "key": "api-next-cache",
1047
+ "paths": [
1048
+ "api/.next/cache/",
1049
+ ],
1050
+ "policy": "pull-push",
1051
+ },
1052
+ ],
1053
+ "environment": undefined,
1054
+ "image": "path/to/docker/jobs-default:the-version",
1055
+ "interruptible": true,
1056
+ "needs": [],
1057
+ "retry": {
1058
+ "max": 2,
1059
+ "when": [
1060
+ "runner_system_failure",
1061
+ "stuck_or_timeout_failure",
1062
+ ],
1063
+ },
1064
+ "script": [
1065
+ "echo '{"id":"some-id","time":"01-01-2023 12:13:14"}' > api/__build_info.json",
1066
+ "if [ -f ./.nvmrc ]; then source /root/.nvm/nvm.sh && nvm install <<< .nvmrc; fi",
1067
+ "cd api",
1068
+ "if [ -f ./.nvmrc ]; then source /root/.nvm/nvm.sh && nvm install <<< .nvmrc; fi",
1069
+ "yarn install --immutable",
1070
+ "yarn build",
1071
+ ],
1072
+ "stage": "build",
1073
+ "variables": {
1074
+ "APP_DIR": "api",
1075
+ "ENV_SHORT": "stage",
1076
+ "ENV_TYPE": "stage",
1077
+ "GCLOUD_DEPLOY_credentialsKey": "$CL_stage_api_GCLOUD_DEPLOY_credentialsKey",
1078
+ "HOST": "pan-test-app-stage-api-undefined",
1079
+ "HOST_CANONICAL": "pan-test-app-stage-api-undefined",
1080
+ "KUBERNETES_CPU_LIMIT": "2",
1081
+ "KUBERNETES_CPU_REQUEST": "0.5",
1082
+ "KUBERNETES_MEMORY_LIMIT": "4Gi",
1083
+ "KUBERNETES_MEMORY_REQUEST": "2Gi",
1084
+ "ROOT_URL": "https://pan-test-app-stage-api-undefined",
1085
+ "_ALL_ENV_VAR_KEYS": "["ENV_SHORT","APP_DIR","ENV_TYPE","HOST","ROOT_URL","HOST_CANONICAL","GCLOUD_DEPLOY_credentialsKey"]",
1086
+ },
1087
+ },
1088
+ "api 🔨 docker | prod ": {
1089
+ "cache": [
1090
+ {
1091
+ "key": "api-yarn",
1092
+ "paths": [
1093
+ "api/.yarn",
1094
+ ],
1095
+ "policy": "pull",
1096
+ },
1097
+ ],
1098
+ "environment": undefined,
1099
+ "image": "path/to/docker/docker-build:the-version",
1100
+ "interruptible": true,
1101
+ "needs": [
1102
+ "api 🔨 app | prod ",
1103
+ ],
1104
+ "retry": {
1105
+ "max": 2,
1106
+ "when": [
1107
+ "runner_system_failure",
1108
+ "stuck_or_timeout_failure",
1109
+ ],
1110
+ },
1111
+ "script": [
1112
+ "ensureNodeDockerfile",
1113
+ "docker login --username gitlab-ci-token --password $CI_JOB_TOKEN $CI_REGISTRY",
1114
+ "docker version",
1115
+ "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",
1116
+ "docker push $DOCKER_IMAGE:$DOCKER_IMAGE_TAG",
1117
+ "docker tag $DOCKER_IMAGE:$DOCKER_IMAGE_TAG $DOCKER_CACHE_IMAGE",
1118
+ "docker push $DOCKER_CACHE_IMAGE",
1119
+ ],
1120
+ "services": [
1121
+ {
1122
+ "command": [
1123
+ "--tls=false",
1124
+ ],
1125
+ "name": "docker:20-dind",
1126
+ },
1127
+ ],
1128
+ "stage": "build",
1129
+ "variables": {
1130
+ "APP_DIR": "api",
1131
+ "DOCKERFILE_ADDITIONS": undefined,
1132
+ "DOCKERFILE_ADDITIONS_END": undefined,
1133
+ "DOCKER_BUILDKIT": "1",
1134
+ "DOCKER_CACHE_IMAGE": "$DOCKER_REGISTRY_IMAGE_PATH/caches/api",
1135
+ "DOCKER_COPY_WORKSPACE_FILES": "COPY --chown=node:node api/package.json /app/api/package.json
1136
+ COPY --chown=node:node api/yarn.lock /app/api/yarn.lock",
1137
+ "DOCKER_DIR": ".",
1138
+ "DOCKER_DRIVER": "overlay2",
1139
+ "DOCKER_HOST": "tcp://0.0.0.0:2375",
1140
+ "DOCKER_IMAGE": "$DOCKER_REGISTRY_IMAGE_PATH/$DOCKER_IMAGE_NAME",
1141
+ "DOCKER_IMAGE_NAME": "prod/api",
1142
+ "DOCKER_IMAGE_TAG": "$CI_COMMIT_SHA",
1143
+ "DOCKER_REGISTRY": "$CI_REGISTRY",
1144
+ "DOCKER_REGISTRY_IMAGE_PATH": "$CI_REGISTRY_IMAGE",
1145
+ "DOCKER_TLS_CERTDIR": "",
1146
+ "KUBERNETES_CPU_LIMIT": "1",
1147
+ "KUBERNETES_CPU_REQUEST": "0.5",
1148
+ "KUBERNETES_MEMORY_LIMIT": "2Gi",
1149
+ "KUBERNETES_MEMORY_REQUEST": "1Gi",
1150
+ "YARN_INSTALL": "yarn plugin import workspace-tools && yarn workspaces focus --production && yarn rebuild",
1151
+ "YARN_INSTALL_WITHOUT_SCRIPTS": "YARN_ENABLE_SCRIPTS=false yarn plugin import workspace-tools && yarn workspaces focus --production && yarn rebuild",
1152
+ },
1153
+ },
1154
+ "api 🔨 docker | stage ": {
1155
+ "cache": [
1156
+ {
1157
+ "key": "api-yarn",
1158
+ "paths": [
1159
+ "api/.yarn",
1160
+ ],
1161
+ "policy": "pull",
1162
+ },
1163
+ ],
1164
+ "environment": undefined,
1165
+ "image": "path/to/docker/docker-build:the-version",
1166
+ "interruptible": true,
1167
+ "needs": [
1168
+ "api 🔨 app | stage ",
1169
+ ],
1170
+ "retry": {
1171
+ "max": 2,
1172
+ "when": [
1173
+ "runner_system_failure",
1174
+ "stuck_or_timeout_failure",
1175
+ ],
1176
+ },
1177
+ "script": [
1178
+ "ensureNodeDockerfile",
1179
+ "docker login --username gitlab-ci-token --password $CI_JOB_TOKEN $CI_REGISTRY",
1180
+ "docker version",
1181
+ "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",
1182
+ "docker push $DOCKER_IMAGE:$DOCKER_IMAGE_TAG",
1183
+ "docker tag $DOCKER_IMAGE:$DOCKER_IMAGE_TAG $DOCKER_CACHE_IMAGE",
1184
+ "docker push $DOCKER_CACHE_IMAGE",
1185
+ ],
1186
+ "services": [
1187
+ {
1188
+ "command": [
1189
+ "--tls=false",
1190
+ ],
1191
+ "name": "docker:20-dind",
1192
+ },
1193
+ ],
1194
+ "stage": "build",
1195
+ "variables": {
1196
+ "APP_DIR": "api",
1197
+ "DOCKERFILE_ADDITIONS": undefined,
1198
+ "DOCKERFILE_ADDITIONS_END": undefined,
1199
+ "DOCKER_BUILDKIT": "1",
1200
+ "DOCKER_CACHE_IMAGE": "$DOCKER_REGISTRY_IMAGE_PATH/caches/api",
1201
+ "DOCKER_COPY_WORKSPACE_FILES": "COPY --chown=node:node api/package.json /app/api/package.json
1202
+ COPY --chown=node:node api/yarn.lock /app/api/yarn.lock",
1203
+ "DOCKER_DIR": ".",
1204
+ "DOCKER_DRIVER": "overlay2",
1205
+ "DOCKER_HOST": "tcp://0.0.0.0:2375",
1206
+ "DOCKER_IMAGE": "$DOCKER_REGISTRY_IMAGE_PATH/$DOCKER_IMAGE_NAME",
1207
+ "DOCKER_IMAGE_NAME": "stage/api",
1208
+ "DOCKER_IMAGE_TAG": "$CI_COMMIT_SHA",
1209
+ "DOCKER_REGISTRY": "$CI_REGISTRY",
1210
+ "DOCKER_REGISTRY_IMAGE_PATH": "$CI_REGISTRY_IMAGE",
1211
+ "DOCKER_TLS_CERTDIR": "",
1212
+ "KUBERNETES_CPU_LIMIT": "1",
1213
+ "KUBERNETES_CPU_REQUEST": "0.5",
1214
+ "KUBERNETES_MEMORY_LIMIT": "2Gi",
1215
+ "KUBERNETES_MEMORY_REQUEST": "1Gi",
1216
+ "YARN_INSTALL": "yarn plugin import workspace-tools && yarn workspaces focus --production && yarn rebuild",
1217
+ "YARN_INSTALL_WITHOUT_SCRIPTS": "YARN_ENABLE_SCRIPTS=false yarn plugin import workspace-tools && yarn workspaces focus --production && yarn rebuild",
1218
+ },
1219
+ },
1220
+ "api 🚀 Deploy | prod ": {
1221
+ "allow_failure": true,
1222
+ "artifacts": {
1223
+ "paths": [
1224
+ "____envvars.yaml",
1225
+ ],
1226
+ },
1227
+ "environment": {
1228
+ "auto_stop_in": undefined,
1229
+ "name": "prod/api",
1230
+ "on_stop": "api 🛑 Stop ⚠️ | prod ",
1231
+ "url": "https://pan-test-app-prod-api-undefined",
1232
+ },
1233
+ "image": "path/to/docker/gcloud:the-version",
1234
+ "interruptible": true,
1235
+ "needs": [
1236
+ {
1237
+ "artifacts": false,
1238
+ "job": "api 🔨 app | prod ",
1239
+ },
1240
+ {
1241
+ "artifacts": false,
1242
+ "job": "api 🔨 docker | prod ",
1243
+ },
1244
+ ],
1245
+ "retry": {
1246
+ "max": 2,
1247
+ "when": [
1248
+ "runner_system_failure",
1249
+ "stuck_or_timeout_failure",
1250
+ ],
1251
+ },
1252
+ "rules": [
1253
+ {
1254
+ "when": "manual",
1255
+ },
1256
+ ],
1257
+ "script": [
1258
+ "echo $CL_prod_api_GCLOUD_DEPLOY_credentialsKey > ./____keyfile.json
1259
+ ",
1260
+ "gcloud auth activate-service-account --key-file="./____keyfile.json"",
1261
+ "export GCLOUD_PROJECT_NUMBER=$(gcloud projects describe asdf --format="value(projectNumber)")",
1262
+ "echo "GCLOUD_PROJECT_NUMBER: $GCLOUD_PROJECT_NUMBER"",
1263
+ "docker login --username gitlab-ci-token --password $CI_JOB_TOKEN $CI_REGISTRY",
1264
+ "gcloud auth configure-docker asia-east1-docker.pkg.dev",
1265
+ "docker pull $DOCKER_IMAGE:$DOCKER_IMAGE_TAG",
1266
+ "docker tag $DOCKER_IMAGE:$DOCKER_IMAGE_TAG asia-east1-docker.pkg.dev/asdf/catladder-deploy/pan-test-app/$DOCKER_IMAGE_NAME:$DOCKER_IMAGE_TAG",
1267
+ "docker push asia-east1-docker.pkg.dev/asdf/catladder-deploy/pan-test-app/$DOCKER_IMAGE_NAME:$DOCKER_IMAGE_TAG",
1268
+ "echo "$ENV_VARS" > ____envvars.yaml",
1269
+ "gcloud run deploy pan-test-app-prod-api --command="yarn,start" --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=node --env-vars-file=____envvars.yaml --no-allow-unauthenticated",
1270
+ "docker image rm asia-east1-docker.pkg.dev/asdf/catladder-deploy/pan-test-app/$DOCKER_IMAGE_NAME:$DOCKER_IMAGE_TAG",
1271
+ ],
1272
+ "services": [
1273
+ {
1274
+ "command": [
1275
+ "--tls=false",
1276
+ ],
1277
+ "name": "docker:20-dind",
1278
+ },
1279
+ ],
1280
+ "stage": "deploy prod",
1281
+ "variables": {
1282
+ "APP_DIR": "api",
1283
+ "CLOUDSDK_CORE_DISABLE_PROMPTS": "1",
1284
+ "DOCKERFILE_ADDITIONS": undefined,
1285
+ "DOCKERFILE_ADDITIONS_END": undefined,
1286
+ "DOCKER_BUILDKIT": "1",
1287
+ "DOCKER_CACHE_IMAGE": "$DOCKER_REGISTRY_IMAGE_PATH/caches/api",
1288
+ "DOCKER_DIR": ".",
1289
+ "DOCKER_DRIVER": "overlay2",
1290
+ "DOCKER_HOST": "tcp://0.0.0.0:2375",
1291
+ "DOCKER_IMAGE": "$DOCKER_REGISTRY_IMAGE_PATH/$DOCKER_IMAGE_NAME",
1292
+ "DOCKER_IMAGE_NAME": "prod/api",
1293
+ "DOCKER_IMAGE_TAG": "$CI_COMMIT_SHA",
1294
+ "DOCKER_REGISTRY": "$CI_REGISTRY",
1295
+ "DOCKER_REGISTRY_IMAGE_PATH": "$CI_REGISTRY_IMAGE",
1296
+ "DOCKER_TLS_CERTDIR": "",
1297
+ "ENV_SHORT": "prod",
1298
+ "ENV_TYPE": "prod",
1299
+ "ENV_VARS": "ENV_SHORT: 'prod'
1300
+ APP_DIR: 'api'
1301
+ ENV_TYPE: 'prod'
1302
+ HOST: 'pan-test-app-prod-api-undefined'
1303
+ ROOT_URL: 'https://pan-test-app-prod-api-undefined'
1304
+ HOST_CANONICAL: 'pan-test-app-prod-api-undefined'
1305
+ _ALL_ENV_VAR_KEYS: '["ENV_SHORT","APP_DIR","ENV_TYPE","HOST","ROOT_URL","HOST_CANONICAL","GCLOUD_DEPLOY_credentialsKey"]'
1306
+ ",
1307
+ "GCLOUD_DEPLOY_credentialsKey": "$CL_prod_api_GCLOUD_DEPLOY_credentialsKey",
1308
+ "HOST": "pan-test-app-prod-api-undefined",
1309
+ "HOST_CANONICAL": "pan-test-app-prod-api-undefined",
1310
+ "KUBERNETES_CPU_LIMIT": "1",
1311
+ "KUBERNETES_CPU_REQUEST": "0.5",
1312
+ "KUBERNETES_MEMORY_LIMIT": "2Gi",
1313
+ "KUBERNETES_MEMORY_REQUEST": "1Gi",
1314
+ "ROOT_URL": "https://pan-test-app-prod-api-undefined",
1315
+ "_ALL_ENV_VAR_KEYS": "["ENV_SHORT","APP_DIR","ENV_TYPE","HOST","ROOT_URL","HOST_CANONICAL","GCLOUD_DEPLOY_credentialsKey"]",
1316
+ },
1317
+ },
1318
+ "api 🚀 Deploy | stage ": {
1319
+ "allow_failure": false,
1320
+ "artifacts": {
1321
+ "paths": [
1322
+ "____envvars.yaml",
1323
+ ],
1324
+ },
1325
+ "environment": {
1326
+ "auto_stop_in": undefined,
1327
+ "name": "stage/api",
1328
+ "on_stop": "api 🛑 Stop ⚠️ | stage ",
1329
+ "url": "https://pan-test-app-stage-api-undefined",
1330
+ },
1331
+ "image": "path/to/docker/gcloud:the-version",
1332
+ "interruptible": true,
1333
+ "needs": [
1334
+ {
1335
+ "artifacts": false,
1336
+ "job": "api 🔨 app | stage ",
1337
+ },
1338
+ {
1339
+ "artifacts": false,
1340
+ "job": "api 🔨 docker | stage ",
1341
+ },
1342
+ ],
1343
+ "retry": {
1344
+ "max": 2,
1345
+ "when": [
1346
+ "runner_system_failure",
1347
+ "stuck_or_timeout_failure",
1348
+ ],
1349
+ },
1350
+ "rules": [
1351
+ {
1352
+ "when": "on_success",
1353
+ },
1354
+ ],
1355
+ "script": [
1356
+ "echo $CL_stage_api_GCLOUD_DEPLOY_credentialsKey > ./____keyfile.json
1357
+ ",
1358
+ "gcloud auth activate-service-account --key-file="./____keyfile.json"",
1359
+ "export GCLOUD_PROJECT_NUMBER=$(gcloud projects describe asdf --format="value(projectNumber)")",
1360
+ "echo "GCLOUD_PROJECT_NUMBER: $GCLOUD_PROJECT_NUMBER"",
1361
+ "docker login --username gitlab-ci-token --password $CI_JOB_TOKEN $CI_REGISTRY",
1362
+ "gcloud auth configure-docker asia-east1-docker.pkg.dev",
1363
+ "docker pull $DOCKER_IMAGE:$DOCKER_IMAGE_TAG",
1364
+ "docker tag $DOCKER_IMAGE:$DOCKER_IMAGE_TAG asia-east1-docker.pkg.dev/asdf/catladder-deploy/pan-test-app/$DOCKER_IMAGE_NAME:$DOCKER_IMAGE_TAG",
1365
+ "docker push asia-east1-docker.pkg.dev/asdf/catladder-deploy/pan-test-app/$DOCKER_IMAGE_NAME:$DOCKER_IMAGE_TAG",
1366
+ "echo "$ENV_VARS" > ____envvars.yaml",
1367
+ "gcloud run deploy pan-test-app-stage-api --command="yarn,start" --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=node --env-vars-file=____envvars.yaml --no-allow-unauthenticated",
1368
+ "docker image rm asia-east1-docker.pkg.dev/asdf/catladder-deploy/pan-test-app/$DOCKER_IMAGE_NAME:$DOCKER_IMAGE_TAG",
1369
+ ],
1370
+ "services": [
1371
+ {
1372
+ "command": [
1373
+ "--tls=false",
1374
+ ],
1375
+ "name": "docker:20-dind",
1376
+ },
1377
+ ],
1378
+ "stage": "deploy stage",
1379
+ "variables": {
1380
+ "APP_DIR": "api",
1381
+ "CLOUDSDK_CORE_DISABLE_PROMPTS": "1",
1382
+ "DOCKERFILE_ADDITIONS": undefined,
1383
+ "DOCKERFILE_ADDITIONS_END": undefined,
1384
+ "DOCKER_BUILDKIT": "1",
1385
+ "DOCKER_CACHE_IMAGE": "$DOCKER_REGISTRY_IMAGE_PATH/caches/api",
1386
+ "DOCKER_DIR": ".",
1387
+ "DOCKER_DRIVER": "overlay2",
1388
+ "DOCKER_HOST": "tcp://0.0.0.0:2375",
1389
+ "DOCKER_IMAGE": "$DOCKER_REGISTRY_IMAGE_PATH/$DOCKER_IMAGE_NAME",
1390
+ "DOCKER_IMAGE_NAME": "stage/api",
1391
+ "DOCKER_IMAGE_TAG": "$CI_COMMIT_SHA",
1392
+ "DOCKER_REGISTRY": "$CI_REGISTRY",
1393
+ "DOCKER_REGISTRY_IMAGE_PATH": "$CI_REGISTRY_IMAGE",
1394
+ "DOCKER_TLS_CERTDIR": "",
1395
+ "ENV_SHORT": "stage",
1396
+ "ENV_TYPE": "stage",
1397
+ "ENV_VARS": "ENV_SHORT: 'stage'
1398
+ APP_DIR: 'api'
1399
+ ENV_TYPE: 'stage'
1400
+ HOST: 'pan-test-app-stage-api-undefined'
1401
+ ROOT_URL: 'https://pan-test-app-stage-api-undefined'
1402
+ HOST_CANONICAL: 'pan-test-app-stage-api-undefined'
1403
+ _ALL_ENV_VAR_KEYS: '["ENV_SHORT","APP_DIR","ENV_TYPE","HOST","ROOT_URL","HOST_CANONICAL","GCLOUD_DEPLOY_credentialsKey"]'
1404
+ ",
1405
+ "GCLOUD_DEPLOY_credentialsKey": "$CL_stage_api_GCLOUD_DEPLOY_credentialsKey",
1406
+ "HOST": "pan-test-app-stage-api-undefined",
1407
+ "HOST_CANONICAL": "pan-test-app-stage-api-undefined",
1408
+ "KUBERNETES_CPU_LIMIT": "1",
1409
+ "KUBERNETES_CPU_REQUEST": "0.5",
1410
+ "KUBERNETES_MEMORY_LIMIT": "2Gi",
1411
+ "KUBERNETES_MEMORY_REQUEST": "1Gi",
1412
+ "ROOT_URL": "https://pan-test-app-stage-api-undefined",
1413
+ "_ALL_ENV_VAR_KEYS": "["ENV_SHORT","APP_DIR","ENV_TYPE","HOST","ROOT_URL","HOST_CANONICAL","GCLOUD_DEPLOY_credentialsKey"]",
1414
+ },
1415
+ },
1416
+ "api 🛑 Stop ⚠️ | prod ": {
1417
+ "environment": {
1418
+ "action": "stop",
1419
+ "name": "prod/api",
1420
+ "url": "https://pan-test-app-prod-api-undefined",
1421
+ },
1422
+ "image": "path/to/docker/gcloud:the-version",
1423
+ "interruptible": true,
1424
+ "needs": [],
1425
+ "retry": {
1426
+ "max": 2,
1427
+ "when": [
1428
+ "runner_system_failure",
1429
+ "stuck_or_timeout_failure",
1430
+ ],
1431
+ },
1432
+ "rules": [
1433
+ {
1434
+ "allow_failure": true,
1435
+ "if": "$CI_COMMIT_BRANCH =~ /^[0-9]+\\.([0-9]+|x)\\.x$/",
1436
+ "when": "on_success",
1437
+ },
1438
+ {
1439
+ "allow_failure": true,
1440
+ "when": "manual",
1441
+ },
1442
+ ],
1443
+ "script": [
1444
+ "echo $CL_prod_api_GCLOUD_DEPLOY_credentialsKey > ./____keyfile.json
1445
+ ",
1446
+ "gcloud auth activate-service-account --key-file="./____keyfile.json"",
1447
+ "gcloud run services delete pan-test-app-prod-api --project=asdf --region=asia-east1",
1448
+ ],
1449
+ "stage": "stop prod",
1450
+ "variables": {
1451
+ "CLOUDSDK_CORE_DISABLE_PROMPTS": "1",
1452
+ "GIT_STRATEGY": "none",
1453
+ "KUBERNETES_CPU_LIMIT": "1",
1454
+ "KUBERNETES_CPU_REQUEST": "0.5",
1455
+ "KUBERNETES_MEMORY_LIMIT": "500Mi",
1456
+ "KUBERNETES_MEMORY_REQUEST": "200Mi",
1457
+ },
1458
+ },
1459
+ "api 🛑 Stop ⚠️ | stage ": {
1460
+ "environment": {
1461
+ "action": "stop",
1462
+ "name": "stage/api",
1463
+ "url": "https://pan-test-app-stage-api-undefined",
1464
+ },
1465
+ "image": "path/to/docker/gcloud:the-version",
1466
+ "interruptible": true,
1467
+ "needs": [],
1468
+ "retry": {
1469
+ "max": 2,
1470
+ "when": [
1471
+ "runner_system_failure",
1472
+ "stuck_or_timeout_failure",
1473
+ ],
1474
+ },
1475
+ "rules": [
1476
+ {
1477
+ "allow_failure": true,
1478
+ "if": "$CI_COMMIT_BRANCH =~ /^[0-9]+\\.([0-9]+|x)\\.x$/",
1479
+ "when": "on_success",
1480
+ },
1481
+ {
1482
+ "allow_failure": true,
1483
+ "when": "manual",
1484
+ },
1485
+ ],
1486
+ "script": [
1487
+ "echo $CL_stage_api_GCLOUD_DEPLOY_credentialsKey > ./____keyfile.json
1488
+ ",
1489
+ "gcloud auth activate-service-account --key-file="./____keyfile.json"",
1490
+ "gcloud run services delete pan-test-app-stage-api --project=asdf --region=asia-east1",
1491
+ ],
1492
+ "stage": "stop stage",
1493
+ "variables": {
1494
+ "CLOUDSDK_CORE_DISABLE_PROMPTS": "1",
1495
+ "GIT_STRATEGY": "none",
1496
+ "KUBERNETES_CPU_LIMIT": "1",
1497
+ "KUBERNETES_CPU_REQUEST": "0.5",
1498
+ "KUBERNETES_MEMORY_LIMIT": "500Mi",
1499
+ "KUBERNETES_MEMORY_REQUEST": "200Mi",
1500
+ },
1501
+ },
1502
+ },
1503
+ "stages": [
1504
+ "setup",
1505
+ "setup dev",
1506
+ "setup review",
1507
+ "setup stage",
1508
+ "setup prod",
1509
+ "setup local",
1510
+ "test",
1511
+ "test dev",
1512
+ "test review",
1513
+ "test stage",
1514
+ "test prod",
1515
+ "test local",
1516
+ "build",
1517
+ "build dev",
1518
+ "build review",
1519
+ "build stage",
1520
+ "build prod",
1521
+ "build local",
1522
+ "deploy",
1523
+ "deploy dev",
1524
+ "deploy review",
1525
+ "deploy stage",
1526
+ "deploy prod",
1527
+ "deploy local",
1528
+ "verify",
1529
+ "verify dev",
1530
+ "verify review",
1531
+ "verify stage",
1532
+ "verify prod",
1533
+ "verify local",
1534
+ "rollback",
1535
+ "rollback dev",
1536
+ "rollback review",
1537
+ "rollback stage",
1538
+ "rollback prod",
1539
+ "rollback local",
1540
+ "stop",
1541
+ "stop dev",
1542
+ "stop review",
1543
+ "stop stage",
1544
+ "stop prod",
1545
+ "stop local",
1546
+ ],
1547
+ "variables": {
1548
+ "FF_USE_FASTZIP": "true",
1549
+ },
1550
+ "workflow": {
1551
+ "rules": [
1552
+ {
1553
+ "if": "$CI_COMMIT_TAG",
1554
+ },
1555
+ {
1556
+ "if": "$CI_COMMIT_MESSAGE =~ /^chore\\(release\\).*/",
1557
+ "when": "never",
1558
+ },
1559
+ {
1560
+ "if": "$CI_COMMIT_BRANCH =~ /^[0-9]+.([0-9]+|x).x$/",
1561
+ },
1562
+ {
1563
+ "if": "$CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH",
1564
+ },
1565
+ {
1566
+ "if": "$CI_MERGE_REQUEST_ID",
1567
+ },
1568
+ ],
1569
+ },
1570
+ },
1571
+ }
1572
+ `;