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