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