@catladder/pipeline 1.163.0 โ 1.163.2
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.
- package/README.md +15 -1
- package/dist/bundles/catladder-gitlab/index.js +2 -2
- package/dist/constants.js +1 -1
- package/dist/pipeline/generatePipelineFiles.d.ts +38 -0
- package/dist/pipeline/generatePipelineFiles.js +44 -23
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/examples/__snapshots__/cloud-run-memory-limit.test.ts.snap +1335 -1952
- package/examples/__snapshots__/cloud-run-meteor-with-worker.test.ts.snap +1319 -1928
- package/examples/__snapshots__/cloud-run-no-cpu-throttling.test.ts.snap +1335 -1952
- package/examples/__snapshots__/cloud-run-no-service.test.ts.snap +1387 -2004
- package/examples/__snapshots__/cloud-run-non-public.test.ts.snap +1335 -1952
- package/examples/__snapshots__/cloud-run-post-stop-job.test.ts.snap +1346 -1963
- package/examples/__snapshots__/cloud-run-service-gen2.test.ts.snap +1335 -1952
- package/examples/__snapshots__/cloud-run-service-increase-timout.test.ts.snap +1335 -1952
- package/examples/__snapshots__/cloud-run-service-with-volumes.test.ts.snap +1379 -1996
- package/examples/__snapshots__/cloud-run-storybook.test.ts.snap +1219 -1668
- package/examples/__snapshots__/cloud-run-with-ngnix.test.ts.snap +1335 -1952
- package/examples/__snapshots__/cloud-run-with-sql-reuse-db.test.ts.snap +2815 -3924
- package/examples/__snapshots__/cloud-run-with-sql.test.ts.snap +2562 -3447
- package/examples/__snapshots__/cloud-run-with-worker.test.ts.snap +1343 -1960
- package/examples/__snapshots__/custom-build-job-with-tests.test.ts.snap +1190 -1780
- package/examples/__snapshots__/custom-build-job.test.ts.snap +1079 -1480
- package/examples/__snapshots__/custom-deploy.test.ts.snap +1101 -1718
- package/examples/__snapshots__/custom-envs.test.ts.snap +707 -1172
- package/examples/__snapshots__/custom-sbom-java.test.ts.snap +1087 -1488
- package/examples/__snapshots__/git-submodule.test.ts.snap +1336 -1955
- package/examples/__snapshots__/kubernetes-application-customization.test.ts.snap +1772 -2443
- package/examples/__snapshots__/kubernetes-with-cloud-sql-legacy.test.ts.snap +1784 -2455
- package/examples/__snapshots__/kubernetes-with-cloud-sql.test.ts.snap +1792 -2463
- package/examples/__snapshots__/kubernetes-with-jobs.test.ts.snap +3342 -4547
- package/examples/__snapshots__/kubernetes-with-mongodb.test.ts.snap +1896 -2567
- package/examples/__snapshots__/local-dot-env.test.ts.snap +1335 -1952
- package/examples/__snapshots__/meteor-kubernetes.test.ts.snap +1833 -2496
- package/examples/__snapshots__/multiline-var.test.ts.snap +3295 -4406
- package/examples/__snapshots__/native-app.test.ts.snap +2143 -3160
- package/examples/__snapshots__/node-build-with-custom-image.test.ts.snap +1335 -1952
- package/examples/__snapshots__/node-build-with-docker-additions.test.ts.snap +1343 -1960
- package/examples/__snapshots__/rails-k8s-with-worker-dockerfile.test.ts.snap +1479 -2003
- package/examples/__snapshots__/rails-k8s-with-worker.test.ts.snap +1464 -1988
- package/examples/__snapshots__/wait-for-other-deploy.test.ts.snap +1273 -2102
- package/examples/__utils__/helpers.ts +14 -1
- package/examples/cloud-run-memory-limit.test.ts +4 -3
- package/examples/cloud-run-meteor-with-worker.test.ts +4 -3
- package/examples/cloud-run-no-cpu-throttling.test.ts +4 -3
- package/examples/cloud-run-no-service.test.ts +4 -3
- package/examples/cloud-run-non-public.test.ts +4 -3
- package/examples/cloud-run-post-stop-job.test.ts +4 -3
- package/examples/cloud-run-service-gen2.test.ts +4 -3
- package/examples/cloud-run-service-increase-timout.test.ts +4 -3
- package/examples/cloud-run-service-with-volumes.test.ts +4 -3
- package/examples/cloud-run-storybook.test.ts +4 -3
- package/examples/cloud-run-with-ngnix.test.ts +4 -3
- package/examples/cloud-run-with-sql-reuse-db.test.ts +4 -3
- package/examples/cloud-run-with-sql.test.ts +4 -3
- package/examples/cloud-run-with-worker.test.ts +4 -3
- package/examples/custom-build-job-with-tests.test.ts +4 -3
- package/examples/custom-build-job.test.ts +4 -3
- package/examples/custom-deploy.test.ts +4 -3
- package/examples/custom-envs.test.ts +4 -3
- package/examples/custom-sbom-java.test.ts +4 -3
- package/examples/git-submodule.test.ts +4 -3
- package/examples/kubernetes-application-customization.test.ts +4 -3
- package/examples/kubernetes-with-cloud-sql-legacy.test.ts +4 -3
- package/examples/kubernetes-with-cloud-sql.test.ts +4 -3
- package/examples/kubernetes-with-jobs.test.ts +4 -3
- package/examples/kubernetes-with-mongodb.test.ts +4 -3
- package/examples/local-dot-env.test.ts +4 -3
- package/examples/meteor-kubernetes.test.ts +4 -3
- package/examples/multiline-var.test.ts +4 -3
- package/examples/native-app.test.ts +4 -3
- package/examples/node-build-with-custom-image.test.ts +4 -3
- package/examples/node-build-with-docker-additions.test.ts +4 -3
- package/examples/rails-k8s-with-worker-dockerfile.test.ts +2 -2
- package/examples/rails-k8s-with-worker.test.ts +4 -3
- package/examples/wait-for-other-deploy.test.ts +4 -3
- package/package.json +4 -3
- package/scripts/generate-examples-test.ts +7 -7
- package/src/pipeline/generatePipelineFiles.ts +61 -36
|
@@ -1,2105 +1,1276 @@
|
|
|
1
1
|
// Jest Snapshot v1, https://goo.gl/fbAQLP
|
|
2
2
|
|
|
3
|
-
exports[`matches snapshot for wait-for-other-deploy 1`] = `
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
|
|
420
|
-
|
|
421
|
-
|
|
422
|
-
|
|
423
|
-
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
|
|
427
|
-
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
|
|
431
|
-
|
|
432
|
-
|
|
433
|
-
|
|
434
|
-
|
|
435
|
-
|
|
436
|
-
|
|
437
|
-
|
|
438
|
-
|
|
439
|
-
|
|
440
|
-
|
|
441
|
-
|
|
442
|
-
|
|
443
|
-
|
|
444
|
-
|
|
445
|
-
|
|
446
|
-
|
|
447
|
-
|
|
448
|
-
|
|
449
|
-
|
|
450
|
-
|
|
451
|
-
|
|
452
|
-
|
|
453
|
-
|
|
454
|
-
|
|
455
|
-
|
|
456
|
-
|
|
457
|
-
|
|
458
|
-
|
|
459
|
-
|
|
460
|
-
|
|
461
|
-
|
|
462
|
-
|
|
463
|
-
|
|
464
|
-
|
|
465
|
-
|
|
466
|
-
|
|
467
|
-
|
|
468
|
-
|
|
469
|
-
|
|
470
|
-
|
|
471
|
-
|
|
472
|
-
|
|
473
|
-
|
|
474
|
-
|
|
475
|
-
|
|
476
|
-
|
|
477
|
-
|
|
478
|
-
|
|
479
|
-
|
|
480
|
-
|
|
481
|
-
|
|
482
|
-
|
|
483
|
-
|
|
484
|
-
|
|
485
|
-
|
|
486
|
-
|
|
487
|
-
|
|
488
|
-
|
|
489
|
-
|
|
490
|
-
|
|
491
|
-
|
|
492
|
-
|
|
493
|
-
|
|
494
|
-
|
|
495
|
-
|
|
496
|
-
|
|
497
|
-
|
|
498
|
-
|
|
499
|
-
|
|
500
|
-
|
|
501
|
-
|
|
502
|
-
|
|
503
|
-
|
|
504
|
-
|
|
505
|
-
|
|
506
|
-
|
|
507
|
-
|
|
508
|
-
|
|
509
|
-
|
|
510
|
-
|
|
511
|
-
|
|
512
|
-
|
|
513
|
-
|
|
514
|
-
|
|
515
|
-
|
|
516
|
-
|
|
517
|
-
|
|
518
|
-
|
|
519
|
-
|
|
520
|
-
|
|
521
|
-
|
|
522
|
-
|
|
523
|
-
|
|
524
|
-
|
|
525
|
-
|
|
526
|
-
|
|
527
|
-
|
|
528
|
-
|
|
529
|
-
|
|
530
|
-
|
|
531
|
-
|
|
532
|
-
|
|
533
|
-
|
|
534
|
-
|
|
535
|
-
|
|
536
|
-
|
|
537
|
-
|
|
538
|
-
|
|
539
|
-
|
|
540
|
-
|
|
541
|
-
|
|
542
|
-
|
|
543
|
-
|
|
544
|
-
|
|
545
|
-
|
|
546
|
-
|
|
547
|
-
|
|
548
|
-
|
|
549
|
-
|
|
550
|
-
|
|
551
|
-
|
|
552
|
-
|
|
553
|
-
|
|
554
|
-
|
|
555
|
-
|
|
556
|
-
|
|
557
|
-
|
|
558
|
-
|
|
559
|
-
|
|
560
|
-
|
|
561
|
-
|
|
562
|
-
|
|
563
|
-
|
|
564
|
-
|
|
565
|
-
|
|
566
|
-
|
|
567
|
-
|
|
568
|
-
|
|
569
|
-
|
|
570
|
-
|
|
571
|
-
|
|
572
|
-
|
|
573
|
-
|
|
574
|
-
|
|
575
|
-
|
|
576
|
-
|
|
577
|
-
|
|
578
|
-
|
|
579
|
-
|
|
580
|
-
|
|
581
|
-
|
|
582
|
-
|
|
583
|
-
|
|
584
|
-
|
|
585
|
-
|
|
586
|
-
|
|
587
|
-
|
|
588
|
-
|
|
589
|
-
|
|
590
|
-
|
|
591
|
-
|
|
592
|
-
|
|
593
|
-
|
|
594
|
-
|
|
595
|
-
|
|
596
|
-
|
|
597
|
-
|
|
598
|
-
|
|
599
|
-
|
|
600
|
-
|
|
601
|
-
|
|
602
|
-
|
|
603
|
-
|
|
604
|
-
|
|
605
|
-
|
|
606
|
-
|
|
607
|
-
|
|
608
|
-
|
|
609
|
-
|
|
610
|
-
|
|
611
|
-
|
|
612
|
-
|
|
613
|
-
|
|
614
|
-
|
|
615
|
-
|
|
616
|
-
|
|
617
|
-
|
|
618
|
-
|
|
619
|
-
|
|
620
|
-
|
|
621
|
-
"
|
|
622
|
-
|
|
623
|
-
|
|
624
|
-
|
|
625
|
-
|
|
626
|
-
|
|
627
|
-
|
|
628
|
-
|
|
629
|
-
|
|
630
|
-
|
|
631
|
-
|
|
632
|
-
|
|
633
|
-
|
|
634
|
-
|
|
635
|
-
|
|
636
|
-
|
|
637
|
-
|
|
638
|
-
|
|
639
|
-
|
|
640
|
-
|
|
641
|
-
|
|
642
|
-
|
|
643
|
-
|
|
644
|
-
|
|
645
|
-
|
|
646
|
-
|
|
647
|
-
|
|
648
|
-
|
|
649
|
-
|
|
650
|
-
|
|
651
|
-
|
|
652
|
-
|
|
653
|
-
|
|
654
|
-
|
|
655
|
-
|
|
656
|
-
|
|
657
|
-
|
|
658
|
-
|
|
659
|
-
|
|
660
|
-
|
|
661
|
-
|
|
662
|
-
|
|
663
|
-
|
|
664
|
-
|
|
665
|
-
|
|
666
|
-
|
|
667
|
-
|
|
668
|
-
|
|
669
|
-
|
|
670
|
-
|
|
671
|
-
|
|
672
|
-
|
|
673
|
-
|
|
674
|
-
|
|
675
|
-
|
|
676
|
-
|
|
677
|
-
|
|
678
|
-
|
|
679
|
-
|
|
680
|
-
|
|
681
|
-
|
|
682
|
-
|
|
683
|
-
|
|
684
|
-
|
|
685
|
-
|
|
686
|
-
|
|
687
|
-
|
|
688
|
-
|
|
689
|
-
|
|
690
|
-
|
|
691
|
-
|
|
692
|
-
|
|
693
|
-
|
|
694
|
-
|
|
695
|
-
|
|
696
|
-
|
|
697
|
-
|
|
698
|
-
|
|
699
|
-
|
|
700
|
-
|
|
701
|
-
|
|
702
|
-
|
|
703
|
-
|
|
704
|
-
|
|
705
|
-
|
|
706
|
-
|
|
707
|
-
|
|
708
|
-
|
|
709
|
-
|
|
710
|
-
|
|
711
|
-
|
|
712
|
-
|
|
713
|
-
|
|
714
|
-
|
|
715
|
-
|
|
716
|
-
|
|
717
|
-
|
|
718
|
-
|
|
719
|
-
|
|
720
|
-
|
|
721
|
-
|
|
722
|
-
|
|
723
|
-
|
|
724
|
-
|
|
725
|
-
|
|
726
|
-
|
|
727
|
-
|
|
728
|
-
|
|
729
|
-
|
|
730
|
-
|
|
731
|
-
|
|
732
|
-
|
|
733
|
-
|
|
734
|
-
|
|
735
|
-
|
|
736
|
-
|
|
737
|
-
|
|
738
|
-
|
|
739
|
-
|
|
740
|
-
|
|
741
|
-
|
|
742
|
-
|
|
743
|
-
|
|
744
|
-
|
|
745
|
-
|
|
746
|
-
|
|
747
|
-
|
|
748
|
-
|
|
749
|
-
|
|
750
|
-
|
|
751
|
-
|
|
752
|
-
|
|
753
|
-
|
|
754
|
-
|
|
755
|
-
|
|
756
|
-
|
|
757
|
-
|
|
758
|
-
|
|
759
|
-
|
|
760
|
-
|
|
761
|
-
|
|
762
|
-
|
|
763
|
-
|
|
764
|
-
|
|
765
|
-
|
|
766
|
-
|
|
767
|
-
|
|
768
|
-
|
|
769
|
-
|
|
770
|
-
|
|
771
|
-
|
|
772
|
-
|
|
773
|
-
|
|
774
|
-
|
|
775
|
-
|
|
776
|
-
|
|
777
|
-
|
|
778
|
-
|
|
779
|
-
|
|
780
|
-
|
|
781
|
-
|
|
782
|
-
|
|
783
|
-
|
|
784
|
-
|
|
785
|
-
|
|
786
|
-
|
|
787
|
-
|
|
788
|
-
|
|
789
|
-
|
|
790
|
-
|
|
791
|
-
|
|
792
|
-
|
|
793
|
-
|
|
794
|
-
|
|
795
|
-
|
|
796
|
-
|
|
797
|
-
|
|
798
|
-
|
|
799
|
-
|
|
800
|
-
|
|
801
|
-
|
|
802
|
-
|
|
803
|
-
|
|
804
|
-
|
|
805
|
-
|
|
806
|
-
|
|
807
|
-
|
|
808
|
-
|
|
809
|
-
|
|
810
|
-
|
|
811
|
-
|
|
812
|
-
|
|
813
|
-
|
|
814
|
-
|
|
815
|
-
|
|
816
|
-
|
|
817
|
-
|
|
818
|
-
|
|
819
|
-
|
|
820
|
-
|
|
821
|
-
|
|
822
|
-
|
|
823
|
-
|
|
824
|
-
|
|
825
|
-
|
|
826
|
-
|
|
827
|
-
|
|
828
|
-
|
|
829
|
-
|
|
830
|
-
|
|
831
|
-
|
|
832
|
-
|
|
833
|
-
|
|
834
|
-
|
|
835
|
-
|
|
836
|
-
|
|
837
|
-
|
|
838
|
-
|
|
839
|
-
|
|
840
|
-
|
|
841
|
-
|
|
842
|
-
|
|
843
|
-
|
|
844
|
-
|
|
845
|
-
|
|
846
|
-
|
|
847
|
-
|
|
848
|
-
|
|
849
|
-
|
|
850
|
-
|
|
851
|
-
|
|
852
|
-
|
|
853
|
-
|
|
854
|
-
|
|
855
|
-
|
|
856
|
-
|
|
857
|
-
|
|
858
|
-
|
|
859
|
-
|
|
860
|
-
|
|
861
|
-
|
|
862
|
-
|
|
863
|
-
|
|
864
|
-
|
|
865
|
-
|
|
866
|
-
|
|
867
|
-
|
|
868
|
-
|
|
869
|
-
|
|
870
|
-
|
|
871
|
-
|
|
872
|
-
|
|
873
|
-
|
|
874
|
-
|
|
875
|
-
|
|
876
|
-
|
|
877
|
-
|
|
878
|
-
|
|
879
|
-
|
|
880
|
-
|
|
881
|
-
|
|
882
|
-
|
|
883
|
-
|
|
884
|
-
|
|
885
|
-
|
|
886
|
-
|
|
887
|
-
|
|
888
|
-
|
|
889
|
-
|
|
890
|
-
|
|
891
|
-
|
|
892
|
-
|
|
893
|
-
|
|
894
|
-
|
|
895
|
-
|
|
896
|
-
|
|
897
|
-
|
|
898
|
-
|
|
899
|
-
|
|
900
|
-
|
|
901
|
-
|
|
902
|
-
|
|
903
|
-
|
|
904
|
-
|
|
905
|
-
|
|
906
|
-
|
|
907
|
-
|
|
908
|
-
|
|
909
|
-
|
|
910
|
-
|
|
911
|
-
|
|
912
|
-
|
|
913
|
-
|
|
914
|
-
|
|
915
|
-
|
|
916
|
-
|
|
917
|
-
|
|
918
|
-
|
|
919
|
-
|
|
920
|
-
|
|
921
|
-
|
|
922
|
-
|
|
923
|
-
|
|
924
|
-
|
|
925
|
-
|
|
926
|
-
|
|
927
|
-
|
|
928
|
-
|
|
929
|
-
|
|
930
|
-
|
|
931
|
-
|
|
932
|
-
|
|
933
|
-
|
|
934
|
-
|
|
935
|
-
|
|
936
|
-
|
|
937
|
-
|
|
938
|
-
|
|
939
|
-
|
|
940
|
-
|
|
941
|
-
|
|
942
|
-
|
|
943
|
-
|
|
944
|
-
|
|
945
|
-
|
|
946
|
-
|
|
947
|
-
|
|
948
|
-
|
|
949
|
-
|
|
950
|
-
|
|
951
|
-
|
|
952
|
-
|
|
953
|
-
|
|
954
|
-
|
|
955
|
-
|
|
956
|
-
|
|
957
|
-
|
|
958
|
-
|
|
959
|
-
|
|
960
|
-
|
|
961
|
-
|
|
962
|
-
|
|
963
|
-
|
|
964
|
-
|
|
965
|
-
|
|
966
|
-
|
|
967
|
-
|
|
968
|
-
|
|
969
|
-
|
|
970
|
-
|
|
971
|
-
|
|
972
|
-
|
|
973
|
-
|
|
974
|
-
|
|
975
|
-
|
|
976
|
-
|
|
977
|
-
|
|
978
|
-
|
|
979
|
-
|
|
980
|
-
|
|
981
|
-
|
|
982
|
-
|
|
983
|
-
|
|
984
|
-
|
|
985
|
-
|
|
986
|
-
|
|
987
|
-
|
|
988
|
-
|
|
989
|
-
|
|
990
|
-
|
|
991
|
-
|
|
992
|
-
|
|
993
|
-
|
|
994
|
-
|
|
995
|
-
|
|
996
|
-
|
|
997
|
-
|
|
998
|
-
|
|
999
|
-
|
|
1000
|
-
|
|
1001
|
-
|
|
1002
|
-
|
|
1003
|
-
|
|
1004
|
-
|
|
1005
|
-
|
|
1006
|
-
|
|
1007
|
-
|
|
1008
|
-
|
|
1009
|
-
|
|
1010
|
-
|
|
1011
|
-
|
|
1012
|
-
|
|
1013
|
-
|
|
1014
|
-
|
|
1015
|
-
|
|
1016
|
-
|
|
1017
|
-
|
|
1018
|
-
|
|
1019
|
-
|
|
1020
|
-
|
|
1021
|
-
|
|
1022
|
-
|
|
1023
|
-
|
|
1024
|
-
|
|
1025
|
-
|
|
1026
|
-
|
|
1027
|
-
|
|
1028
|
-
|
|
1029
|
-
|
|
1030
|
-
|
|
1031
|
-
|
|
1032
|
-
|
|
1033
|
-
|
|
1034
|
-
|
|
1035
|
-
|
|
1036
|
-
|
|
1037
|
-
|
|
1038
|
-
|
|
1039
|
-
|
|
1040
|
-
|
|
1041
|
-
|
|
1042
|
-
|
|
1043
|
-
|
|
1044
|
-
|
|
1045
|
-
|
|
1046
|
-
|
|
1047
|
-
|
|
1048
|
-
|
|
1049
|
-
|
|
1050
|
-
|
|
1051
|
-
|
|
1052
|
-
|
|
1053
|
-
|
|
1054
|
-
|
|
1055
|
-
|
|
1056
|
-
|
|
1057
|
-
|
|
1058
|
-
|
|
1059
|
-
|
|
1060
|
-
|
|
1061
|
-
|
|
1062
|
-
|
|
1063
|
-
|
|
1064
|
-
|
|
1065
|
-
|
|
1066
|
-
|
|
1067
|
-
|
|
1068
|
-
|
|
1069
|
-
|
|
1070
|
-
|
|
1071
|
-
|
|
1072
|
-
|
|
1073
|
-
|
|
1074
|
-
|
|
1075
|
-
|
|
1076
|
-
|
|
1077
|
-
|
|
1078
|
-
|
|
1079
|
-
|
|
1080
|
-
|
|
1081
|
-
|
|
1082
|
-
|
|
1083
|
-
|
|
1084
|
-
|
|
1085
|
-
|
|
1086
|
-
|
|
1087
|
-
|
|
1088
|
-
|
|
1089
|
-
|
|
1090
|
-
|
|
1091
|
-
|
|
1092
|
-
|
|
1093
|
-
|
|
1094
|
-
|
|
1095
|
-
|
|
1096
|
-
|
|
1097
|
-
|
|
1098
|
-
|
|
1099
|
-
|
|
1100
|
-
|
|
1101
|
-
|
|
1102
|
-
|
|
1103
|
-
|
|
1104
|
-
|
|
1105
|
-
|
|
1106
|
-
|
|
1107
|
-
|
|
1108
|
-
|
|
1109
|
-
|
|
1110
|
-
|
|
1111
|
-
|
|
1112
|
-
|
|
1113
|
-
|
|
1114
|
-
|
|
1115
|
-
|
|
1116
|
-
|
|
1117
|
-
|
|
1118
|
-
|
|
1119
|
-
|
|
1120
|
-
|
|
1121
|
-
|
|
1122
|
-
|
|
1123
|
-
|
|
1124
|
-
|
|
1125
|
-
|
|
1126
|
-
|
|
1127
|
-
|
|
1128
|
-
|
|
1129
|
-
|
|
1130
|
-
|
|
1131
|
-
|
|
1132
|
-
|
|
1133
|
-
|
|
1134
|
-
|
|
1135
|
-
|
|
1136
|
-
|
|
1137
|
-
|
|
1138
|
-
|
|
1139
|
-
|
|
1140
|
-
|
|
1141
|
-
|
|
1142
|
-
|
|
1143
|
-
|
|
1144
|
-
|
|
1145
|
-
|
|
1146
|
-
|
|
1147
|
-
|
|
1148
|
-
|
|
1149
|
-
|
|
1150
|
-
|
|
1151
|
-
|
|
1152
|
-
|
|
1153
|
-
|
|
1154
|
-
|
|
1155
|
-
|
|
1156
|
-
|
|
1157
|
-
|
|
1158
|
-
|
|
1159
|
-
|
|
1160
|
-
|
|
1161
|
-
|
|
1162
|
-
|
|
1163
|
-
|
|
1164
|
-
|
|
1165
|
-
|
|
1166
|
-
|
|
1167
|
-
|
|
1168
|
-
|
|
1169
|
-
|
|
1170
|
-
|
|
1171
|
-
|
|
1172
|
-
|
|
1173
|
-
|
|
1174
|
-
|
|
1175
|
-
|
|
1176
|
-
|
|
1177
|
-
|
|
1178
|
-
|
|
1179
|
-
|
|
1180
|
-
|
|
1181
|
-
|
|
1182
|
-
|
|
1183
|
-
|
|
1184
|
-
|
|
1185
|
-
|
|
1186
|
-
|
|
1187
|
-
|
|
1188
|
-
|
|
1189
|
-
|
|
1190
|
-
|
|
1191
|
-
|
|
1192
|
-
|
|
1193
|
-
|
|
1194
|
-
|
|
1195
|
-
|
|
1196
|
-
|
|
1197
|
-
|
|
1198
|
-
|
|
1199
|
-
|
|
1200
|
-
|
|
1201
|
-
|
|
1202
|
-
|
|
1203
|
-
|
|
1204
|
-
|
|
1205
|
-
|
|
1206
|
-
|
|
1207
|
-
|
|
1208
|
-
|
|
1209
|
-
|
|
1210
|
-
|
|
1211
|
-
|
|
1212
|
-
|
|
1213
|
-
|
|
1214
|
-
|
|
1215
|
-
|
|
1216
|
-
|
|
1217
|
-
|
|
1218
|
-
|
|
1219
|
-
|
|
1220
|
-
|
|
1221
|
-
|
|
1222
|
-
|
|
1223
|
-
|
|
1224
|
-
|
|
1225
|
-
|
|
1226
|
-
|
|
1227
|
-
|
|
1228
|
-
|
|
1229
|
-
|
|
1230
|
-
|
|
1231
|
-
|
|
1232
|
-
|
|
1233
|
-
|
|
1234
|
-
|
|
1235
|
-
|
|
1236
|
-
|
|
1237
|
-
|
|
1238
|
-
|
|
1239
|
-
|
|
1240
|
-
|
|
1241
|
-
|
|
1242
|
-
|
|
1243
|
-
|
|
1244
|
-
|
|
1245
|
-
|
|
1246
|
-
|
|
1247
|
-
|
|
1248
|
-
|
|
1249
|
-
|
|
1250
|
-
|
|
1251
|
-
|
|
1252
|
-
|
|
1253
|
-
|
|
1254
|
-
|
|
1255
|
-
|
|
1256
|
-
|
|
1257
|
-
|
|
1258
|
-
|
|
1259
|
-
|
|
1260
|
-
|
|
1261
|
-
|
|
1262
|
-
|
|
1263
|
-
|
|
1264
|
-
|
|
1265
|
-
|
|
1266
|
-
|
|
1267
|
-
|
|
1268
|
-
|
|
1269
|
-
|
|
1270
|
-
|
|
1271
|
-
|
|
1272
|
-
|
|
1273
|
-
|
|
1274
|
-
|
|
1275
|
-
|
|
1276
|
-
"KUBERNETES_MEMORY_LIMIT": "4Gi",
|
|
1277
|
-
"KUBERNETES_MEMORY_REQUEST": "1Gi",
|
|
1278
|
-
},
|
|
1279
|
-
},
|
|
1280
|
-
"www ๐งพ sbom | review ": {
|
|
1281
|
-
"allow_failure": true,
|
|
1282
|
-
"artifacts": {
|
|
1283
|
-
"paths": [
|
|
1284
|
-
"__sbom.json",
|
|
1285
|
-
],
|
|
1286
|
-
},
|
|
1287
|
-
"image": "aquasec/trivy:0.38.3",
|
|
1288
|
-
"interruptible": true,
|
|
1289
|
-
"needs": [],
|
|
1290
|
-
"retry": {
|
|
1291
|
-
"max": 2,
|
|
1292
|
-
"when": [
|
|
1293
|
-
"runner_system_failure",
|
|
1294
|
-
"stuck_or_timeout_failure",
|
|
1295
|
-
],
|
|
1296
|
-
},
|
|
1297
|
-
"script": [
|
|
1298
|
-
"echo -e "\\e[0Ksection_start:$(date +%s):injectvars[collapsed=true]\\r\\e[0KInjecting variables"",
|
|
1299
|
-
"echo -e "\\e[0Ksection_end:$(date +%s):injectvars\\r\\e[0K"",
|
|
1300
|
-
"trivy fs --quiet --format cyclonedx --output "__sbom.json" www",
|
|
1301
|
-
],
|
|
1302
|
-
"stage": "build",
|
|
1303
|
-
"variables": {},
|
|
1304
|
-
},
|
|
1305
|
-
},
|
|
1306
|
-
"stages": [
|
|
1307
|
-
"setup",
|
|
1308
|
-
"setup dev",
|
|
1309
|
-
"setup review",
|
|
1310
|
-
"setup stage",
|
|
1311
|
-
"setup prod",
|
|
1312
|
-
"test",
|
|
1313
|
-
"test dev",
|
|
1314
|
-
"test review",
|
|
1315
|
-
"test stage",
|
|
1316
|
-
"test prod",
|
|
1317
|
-
"build",
|
|
1318
|
-
"build dev",
|
|
1319
|
-
"build review",
|
|
1320
|
-
"build stage",
|
|
1321
|
-
"build prod",
|
|
1322
|
-
"deploy",
|
|
1323
|
-
"deploy dev",
|
|
1324
|
-
"deploy review",
|
|
1325
|
-
"deploy stage",
|
|
1326
|
-
"deploy prod",
|
|
1327
|
-
"verify",
|
|
1328
|
-
"verify dev",
|
|
1329
|
-
"verify review",
|
|
1330
|
-
"verify stage",
|
|
1331
|
-
"verify prod",
|
|
1332
|
-
"rollback",
|
|
1333
|
-
"rollback dev",
|
|
1334
|
-
"rollback review",
|
|
1335
|
-
"rollback stage",
|
|
1336
|
-
"rollback prod",
|
|
1337
|
-
"stop",
|
|
1338
|
-
"stop dev",
|
|
1339
|
-
"stop review",
|
|
1340
|
-
"stop stage",
|
|
1341
|
-
"stop prod",
|
|
1342
|
-
],
|
|
1343
|
-
"variables": {
|
|
1344
|
-
"ARTIFACT_COMPRESSION_LEVEL": "fast",
|
|
1345
|
-
"CACHE_COMPRESSION_LEVEL": "fast",
|
|
1346
|
-
"FF_USE_FASTZIP": "true",
|
|
1347
|
-
"GIT_DEPTH": "1",
|
|
1348
|
-
"TRANSFER_METER_FREQUENCY": "5s",
|
|
1349
|
-
},
|
|
1350
|
-
"workflow": {
|
|
1351
|
-
"rules": [
|
|
1352
|
-
{
|
|
1353
|
-
"if": "$CI_COMMIT_TAG",
|
|
1354
|
-
},
|
|
1355
|
-
{
|
|
1356
|
-
"if": "$CI_COMMIT_MESSAGE =~ /^chore\\(release\\).*/",
|
|
1357
|
-
"when": "never",
|
|
1358
|
-
},
|
|
1359
|
-
{
|
|
1360
|
-
"if": "$CI_PIPELINE_SOURCE == "schedule"",
|
|
1361
|
-
"when": "never",
|
|
1362
|
-
},
|
|
1363
|
-
{
|
|
1364
|
-
"if": "$CI_COMMIT_BRANCH =~ /^[0-9]+.([0-9]+|x).x$/",
|
|
1365
|
-
},
|
|
1366
|
-
{
|
|
1367
|
-
"if": "$CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH",
|
|
1368
|
-
},
|
|
1369
|
-
{
|
|
1370
|
-
"if": "$CI_MERGE_REQUEST_ID",
|
|
1371
|
-
},
|
|
1372
|
-
],
|
|
1373
|
-
},
|
|
1374
|
-
},
|
|
1375
|
-
"taggedRelease": {
|
|
1376
|
-
"image": "path/to/docker/jobs-default:the-version",
|
|
1377
|
-
"jobs": {
|
|
1378
|
-
"api ๐จ app | prod ": {
|
|
1379
|
-
"artifacts": {
|
|
1380
|
-
"expire_in": "1 day",
|
|
1381
|
-
"paths": [
|
|
1382
|
-
"api/__build_info.json",
|
|
1383
|
-
"api/.next",
|
|
1384
|
-
"api/dist",
|
|
1385
|
-
],
|
|
1386
|
-
"reports": {
|
|
1387
|
-
"junit": undefined,
|
|
1388
|
-
},
|
|
1389
|
-
"when": "always",
|
|
1390
|
-
},
|
|
1391
|
-
"cache": [
|
|
1392
|
-
{
|
|
1393
|
-
"key": "api-yarn",
|
|
1394
|
-
"paths": [
|
|
1395
|
-
"api/.yarn",
|
|
1396
|
-
],
|
|
1397
|
-
"policy": "pull-push",
|
|
1398
|
-
},
|
|
1399
|
-
{
|
|
1400
|
-
"key": "api-node-modules",
|
|
1401
|
-
"paths": [
|
|
1402
|
-
"api/node_modules",
|
|
1403
|
-
],
|
|
1404
|
-
"policy": "pull-push",
|
|
1405
|
-
},
|
|
1406
|
-
{
|
|
1407
|
-
"key": "api-next-cache",
|
|
1408
|
-
"paths": [
|
|
1409
|
-
"api/.next/cache",
|
|
1410
|
-
],
|
|
1411
|
-
"policy": "pull-push",
|
|
1412
|
-
},
|
|
1413
|
-
],
|
|
1414
|
-
"image": "path/to/docker/jobs-default:the-version",
|
|
1415
|
-
"interruptible": true,
|
|
1416
|
-
"needs": [],
|
|
1417
|
-
"retry": {
|
|
1418
|
-
"max": 2,
|
|
1419
|
-
"when": [
|
|
1420
|
-
"runner_system_failure",
|
|
1421
|
-
"stuck_or_timeout_failure",
|
|
1422
|
-
],
|
|
1423
|
-
},
|
|
1424
|
-
"script": [
|
|
1425
|
-
"echo -e "\\e[0Ksection_start:$(date +%s):injectvars[collapsed=true]\\r\\e[0KInjecting variables"",
|
|
1426
|
-
"export ENV_SHORT="prod"",
|
|
1427
|
-
"export APP_DIR="api"",
|
|
1428
|
-
"export ENV_TYPE="prod"",
|
|
1429
|
-
"export BUILD_INFO_BUILD_ID="$(git describe --tags 2>/dev/null || git rev-parse HEAD)"",
|
|
1430
|
-
"export BUILD_INFO_BUILD_TIME="$CI_JOB_STARTED_AT"",
|
|
1431
|
-
"export BUILD_INFO_CURRENT_VERSION="$(tag=$(git ls-remote origin "refs/tags/v*[0-9]" 2>/dev/null | cut -f 2- | sort -V | tail -1 | sed 's/refs\\/tags\\/v//'); [ -z "$tag" ] && echo "0.0.0" || echo "$tag")"",
|
|
1432
|
-
"export HOST="unknown-host.example.com"",
|
|
1433
|
-
"export ROOT_URL="https://unknown-host.example.com"",
|
|
1434
|
-
"export HOST_INTERNAL="unknown-host.example.com"",
|
|
1435
|
-
"export HOST_CANONICAL="unknown-host.example.com"",
|
|
1436
|
-
"export ROOT_URL_INTERNAL="https://unknown-host.example.com"",
|
|
1437
|
-
"export _ALL_ENV_VAR_KEYS="[\\"ENV_SHORT\\",\\"APP_DIR\\",\\"ENV_TYPE\\",\\"BUILD_INFO_BUILD_ID\\",\\"BUILD_INFO_BUILD_TIME\\",\\"BUILD_INFO_CURRENT_VERSION\\",\\"HOST\\",\\"ROOT_URL\\",\\"HOST_INTERNAL\\",\\"HOST_CANONICAL\\",\\"ROOT_URL_INTERNAL\\"]"",
|
|
1438
|
-
"echo -e "\\e[0Ksection_end:$(date +%s):injectvars\\r\\e[0K"",
|
|
1439
|
-
"echo '{"id":"$(git describe --tags 2>/dev/null || git rev-parse HEAD)","time":"$CI_JOB_STARTED_AT"}' > api/__build_info.json",
|
|
1440
|
-
"echo -e "\\e[0Ksection_start:$(date +%s):nodeinstall[collapsed=true]\\r\\e[0KEnsure node version"",
|
|
1441
|
-
"if [ -f ~/.nvm/nvm.sh ]; then source ~/.nvm/nvm.sh; fi",
|
|
1442
|
-
"if command -v nvm &> /dev/null && [ -f ./.nvmrc ]; then nvm install; fi",
|
|
1443
|
-
"echo -e "\\e[0Ksection_end:$(date +%s):nodeinstall\\r\\e[0K"",
|
|
1444
|
-
"cd api",
|
|
1445
|
-
"echo -e "\\e[0Ksection_start:$(date +%s):nodeinstall[collapsed=true]\\r\\e[0KEnsure node version"",
|
|
1446
|
-
"if [ -f ~/.nvm/nvm.sh ]; then source ~/.nvm/nvm.sh; fi",
|
|
1447
|
-
"if command -v nvm &> /dev/null && [ -f ./.nvmrc ]; then nvm install; fi",
|
|
1448
|
-
"echo -e "\\e[0Ksection_end:$(date +%s):nodeinstall\\r\\e[0K"",
|
|
1449
|
-
"echo -e "\\e[0Ksection_start:$(date +%s):yarninstall[collapsed=true]\\r\\e[0KYarn install"",
|
|
1450
|
-
"yarn install --immutable",
|
|
1451
|
-
"echo -e "\\e[0Ksection_end:$(date +%s):yarninstall\\r\\e[0K"",
|
|
1452
|
-
"yarn build",
|
|
1453
|
-
],
|
|
1454
|
-
"stage": "build",
|
|
1455
|
-
"variables": {
|
|
1456
|
-
"KUBERNETES_CPU_REQUEST": "0.45",
|
|
1457
|
-
"KUBERNETES_MEMORY_LIMIT": "4Gi",
|
|
1458
|
-
"KUBERNETES_MEMORY_REQUEST": "1Gi",
|
|
1459
|
-
},
|
|
1460
|
-
},
|
|
1461
|
-
"api ๐จ app | stage ": {
|
|
1462
|
-
"artifacts": {
|
|
1463
|
-
"expire_in": "1 day",
|
|
1464
|
-
"paths": [
|
|
1465
|
-
"api/__build_info.json",
|
|
1466
|
-
"api/.next",
|
|
1467
|
-
"api/dist",
|
|
1468
|
-
],
|
|
1469
|
-
"reports": {
|
|
1470
|
-
"junit": undefined,
|
|
1471
|
-
},
|
|
1472
|
-
"when": "always",
|
|
1473
|
-
},
|
|
1474
|
-
"cache": [
|
|
1475
|
-
{
|
|
1476
|
-
"key": "api-yarn",
|
|
1477
|
-
"paths": [
|
|
1478
|
-
"api/.yarn",
|
|
1479
|
-
],
|
|
1480
|
-
"policy": "pull-push",
|
|
1481
|
-
},
|
|
1482
|
-
{
|
|
1483
|
-
"key": "api-node-modules",
|
|
1484
|
-
"paths": [
|
|
1485
|
-
"api/node_modules",
|
|
1486
|
-
],
|
|
1487
|
-
"policy": "pull-push",
|
|
1488
|
-
},
|
|
1489
|
-
{
|
|
1490
|
-
"key": "api-next-cache",
|
|
1491
|
-
"paths": [
|
|
1492
|
-
"api/.next/cache",
|
|
1493
|
-
],
|
|
1494
|
-
"policy": "pull-push",
|
|
1495
|
-
},
|
|
1496
|
-
],
|
|
1497
|
-
"image": "path/to/docker/jobs-default:the-version",
|
|
1498
|
-
"interruptible": true,
|
|
1499
|
-
"needs": [],
|
|
1500
|
-
"retry": {
|
|
1501
|
-
"max": 2,
|
|
1502
|
-
"when": [
|
|
1503
|
-
"runner_system_failure",
|
|
1504
|
-
"stuck_or_timeout_failure",
|
|
1505
|
-
],
|
|
1506
|
-
},
|
|
1507
|
-
"script": [
|
|
1508
|
-
"echo -e "\\e[0Ksection_start:$(date +%s):injectvars[collapsed=true]\\r\\e[0KInjecting variables"",
|
|
1509
|
-
"export ENV_SHORT="stage"",
|
|
1510
|
-
"export APP_DIR="api"",
|
|
1511
|
-
"export ENV_TYPE="stage"",
|
|
1512
|
-
"export BUILD_INFO_BUILD_ID="$(git describe --tags 2>/dev/null || git rev-parse HEAD)"",
|
|
1513
|
-
"export BUILD_INFO_BUILD_TIME="$CI_JOB_STARTED_AT"",
|
|
1514
|
-
"export BUILD_INFO_CURRENT_VERSION="$(tag=$(git ls-remote origin "refs/tags/v*[0-9]" 2>/dev/null | cut -f 2- | sort -V | tail -1 | sed 's/refs\\/tags\\/v//'); [ -z "$tag" ] && echo "0.0.0" || echo "$tag")"",
|
|
1515
|
-
"export HOST="unknown-host.example.com"",
|
|
1516
|
-
"export ROOT_URL="https://unknown-host.example.com"",
|
|
1517
|
-
"export HOST_INTERNAL="unknown-host.example.com"",
|
|
1518
|
-
"export HOST_CANONICAL="unknown-host.example.com"",
|
|
1519
|
-
"export ROOT_URL_INTERNAL="https://unknown-host.example.com"",
|
|
1520
|
-
"export _ALL_ENV_VAR_KEYS="[\\"ENV_SHORT\\",\\"APP_DIR\\",\\"ENV_TYPE\\",\\"BUILD_INFO_BUILD_ID\\",\\"BUILD_INFO_BUILD_TIME\\",\\"BUILD_INFO_CURRENT_VERSION\\",\\"HOST\\",\\"ROOT_URL\\",\\"HOST_INTERNAL\\",\\"HOST_CANONICAL\\",\\"ROOT_URL_INTERNAL\\"]"",
|
|
1521
|
-
"echo -e "\\e[0Ksection_end:$(date +%s):injectvars\\r\\e[0K"",
|
|
1522
|
-
"echo '{"id":"$(git describe --tags 2>/dev/null || git rev-parse HEAD)","time":"$CI_JOB_STARTED_AT"}' > api/__build_info.json",
|
|
1523
|
-
"echo -e "\\e[0Ksection_start:$(date +%s):nodeinstall[collapsed=true]\\r\\e[0KEnsure node version"",
|
|
1524
|
-
"if [ -f ~/.nvm/nvm.sh ]; then source ~/.nvm/nvm.sh; fi",
|
|
1525
|
-
"if command -v nvm &> /dev/null && [ -f ./.nvmrc ]; then nvm install; fi",
|
|
1526
|
-
"echo -e "\\e[0Ksection_end:$(date +%s):nodeinstall\\r\\e[0K"",
|
|
1527
|
-
"cd api",
|
|
1528
|
-
"echo -e "\\e[0Ksection_start:$(date +%s):nodeinstall[collapsed=true]\\r\\e[0KEnsure node version"",
|
|
1529
|
-
"if [ -f ~/.nvm/nvm.sh ]; then source ~/.nvm/nvm.sh; fi",
|
|
1530
|
-
"if command -v nvm &> /dev/null && [ -f ./.nvmrc ]; then nvm install; fi",
|
|
1531
|
-
"echo -e "\\e[0Ksection_end:$(date +%s):nodeinstall\\r\\e[0K"",
|
|
1532
|
-
"echo -e "\\e[0Ksection_start:$(date +%s):yarninstall[collapsed=true]\\r\\e[0KYarn install"",
|
|
1533
|
-
"yarn install --immutable",
|
|
1534
|
-
"echo -e "\\e[0Ksection_end:$(date +%s):yarninstall\\r\\e[0K"",
|
|
1535
|
-
"yarn build",
|
|
1536
|
-
],
|
|
1537
|
-
"stage": "build",
|
|
1538
|
-
"variables": {
|
|
1539
|
-
"KUBERNETES_CPU_REQUEST": "0.45",
|
|
1540
|
-
"KUBERNETES_MEMORY_LIMIT": "4Gi",
|
|
1541
|
-
"KUBERNETES_MEMORY_REQUEST": "1Gi",
|
|
1542
|
-
},
|
|
1543
|
-
},
|
|
1544
|
-
"api ๐ Deploy | prod ": {
|
|
1545
|
-
"allow_failure": true,
|
|
1546
|
-
"cache": [],
|
|
1547
|
-
"image": "path/to/docker/jobs-default:the-version",
|
|
1548
|
-
"interruptible": true,
|
|
1549
|
-
"needs": [
|
|
1550
|
-
{
|
|
1551
|
-
"artifacts": true,
|
|
1552
|
-
"job": "api ๐จ app | prod ",
|
|
1553
|
-
},
|
|
1554
|
-
{
|
|
1555
|
-
"artifacts": true,
|
|
1556
|
-
"job": "api ๐งพ sbom | prod ",
|
|
1557
|
-
},
|
|
1558
|
-
],
|
|
1559
|
-
"retry": {
|
|
1560
|
-
"max": 2,
|
|
1561
|
-
"when": [
|
|
1562
|
-
"runner_system_failure",
|
|
1563
|
-
"stuck_or_timeout_failure",
|
|
1564
|
-
],
|
|
1565
|
-
},
|
|
1566
|
-
"rules": [
|
|
1567
|
-
{
|
|
1568
|
-
"when": "manual",
|
|
1569
|
-
},
|
|
1570
|
-
],
|
|
1571
|
-
"script": [
|
|
1572
|
-
"echo -e "\\e[0Ksection_start:$(date +%s):injectvars[collapsed=true]\\r\\e[0KInjecting variables"",
|
|
1573
|
-
"export ENV_SHORT="prod"",
|
|
1574
|
-
"export APP_DIR="api"",
|
|
1575
|
-
"export ENV_TYPE="prod"",
|
|
1576
|
-
"export BUILD_INFO_BUILD_ID="$(git describe --tags 2>/dev/null || git rev-parse HEAD)"",
|
|
1577
|
-
"export BUILD_INFO_BUILD_TIME="$CI_JOB_STARTED_AT"",
|
|
1578
|
-
"export BUILD_INFO_CURRENT_VERSION="$(tag=$(git ls-remote origin "refs/tags/v*[0-9]" 2>/dev/null | cut -f 2- | sort -V | tail -1 | sed 's/refs\\/tags\\/v//'); [ -z "$tag" ] && echo "0.0.0" || echo "$tag")"",
|
|
1579
|
-
"export HOST="unknown-host.example.com"",
|
|
1580
|
-
"export ROOT_URL="https://unknown-host.example.com"",
|
|
1581
|
-
"export HOST_INTERNAL="unknown-host.example.com"",
|
|
1582
|
-
"export HOST_CANONICAL="unknown-host.example.com"",
|
|
1583
|
-
"export ROOT_URL_INTERNAL="https://unknown-host.example.com"",
|
|
1584
|
-
"export _ALL_ENV_VAR_KEYS="[\\"ENV_SHORT\\",\\"APP_DIR\\",\\"ENV_TYPE\\",\\"BUILD_INFO_BUILD_ID\\",\\"BUILD_INFO_BUILD_TIME\\",\\"BUILD_INFO_CURRENT_VERSION\\",\\"HOST\\",\\"ROOT_URL\\",\\"HOST_INTERNAL\\",\\"HOST_CANONICAL\\",\\"ROOT_URL_INTERNAL\\"]"",
|
|
1585
|
-
"echo -e "\\e[0Ksection_end:$(date +%s):injectvars\\r\\e[0K"",
|
|
1586
|
-
"cd api",
|
|
1587
|
-
"yarn deploy",
|
|
1588
|
-
"echo 'Uploading SBOM to Dependency Track'",
|
|
1589
|
-
"/dtrackuploader https://dep.panter.swiss/ "$DT_KEY_PROD" upload "pan-test-app/api" "https://unknown-host.example.com" "__sbom.json" vex.json || true",
|
|
1590
|
-
],
|
|
1591
|
-
"stage": "deploy prod",
|
|
1592
|
-
"variables": {
|
|
1593
|
-
"KUBERNETES_CPU_REQUEST": "0.22",
|
|
1594
|
-
"KUBERNETES_MEMORY_LIMIT": "400Mi",
|
|
1595
|
-
"KUBERNETES_MEMORY_REQUEST": "200Mi",
|
|
1596
|
-
},
|
|
1597
|
-
},
|
|
1598
|
-
"api ๐ Deploy | stage ": {
|
|
1599
|
-
"allow_failure": false,
|
|
1600
|
-
"cache": [],
|
|
1601
|
-
"image": "path/to/docker/jobs-default:the-version",
|
|
1602
|
-
"interruptible": true,
|
|
1603
|
-
"needs": [
|
|
1604
|
-
{
|
|
1605
|
-
"artifacts": true,
|
|
1606
|
-
"job": "api ๐จ app | stage ",
|
|
1607
|
-
},
|
|
1608
|
-
{
|
|
1609
|
-
"artifacts": true,
|
|
1610
|
-
"job": "api ๐งพ sbom | stage ",
|
|
1611
|
-
},
|
|
1612
|
-
],
|
|
1613
|
-
"retry": {
|
|
1614
|
-
"max": 2,
|
|
1615
|
-
"when": [
|
|
1616
|
-
"runner_system_failure",
|
|
1617
|
-
"stuck_or_timeout_failure",
|
|
1618
|
-
],
|
|
1619
|
-
},
|
|
1620
|
-
"rules": [
|
|
1621
|
-
{
|
|
1622
|
-
"when": "on_success",
|
|
1623
|
-
},
|
|
1624
|
-
],
|
|
1625
|
-
"script": [
|
|
1626
|
-
"echo -e "\\e[0Ksection_start:$(date +%s):injectvars[collapsed=true]\\r\\e[0KInjecting variables"",
|
|
1627
|
-
"export ENV_SHORT="stage"",
|
|
1628
|
-
"export APP_DIR="api"",
|
|
1629
|
-
"export ENV_TYPE="stage"",
|
|
1630
|
-
"export BUILD_INFO_BUILD_ID="$(git describe --tags 2>/dev/null || git rev-parse HEAD)"",
|
|
1631
|
-
"export BUILD_INFO_BUILD_TIME="$CI_JOB_STARTED_AT"",
|
|
1632
|
-
"export BUILD_INFO_CURRENT_VERSION="$(tag=$(git ls-remote origin "refs/tags/v*[0-9]" 2>/dev/null | cut -f 2- | sort -V | tail -1 | sed 's/refs\\/tags\\/v//'); [ -z "$tag" ] && echo "0.0.0" || echo "$tag")"",
|
|
1633
|
-
"export HOST="unknown-host.example.com"",
|
|
1634
|
-
"export ROOT_URL="https://unknown-host.example.com"",
|
|
1635
|
-
"export HOST_INTERNAL="unknown-host.example.com"",
|
|
1636
|
-
"export HOST_CANONICAL="unknown-host.example.com"",
|
|
1637
|
-
"export ROOT_URL_INTERNAL="https://unknown-host.example.com"",
|
|
1638
|
-
"export _ALL_ENV_VAR_KEYS="[\\"ENV_SHORT\\",\\"APP_DIR\\",\\"ENV_TYPE\\",\\"BUILD_INFO_BUILD_ID\\",\\"BUILD_INFO_BUILD_TIME\\",\\"BUILD_INFO_CURRENT_VERSION\\",\\"HOST\\",\\"ROOT_URL\\",\\"HOST_INTERNAL\\",\\"HOST_CANONICAL\\",\\"ROOT_URL_INTERNAL\\"]"",
|
|
1639
|
-
"echo -e "\\e[0Ksection_end:$(date +%s):injectvars\\r\\e[0K"",
|
|
1640
|
-
"cd api",
|
|
1641
|
-
"yarn deploy",
|
|
1642
|
-
"echo 'Uploading SBOM to Dependency Track'",
|
|
1643
|
-
"/dtrackuploader https://dep.panter.swiss/ "$DT_KEY_PROD" upload "pan-test-app/api" "https://unknown-host.example.com" "__sbom.json" vex.json || true",
|
|
1644
|
-
],
|
|
1645
|
-
"stage": "deploy stage",
|
|
1646
|
-
"variables": {
|
|
1647
|
-
"KUBERNETES_CPU_REQUEST": "0.22",
|
|
1648
|
-
"KUBERNETES_MEMORY_LIMIT": "400Mi",
|
|
1649
|
-
"KUBERNETES_MEMORY_REQUEST": "200Mi",
|
|
1650
|
-
},
|
|
1651
|
-
},
|
|
1652
|
-
"api ๐งพ sbom | prod ": {
|
|
1653
|
-
"allow_failure": true,
|
|
1654
|
-
"artifacts": {
|
|
1655
|
-
"paths": [
|
|
1656
|
-
"__sbom.json",
|
|
1657
|
-
],
|
|
1658
|
-
},
|
|
1659
|
-
"image": "aquasec/trivy:0.38.3",
|
|
1660
|
-
"interruptible": true,
|
|
1661
|
-
"needs": [],
|
|
1662
|
-
"retry": {
|
|
1663
|
-
"max": 2,
|
|
1664
|
-
"when": [
|
|
1665
|
-
"runner_system_failure",
|
|
1666
|
-
"stuck_or_timeout_failure",
|
|
1667
|
-
],
|
|
1668
|
-
},
|
|
1669
|
-
"script": [
|
|
1670
|
-
"echo -e "\\e[0Ksection_start:$(date +%s):injectvars[collapsed=true]\\r\\e[0KInjecting variables"",
|
|
1671
|
-
"echo -e "\\e[0Ksection_end:$(date +%s):injectvars\\r\\e[0K"",
|
|
1672
|
-
"trivy fs --quiet --format cyclonedx --output "__sbom.json" api",
|
|
1673
|
-
],
|
|
1674
|
-
"stage": "build",
|
|
1675
|
-
"variables": {},
|
|
1676
|
-
},
|
|
1677
|
-
"api ๐งพ sbom | stage ": {
|
|
1678
|
-
"allow_failure": true,
|
|
1679
|
-
"artifacts": {
|
|
1680
|
-
"paths": [
|
|
1681
|
-
"__sbom.json",
|
|
1682
|
-
],
|
|
1683
|
-
},
|
|
1684
|
-
"image": "aquasec/trivy:0.38.3",
|
|
1685
|
-
"interruptible": true,
|
|
1686
|
-
"needs": [],
|
|
1687
|
-
"retry": {
|
|
1688
|
-
"max": 2,
|
|
1689
|
-
"when": [
|
|
1690
|
-
"runner_system_failure",
|
|
1691
|
-
"stuck_or_timeout_failure",
|
|
1692
|
-
],
|
|
1693
|
-
},
|
|
1694
|
-
"script": [
|
|
1695
|
-
"echo -e "\\e[0Ksection_start:$(date +%s):injectvars[collapsed=true]\\r\\e[0KInjecting variables"",
|
|
1696
|
-
"echo -e "\\e[0Ksection_end:$(date +%s):injectvars\\r\\e[0K"",
|
|
1697
|
-
"trivy fs --quiet --format cyclonedx --output "__sbom.json" api",
|
|
1698
|
-
],
|
|
1699
|
-
"stage": "build",
|
|
1700
|
-
"variables": {},
|
|
1701
|
-
},
|
|
1702
|
-
"www ๐จ app | prod ": {
|
|
1703
|
-
"artifacts": {
|
|
1704
|
-
"expire_in": "1 day",
|
|
1705
|
-
"paths": [
|
|
1706
|
-
"www/__build_info.json",
|
|
1707
|
-
"www/.next",
|
|
1708
|
-
"www/dist",
|
|
1709
|
-
],
|
|
1710
|
-
"reports": {
|
|
1711
|
-
"junit": undefined,
|
|
1712
|
-
},
|
|
1713
|
-
"when": "always",
|
|
1714
|
-
},
|
|
1715
|
-
"cache": [
|
|
1716
|
-
{
|
|
1717
|
-
"key": "www-yarn",
|
|
1718
|
-
"paths": [
|
|
1719
|
-
"www/.yarn",
|
|
1720
|
-
],
|
|
1721
|
-
"policy": "pull-push",
|
|
1722
|
-
},
|
|
1723
|
-
{
|
|
1724
|
-
"key": "www-node-modules",
|
|
1725
|
-
"paths": [
|
|
1726
|
-
"www/node_modules",
|
|
1727
|
-
],
|
|
1728
|
-
"policy": "pull-push",
|
|
1729
|
-
},
|
|
1730
|
-
{
|
|
1731
|
-
"key": "www-next-cache",
|
|
1732
|
-
"paths": [
|
|
1733
|
-
"www/.next/cache",
|
|
1734
|
-
],
|
|
1735
|
-
"policy": "pull-push",
|
|
1736
|
-
},
|
|
1737
|
-
],
|
|
1738
|
-
"image": "path/to/docker/jobs-default:the-version",
|
|
1739
|
-
"interruptible": true,
|
|
1740
|
-
"needs": [],
|
|
1741
|
-
"retry": {
|
|
1742
|
-
"max": 2,
|
|
1743
|
-
"when": [
|
|
1744
|
-
"runner_system_failure",
|
|
1745
|
-
"stuck_or_timeout_failure",
|
|
1746
|
-
],
|
|
1747
|
-
},
|
|
1748
|
-
"script": [
|
|
1749
|
-
"echo -e "\\e[0Ksection_start:$(date +%s):injectvars[collapsed=true]\\r\\e[0KInjecting variables"",
|
|
1750
|
-
"export ENV_SHORT="prod"",
|
|
1751
|
-
"export APP_DIR="www"",
|
|
1752
|
-
"export ENV_TYPE="prod"",
|
|
1753
|
-
"export BUILD_INFO_BUILD_ID="$(git describe --tags 2>/dev/null || git rev-parse HEAD)"",
|
|
1754
|
-
"export BUILD_INFO_BUILD_TIME="$CI_JOB_STARTED_AT"",
|
|
1755
|
-
"export BUILD_INFO_CURRENT_VERSION="$(tag=$(git ls-remote origin "refs/tags/v*[0-9]" 2>/dev/null | cut -f 2- | sort -V | tail -1 | sed 's/refs\\/tags\\/v//'); [ -z "$tag" ] && echo "0.0.0" || echo "$tag")"",
|
|
1756
|
-
"export HOST="unknown-host.example.com"",
|
|
1757
|
-
"export ROOT_URL="https://unknown-host.example.com"",
|
|
1758
|
-
"export HOST_INTERNAL="unknown-host.example.com"",
|
|
1759
|
-
"export HOST_CANONICAL="unknown-host.example.com"",
|
|
1760
|
-
"export ROOT_URL_INTERNAL="https://unknown-host.example.com"",
|
|
1761
|
-
"export _ALL_ENV_VAR_KEYS="[\\"ENV_SHORT\\",\\"APP_DIR\\",\\"ENV_TYPE\\",\\"BUILD_INFO_BUILD_ID\\",\\"BUILD_INFO_BUILD_TIME\\",\\"BUILD_INFO_CURRENT_VERSION\\",\\"HOST\\",\\"ROOT_URL\\",\\"HOST_INTERNAL\\",\\"HOST_CANONICAL\\",\\"ROOT_URL_INTERNAL\\"]"",
|
|
1762
|
-
"echo -e "\\e[0Ksection_end:$(date +%s):injectvars\\r\\e[0K"",
|
|
1763
|
-
"echo '{"id":"$(git describe --tags 2>/dev/null || git rev-parse HEAD)","time":"$CI_JOB_STARTED_AT"}' > www/__build_info.json",
|
|
1764
|
-
"echo -e "\\e[0Ksection_start:$(date +%s):nodeinstall[collapsed=true]\\r\\e[0KEnsure node version"",
|
|
1765
|
-
"if [ -f ~/.nvm/nvm.sh ]; then source ~/.nvm/nvm.sh; fi",
|
|
1766
|
-
"if command -v nvm &> /dev/null && [ -f ./.nvmrc ]; then nvm install; fi",
|
|
1767
|
-
"echo -e "\\e[0Ksection_end:$(date +%s):nodeinstall\\r\\e[0K"",
|
|
1768
|
-
"cd www",
|
|
1769
|
-
"echo -e "\\e[0Ksection_start:$(date +%s):nodeinstall[collapsed=true]\\r\\e[0KEnsure node version"",
|
|
1770
|
-
"if [ -f ~/.nvm/nvm.sh ]; then source ~/.nvm/nvm.sh; fi",
|
|
1771
|
-
"if command -v nvm &> /dev/null && [ -f ./.nvmrc ]; then nvm install; fi",
|
|
1772
|
-
"echo -e "\\e[0Ksection_end:$(date +%s):nodeinstall\\r\\e[0K"",
|
|
1773
|
-
"echo -e "\\e[0Ksection_start:$(date +%s):yarninstall[collapsed=true]\\r\\e[0KYarn install"",
|
|
1774
|
-
"yarn install --immutable",
|
|
1775
|
-
"echo -e "\\e[0Ksection_end:$(date +%s):yarninstall\\r\\e[0K"",
|
|
1776
|
-
"yarn build",
|
|
1777
|
-
],
|
|
1778
|
-
"stage": "build",
|
|
1779
|
-
"variables": {
|
|
1780
|
-
"KUBERNETES_CPU_REQUEST": "0.45",
|
|
1781
|
-
"KUBERNETES_MEMORY_LIMIT": "4Gi",
|
|
1782
|
-
"KUBERNETES_MEMORY_REQUEST": "1Gi",
|
|
1783
|
-
},
|
|
1784
|
-
},
|
|
1785
|
-
"www ๐จ app | stage ": {
|
|
1786
|
-
"artifacts": {
|
|
1787
|
-
"expire_in": "1 day",
|
|
1788
|
-
"paths": [
|
|
1789
|
-
"www/__build_info.json",
|
|
1790
|
-
"www/.next",
|
|
1791
|
-
"www/dist",
|
|
1792
|
-
],
|
|
1793
|
-
"reports": {
|
|
1794
|
-
"junit": undefined,
|
|
1795
|
-
},
|
|
1796
|
-
"when": "always",
|
|
1797
|
-
},
|
|
1798
|
-
"cache": [
|
|
1799
|
-
{
|
|
1800
|
-
"key": "www-yarn",
|
|
1801
|
-
"paths": [
|
|
1802
|
-
"www/.yarn",
|
|
1803
|
-
],
|
|
1804
|
-
"policy": "pull-push",
|
|
1805
|
-
},
|
|
1806
|
-
{
|
|
1807
|
-
"key": "www-node-modules",
|
|
1808
|
-
"paths": [
|
|
1809
|
-
"www/node_modules",
|
|
1810
|
-
],
|
|
1811
|
-
"policy": "pull-push",
|
|
1812
|
-
},
|
|
1813
|
-
{
|
|
1814
|
-
"key": "www-next-cache",
|
|
1815
|
-
"paths": [
|
|
1816
|
-
"www/.next/cache",
|
|
1817
|
-
],
|
|
1818
|
-
"policy": "pull-push",
|
|
1819
|
-
},
|
|
1820
|
-
],
|
|
1821
|
-
"image": "path/to/docker/jobs-default:the-version",
|
|
1822
|
-
"interruptible": true,
|
|
1823
|
-
"needs": [],
|
|
1824
|
-
"retry": {
|
|
1825
|
-
"max": 2,
|
|
1826
|
-
"when": [
|
|
1827
|
-
"runner_system_failure",
|
|
1828
|
-
"stuck_or_timeout_failure",
|
|
1829
|
-
],
|
|
1830
|
-
},
|
|
1831
|
-
"script": [
|
|
1832
|
-
"echo -e "\\e[0Ksection_start:$(date +%s):injectvars[collapsed=true]\\r\\e[0KInjecting variables"",
|
|
1833
|
-
"export ENV_SHORT="stage"",
|
|
1834
|
-
"export APP_DIR="www"",
|
|
1835
|
-
"export ENV_TYPE="stage"",
|
|
1836
|
-
"export BUILD_INFO_BUILD_ID="$(git describe --tags 2>/dev/null || git rev-parse HEAD)"",
|
|
1837
|
-
"export BUILD_INFO_BUILD_TIME="$CI_JOB_STARTED_AT"",
|
|
1838
|
-
"export BUILD_INFO_CURRENT_VERSION="$(tag=$(git ls-remote origin "refs/tags/v*[0-9]" 2>/dev/null | cut -f 2- | sort -V | tail -1 | sed 's/refs\\/tags\\/v//'); [ -z "$tag" ] && echo "0.0.0" || echo "$tag")"",
|
|
1839
|
-
"export HOST="unknown-host.example.com"",
|
|
1840
|
-
"export ROOT_URL="https://unknown-host.example.com"",
|
|
1841
|
-
"export HOST_INTERNAL="unknown-host.example.com"",
|
|
1842
|
-
"export HOST_CANONICAL="unknown-host.example.com"",
|
|
1843
|
-
"export ROOT_URL_INTERNAL="https://unknown-host.example.com"",
|
|
1844
|
-
"export _ALL_ENV_VAR_KEYS="[\\"ENV_SHORT\\",\\"APP_DIR\\",\\"ENV_TYPE\\",\\"BUILD_INFO_BUILD_ID\\",\\"BUILD_INFO_BUILD_TIME\\",\\"BUILD_INFO_CURRENT_VERSION\\",\\"HOST\\",\\"ROOT_URL\\",\\"HOST_INTERNAL\\",\\"HOST_CANONICAL\\",\\"ROOT_URL_INTERNAL\\"]"",
|
|
1845
|
-
"echo -e "\\e[0Ksection_end:$(date +%s):injectvars\\r\\e[0K"",
|
|
1846
|
-
"echo '{"id":"$(git describe --tags 2>/dev/null || git rev-parse HEAD)","time":"$CI_JOB_STARTED_AT"}' > www/__build_info.json",
|
|
1847
|
-
"echo -e "\\e[0Ksection_start:$(date +%s):nodeinstall[collapsed=true]\\r\\e[0KEnsure node version"",
|
|
1848
|
-
"if [ -f ~/.nvm/nvm.sh ]; then source ~/.nvm/nvm.sh; fi",
|
|
1849
|
-
"if command -v nvm &> /dev/null && [ -f ./.nvmrc ]; then nvm install; fi",
|
|
1850
|
-
"echo -e "\\e[0Ksection_end:$(date +%s):nodeinstall\\r\\e[0K"",
|
|
1851
|
-
"cd www",
|
|
1852
|
-
"echo -e "\\e[0Ksection_start:$(date +%s):nodeinstall[collapsed=true]\\r\\e[0KEnsure node version"",
|
|
1853
|
-
"if [ -f ~/.nvm/nvm.sh ]; then source ~/.nvm/nvm.sh; fi",
|
|
1854
|
-
"if command -v nvm &> /dev/null && [ -f ./.nvmrc ]; then nvm install; fi",
|
|
1855
|
-
"echo -e "\\e[0Ksection_end:$(date +%s):nodeinstall\\r\\e[0K"",
|
|
1856
|
-
"echo -e "\\e[0Ksection_start:$(date +%s):yarninstall[collapsed=true]\\r\\e[0KYarn install"",
|
|
1857
|
-
"yarn install --immutable",
|
|
1858
|
-
"echo -e "\\e[0Ksection_end:$(date +%s):yarninstall\\r\\e[0K"",
|
|
1859
|
-
"yarn build",
|
|
1860
|
-
],
|
|
1861
|
-
"stage": "build",
|
|
1862
|
-
"variables": {
|
|
1863
|
-
"KUBERNETES_CPU_REQUEST": "0.45",
|
|
1864
|
-
"KUBERNETES_MEMORY_LIMIT": "4Gi",
|
|
1865
|
-
"KUBERNETES_MEMORY_REQUEST": "1Gi",
|
|
1866
|
-
},
|
|
1867
|
-
},
|
|
1868
|
-
"www ๐ Deploy | prod ": {
|
|
1869
|
-
"allow_failure": true,
|
|
1870
|
-
"cache": [],
|
|
1871
|
-
"image": "path/to/docker/jobs-default:the-version",
|
|
1872
|
-
"interruptible": true,
|
|
1873
|
-
"needs": [
|
|
1874
|
-
{
|
|
1875
|
-
"artifacts": false,
|
|
1876
|
-
"job": "api ๐ Deploy | prod ",
|
|
1877
|
-
},
|
|
1878
|
-
{
|
|
1879
|
-
"artifacts": true,
|
|
1880
|
-
"job": "www ๐จ app | prod ",
|
|
1881
|
-
},
|
|
1882
|
-
{
|
|
1883
|
-
"artifacts": true,
|
|
1884
|
-
"job": "www ๐งพ sbom | prod ",
|
|
1885
|
-
},
|
|
1886
|
-
],
|
|
1887
|
-
"retry": {
|
|
1888
|
-
"max": 2,
|
|
1889
|
-
"when": [
|
|
1890
|
-
"runner_system_failure",
|
|
1891
|
-
"stuck_or_timeout_failure",
|
|
1892
|
-
],
|
|
1893
|
-
},
|
|
1894
|
-
"rules": [
|
|
1895
|
-
{
|
|
1896
|
-
"when": "manual",
|
|
1897
|
-
},
|
|
1898
|
-
],
|
|
1899
|
-
"script": [
|
|
1900
|
-
"echo -e "\\e[0Ksection_start:$(date +%s):injectvars[collapsed=true]\\r\\e[0KInjecting variables"",
|
|
1901
|
-
"export ENV_SHORT="prod"",
|
|
1902
|
-
"export APP_DIR="www"",
|
|
1903
|
-
"export ENV_TYPE="prod"",
|
|
1904
|
-
"export BUILD_INFO_BUILD_ID="$(git describe --tags 2>/dev/null || git rev-parse HEAD)"",
|
|
1905
|
-
"export BUILD_INFO_BUILD_TIME="$CI_JOB_STARTED_AT"",
|
|
1906
|
-
"export BUILD_INFO_CURRENT_VERSION="$(tag=$(git ls-remote origin "refs/tags/v*[0-9]" 2>/dev/null | cut -f 2- | sort -V | tail -1 | sed 's/refs\\/tags\\/v//'); [ -z "$tag" ] && echo "0.0.0" || echo "$tag")"",
|
|
1907
|
-
"export HOST="unknown-host.example.com"",
|
|
1908
|
-
"export ROOT_URL="https://unknown-host.example.com"",
|
|
1909
|
-
"export HOST_INTERNAL="unknown-host.example.com"",
|
|
1910
|
-
"export HOST_CANONICAL="unknown-host.example.com"",
|
|
1911
|
-
"export ROOT_URL_INTERNAL="https://unknown-host.example.com"",
|
|
1912
|
-
"export _ALL_ENV_VAR_KEYS="[\\"ENV_SHORT\\",\\"APP_DIR\\",\\"ENV_TYPE\\",\\"BUILD_INFO_BUILD_ID\\",\\"BUILD_INFO_BUILD_TIME\\",\\"BUILD_INFO_CURRENT_VERSION\\",\\"HOST\\",\\"ROOT_URL\\",\\"HOST_INTERNAL\\",\\"HOST_CANONICAL\\",\\"ROOT_URL_INTERNAL\\"]"",
|
|
1913
|
-
"echo -e "\\e[0Ksection_end:$(date +%s):injectvars\\r\\e[0K"",
|
|
1914
|
-
"cd www",
|
|
1915
|
-
"yarn deploy",
|
|
1916
|
-
"echo 'Uploading SBOM to Dependency Track'",
|
|
1917
|
-
"/dtrackuploader https://dep.panter.swiss/ "$DT_KEY_PROD" upload "pan-test-app/www" "https://unknown-host.example.com" "__sbom.json" vex.json || true",
|
|
1918
|
-
],
|
|
1919
|
-
"stage": "deploy prod",
|
|
1920
|
-
"variables": {
|
|
1921
|
-
"KUBERNETES_CPU_REQUEST": "0.22",
|
|
1922
|
-
"KUBERNETES_MEMORY_LIMIT": "400Mi",
|
|
1923
|
-
"KUBERNETES_MEMORY_REQUEST": "200Mi",
|
|
1924
|
-
},
|
|
1925
|
-
},
|
|
1926
|
-
"www ๐ Deploy | stage ": {
|
|
1927
|
-
"allow_failure": false,
|
|
1928
|
-
"cache": [],
|
|
1929
|
-
"image": "path/to/docker/jobs-default:the-version",
|
|
1930
|
-
"interruptible": true,
|
|
1931
|
-
"needs": [
|
|
1932
|
-
{
|
|
1933
|
-
"artifacts": false,
|
|
1934
|
-
"job": "api ๐ Deploy | stage ",
|
|
1935
|
-
},
|
|
1936
|
-
{
|
|
1937
|
-
"artifacts": true,
|
|
1938
|
-
"job": "www ๐จ app | stage ",
|
|
1939
|
-
},
|
|
1940
|
-
{
|
|
1941
|
-
"artifacts": true,
|
|
1942
|
-
"job": "www ๐งพ sbom | stage ",
|
|
1943
|
-
},
|
|
1944
|
-
],
|
|
1945
|
-
"retry": {
|
|
1946
|
-
"max": 2,
|
|
1947
|
-
"when": [
|
|
1948
|
-
"runner_system_failure",
|
|
1949
|
-
"stuck_or_timeout_failure",
|
|
1950
|
-
],
|
|
1951
|
-
},
|
|
1952
|
-
"rules": [
|
|
1953
|
-
{
|
|
1954
|
-
"when": "on_success",
|
|
1955
|
-
},
|
|
1956
|
-
],
|
|
1957
|
-
"script": [
|
|
1958
|
-
"echo -e "\\e[0Ksection_start:$(date +%s):injectvars[collapsed=true]\\r\\e[0KInjecting variables"",
|
|
1959
|
-
"export ENV_SHORT="stage"",
|
|
1960
|
-
"export APP_DIR="www"",
|
|
1961
|
-
"export ENV_TYPE="stage"",
|
|
1962
|
-
"export BUILD_INFO_BUILD_ID="$(git describe --tags 2>/dev/null || git rev-parse HEAD)"",
|
|
1963
|
-
"export BUILD_INFO_BUILD_TIME="$CI_JOB_STARTED_AT"",
|
|
1964
|
-
"export BUILD_INFO_CURRENT_VERSION="$(tag=$(git ls-remote origin "refs/tags/v*[0-9]" 2>/dev/null | cut -f 2- | sort -V | tail -1 | sed 's/refs\\/tags\\/v//'); [ -z "$tag" ] && echo "0.0.0" || echo "$tag")"",
|
|
1965
|
-
"export HOST="unknown-host.example.com"",
|
|
1966
|
-
"export ROOT_URL="https://unknown-host.example.com"",
|
|
1967
|
-
"export HOST_INTERNAL="unknown-host.example.com"",
|
|
1968
|
-
"export HOST_CANONICAL="unknown-host.example.com"",
|
|
1969
|
-
"export ROOT_URL_INTERNAL="https://unknown-host.example.com"",
|
|
1970
|
-
"export _ALL_ENV_VAR_KEYS="[\\"ENV_SHORT\\",\\"APP_DIR\\",\\"ENV_TYPE\\",\\"BUILD_INFO_BUILD_ID\\",\\"BUILD_INFO_BUILD_TIME\\",\\"BUILD_INFO_CURRENT_VERSION\\",\\"HOST\\",\\"ROOT_URL\\",\\"HOST_INTERNAL\\",\\"HOST_CANONICAL\\",\\"ROOT_URL_INTERNAL\\"]"",
|
|
1971
|
-
"echo -e "\\e[0Ksection_end:$(date +%s):injectvars\\r\\e[0K"",
|
|
1972
|
-
"cd www",
|
|
1973
|
-
"yarn deploy",
|
|
1974
|
-
"echo 'Uploading SBOM to Dependency Track'",
|
|
1975
|
-
"/dtrackuploader https://dep.panter.swiss/ "$DT_KEY_PROD" upload "pan-test-app/www" "https://unknown-host.example.com" "__sbom.json" vex.json || true",
|
|
1976
|
-
],
|
|
1977
|
-
"stage": "deploy stage",
|
|
1978
|
-
"variables": {
|
|
1979
|
-
"KUBERNETES_CPU_REQUEST": "0.22",
|
|
1980
|
-
"KUBERNETES_MEMORY_LIMIT": "400Mi",
|
|
1981
|
-
"KUBERNETES_MEMORY_REQUEST": "200Mi",
|
|
1982
|
-
},
|
|
1983
|
-
},
|
|
1984
|
-
"www ๐งพ sbom | prod ": {
|
|
1985
|
-
"allow_failure": true,
|
|
1986
|
-
"artifacts": {
|
|
1987
|
-
"paths": [
|
|
1988
|
-
"__sbom.json",
|
|
1989
|
-
],
|
|
1990
|
-
},
|
|
1991
|
-
"image": "aquasec/trivy:0.38.3",
|
|
1992
|
-
"interruptible": true,
|
|
1993
|
-
"needs": [],
|
|
1994
|
-
"retry": {
|
|
1995
|
-
"max": 2,
|
|
1996
|
-
"when": [
|
|
1997
|
-
"runner_system_failure",
|
|
1998
|
-
"stuck_or_timeout_failure",
|
|
1999
|
-
],
|
|
2000
|
-
},
|
|
2001
|
-
"script": [
|
|
2002
|
-
"echo -e "\\e[0Ksection_start:$(date +%s):injectvars[collapsed=true]\\r\\e[0KInjecting variables"",
|
|
2003
|
-
"echo -e "\\e[0Ksection_end:$(date +%s):injectvars\\r\\e[0K"",
|
|
2004
|
-
"trivy fs --quiet --format cyclonedx --output "__sbom.json" www",
|
|
2005
|
-
],
|
|
2006
|
-
"stage": "build",
|
|
2007
|
-
"variables": {},
|
|
2008
|
-
},
|
|
2009
|
-
"www ๐งพ sbom | stage ": {
|
|
2010
|
-
"allow_failure": true,
|
|
2011
|
-
"artifacts": {
|
|
2012
|
-
"paths": [
|
|
2013
|
-
"__sbom.json",
|
|
2014
|
-
],
|
|
2015
|
-
},
|
|
2016
|
-
"image": "aquasec/trivy:0.38.3",
|
|
2017
|
-
"interruptible": true,
|
|
2018
|
-
"needs": [],
|
|
2019
|
-
"retry": {
|
|
2020
|
-
"max": 2,
|
|
2021
|
-
"when": [
|
|
2022
|
-
"runner_system_failure",
|
|
2023
|
-
"stuck_or_timeout_failure",
|
|
2024
|
-
],
|
|
2025
|
-
},
|
|
2026
|
-
"script": [
|
|
2027
|
-
"echo -e "\\e[0Ksection_start:$(date +%s):injectvars[collapsed=true]\\r\\e[0KInjecting variables"",
|
|
2028
|
-
"echo -e "\\e[0Ksection_end:$(date +%s):injectvars\\r\\e[0K"",
|
|
2029
|
-
"trivy fs --quiet --format cyclonedx --output "__sbom.json" www",
|
|
2030
|
-
],
|
|
2031
|
-
"stage": "build",
|
|
2032
|
-
"variables": {},
|
|
2033
|
-
},
|
|
2034
|
-
},
|
|
2035
|
-
"stages": [
|
|
2036
|
-
"setup",
|
|
2037
|
-
"setup dev",
|
|
2038
|
-
"setup review",
|
|
2039
|
-
"setup stage",
|
|
2040
|
-
"setup prod",
|
|
2041
|
-
"test",
|
|
2042
|
-
"test dev",
|
|
2043
|
-
"test review",
|
|
2044
|
-
"test stage",
|
|
2045
|
-
"test prod",
|
|
2046
|
-
"build",
|
|
2047
|
-
"build dev",
|
|
2048
|
-
"build review",
|
|
2049
|
-
"build stage",
|
|
2050
|
-
"build prod",
|
|
2051
|
-
"deploy",
|
|
2052
|
-
"deploy dev",
|
|
2053
|
-
"deploy review",
|
|
2054
|
-
"deploy stage",
|
|
2055
|
-
"deploy prod",
|
|
2056
|
-
"verify",
|
|
2057
|
-
"verify dev",
|
|
2058
|
-
"verify review",
|
|
2059
|
-
"verify stage",
|
|
2060
|
-
"verify prod",
|
|
2061
|
-
"rollback",
|
|
2062
|
-
"rollback dev",
|
|
2063
|
-
"rollback review",
|
|
2064
|
-
"rollback stage",
|
|
2065
|
-
"rollback prod",
|
|
2066
|
-
"stop",
|
|
2067
|
-
"stop dev",
|
|
2068
|
-
"stop review",
|
|
2069
|
-
"stop stage",
|
|
2070
|
-
"stop prod",
|
|
2071
|
-
],
|
|
2072
|
-
"variables": {
|
|
2073
|
-
"ARTIFACT_COMPRESSION_LEVEL": "fast",
|
|
2074
|
-
"CACHE_COMPRESSION_LEVEL": "fast",
|
|
2075
|
-
"FF_USE_FASTZIP": "true",
|
|
2076
|
-
"GIT_DEPTH": "1",
|
|
2077
|
-
"TRANSFER_METER_FREQUENCY": "5s",
|
|
2078
|
-
},
|
|
2079
|
-
"workflow": {
|
|
2080
|
-
"rules": [
|
|
2081
|
-
{
|
|
2082
|
-
"if": "$CI_COMMIT_TAG",
|
|
2083
|
-
},
|
|
2084
|
-
{
|
|
2085
|
-
"if": "$CI_COMMIT_MESSAGE =~ /^chore\\(release\\).*/",
|
|
2086
|
-
"when": "never",
|
|
2087
|
-
},
|
|
2088
|
-
{
|
|
2089
|
-
"if": "$CI_PIPELINE_SOURCE == "schedule"",
|
|
2090
|
-
"when": "never",
|
|
2091
|
-
},
|
|
2092
|
-
{
|
|
2093
|
-
"if": "$CI_COMMIT_BRANCH =~ /^[0-9]+.([0-9]+|x).x$/",
|
|
2094
|
-
},
|
|
2095
|
-
{
|
|
2096
|
-
"if": "$CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH",
|
|
2097
|
-
},
|
|
2098
|
-
{
|
|
2099
|
-
"if": "$CI_MERGE_REQUEST_ID",
|
|
2100
|
-
},
|
|
2101
|
-
],
|
|
2102
|
-
},
|
|
2103
|
-
},
|
|
2104
|
-
}
|
|
3
|
+
exports[`matches snapshot for wait-for-other-deploy local pipeline YAML 1`] = `
|
|
4
|
+
"image: path/to/docker/jobs-default:the-version
|
|
5
|
+
stages:
|
|
6
|
+
- setup
|
|
7
|
+
- setup dev
|
|
8
|
+
- setup review
|
|
9
|
+
- setup stage
|
|
10
|
+
- setup prod
|
|
11
|
+
- test
|
|
12
|
+
- test dev
|
|
13
|
+
- test review
|
|
14
|
+
- test stage
|
|
15
|
+
- test prod
|
|
16
|
+
- build
|
|
17
|
+
- build dev
|
|
18
|
+
- build review
|
|
19
|
+
- build stage
|
|
20
|
+
- build prod
|
|
21
|
+
- deploy
|
|
22
|
+
- deploy dev
|
|
23
|
+
- deploy review
|
|
24
|
+
- deploy stage
|
|
25
|
+
- deploy prod
|
|
26
|
+
- verify
|
|
27
|
+
- verify dev
|
|
28
|
+
- verify review
|
|
29
|
+
- verify stage
|
|
30
|
+
- verify prod
|
|
31
|
+
- rollback
|
|
32
|
+
- rollback dev
|
|
33
|
+
- rollback review
|
|
34
|
+
- rollback stage
|
|
35
|
+
- rollback prod
|
|
36
|
+
- stop
|
|
37
|
+
- stop dev
|
|
38
|
+
- stop review
|
|
39
|
+
- stop stage
|
|
40
|
+
- stop prod
|
|
41
|
+
- release
|
|
42
|
+
variables:
|
|
43
|
+
FF_USE_FASTZIP: 'true'
|
|
44
|
+
ARTIFACT_COMPRESSION_LEVEL: fast
|
|
45
|
+
CACHE_COMPRESSION_LEVEL: fast
|
|
46
|
+
TRANSFER_METER_FREQUENCY: 5s
|
|
47
|
+
GIT_DEPTH: '1'
|
|
48
|
+
api ๐ก audit:
|
|
49
|
+
stage: test
|
|
50
|
+
image: path/to/docker/jobs-default:the-version
|
|
51
|
+
variables:
|
|
52
|
+
KUBERNETES_CPU_REQUEST: '0.45'
|
|
53
|
+
KUBERNETES_MEMORY_REQUEST: 1Gi
|
|
54
|
+
KUBERNETES_MEMORY_LIMIT: 4Gi
|
|
55
|
+
script:
|
|
56
|
+
- echo -e "\\e[0Ksection_start:$(date +%s):injectvars[collapsed=true]\\r\\e[0KInjecting variables"
|
|
57
|
+
- export APP_PATH="api"
|
|
58
|
+
- echo -e "\\e[0Ksection_end:$(date +%s):injectvars\\r\\e[0K"
|
|
59
|
+
- cd api
|
|
60
|
+
- yarn npm audit --environment production
|
|
61
|
+
rules:
|
|
62
|
+
- when: never
|
|
63
|
+
if: $CI_COMMIT_MESSAGE =~ /^chore\\(release\\).*/
|
|
64
|
+
- if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH
|
|
65
|
+
- if: $CI_MERGE_REQUEST_ID
|
|
66
|
+
needs: []
|
|
67
|
+
retry: &a1
|
|
68
|
+
max: 2
|
|
69
|
+
when:
|
|
70
|
+
- runner_system_failure
|
|
71
|
+
- stuck_or_timeout_failure
|
|
72
|
+
interruptible: true
|
|
73
|
+
allow_failure: true
|
|
74
|
+
api ๐ฎ lint:
|
|
75
|
+
stage: test
|
|
76
|
+
image: path/to/docker/jobs-default:the-version
|
|
77
|
+
variables:
|
|
78
|
+
KUBERNETES_CPU_REQUEST: '0.45'
|
|
79
|
+
KUBERNETES_MEMORY_REQUEST: 1Gi
|
|
80
|
+
KUBERNETES_MEMORY_LIMIT: 4Gi
|
|
81
|
+
script:
|
|
82
|
+
- echo -e "\\e[0Ksection_start:$(date +%s):injectvars[collapsed=true]\\r\\e[0KInjecting variables"
|
|
83
|
+
- export APP_PATH="api"
|
|
84
|
+
- echo -e "\\e[0Ksection_end:$(date +%s):injectvars\\r\\e[0K"
|
|
85
|
+
- echo -e "\\e[0Ksection_start:$(date +%s):nodeinstall[collapsed=true]\\r\\e[0KEnsure node version"
|
|
86
|
+
- if [ -f ~/.nvm/nvm.sh ]; then source ~/.nvm/nvm.sh; fi
|
|
87
|
+
- if command -v nvm &> /dev/null && [ -f ./.nvmrc ]; then nvm install; fi
|
|
88
|
+
- echo -e "\\e[0Ksection_end:$(date +%s):nodeinstall\\r\\e[0K"
|
|
89
|
+
- cd api
|
|
90
|
+
- echo -e "\\e[0Ksection_start:$(date +%s):nodeinstall[collapsed=true]\\r\\e[0KEnsure node version"
|
|
91
|
+
- if [ -f ~/.nvm/nvm.sh ]; then source ~/.nvm/nvm.sh; fi
|
|
92
|
+
- if command -v nvm &> /dev/null && [ -f ./.nvmrc ]; then nvm install; fi
|
|
93
|
+
- echo -e "\\e[0Ksection_end:$(date +%s):nodeinstall\\r\\e[0K"
|
|
94
|
+
- echo -e "\\e[0Ksection_start:$(date +%s):yarninstall[collapsed=true]\\r\\e[0KYarn install"
|
|
95
|
+
- yarn install --immutable
|
|
96
|
+
- echo -e "\\e[0Ksection_end:$(date +%s):yarninstall\\r\\e[0K"
|
|
97
|
+
- yarn lint
|
|
98
|
+
cache:
|
|
99
|
+
- key: api-yarn
|
|
100
|
+
policy: pull-push
|
|
101
|
+
paths:
|
|
102
|
+
- api/.yarn
|
|
103
|
+
- key: api-node-modules
|
|
104
|
+
policy: pull-push
|
|
105
|
+
paths:
|
|
106
|
+
- api/node_modules
|
|
107
|
+
rules:
|
|
108
|
+
- when: never
|
|
109
|
+
if: $CI_COMMIT_MESSAGE =~ /^chore\\(release\\).*/
|
|
110
|
+
- if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH
|
|
111
|
+
- if: $CI_MERGE_REQUEST_ID
|
|
112
|
+
needs: []
|
|
113
|
+
retry: *a1
|
|
114
|
+
interruptible: true
|
|
115
|
+
api ๐งช test:
|
|
116
|
+
stage: test
|
|
117
|
+
image: path/to/docker/jobs-testing-chrome:the-version
|
|
118
|
+
variables:
|
|
119
|
+
KUBERNETES_CPU_REQUEST: '0.45'
|
|
120
|
+
KUBERNETES_MEMORY_REQUEST: 1Gi
|
|
121
|
+
KUBERNETES_MEMORY_LIMIT: 4Gi
|
|
122
|
+
script:
|
|
123
|
+
- echo -e "\\e[0Ksection_start:$(date +%s):injectvars[collapsed=true]\\r\\e[0KInjecting variables"
|
|
124
|
+
- export APP_PATH="api"
|
|
125
|
+
- echo -e "\\e[0Ksection_end:$(date +%s):injectvars\\r\\e[0K"
|
|
126
|
+
- echo -e "\\e[0Ksection_start:$(date +%s):nodeinstall[collapsed=true]\\r\\e[0KEnsure node version"
|
|
127
|
+
- if [ -f ~/.nvm/nvm.sh ]; then source ~/.nvm/nvm.sh; fi
|
|
128
|
+
- if command -v nvm &> /dev/null && [ -f ./.nvmrc ]; then nvm install; fi
|
|
129
|
+
- echo -e "\\e[0Ksection_end:$(date +%s):nodeinstall\\r\\e[0K"
|
|
130
|
+
- cd api
|
|
131
|
+
- echo -e "\\e[0Ksection_start:$(date +%s):nodeinstall[collapsed=true]\\r\\e[0KEnsure node version"
|
|
132
|
+
- if [ -f ~/.nvm/nvm.sh ]; then source ~/.nvm/nvm.sh; fi
|
|
133
|
+
- if command -v nvm &> /dev/null && [ -f ./.nvmrc ]; then nvm install; fi
|
|
134
|
+
- echo -e "\\e[0Ksection_end:$(date +%s):nodeinstall\\r\\e[0K"
|
|
135
|
+
- echo -e "\\e[0Ksection_start:$(date +%s):yarninstall[collapsed=true]\\r\\e[0KYarn install"
|
|
136
|
+
- yarn install --immutable
|
|
137
|
+
- echo -e "\\e[0Ksection_end:$(date +%s):yarninstall\\r\\e[0K"
|
|
138
|
+
- yarn test
|
|
139
|
+
cache:
|
|
140
|
+
- key: api-yarn
|
|
141
|
+
policy: pull-push
|
|
142
|
+
paths:
|
|
143
|
+
- api/.yarn
|
|
144
|
+
- key: api-node-modules
|
|
145
|
+
policy: pull-push
|
|
146
|
+
paths:
|
|
147
|
+
- api/node_modules
|
|
148
|
+
rules:
|
|
149
|
+
- when: never
|
|
150
|
+
if: $CI_COMMIT_MESSAGE =~ /^chore\\(release\\).*/
|
|
151
|
+
- if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH
|
|
152
|
+
- if: $CI_MERGE_REQUEST_ID
|
|
153
|
+
needs: []
|
|
154
|
+
retry: *a1
|
|
155
|
+
interruptible: true
|
|
156
|
+
'api ๐จ app | dev ':
|
|
157
|
+
stage: build
|
|
158
|
+
image: path/to/docker/jobs-default:the-version
|
|
159
|
+
variables:
|
|
160
|
+
KUBERNETES_CPU_REQUEST: '0.45'
|
|
161
|
+
KUBERNETES_MEMORY_REQUEST: 1Gi
|
|
162
|
+
KUBERNETES_MEMORY_LIMIT: 4Gi
|
|
163
|
+
script:
|
|
164
|
+
- echo -e "\\e[0Ksection_start:$(date +%s):injectvars[collapsed=true]\\r\\e[0KInjecting variables"
|
|
165
|
+
- export ENV_SHORT="dev"
|
|
166
|
+
- export APP_DIR="api"
|
|
167
|
+
- export ENV_TYPE="dev"
|
|
168
|
+
- export BUILD_INFO_BUILD_ID="$(git describe --tags 2>/dev/null || git rev-parse HEAD)"
|
|
169
|
+
- export BUILD_INFO_BUILD_TIME="$CI_JOB_STARTED_AT"
|
|
170
|
+
- export BUILD_INFO_CURRENT_VERSION="$(tag=$(git ls-remote origin "refs/tags/v*[0-9]" 2>/dev/null | cut -f 2- | sort -V | tail -1 | sed 's/refs\\/tags\\/v//'); [ -z "$tag" ] && echo "0.0.0" || echo "$tag")"
|
|
171
|
+
- export HOST="unknown-host.example.com"
|
|
172
|
+
- export ROOT_URL="https://unknown-host.example.com"
|
|
173
|
+
- export HOST_INTERNAL="unknown-host.example.com"
|
|
174
|
+
- export HOST_CANONICAL="unknown-host.example.com"
|
|
175
|
+
- export ROOT_URL_INTERNAL="https://unknown-host.example.com"
|
|
176
|
+
- export _ALL_ENV_VAR_KEYS="[\\"ENV_SHORT\\",\\"APP_DIR\\",\\"ENV_TYPE\\",\\"BUILD_INFO_BUILD_ID\\",\\"BUILD_INFO_BUILD_TIME\\",\\"BUILD_INFO_CURRENT_VERSION\\",\\"HOST\\",\\"ROOT_URL\\",\\"HOST_INTERNAL\\",\\"HOST_CANONICAL\\",\\"ROOT_URL_INTERNAL\\"]"
|
|
177
|
+
- echo -e "\\e[0Ksection_end:$(date +%s):injectvars\\r\\e[0K"
|
|
178
|
+
- echo '{"id":"$(git describe --tags 2>/dev/null || git rev-parse HEAD)","time":"$CI_JOB_STARTED_AT"}' > api/__build_info.json
|
|
179
|
+
- echo -e "\\e[0Ksection_start:$(date +%s):nodeinstall[collapsed=true]\\r\\e[0KEnsure node version"
|
|
180
|
+
- if [ -f ~/.nvm/nvm.sh ]; then source ~/.nvm/nvm.sh; fi
|
|
181
|
+
- if command -v nvm &> /dev/null && [ -f ./.nvmrc ]; then nvm install; fi
|
|
182
|
+
- echo -e "\\e[0Ksection_end:$(date +%s):nodeinstall\\r\\e[0K"
|
|
183
|
+
- cd api
|
|
184
|
+
- echo -e "\\e[0Ksection_start:$(date +%s):nodeinstall[collapsed=true]\\r\\e[0KEnsure node version"
|
|
185
|
+
- if [ -f ~/.nvm/nvm.sh ]; then source ~/.nvm/nvm.sh; fi
|
|
186
|
+
- if command -v nvm &> /dev/null && [ -f ./.nvmrc ]; then nvm install; fi
|
|
187
|
+
- echo -e "\\e[0Ksection_end:$(date +%s):nodeinstall\\r\\e[0K"
|
|
188
|
+
- echo -e "\\e[0Ksection_start:$(date +%s):yarninstall[collapsed=true]\\r\\e[0KYarn install"
|
|
189
|
+
- yarn install --immutable
|
|
190
|
+
- echo -e "\\e[0Ksection_end:$(date +%s):yarninstall\\r\\e[0K"
|
|
191
|
+
- yarn build
|
|
192
|
+
cache:
|
|
193
|
+
- key: api-yarn
|
|
194
|
+
policy: pull-push
|
|
195
|
+
paths:
|
|
196
|
+
- api/.yarn
|
|
197
|
+
- key: api-node-modules
|
|
198
|
+
policy: pull-push
|
|
199
|
+
paths:
|
|
200
|
+
- api/node_modules
|
|
201
|
+
- key: api-next-cache
|
|
202
|
+
policy: pull-push
|
|
203
|
+
paths:
|
|
204
|
+
- api/.next/cache
|
|
205
|
+
artifacts:
|
|
206
|
+
paths:
|
|
207
|
+
- api/__build_info.json
|
|
208
|
+
- api/.next
|
|
209
|
+
- api/dist
|
|
210
|
+
expire_in: 1 day
|
|
211
|
+
when: always
|
|
212
|
+
reports: {}
|
|
213
|
+
rules:
|
|
214
|
+
- when: never
|
|
215
|
+
if: $CI_COMMIT_MESSAGE =~ /^chore\\(release\\).*/
|
|
216
|
+
- if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH
|
|
217
|
+
needs: []
|
|
218
|
+
retry: *a1
|
|
219
|
+
interruptible: true
|
|
220
|
+
'api ๐งพ sbom | dev ':
|
|
221
|
+
stage: build
|
|
222
|
+
image: aquasec/trivy:0.38.3
|
|
223
|
+
variables: {}
|
|
224
|
+
script:
|
|
225
|
+
- echo -e "\\e[0Ksection_start:$(date +%s):injectvars[collapsed=true]\\r\\e[0KInjecting variables"
|
|
226
|
+
- echo -e "\\e[0Ksection_end:$(date +%s):injectvars\\r\\e[0K"
|
|
227
|
+
- trivy fs --quiet --format cyclonedx --output "__sbom.json" api
|
|
228
|
+
artifacts:
|
|
229
|
+
paths:
|
|
230
|
+
- __sbom.json
|
|
231
|
+
rules:
|
|
232
|
+
- when: never
|
|
233
|
+
if: $CI_COMMIT_MESSAGE =~ /^chore\\(release\\).*/
|
|
234
|
+
- if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH
|
|
235
|
+
needs: []
|
|
236
|
+
retry: *a1
|
|
237
|
+
interruptible: true
|
|
238
|
+
allow_failure: true
|
|
239
|
+
'api ๐ Deploy | dev ':
|
|
240
|
+
stage: deploy dev
|
|
241
|
+
image: path/to/docker/jobs-default:the-version
|
|
242
|
+
variables:
|
|
243
|
+
KUBERNETES_CPU_REQUEST: '0.22'
|
|
244
|
+
KUBERNETES_MEMORY_REQUEST: 200Mi
|
|
245
|
+
KUBERNETES_MEMORY_LIMIT: 400Mi
|
|
246
|
+
script:
|
|
247
|
+
- echo -e "\\e[0Ksection_start:$(date +%s):injectvars[collapsed=true]\\r\\e[0KInjecting variables"
|
|
248
|
+
- export ENV_SHORT="dev"
|
|
249
|
+
- export APP_DIR="api"
|
|
250
|
+
- export ENV_TYPE="dev"
|
|
251
|
+
- export BUILD_INFO_BUILD_ID="$(git describe --tags 2>/dev/null || git rev-parse HEAD)"
|
|
252
|
+
- export BUILD_INFO_BUILD_TIME="$CI_JOB_STARTED_AT"
|
|
253
|
+
- export BUILD_INFO_CURRENT_VERSION="$(tag=$(git ls-remote origin "refs/tags/v*[0-9]" 2>/dev/null | cut -f 2- | sort -V | tail -1 | sed 's/refs\\/tags\\/v//'); [ -z "$tag" ] && echo "0.0.0" || echo "$tag")"
|
|
254
|
+
- export HOST="unknown-host.example.com"
|
|
255
|
+
- export ROOT_URL="https://unknown-host.example.com"
|
|
256
|
+
- export HOST_INTERNAL="unknown-host.example.com"
|
|
257
|
+
- export HOST_CANONICAL="unknown-host.example.com"
|
|
258
|
+
- export ROOT_URL_INTERNAL="https://unknown-host.example.com"
|
|
259
|
+
- export _ALL_ENV_VAR_KEYS="[\\"ENV_SHORT\\",\\"APP_DIR\\",\\"ENV_TYPE\\",\\"BUILD_INFO_BUILD_ID\\",\\"BUILD_INFO_BUILD_TIME\\",\\"BUILD_INFO_CURRENT_VERSION\\",\\"HOST\\",\\"ROOT_URL\\",\\"HOST_INTERNAL\\",\\"HOST_CANONICAL\\",\\"ROOT_URL_INTERNAL\\"]"
|
|
260
|
+
- echo -e "\\e[0Ksection_end:$(date +%s):injectvars\\r\\e[0K"
|
|
261
|
+
- cd api
|
|
262
|
+
- yarn deploy
|
|
263
|
+
- echo 'Uploading SBOM to Dependency Track'
|
|
264
|
+
- /dtrackuploader https://dep.panter.swiss/ "$DT_KEY_PROD" upload "pan-test-app/api" "https://unknown-host.example.com" "__sbom.json" vex.json || true
|
|
265
|
+
cache: []
|
|
266
|
+
rules:
|
|
267
|
+
- when: never
|
|
268
|
+
if: $CI_COMMIT_MESSAGE =~ /^chore\\(release\\).*/
|
|
269
|
+
- when: on_success
|
|
270
|
+
if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH
|
|
271
|
+
needs:
|
|
272
|
+
- job: api ๐ฎ lint
|
|
273
|
+
artifacts: false
|
|
274
|
+
- job: 'api ๐จ app | dev '
|
|
275
|
+
artifacts: true
|
|
276
|
+
- job: api ๐งช test
|
|
277
|
+
artifacts: false
|
|
278
|
+
- job: 'api ๐งพ sbom | dev '
|
|
279
|
+
artifacts: true
|
|
280
|
+
- job: api ๐ก audit
|
|
281
|
+
artifacts: false
|
|
282
|
+
retry: *a1
|
|
283
|
+
interruptible: true
|
|
284
|
+
allow_failure: false
|
|
285
|
+
'api ๐จ app | review ':
|
|
286
|
+
stage: build
|
|
287
|
+
image: path/to/docker/jobs-default:the-version
|
|
288
|
+
variables:
|
|
289
|
+
KUBERNETES_CPU_REQUEST: '0.45'
|
|
290
|
+
KUBERNETES_MEMORY_REQUEST: 1Gi
|
|
291
|
+
KUBERNETES_MEMORY_LIMIT: 4Gi
|
|
292
|
+
script:
|
|
293
|
+
- echo -e "\\e[0Ksection_start:$(date +%s):injectvars[collapsed=true]\\r\\e[0KInjecting variables"
|
|
294
|
+
- export ENV_SHORT="review"
|
|
295
|
+
- export APP_DIR="api"
|
|
296
|
+
- export ENV_TYPE="review"
|
|
297
|
+
- export BUILD_INFO_BUILD_ID="$(git describe --tags 2>/dev/null || git rev-parse HEAD)"
|
|
298
|
+
- export BUILD_INFO_BUILD_TIME="$CI_JOB_STARTED_AT"
|
|
299
|
+
- export BUILD_INFO_CURRENT_VERSION="$(tag=$(git ls-remote origin "refs/tags/v*[0-9]" 2>/dev/null | cut -f 2- | sort -V | tail -1 | sed 's/refs\\/tags\\/v//'); [ -z "$tag" ] && echo "0.0.0" || echo "$tag")"
|
|
300
|
+
- export HOST="unknown-host.example.com"
|
|
301
|
+
- export ROOT_URL="https://unknown-host.example.com"
|
|
302
|
+
- export HOST_INTERNAL="unknown-host.example.com"
|
|
303
|
+
- export HOST_CANONICAL="unknown-host.example.com"
|
|
304
|
+
- export ROOT_URL_INTERNAL="https://unknown-host.example.com"
|
|
305
|
+
- export _ALL_ENV_VAR_KEYS="[\\"ENV_SHORT\\",\\"APP_DIR\\",\\"ENV_TYPE\\",\\"BUILD_INFO_BUILD_ID\\",\\"BUILD_INFO_BUILD_TIME\\",\\"BUILD_INFO_CURRENT_VERSION\\",\\"HOST\\",\\"ROOT_URL\\",\\"HOST_INTERNAL\\",\\"HOST_CANONICAL\\",\\"ROOT_URL_INTERNAL\\"]"
|
|
306
|
+
- echo -e "\\e[0Ksection_end:$(date +%s):injectvars\\r\\e[0K"
|
|
307
|
+
- echo '{"id":"$(git describe --tags 2>/dev/null || git rev-parse HEAD)","time":"$CI_JOB_STARTED_AT"}' > api/__build_info.json
|
|
308
|
+
- echo -e "\\e[0Ksection_start:$(date +%s):nodeinstall[collapsed=true]\\r\\e[0KEnsure node version"
|
|
309
|
+
- if [ -f ~/.nvm/nvm.sh ]; then source ~/.nvm/nvm.sh; fi
|
|
310
|
+
- if command -v nvm &> /dev/null && [ -f ./.nvmrc ]; then nvm install; fi
|
|
311
|
+
- echo -e "\\e[0Ksection_end:$(date +%s):nodeinstall\\r\\e[0K"
|
|
312
|
+
- cd api
|
|
313
|
+
- echo -e "\\e[0Ksection_start:$(date +%s):nodeinstall[collapsed=true]\\r\\e[0KEnsure node version"
|
|
314
|
+
- if [ -f ~/.nvm/nvm.sh ]; then source ~/.nvm/nvm.sh; fi
|
|
315
|
+
- if command -v nvm &> /dev/null && [ -f ./.nvmrc ]; then nvm install; fi
|
|
316
|
+
- echo -e "\\e[0Ksection_end:$(date +%s):nodeinstall\\r\\e[0K"
|
|
317
|
+
- echo -e "\\e[0Ksection_start:$(date +%s):yarninstall[collapsed=true]\\r\\e[0KYarn install"
|
|
318
|
+
- yarn install --immutable
|
|
319
|
+
- echo -e "\\e[0Ksection_end:$(date +%s):yarninstall\\r\\e[0K"
|
|
320
|
+
- yarn build
|
|
321
|
+
cache:
|
|
322
|
+
- key: api-yarn
|
|
323
|
+
policy: pull-push
|
|
324
|
+
paths:
|
|
325
|
+
- api/.yarn
|
|
326
|
+
- key: api-node-modules
|
|
327
|
+
policy: pull-push
|
|
328
|
+
paths:
|
|
329
|
+
- api/node_modules
|
|
330
|
+
- key: api-next-cache
|
|
331
|
+
policy: pull-push
|
|
332
|
+
paths:
|
|
333
|
+
- api/.next/cache
|
|
334
|
+
artifacts:
|
|
335
|
+
paths:
|
|
336
|
+
- api/__build_info.json
|
|
337
|
+
- api/.next
|
|
338
|
+
- api/dist
|
|
339
|
+
expire_in: 1 day
|
|
340
|
+
when: always
|
|
341
|
+
reports: {}
|
|
342
|
+
rules:
|
|
343
|
+
- if: $CI_MERGE_REQUEST_ID
|
|
344
|
+
needs: []
|
|
345
|
+
retry: *a1
|
|
346
|
+
interruptible: true
|
|
347
|
+
'api ๐งพ sbom | review ':
|
|
348
|
+
stage: build
|
|
349
|
+
image: aquasec/trivy:0.38.3
|
|
350
|
+
variables: {}
|
|
351
|
+
script:
|
|
352
|
+
- echo -e "\\e[0Ksection_start:$(date +%s):injectvars[collapsed=true]\\r\\e[0KInjecting variables"
|
|
353
|
+
- echo -e "\\e[0Ksection_end:$(date +%s):injectvars\\r\\e[0K"
|
|
354
|
+
- trivy fs --quiet --format cyclonedx --output "__sbom.json" api
|
|
355
|
+
artifacts:
|
|
356
|
+
paths:
|
|
357
|
+
- __sbom.json
|
|
358
|
+
rules:
|
|
359
|
+
- if: $CI_MERGE_REQUEST_ID
|
|
360
|
+
needs: []
|
|
361
|
+
retry: *a1
|
|
362
|
+
interruptible: true
|
|
363
|
+
allow_failure: true
|
|
364
|
+
'api ๐ Deploy | review ':
|
|
365
|
+
stage: deploy review
|
|
366
|
+
image: path/to/docker/jobs-default:the-version
|
|
367
|
+
variables:
|
|
368
|
+
KUBERNETES_CPU_REQUEST: '0.22'
|
|
369
|
+
KUBERNETES_MEMORY_REQUEST: 200Mi
|
|
370
|
+
KUBERNETES_MEMORY_LIMIT: 400Mi
|
|
371
|
+
script:
|
|
372
|
+
- echo -e "\\e[0Ksection_start:$(date +%s):injectvars[collapsed=true]\\r\\e[0KInjecting variables"
|
|
373
|
+
- export ENV_SHORT="review"
|
|
374
|
+
- export APP_DIR="api"
|
|
375
|
+
- export ENV_TYPE="review"
|
|
376
|
+
- export BUILD_INFO_BUILD_ID="$(git describe --tags 2>/dev/null || git rev-parse HEAD)"
|
|
377
|
+
- export BUILD_INFO_BUILD_TIME="$CI_JOB_STARTED_AT"
|
|
378
|
+
- export BUILD_INFO_CURRENT_VERSION="$(tag=$(git ls-remote origin "refs/tags/v*[0-9]" 2>/dev/null | cut -f 2- | sort -V | tail -1 | sed 's/refs\\/tags\\/v//'); [ -z "$tag" ] && echo "0.0.0" || echo "$tag")"
|
|
379
|
+
- export HOST="unknown-host.example.com"
|
|
380
|
+
- export ROOT_URL="https://unknown-host.example.com"
|
|
381
|
+
- export HOST_INTERNAL="unknown-host.example.com"
|
|
382
|
+
- export HOST_CANONICAL="unknown-host.example.com"
|
|
383
|
+
- export ROOT_URL_INTERNAL="https://unknown-host.example.com"
|
|
384
|
+
- export _ALL_ENV_VAR_KEYS="[\\"ENV_SHORT\\",\\"APP_DIR\\",\\"ENV_TYPE\\",\\"BUILD_INFO_BUILD_ID\\",\\"BUILD_INFO_BUILD_TIME\\",\\"BUILD_INFO_CURRENT_VERSION\\",\\"HOST\\",\\"ROOT_URL\\",\\"HOST_INTERNAL\\",\\"HOST_CANONICAL\\",\\"ROOT_URL_INTERNAL\\"]"
|
|
385
|
+
- echo -e "\\e[0Ksection_end:$(date +%s):injectvars\\r\\e[0K"
|
|
386
|
+
- cd api
|
|
387
|
+
- yarn deploy
|
|
388
|
+
- echo 'Uploading SBOM to Dependency Track'
|
|
389
|
+
- /dtrackuploader https://dep.panter.swiss/ "$DT_KEY_PROD" upload "pan-test-app/api" "https://unknown-host.example.com" "__sbom.json" vex.json || true
|
|
390
|
+
cache: []
|
|
391
|
+
rules:
|
|
392
|
+
- when: on_success
|
|
393
|
+
if: $CI_MERGE_REQUEST_ID
|
|
394
|
+
needs:
|
|
395
|
+
- job: api ๐ฎ lint
|
|
396
|
+
artifacts: false
|
|
397
|
+
- job: 'api ๐จ app | review '
|
|
398
|
+
artifacts: true
|
|
399
|
+
- job: api ๐งช test
|
|
400
|
+
artifacts: false
|
|
401
|
+
- job: 'api ๐งพ sbom | review '
|
|
402
|
+
artifacts: true
|
|
403
|
+
- job: api ๐ก audit
|
|
404
|
+
artifacts: false
|
|
405
|
+
retry: *a1
|
|
406
|
+
interruptible: true
|
|
407
|
+
allow_failure: false
|
|
408
|
+
'api ๐จ app | stage ':
|
|
409
|
+
stage: build
|
|
410
|
+
image: path/to/docker/jobs-default:the-version
|
|
411
|
+
variables:
|
|
412
|
+
KUBERNETES_CPU_REQUEST: '0.45'
|
|
413
|
+
KUBERNETES_MEMORY_REQUEST: 1Gi
|
|
414
|
+
KUBERNETES_MEMORY_LIMIT: 4Gi
|
|
415
|
+
script:
|
|
416
|
+
- echo -e "\\e[0Ksection_start:$(date +%s):injectvars[collapsed=true]\\r\\e[0KInjecting variables"
|
|
417
|
+
- export ENV_SHORT="stage"
|
|
418
|
+
- export APP_DIR="api"
|
|
419
|
+
- export ENV_TYPE="stage"
|
|
420
|
+
- export BUILD_INFO_BUILD_ID="$(git describe --tags 2>/dev/null || git rev-parse HEAD)"
|
|
421
|
+
- export BUILD_INFO_BUILD_TIME="$CI_JOB_STARTED_AT"
|
|
422
|
+
- export BUILD_INFO_CURRENT_VERSION="$(tag=$(git ls-remote origin "refs/tags/v*[0-9]" 2>/dev/null | cut -f 2- | sort -V | tail -1 | sed 's/refs\\/tags\\/v//'); [ -z "$tag" ] && echo "0.0.0" || echo "$tag")"
|
|
423
|
+
- export HOST="unknown-host.example.com"
|
|
424
|
+
- export ROOT_URL="https://unknown-host.example.com"
|
|
425
|
+
- export HOST_INTERNAL="unknown-host.example.com"
|
|
426
|
+
- export HOST_CANONICAL="unknown-host.example.com"
|
|
427
|
+
- export ROOT_URL_INTERNAL="https://unknown-host.example.com"
|
|
428
|
+
- export _ALL_ENV_VAR_KEYS="[\\"ENV_SHORT\\",\\"APP_DIR\\",\\"ENV_TYPE\\",\\"BUILD_INFO_BUILD_ID\\",\\"BUILD_INFO_BUILD_TIME\\",\\"BUILD_INFO_CURRENT_VERSION\\",\\"HOST\\",\\"ROOT_URL\\",\\"HOST_INTERNAL\\",\\"HOST_CANONICAL\\",\\"ROOT_URL_INTERNAL\\"]"
|
|
429
|
+
- echo -e "\\e[0Ksection_end:$(date +%s):injectvars\\r\\e[0K"
|
|
430
|
+
- echo '{"id":"$(git describe --tags 2>/dev/null || git rev-parse HEAD)","time":"$CI_JOB_STARTED_AT"}' > api/__build_info.json
|
|
431
|
+
- echo -e "\\e[0Ksection_start:$(date +%s):nodeinstall[collapsed=true]\\r\\e[0KEnsure node version"
|
|
432
|
+
- if [ -f ~/.nvm/nvm.sh ]; then source ~/.nvm/nvm.sh; fi
|
|
433
|
+
- if command -v nvm &> /dev/null && [ -f ./.nvmrc ]; then nvm install; fi
|
|
434
|
+
- echo -e "\\e[0Ksection_end:$(date +%s):nodeinstall\\r\\e[0K"
|
|
435
|
+
- cd api
|
|
436
|
+
- echo -e "\\e[0Ksection_start:$(date +%s):nodeinstall[collapsed=true]\\r\\e[0KEnsure node version"
|
|
437
|
+
- if [ -f ~/.nvm/nvm.sh ]; then source ~/.nvm/nvm.sh; fi
|
|
438
|
+
- if command -v nvm &> /dev/null && [ -f ./.nvmrc ]; then nvm install; fi
|
|
439
|
+
- echo -e "\\e[0Ksection_end:$(date +%s):nodeinstall\\r\\e[0K"
|
|
440
|
+
- echo -e "\\e[0Ksection_start:$(date +%s):yarninstall[collapsed=true]\\r\\e[0KYarn install"
|
|
441
|
+
- yarn install --immutable
|
|
442
|
+
- echo -e "\\e[0Ksection_end:$(date +%s):yarninstall\\r\\e[0K"
|
|
443
|
+
- yarn build
|
|
444
|
+
cache:
|
|
445
|
+
- key: api-yarn
|
|
446
|
+
policy: pull-push
|
|
447
|
+
paths:
|
|
448
|
+
- api/.yarn
|
|
449
|
+
- key: api-node-modules
|
|
450
|
+
policy: pull-push
|
|
451
|
+
paths:
|
|
452
|
+
- api/node_modules
|
|
453
|
+
- key: api-next-cache
|
|
454
|
+
policy: pull-push
|
|
455
|
+
paths:
|
|
456
|
+
- api/.next/cache
|
|
457
|
+
artifacts:
|
|
458
|
+
paths:
|
|
459
|
+
- api/__build_info.json
|
|
460
|
+
- api/.next
|
|
461
|
+
- api/dist
|
|
462
|
+
expire_in: 1 day
|
|
463
|
+
when: always
|
|
464
|
+
reports: {}
|
|
465
|
+
rules:
|
|
466
|
+
- if: $CI_COMMIT_TAG
|
|
467
|
+
needs: []
|
|
468
|
+
retry: *a1
|
|
469
|
+
interruptible: true
|
|
470
|
+
'api ๐งพ sbom | stage ':
|
|
471
|
+
stage: build
|
|
472
|
+
image: aquasec/trivy:0.38.3
|
|
473
|
+
variables: {}
|
|
474
|
+
script:
|
|
475
|
+
- echo -e "\\e[0Ksection_start:$(date +%s):injectvars[collapsed=true]\\r\\e[0KInjecting variables"
|
|
476
|
+
- echo -e "\\e[0Ksection_end:$(date +%s):injectvars\\r\\e[0K"
|
|
477
|
+
- trivy fs --quiet --format cyclonedx --output "__sbom.json" api
|
|
478
|
+
artifacts:
|
|
479
|
+
paths:
|
|
480
|
+
- __sbom.json
|
|
481
|
+
rules:
|
|
482
|
+
- if: $CI_COMMIT_TAG
|
|
483
|
+
needs: []
|
|
484
|
+
retry: *a1
|
|
485
|
+
interruptible: true
|
|
486
|
+
allow_failure: true
|
|
487
|
+
'api ๐ Deploy | stage ':
|
|
488
|
+
stage: deploy stage
|
|
489
|
+
image: path/to/docker/jobs-default:the-version
|
|
490
|
+
variables:
|
|
491
|
+
KUBERNETES_CPU_REQUEST: '0.22'
|
|
492
|
+
KUBERNETES_MEMORY_REQUEST: 200Mi
|
|
493
|
+
KUBERNETES_MEMORY_LIMIT: 400Mi
|
|
494
|
+
script:
|
|
495
|
+
- echo -e "\\e[0Ksection_start:$(date +%s):injectvars[collapsed=true]\\r\\e[0KInjecting variables"
|
|
496
|
+
- export ENV_SHORT="stage"
|
|
497
|
+
- export APP_DIR="api"
|
|
498
|
+
- export ENV_TYPE="stage"
|
|
499
|
+
- export BUILD_INFO_BUILD_ID="$(git describe --tags 2>/dev/null || git rev-parse HEAD)"
|
|
500
|
+
- export BUILD_INFO_BUILD_TIME="$CI_JOB_STARTED_AT"
|
|
501
|
+
- export BUILD_INFO_CURRENT_VERSION="$(tag=$(git ls-remote origin "refs/tags/v*[0-9]" 2>/dev/null | cut -f 2- | sort -V | tail -1 | sed 's/refs\\/tags\\/v//'); [ -z "$tag" ] && echo "0.0.0" || echo "$tag")"
|
|
502
|
+
- export HOST="unknown-host.example.com"
|
|
503
|
+
- export ROOT_URL="https://unknown-host.example.com"
|
|
504
|
+
- export HOST_INTERNAL="unknown-host.example.com"
|
|
505
|
+
- export HOST_CANONICAL="unknown-host.example.com"
|
|
506
|
+
- export ROOT_URL_INTERNAL="https://unknown-host.example.com"
|
|
507
|
+
- export _ALL_ENV_VAR_KEYS="[\\"ENV_SHORT\\",\\"APP_DIR\\",\\"ENV_TYPE\\",\\"BUILD_INFO_BUILD_ID\\",\\"BUILD_INFO_BUILD_TIME\\",\\"BUILD_INFO_CURRENT_VERSION\\",\\"HOST\\",\\"ROOT_URL\\",\\"HOST_INTERNAL\\",\\"HOST_CANONICAL\\",\\"ROOT_URL_INTERNAL\\"]"
|
|
508
|
+
- echo -e "\\e[0Ksection_end:$(date +%s):injectvars\\r\\e[0K"
|
|
509
|
+
- cd api
|
|
510
|
+
- yarn deploy
|
|
511
|
+
- echo 'Uploading SBOM to Dependency Track'
|
|
512
|
+
- /dtrackuploader https://dep.panter.swiss/ "$DT_KEY_PROD" upload "pan-test-app/api" "https://unknown-host.example.com" "__sbom.json" vex.json || true
|
|
513
|
+
cache: []
|
|
514
|
+
rules:
|
|
515
|
+
- when: on_success
|
|
516
|
+
if: $CI_COMMIT_TAG
|
|
517
|
+
needs:
|
|
518
|
+
- job: 'api ๐จ app | stage '
|
|
519
|
+
artifacts: true
|
|
520
|
+
- job: 'api ๐งพ sbom | stage '
|
|
521
|
+
artifacts: true
|
|
522
|
+
retry: *a1
|
|
523
|
+
interruptible: true
|
|
524
|
+
allow_failure: false
|
|
525
|
+
'api ๐จ app | prod ':
|
|
526
|
+
stage: build
|
|
527
|
+
image: path/to/docker/jobs-default:the-version
|
|
528
|
+
variables:
|
|
529
|
+
KUBERNETES_CPU_REQUEST: '0.45'
|
|
530
|
+
KUBERNETES_MEMORY_REQUEST: 1Gi
|
|
531
|
+
KUBERNETES_MEMORY_LIMIT: 4Gi
|
|
532
|
+
script:
|
|
533
|
+
- echo -e "\\e[0Ksection_start:$(date +%s):injectvars[collapsed=true]\\r\\e[0KInjecting variables"
|
|
534
|
+
- export ENV_SHORT="prod"
|
|
535
|
+
- export APP_DIR="api"
|
|
536
|
+
- export ENV_TYPE="prod"
|
|
537
|
+
- export BUILD_INFO_BUILD_ID="$(git describe --tags 2>/dev/null || git rev-parse HEAD)"
|
|
538
|
+
- export BUILD_INFO_BUILD_TIME="$CI_JOB_STARTED_AT"
|
|
539
|
+
- export BUILD_INFO_CURRENT_VERSION="$(tag=$(git ls-remote origin "refs/tags/v*[0-9]" 2>/dev/null | cut -f 2- | sort -V | tail -1 | sed 's/refs\\/tags\\/v//'); [ -z "$tag" ] && echo "0.0.0" || echo "$tag")"
|
|
540
|
+
- export HOST="unknown-host.example.com"
|
|
541
|
+
- export ROOT_URL="https://unknown-host.example.com"
|
|
542
|
+
- export HOST_INTERNAL="unknown-host.example.com"
|
|
543
|
+
- export HOST_CANONICAL="unknown-host.example.com"
|
|
544
|
+
- export ROOT_URL_INTERNAL="https://unknown-host.example.com"
|
|
545
|
+
- export _ALL_ENV_VAR_KEYS="[\\"ENV_SHORT\\",\\"APP_DIR\\",\\"ENV_TYPE\\",\\"BUILD_INFO_BUILD_ID\\",\\"BUILD_INFO_BUILD_TIME\\",\\"BUILD_INFO_CURRENT_VERSION\\",\\"HOST\\",\\"ROOT_URL\\",\\"HOST_INTERNAL\\",\\"HOST_CANONICAL\\",\\"ROOT_URL_INTERNAL\\"]"
|
|
546
|
+
- echo -e "\\e[0Ksection_end:$(date +%s):injectvars\\r\\e[0K"
|
|
547
|
+
- echo '{"id":"$(git describe --tags 2>/dev/null || git rev-parse HEAD)","time":"$CI_JOB_STARTED_AT"}' > api/__build_info.json
|
|
548
|
+
- echo -e "\\e[0Ksection_start:$(date +%s):nodeinstall[collapsed=true]\\r\\e[0KEnsure node version"
|
|
549
|
+
- if [ -f ~/.nvm/nvm.sh ]; then source ~/.nvm/nvm.sh; fi
|
|
550
|
+
- if command -v nvm &> /dev/null && [ -f ./.nvmrc ]; then nvm install; fi
|
|
551
|
+
- echo -e "\\e[0Ksection_end:$(date +%s):nodeinstall\\r\\e[0K"
|
|
552
|
+
- cd api
|
|
553
|
+
- echo -e "\\e[0Ksection_start:$(date +%s):nodeinstall[collapsed=true]\\r\\e[0KEnsure node version"
|
|
554
|
+
- if [ -f ~/.nvm/nvm.sh ]; then source ~/.nvm/nvm.sh; fi
|
|
555
|
+
- if command -v nvm &> /dev/null && [ -f ./.nvmrc ]; then nvm install; fi
|
|
556
|
+
- echo -e "\\e[0Ksection_end:$(date +%s):nodeinstall\\r\\e[0K"
|
|
557
|
+
- echo -e "\\e[0Ksection_start:$(date +%s):yarninstall[collapsed=true]\\r\\e[0KYarn install"
|
|
558
|
+
- yarn install --immutable
|
|
559
|
+
- echo -e "\\e[0Ksection_end:$(date +%s):yarninstall\\r\\e[0K"
|
|
560
|
+
- yarn build
|
|
561
|
+
cache:
|
|
562
|
+
- key: api-yarn
|
|
563
|
+
policy: pull-push
|
|
564
|
+
paths:
|
|
565
|
+
- api/.yarn
|
|
566
|
+
- key: api-node-modules
|
|
567
|
+
policy: pull-push
|
|
568
|
+
paths:
|
|
569
|
+
- api/node_modules
|
|
570
|
+
- key: api-next-cache
|
|
571
|
+
policy: pull-push
|
|
572
|
+
paths:
|
|
573
|
+
- api/.next/cache
|
|
574
|
+
artifacts:
|
|
575
|
+
paths:
|
|
576
|
+
- api/__build_info.json
|
|
577
|
+
- api/.next
|
|
578
|
+
- api/dist
|
|
579
|
+
expire_in: 1 day
|
|
580
|
+
when: always
|
|
581
|
+
reports: {}
|
|
582
|
+
rules:
|
|
583
|
+
- if: $CI_COMMIT_TAG
|
|
584
|
+
needs: []
|
|
585
|
+
retry: *a1
|
|
586
|
+
interruptible: true
|
|
587
|
+
'api ๐งพ sbom | prod ':
|
|
588
|
+
stage: build
|
|
589
|
+
image: aquasec/trivy:0.38.3
|
|
590
|
+
variables: {}
|
|
591
|
+
script:
|
|
592
|
+
- echo -e "\\e[0Ksection_start:$(date +%s):injectvars[collapsed=true]\\r\\e[0KInjecting variables"
|
|
593
|
+
- echo -e "\\e[0Ksection_end:$(date +%s):injectvars\\r\\e[0K"
|
|
594
|
+
- trivy fs --quiet --format cyclonedx --output "__sbom.json" api
|
|
595
|
+
artifacts:
|
|
596
|
+
paths:
|
|
597
|
+
- __sbom.json
|
|
598
|
+
rules:
|
|
599
|
+
- if: $CI_COMMIT_TAG
|
|
600
|
+
needs: []
|
|
601
|
+
retry: *a1
|
|
602
|
+
interruptible: true
|
|
603
|
+
allow_failure: true
|
|
604
|
+
'api ๐ Deploy | prod ':
|
|
605
|
+
stage: deploy prod
|
|
606
|
+
image: path/to/docker/jobs-default:the-version
|
|
607
|
+
variables:
|
|
608
|
+
KUBERNETES_CPU_REQUEST: '0.22'
|
|
609
|
+
KUBERNETES_MEMORY_REQUEST: 200Mi
|
|
610
|
+
KUBERNETES_MEMORY_LIMIT: 400Mi
|
|
611
|
+
script:
|
|
612
|
+
- echo -e "\\e[0Ksection_start:$(date +%s):injectvars[collapsed=true]\\r\\e[0KInjecting variables"
|
|
613
|
+
- export ENV_SHORT="prod"
|
|
614
|
+
- export APP_DIR="api"
|
|
615
|
+
- export ENV_TYPE="prod"
|
|
616
|
+
- export BUILD_INFO_BUILD_ID="$(git describe --tags 2>/dev/null || git rev-parse HEAD)"
|
|
617
|
+
- export BUILD_INFO_BUILD_TIME="$CI_JOB_STARTED_AT"
|
|
618
|
+
- export BUILD_INFO_CURRENT_VERSION="$(tag=$(git ls-remote origin "refs/tags/v*[0-9]" 2>/dev/null | cut -f 2- | sort -V | tail -1 | sed 's/refs\\/tags\\/v//'); [ -z "$tag" ] && echo "0.0.0" || echo "$tag")"
|
|
619
|
+
- export HOST="unknown-host.example.com"
|
|
620
|
+
- export ROOT_URL="https://unknown-host.example.com"
|
|
621
|
+
- export HOST_INTERNAL="unknown-host.example.com"
|
|
622
|
+
- export HOST_CANONICAL="unknown-host.example.com"
|
|
623
|
+
- export ROOT_URL_INTERNAL="https://unknown-host.example.com"
|
|
624
|
+
- export _ALL_ENV_VAR_KEYS="[\\"ENV_SHORT\\",\\"APP_DIR\\",\\"ENV_TYPE\\",\\"BUILD_INFO_BUILD_ID\\",\\"BUILD_INFO_BUILD_TIME\\",\\"BUILD_INFO_CURRENT_VERSION\\",\\"HOST\\",\\"ROOT_URL\\",\\"HOST_INTERNAL\\",\\"HOST_CANONICAL\\",\\"ROOT_URL_INTERNAL\\"]"
|
|
625
|
+
- echo -e "\\e[0Ksection_end:$(date +%s):injectvars\\r\\e[0K"
|
|
626
|
+
- cd api
|
|
627
|
+
- yarn deploy
|
|
628
|
+
- echo 'Uploading SBOM to Dependency Track'
|
|
629
|
+
- /dtrackuploader https://dep.panter.swiss/ "$DT_KEY_PROD" upload "pan-test-app/api" "https://unknown-host.example.com" "__sbom.json" vex.json || true
|
|
630
|
+
cache: []
|
|
631
|
+
rules:
|
|
632
|
+
- when: manual
|
|
633
|
+
if: $CI_COMMIT_TAG
|
|
634
|
+
needs:
|
|
635
|
+
- job: 'api ๐จ app | prod '
|
|
636
|
+
artifacts: true
|
|
637
|
+
- job: 'api ๐งพ sbom | prod '
|
|
638
|
+
artifacts: true
|
|
639
|
+
retry: *a1
|
|
640
|
+
interruptible: true
|
|
641
|
+
allow_failure: true
|
|
642
|
+
www ๐ก audit:
|
|
643
|
+
stage: test
|
|
644
|
+
image: path/to/docker/jobs-default:the-version
|
|
645
|
+
variables:
|
|
646
|
+
KUBERNETES_CPU_REQUEST: '0.45'
|
|
647
|
+
KUBERNETES_MEMORY_REQUEST: 1Gi
|
|
648
|
+
KUBERNETES_MEMORY_LIMIT: 4Gi
|
|
649
|
+
script:
|
|
650
|
+
- echo -e "\\e[0Ksection_start:$(date +%s):injectvars[collapsed=true]\\r\\e[0KInjecting variables"
|
|
651
|
+
- export APP_PATH="www"
|
|
652
|
+
- echo -e "\\e[0Ksection_end:$(date +%s):injectvars\\r\\e[0K"
|
|
653
|
+
- cd www
|
|
654
|
+
- yarn npm audit --environment production
|
|
655
|
+
rules:
|
|
656
|
+
- when: never
|
|
657
|
+
if: $CI_COMMIT_MESSAGE =~ /^chore\\(release\\).*/
|
|
658
|
+
- if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH
|
|
659
|
+
- if: $CI_MERGE_REQUEST_ID
|
|
660
|
+
needs: []
|
|
661
|
+
retry: *a1
|
|
662
|
+
interruptible: true
|
|
663
|
+
allow_failure: true
|
|
664
|
+
www ๐ฎ lint:
|
|
665
|
+
stage: test
|
|
666
|
+
image: path/to/docker/jobs-default:the-version
|
|
667
|
+
variables:
|
|
668
|
+
KUBERNETES_CPU_REQUEST: '0.45'
|
|
669
|
+
KUBERNETES_MEMORY_REQUEST: 1Gi
|
|
670
|
+
KUBERNETES_MEMORY_LIMIT: 4Gi
|
|
671
|
+
script:
|
|
672
|
+
- echo -e "\\e[0Ksection_start:$(date +%s):injectvars[collapsed=true]\\r\\e[0KInjecting variables"
|
|
673
|
+
- export APP_PATH="www"
|
|
674
|
+
- echo -e "\\e[0Ksection_end:$(date +%s):injectvars\\r\\e[0K"
|
|
675
|
+
- echo -e "\\e[0Ksection_start:$(date +%s):nodeinstall[collapsed=true]\\r\\e[0KEnsure node version"
|
|
676
|
+
- if [ -f ~/.nvm/nvm.sh ]; then source ~/.nvm/nvm.sh; fi
|
|
677
|
+
- if command -v nvm &> /dev/null && [ -f ./.nvmrc ]; then nvm install; fi
|
|
678
|
+
- echo -e "\\e[0Ksection_end:$(date +%s):nodeinstall\\r\\e[0K"
|
|
679
|
+
- cd www
|
|
680
|
+
- echo -e "\\e[0Ksection_start:$(date +%s):nodeinstall[collapsed=true]\\r\\e[0KEnsure node version"
|
|
681
|
+
- if [ -f ~/.nvm/nvm.sh ]; then source ~/.nvm/nvm.sh; fi
|
|
682
|
+
- if command -v nvm &> /dev/null && [ -f ./.nvmrc ]; then nvm install; fi
|
|
683
|
+
- echo -e "\\e[0Ksection_end:$(date +%s):nodeinstall\\r\\e[0K"
|
|
684
|
+
- echo -e "\\e[0Ksection_start:$(date +%s):yarninstall[collapsed=true]\\r\\e[0KYarn install"
|
|
685
|
+
- yarn install --immutable
|
|
686
|
+
- echo -e "\\e[0Ksection_end:$(date +%s):yarninstall\\r\\e[0K"
|
|
687
|
+
- yarn lint
|
|
688
|
+
cache:
|
|
689
|
+
- key: www-yarn
|
|
690
|
+
policy: pull-push
|
|
691
|
+
paths:
|
|
692
|
+
- www/.yarn
|
|
693
|
+
- key: www-node-modules
|
|
694
|
+
policy: pull-push
|
|
695
|
+
paths:
|
|
696
|
+
- www/node_modules
|
|
697
|
+
rules:
|
|
698
|
+
- when: never
|
|
699
|
+
if: $CI_COMMIT_MESSAGE =~ /^chore\\(release\\).*/
|
|
700
|
+
- if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH
|
|
701
|
+
- if: $CI_MERGE_REQUEST_ID
|
|
702
|
+
needs: []
|
|
703
|
+
retry: *a1
|
|
704
|
+
interruptible: true
|
|
705
|
+
www ๐งช test:
|
|
706
|
+
stage: test
|
|
707
|
+
image: path/to/docker/jobs-testing-chrome:the-version
|
|
708
|
+
variables:
|
|
709
|
+
KUBERNETES_CPU_REQUEST: '0.45'
|
|
710
|
+
KUBERNETES_MEMORY_REQUEST: 1Gi
|
|
711
|
+
KUBERNETES_MEMORY_LIMIT: 4Gi
|
|
712
|
+
script:
|
|
713
|
+
- echo -e "\\e[0Ksection_start:$(date +%s):injectvars[collapsed=true]\\r\\e[0KInjecting variables"
|
|
714
|
+
- export APP_PATH="www"
|
|
715
|
+
- echo -e "\\e[0Ksection_end:$(date +%s):injectvars\\r\\e[0K"
|
|
716
|
+
- echo -e "\\e[0Ksection_start:$(date +%s):nodeinstall[collapsed=true]\\r\\e[0KEnsure node version"
|
|
717
|
+
- if [ -f ~/.nvm/nvm.sh ]; then source ~/.nvm/nvm.sh; fi
|
|
718
|
+
- if command -v nvm &> /dev/null && [ -f ./.nvmrc ]; then nvm install; fi
|
|
719
|
+
- echo -e "\\e[0Ksection_end:$(date +%s):nodeinstall\\r\\e[0K"
|
|
720
|
+
- cd www
|
|
721
|
+
- echo -e "\\e[0Ksection_start:$(date +%s):nodeinstall[collapsed=true]\\r\\e[0KEnsure node version"
|
|
722
|
+
- if [ -f ~/.nvm/nvm.sh ]; then source ~/.nvm/nvm.sh; fi
|
|
723
|
+
- if command -v nvm &> /dev/null && [ -f ./.nvmrc ]; then nvm install; fi
|
|
724
|
+
- echo -e "\\e[0Ksection_end:$(date +%s):nodeinstall\\r\\e[0K"
|
|
725
|
+
- echo -e "\\e[0Ksection_start:$(date +%s):yarninstall[collapsed=true]\\r\\e[0KYarn install"
|
|
726
|
+
- yarn install --immutable
|
|
727
|
+
- echo -e "\\e[0Ksection_end:$(date +%s):yarninstall\\r\\e[0K"
|
|
728
|
+
- yarn test
|
|
729
|
+
cache:
|
|
730
|
+
- key: www-yarn
|
|
731
|
+
policy: pull-push
|
|
732
|
+
paths:
|
|
733
|
+
- www/.yarn
|
|
734
|
+
- key: www-node-modules
|
|
735
|
+
policy: pull-push
|
|
736
|
+
paths:
|
|
737
|
+
- www/node_modules
|
|
738
|
+
rules:
|
|
739
|
+
- when: never
|
|
740
|
+
if: $CI_COMMIT_MESSAGE =~ /^chore\\(release\\).*/
|
|
741
|
+
- if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH
|
|
742
|
+
- if: $CI_MERGE_REQUEST_ID
|
|
743
|
+
needs: []
|
|
744
|
+
retry: *a1
|
|
745
|
+
interruptible: true
|
|
746
|
+
'www ๐จ app | dev ':
|
|
747
|
+
stage: build
|
|
748
|
+
image: path/to/docker/jobs-default:the-version
|
|
749
|
+
variables:
|
|
750
|
+
KUBERNETES_CPU_REQUEST: '0.45'
|
|
751
|
+
KUBERNETES_MEMORY_REQUEST: 1Gi
|
|
752
|
+
KUBERNETES_MEMORY_LIMIT: 4Gi
|
|
753
|
+
script:
|
|
754
|
+
- echo -e "\\e[0Ksection_start:$(date +%s):injectvars[collapsed=true]\\r\\e[0KInjecting variables"
|
|
755
|
+
- export ENV_SHORT="dev"
|
|
756
|
+
- export APP_DIR="www"
|
|
757
|
+
- export ENV_TYPE="dev"
|
|
758
|
+
- export BUILD_INFO_BUILD_ID="$(git describe --tags 2>/dev/null || git rev-parse HEAD)"
|
|
759
|
+
- export BUILD_INFO_BUILD_TIME="$CI_JOB_STARTED_AT"
|
|
760
|
+
- export BUILD_INFO_CURRENT_VERSION="$(tag=$(git ls-remote origin "refs/tags/v*[0-9]" 2>/dev/null | cut -f 2- | sort -V | tail -1 | sed 's/refs\\/tags\\/v//'); [ -z "$tag" ] && echo "0.0.0" || echo "$tag")"
|
|
761
|
+
- export HOST="unknown-host.example.com"
|
|
762
|
+
- export ROOT_URL="https://unknown-host.example.com"
|
|
763
|
+
- export HOST_INTERNAL="unknown-host.example.com"
|
|
764
|
+
- export HOST_CANONICAL="unknown-host.example.com"
|
|
765
|
+
- export ROOT_URL_INTERNAL="https://unknown-host.example.com"
|
|
766
|
+
- export _ALL_ENV_VAR_KEYS="[\\"ENV_SHORT\\",\\"APP_DIR\\",\\"ENV_TYPE\\",\\"BUILD_INFO_BUILD_ID\\",\\"BUILD_INFO_BUILD_TIME\\",\\"BUILD_INFO_CURRENT_VERSION\\",\\"HOST\\",\\"ROOT_URL\\",\\"HOST_INTERNAL\\",\\"HOST_CANONICAL\\",\\"ROOT_URL_INTERNAL\\"]"
|
|
767
|
+
- echo -e "\\e[0Ksection_end:$(date +%s):injectvars\\r\\e[0K"
|
|
768
|
+
- echo '{"id":"$(git describe --tags 2>/dev/null || git rev-parse HEAD)","time":"$CI_JOB_STARTED_AT"}' > www/__build_info.json
|
|
769
|
+
- echo -e "\\e[0Ksection_start:$(date +%s):nodeinstall[collapsed=true]\\r\\e[0KEnsure node version"
|
|
770
|
+
- if [ -f ~/.nvm/nvm.sh ]; then source ~/.nvm/nvm.sh; fi
|
|
771
|
+
- if command -v nvm &> /dev/null && [ -f ./.nvmrc ]; then nvm install; fi
|
|
772
|
+
- echo -e "\\e[0Ksection_end:$(date +%s):nodeinstall\\r\\e[0K"
|
|
773
|
+
- cd www
|
|
774
|
+
- echo -e "\\e[0Ksection_start:$(date +%s):nodeinstall[collapsed=true]\\r\\e[0KEnsure node version"
|
|
775
|
+
- if [ -f ~/.nvm/nvm.sh ]; then source ~/.nvm/nvm.sh; fi
|
|
776
|
+
- if command -v nvm &> /dev/null && [ -f ./.nvmrc ]; then nvm install; fi
|
|
777
|
+
- echo -e "\\e[0Ksection_end:$(date +%s):nodeinstall\\r\\e[0K"
|
|
778
|
+
- echo -e "\\e[0Ksection_start:$(date +%s):yarninstall[collapsed=true]\\r\\e[0KYarn install"
|
|
779
|
+
- yarn install --immutable
|
|
780
|
+
- echo -e "\\e[0Ksection_end:$(date +%s):yarninstall\\r\\e[0K"
|
|
781
|
+
- yarn build
|
|
782
|
+
cache:
|
|
783
|
+
- key: www-yarn
|
|
784
|
+
policy: pull-push
|
|
785
|
+
paths:
|
|
786
|
+
- www/.yarn
|
|
787
|
+
- key: www-node-modules
|
|
788
|
+
policy: pull-push
|
|
789
|
+
paths:
|
|
790
|
+
- www/node_modules
|
|
791
|
+
- key: www-next-cache
|
|
792
|
+
policy: pull-push
|
|
793
|
+
paths:
|
|
794
|
+
- www/.next/cache
|
|
795
|
+
artifacts:
|
|
796
|
+
paths:
|
|
797
|
+
- www/__build_info.json
|
|
798
|
+
- www/.next
|
|
799
|
+
- www/dist
|
|
800
|
+
expire_in: 1 day
|
|
801
|
+
when: always
|
|
802
|
+
reports: {}
|
|
803
|
+
rules:
|
|
804
|
+
- when: never
|
|
805
|
+
if: $CI_COMMIT_MESSAGE =~ /^chore\\(release\\).*/
|
|
806
|
+
- if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH
|
|
807
|
+
needs: []
|
|
808
|
+
retry: *a1
|
|
809
|
+
interruptible: true
|
|
810
|
+
'www ๐งพ sbom | dev ':
|
|
811
|
+
stage: build
|
|
812
|
+
image: aquasec/trivy:0.38.3
|
|
813
|
+
variables: {}
|
|
814
|
+
script:
|
|
815
|
+
- echo -e "\\e[0Ksection_start:$(date +%s):injectvars[collapsed=true]\\r\\e[0KInjecting variables"
|
|
816
|
+
- echo -e "\\e[0Ksection_end:$(date +%s):injectvars\\r\\e[0K"
|
|
817
|
+
- trivy fs --quiet --format cyclonedx --output "__sbom.json" www
|
|
818
|
+
artifacts:
|
|
819
|
+
paths:
|
|
820
|
+
- __sbom.json
|
|
821
|
+
rules:
|
|
822
|
+
- when: never
|
|
823
|
+
if: $CI_COMMIT_MESSAGE =~ /^chore\\(release\\).*/
|
|
824
|
+
- if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH
|
|
825
|
+
needs: []
|
|
826
|
+
retry: *a1
|
|
827
|
+
interruptible: true
|
|
828
|
+
allow_failure: true
|
|
829
|
+
'www ๐ Deploy | dev ':
|
|
830
|
+
stage: deploy dev
|
|
831
|
+
image: path/to/docker/jobs-default:the-version
|
|
832
|
+
variables:
|
|
833
|
+
KUBERNETES_CPU_REQUEST: '0.22'
|
|
834
|
+
KUBERNETES_MEMORY_REQUEST: 200Mi
|
|
835
|
+
KUBERNETES_MEMORY_LIMIT: 400Mi
|
|
836
|
+
script:
|
|
837
|
+
- echo -e "\\e[0Ksection_start:$(date +%s):injectvars[collapsed=true]\\r\\e[0KInjecting variables"
|
|
838
|
+
- export ENV_SHORT="dev"
|
|
839
|
+
- export APP_DIR="www"
|
|
840
|
+
- export ENV_TYPE="dev"
|
|
841
|
+
- export BUILD_INFO_BUILD_ID="$(git describe --tags 2>/dev/null || git rev-parse HEAD)"
|
|
842
|
+
- export BUILD_INFO_BUILD_TIME="$CI_JOB_STARTED_AT"
|
|
843
|
+
- export BUILD_INFO_CURRENT_VERSION="$(tag=$(git ls-remote origin "refs/tags/v*[0-9]" 2>/dev/null | cut -f 2- | sort -V | tail -1 | sed 's/refs\\/tags\\/v//'); [ -z "$tag" ] && echo "0.0.0" || echo "$tag")"
|
|
844
|
+
- export HOST="unknown-host.example.com"
|
|
845
|
+
- export ROOT_URL="https://unknown-host.example.com"
|
|
846
|
+
- export HOST_INTERNAL="unknown-host.example.com"
|
|
847
|
+
- export HOST_CANONICAL="unknown-host.example.com"
|
|
848
|
+
- export ROOT_URL_INTERNAL="https://unknown-host.example.com"
|
|
849
|
+
- export _ALL_ENV_VAR_KEYS="[\\"ENV_SHORT\\",\\"APP_DIR\\",\\"ENV_TYPE\\",\\"BUILD_INFO_BUILD_ID\\",\\"BUILD_INFO_BUILD_TIME\\",\\"BUILD_INFO_CURRENT_VERSION\\",\\"HOST\\",\\"ROOT_URL\\",\\"HOST_INTERNAL\\",\\"HOST_CANONICAL\\",\\"ROOT_URL_INTERNAL\\"]"
|
|
850
|
+
- echo -e "\\e[0Ksection_end:$(date +%s):injectvars\\r\\e[0K"
|
|
851
|
+
- cd www
|
|
852
|
+
- yarn deploy
|
|
853
|
+
- echo 'Uploading SBOM to Dependency Track'
|
|
854
|
+
- /dtrackuploader https://dep.panter.swiss/ "$DT_KEY_PROD" upload "pan-test-app/www" "https://unknown-host.example.com" "__sbom.json" vex.json || true
|
|
855
|
+
cache: []
|
|
856
|
+
rules:
|
|
857
|
+
- when: never
|
|
858
|
+
if: $CI_COMMIT_MESSAGE =~ /^chore\\(release\\).*/
|
|
859
|
+
- when: on_success
|
|
860
|
+
if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH
|
|
861
|
+
needs:
|
|
862
|
+
- job: 'api ๐ Deploy | dev '
|
|
863
|
+
artifacts: false
|
|
864
|
+
- job: www ๐ฎ lint
|
|
865
|
+
artifacts: false
|
|
866
|
+
- job: 'www ๐จ app | dev '
|
|
867
|
+
artifacts: true
|
|
868
|
+
- job: www ๐งช test
|
|
869
|
+
artifacts: false
|
|
870
|
+
- job: 'www ๐งพ sbom | dev '
|
|
871
|
+
artifacts: true
|
|
872
|
+
- job: www ๐ก audit
|
|
873
|
+
artifacts: false
|
|
874
|
+
retry: *a1
|
|
875
|
+
interruptible: true
|
|
876
|
+
allow_failure: false
|
|
877
|
+
'www ๐จ app | review ':
|
|
878
|
+
stage: build
|
|
879
|
+
image: path/to/docker/jobs-default:the-version
|
|
880
|
+
variables:
|
|
881
|
+
KUBERNETES_CPU_REQUEST: '0.45'
|
|
882
|
+
KUBERNETES_MEMORY_REQUEST: 1Gi
|
|
883
|
+
KUBERNETES_MEMORY_LIMIT: 4Gi
|
|
884
|
+
script:
|
|
885
|
+
- echo -e "\\e[0Ksection_start:$(date +%s):injectvars[collapsed=true]\\r\\e[0KInjecting variables"
|
|
886
|
+
- export ENV_SHORT="review"
|
|
887
|
+
- export APP_DIR="www"
|
|
888
|
+
- export ENV_TYPE="review"
|
|
889
|
+
- export BUILD_INFO_BUILD_ID="$(git describe --tags 2>/dev/null || git rev-parse HEAD)"
|
|
890
|
+
- export BUILD_INFO_BUILD_TIME="$CI_JOB_STARTED_AT"
|
|
891
|
+
- export BUILD_INFO_CURRENT_VERSION="$(tag=$(git ls-remote origin "refs/tags/v*[0-9]" 2>/dev/null | cut -f 2- | sort -V | tail -1 | sed 's/refs\\/tags\\/v//'); [ -z "$tag" ] && echo "0.0.0" || echo "$tag")"
|
|
892
|
+
- export HOST="unknown-host.example.com"
|
|
893
|
+
- export ROOT_URL="https://unknown-host.example.com"
|
|
894
|
+
- export HOST_INTERNAL="unknown-host.example.com"
|
|
895
|
+
- export HOST_CANONICAL="unknown-host.example.com"
|
|
896
|
+
- export ROOT_URL_INTERNAL="https://unknown-host.example.com"
|
|
897
|
+
- export _ALL_ENV_VAR_KEYS="[\\"ENV_SHORT\\",\\"APP_DIR\\",\\"ENV_TYPE\\",\\"BUILD_INFO_BUILD_ID\\",\\"BUILD_INFO_BUILD_TIME\\",\\"BUILD_INFO_CURRENT_VERSION\\",\\"HOST\\",\\"ROOT_URL\\",\\"HOST_INTERNAL\\",\\"HOST_CANONICAL\\",\\"ROOT_URL_INTERNAL\\"]"
|
|
898
|
+
- echo -e "\\e[0Ksection_end:$(date +%s):injectvars\\r\\e[0K"
|
|
899
|
+
- echo '{"id":"$(git describe --tags 2>/dev/null || git rev-parse HEAD)","time":"$CI_JOB_STARTED_AT"}' > www/__build_info.json
|
|
900
|
+
- echo -e "\\e[0Ksection_start:$(date +%s):nodeinstall[collapsed=true]\\r\\e[0KEnsure node version"
|
|
901
|
+
- if [ -f ~/.nvm/nvm.sh ]; then source ~/.nvm/nvm.sh; fi
|
|
902
|
+
- if command -v nvm &> /dev/null && [ -f ./.nvmrc ]; then nvm install; fi
|
|
903
|
+
- echo -e "\\e[0Ksection_end:$(date +%s):nodeinstall\\r\\e[0K"
|
|
904
|
+
- cd www
|
|
905
|
+
- echo -e "\\e[0Ksection_start:$(date +%s):nodeinstall[collapsed=true]\\r\\e[0KEnsure node version"
|
|
906
|
+
- if [ -f ~/.nvm/nvm.sh ]; then source ~/.nvm/nvm.sh; fi
|
|
907
|
+
- if command -v nvm &> /dev/null && [ -f ./.nvmrc ]; then nvm install; fi
|
|
908
|
+
- echo -e "\\e[0Ksection_end:$(date +%s):nodeinstall\\r\\e[0K"
|
|
909
|
+
- echo -e "\\e[0Ksection_start:$(date +%s):yarninstall[collapsed=true]\\r\\e[0KYarn install"
|
|
910
|
+
- yarn install --immutable
|
|
911
|
+
- echo -e "\\e[0Ksection_end:$(date +%s):yarninstall\\r\\e[0K"
|
|
912
|
+
- yarn build
|
|
913
|
+
cache:
|
|
914
|
+
- key: www-yarn
|
|
915
|
+
policy: pull-push
|
|
916
|
+
paths:
|
|
917
|
+
- www/.yarn
|
|
918
|
+
- key: www-node-modules
|
|
919
|
+
policy: pull-push
|
|
920
|
+
paths:
|
|
921
|
+
- www/node_modules
|
|
922
|
+
- key: www-next-cache
|
|
923
|
+
policy: pull-push
|
|
924
|
+
paths:
|
|
925
|
+
- www/.next/cache
|
|
926
|
+
artifacts:
|
|
927
|
+
paths:
|
|
928
|
+
- www/__build_info.json
|
|
929
|
+
- www/.next
|
|
930
|
+
- www/dist
|
|
931
|
+
expire_in: 1 day
|
|
932
|
+
when: always
|
|
933
|
+
reports: {}
|
|
934
|
+
rules:
|
|
935
|
+
- if: $CI_MERGE_REQUEST_ID
|
|
936
|
+
needs: []
|
|
937
|
+
retry: *a1
|
|
938
|
+
interruptible: true
|
|
939
|
+
'www ๐งพ sbom | review ':
|
|
940
|
+
stage: build
|
|
941
|
+
image: aquasec/trivy:0.38.3
|
|
942
|
+
variables: {}
|
|
943
|
+
script:
|
|
944
|
+
- echo -e "\\e[0Ksection_start:$(date +%s):injectvars[collapsed=true]\\r\\e[0KInjecting variables"
|
|
945
|
+
- echo -e "\\e[0Ksection_end:$(date +%s):injectvars\\r\\e[0K"
|
|
946
|
+
- trivy fs --quiet --format cyclonedx --output "__sbom.json" www
|
|
947
|
+
artifacts:
|
|
948
|
+
paths:
|
|
949
|
+
- __sbom.json
|
|
950
|
+
rules:
|
|
951
|
+
- if: $CI_MERGE_REQUEST_ID
|
|
952
|
+
needs: []
|
|
953
|
+
retry: *a1
|
|
954
|
+
interruptible: true
|
|
955
|
+
allow_failure: true
|
|
956
|
+
'www ๐ Deploy | review ':
|
|
957
|
+
stage: deploy review
|
|
958
|
+
image: path/to/docker/jobs-default:the-version
|
|
959
|
+
variables:
|
|
960
|
+
KUBERNETES_CPU_REQUEST: '0.22'
|
|
961
|
+
KUBERNETES_MEMORY_REQUEST: 200Mi
|
|
962
|
+
KUBERNETES_MEMORY_LIMIT: 400Mi
|
|
963
|
+
script:
|
|
964
|
+
- echo -e "\\e[0Ksection_start:$(date +%s):injectvars[collapsed=true]\\r\\e[0KInjecting variables"
|
|
965
|
+
- export ENV_SHORT="review"
|
|
966
|
+
- export APP_DIR="www"
|
|
967
|
+
- export ENV_TYPE="review"
|
|
968
|
+
- export BUILD_INFO_BUILD_ID="$(git describe --tags 2>/dev/null || git rev-parse HEAD)"
|
|
969
|
+
- export BUILD_INFO_BUILD_TIME="$CI_JOB_STARTED_AT"
|
|
970
|
+
- export BUILD_INFO_CURRENT_VERSION="$(tag=$(git ls-remote origin "refs/tags/v*[0-9]" 2>/dev/null | cut -f 2- | sort -V | tail -1 | sed 's/refs\\/tags\\/v//'); [ -z "$tag" ] && echo "0.0.0" || echo "$tag")"
|
|
971
|
+
- export HOST="unknown-host.example.com"
|
|
972
|
+
- export ROOT_URL="https://unknown-host.example.com"
|
|
973
|
+
- export HOST_INTERNAL="unknown-host.example.com"
|
|
974
|
+
- export HOST_CANONICAL="unknown-host.example.com"
|
|
975
|
+
- export ROOT_URL_INTERNAL="https://unknown-host.example.com"
|
|
976
|
+
- export _ALL_ENV_VAR_KEYS="[\\"ENV_SHORT\\",\\"APP_DIR\\",\\"ENV_TYPE\\",\\"BUILD_INFO_BUILD_ID\\",\\"BUILD_INFO_BUILD_TIME\\",\\"BUILD_INFO_CURRENT_VERSION\\",\\"HOST\\",\\"ROOT_URL\\",\\"HOST_INTERNAL\\",\\"HOST_CANONICAL\\",\\"ROOT_URL_INTERNAL\\"]"
|
|
977
|
+
- echo -e "\\e[0Ksection_end:$(date +%s):injectvars\\r\\e[0K"
|
|
978
|
+
- cd www
|
|
979
|
+
- yarn deploy
|
|
980
|
+
- echo 'Uploading SBOM to Dependency Track'
|
|
981
|
+
- /dtrackuploader https://dep.panter.swiss/ "$DT_KEY_PROD" upload "pan-test-app/www" "https://unknown-host.example.com" "__sbom.json" vex.json || true
|
|
982
|
+
cache: []
|
|
983
|
+
rules:
|
|
984
|
+
- when: on_success
|
|
985
|
+
if: $CI_MERGE_REQUEST_ID
|
|
986
|
+
needs:
|
|
987
|
+
- job: 'api ๐ Deploy | review '
|
|
988
|
+
artifacts: false
|
|
989
|
+
- job: www ๐ฎ lint
|
|
990
|
+
artifacts: false
|
|
991
|
+
- job: 'www ๐จ app | review '
|
|
992
|
+
artifacts: true
|
|
993
|
+
- job: www ๐งช test
|
|
994
|
+
artifacts: false
|
|
995
|
+
- job: 'www ๐งพ sbom | review '
|
|
996
|
+
artifacts: true
|
|
997
|
+
- job: www ๐ก audit
|
|
998
|
+
artifacts: false
|
|
999
|
+
retry: *a1
|
|
1000
|
+
interruptible: true
|
|
1001
|
+
allow_failure: false
|
|
1002
|
+
'www ๐จ app | stage ':
|
|
1003
|
+
stage: build
|
|
1004
|
+
image: path/to/docker/jobs-default:the-version
|
|
1005
|
+
variables:
|
|
1006
|
+
KUBERNETES_CPU_REQUEST: '0.45'
|
|
1007
|
+
KUBERNETES_MEMORY_REQUEST: 1Gi
|
|
1008
|
+
KUBERNETES_MEMORY_LIMIT: 4Gi
|
|
1009
|
+
script:
|
|
1010
|
+
- echo -e "\\e[0Ksection_start:$(date +%s):injectvars[collapsed=true]\\r\\e[0KInjecting variables"
|
|
1011
|
+
- export ENV_SHORT="stage"
|
|
1012
|
+
- export APP_DIR="www"
|
|
1013
|
+
- export ENV_TYPE="stage"
|
|
1014
|
+
- export BUILD_INFO_BUILD_ID="$(git describe --tags 2>/dev/null || git rev-parse HEAD)"
|
|
1015
|
+
- export BUILD_INFO_BUILD_TIME="$CI_JOB_STARTED_AT"
|
|
1016
|
+
- export BUILD_INFO_CURRENT_VERSION="$(tag=$(git ls-remote origin "refs/tags/v*[0-9]" 2>/dev/null | cut -f 2- | sort -V | tail -1 | sed 's/refs\\/tags\\/v//'); [ -z "$tag" ] && echo "0.0.0" || echo "$tag")"
|
|
1017
|
+
- export HOST="unknown-host.example.com"
|
|
1018
|
+
- export ROOT_URL="https://unknown-host.example.com"
|
|
1019
|
+
- export HOST_INTERNAL="unknown-host.example.com"
|
|
1020
|
+
- export HOST_CANONICAL="unknown-host.example.com"
|
|
1021
|
+
- export ROOT_URL_INTERNAL="https://unknown-host.example.com"
|
|
1022
|
+
- export _ALL_ENV_VAR_KEYS="[\\"ENV_SHORT\\",\\"APP_DIR\\",\\"ENV_TYPE\\",\\"BUILD_INFO_BUILD_ID\\",\\"BUILD_INFO_BUILD_TIME\\",\\"BUILD_INFO_CURRENT_VERSION\\",\\"HOST\\",\\"ROOT_URL\\",\\"HOST_INTERNAL\\",\\"HOST_CANONICAL\\",\\"ROOT_URL_INTERNAL\\"]"
|
|
1023
|
+
- echo -e "\\e[0Ksection_end:$(date +%s):injectvars\\r\\e[0K"
|
|
1024
|
+
- echo '{"id":"$(git describe --tags 2>/dev/null || git rev-parse HEAD)","time":"$CI_JOB_STARTED_AT"}' > www/__build_info.json
|
|
1025
|
+
- echo -e "\\e[0Ksection_start:$(date +%s):nodeinstall[collapsed=true]\\r\\e[0KEnsure node version"
|
|
1026
|
+
- if [ -f ~/.nvm/nvm.sh ]; then source ~/.nvm/nvm.sh; fi
|
|
1027
|
+
- if command -v nvm &> /dev/null && [ -f ./.nvmrc ]; then nvm install; fi
|
|
1028
|
+
- echo -e "\\e[0Ksection_end:$(date +%s):nodeinstall\\r\\e[0K"
|
|
1029
|
+
- cd www
|
|
1030
|
+
- echo -e "\\e[0Ksection_start:$(date +%s):nodeinstall[collapsed=true]\\r\\e[0KEnsure node version"
|
|
1031
|
+
- if [ -f ~/.nvm/nvm.sh ]; then source ~/.nvm/nvm.sh; fi
|
|
1032
|
+
- if command -v nvm &> /dev/null && [ -f ./.nvmrc ]; then nvm install; fi
|
|
1033
|
+
- echo -e "\\e[0Ksection_end:$(date +%s):nodeinstall\\r\\e[0K"
|
|
1034
|
+
- echo -e "\\e[0Ksection_start:$(date +%s):yarninstall[collapsed=true]\\r\\e[0KYarn install"
|
|
1035
|
+
- yarn install --immutable
|
|
1036
|
+
- echo -e "\\e[0Ksection_end:$(date +%s):yarninstall\\r\\e[0K"
|
|
1037
|
+
- yarn build
|
|
1038
|
+
cache:
|
|
1039
|
+
- key: www-yarn
|
|
1040
|
+
policy: pull-push
|
|
1041
|
+
paths:
|
|
1042
|
+
- www/.yarn
|
|
1043
|
+
- key: www-node-modules
|
|
1044
|
+
policy: pull-push
|
|
1045
|
+
paths:
|
|
1046
|
+
- www/node_modules
|
|
1047
|
+
- key: www-next-cache
|
|
1048
|
+
policy: pull-push
|
|
1049
|
+
paths:
|
|
1050
|
+
- www/.next/cache
|
|
1051
|
+
artifacts:
|
|
1052
|
+
paths:
|
|
1053
|
+
- www/__build_info.json
|
|
1054
|
+
- www/.next
|
|
1055
|
+
- www/dist
|
|
1056
|
+
expire_in: 1 day
|
|
1057
|
+
when: always
|
|
1058
|
+
reports: {}
|
|
1059
|
+
rules:
|
|
1060
|
+
- if: $CI_COMMIT_TAG
|
|
1061
|
+
needs: []
|
|
1062
|
+
retry: *a1
|
|
1063
|
+
interruptible: true
|
|
1064
|
+
'www ๐งพ sbom | stage ':
|
|
1065
|
+
stage: build
|
|
1066
|
+
image: aquasec/trivy:0.38.3
|
|
1067
|
+
variables: {}
|
|
1068
|
+
script:
|
|
1069
|
+
- echo -e "\\e[0Ksection_start:$(date +%s):injectvars[collapsed=true]\\r\\e[0KInjecting variables"
|
|
1070
|
+
- echo -e "\\e[0Ksection_end:$(date +%s):injectvars\\r\\e[0K"
|
|
1071
|
+
- trivy fs --quiet --format cyclonedx --output "__sbom.json" www
|
|
1072
|
+
artifacts:
|
|
1073
|
+
paths:
|
|
1074
|
+
- __sbom.json
|
|
1075
|
+
rules:
|
|
1076
|
+
- if: $CI_COMMIT_TAG
|
|
1077
|
+
needs: []
|
|
1078
|
+
retry: *a1
|
|
1079
|
+
interruptible: true
|
|
1080
|
+
allow_failure: true
|
|
1081
|
+
'www ๐ Deploy | stage ':
|
|
1082
|
+
stage: deploy stage
|
|
1083
|
+
image: path/to/docker/jobs-default:the-version
|
|
1084
|
+
variables:
|
|
1085
|
+
KUBERNETES_CPU_REQUEST: '0.22'
|
|
1086
|
+
KUBERNETES_MEMORY_REQUEST: 200Mi
|
|
1087
|
+
KUBERNETES_MEMORY_LIMIT: 400Mi
|
|
1088
|
+
script:
|
|
1089
|
+
- echo -e "\\e[0Ksection_start:$(date +%s):injectvars[collapsed=true]\\r\\e[0KInjecting variables"
|
|
1090
|
+
- export ENV_SHORT="stage"
|
|
1091
|
+
- export APP_DIR="www"
|
|
1092
|
+
- export ENV_TYPE="stage"
|
|
1093
|
+
- export BUILD_INFO_BUILD_ID="$(git describe --tags 2>/dev/null || git rev-parse HEAD)"
|
|
1094
|
+
- export BUILD_INFO_BUILD_TIME="$CI_JOB_STARTED_AT"
|
|
1095
|
+
- export BUILD_INFO_CURRENT_VERSION="$(tag=$(git ls-remote origin "refs/tags/v*[0-9]" 2>/dev/null | cut -f 2- | sort -V | tail -1 | sed 's/refs\\/tags\\/v//'); [ -z "$tag" ] && echo "0.0.0" || echo "$tag")"
|
|
1096
|
+
- export HOST="unknown-host.example.com"
|
|
1097
|
+
- export ROOT_URL="https://unknown-host.example.com"
|
|
1098
|
+
- export HOST_INTERNAL="unknown-host.example.com"
|
|
1099
|
+
- export HOST_CANONICAL="unknown-host.example.com"
|
|
1100
|
+
- export ROOT_URL_INTERNAL="https://unknown-host.example.com"
|
|
1101
|
+
- export _ALL_ENV_VAR_KEYS="[\\"ENV_SHORT\\",\\"APP_DIR\\",\\"ENV_TYPE\\",\\"BUILD_INFO_BUILD_ID\\",\\"BUILD_INFO_BUILD_TIME\\",\\"BUILD_INFO_CURRENT_VERSION\\",\\"HOST\\",\\"ROOT_URL\\",\\"HOST_INTERNAL\\",\\"HOST_CANONICAL\\",\\"ROOT_URL_INTERNAL\\"]"
|
|
1102
|
+
- echo -e "\\e[0Ksection_end:$(date +%s):injectvars\\r\\e[0K"
|
|
1103
|
+
- cd www
|
|
1104
|
+
- yarn deploy
|
|
1105
|
+
- echo 'Uploading SBOM to Dependency Track'
|
|
1106
|
+
- /dtrackuploader https://dep.panter.swiss/ "$DT_KEY_PROD" upload "pan-test-app/www" "https://unknown-host.example.com" "__sbom.json" vex.json || true
|
|
1107
|
+
cache: []
|
|
1108
|
+
rules:
|
|
1109
|
+
- when: on_success
|
|
1110
|
+
if: $CI_COMMIT_TAG
|
|
1111
|
+
needs:
|
|
1112
|
+
- job: 'api ๐ Deploy | stage '
|
|
1113
|
+
artifacts: false
|
|
1114
|
+
- job: 'www ๐จ app | stage '
|
|
1115
|
+
artifacts: true
|
|
1116
|
+
- job: 'www ๐งพ sbom | stage '
|
|
1117
|
+
artifacts: true
|
|
1118
|
+
retry: *a1
|
|
1119
|
+
interruptible: true
|
|
1120
|
+
allow_failure: false
|
|
1121
|
+
'www ๐จ app | prod ':
|
|
1122
|
+
stage: build
|
|
1123
|
+
image: path/to/docker/jobs-default:the-version
|
|
1124
|
+
variables:
|
|
1125
|
+
KUBERNETES_CPU_REQUEST: '0.45'
|
|
1126
|
+
KUBERNETES_MEMORY_REQUEST: 1Gi
|
|
1127
|
+
KUBERNETES_MEMORY_LIMIT: 4Gi
|
|
1128
|
+
script:
|
|
1129
|
+
- echo -e "\\e[0Ksection_start:$(date +%s):injectvars[collapsed=true]\\r\\e[0KInjecting variables"
|
|
1130
|
+
- export ENV_SHORT="prod"
|
|
1131
|
+
- export APP_DIR="www"
|
|
1132
|
+
- export ENV_TYPE="prod"
|
|
1133
|
+
- export BUILD_INFO_BUILD_ID="$(git describe --tags 2>/dev/null || git rev-parse HEAD)"
|
|
1134
|
+
- export BUILD_INFO_BUILD_TIME="$CI_JOB_STARTED_AT"
|
|
1135
|
+
- export BUILD_INFO_CURRENT_VERSION="$(tag=$(git ls-remote origin "refs/tags/v*[0-9]" 2>/dev/null | cut -f 2- | sort -V | tail -1 | sed 's/refs\\/tags\\/v//'); [ -z "$tag" ] && echo "0.0.0" || echo "$tag")"
|
|
1136
|
+
- export HOST="unknown-host.example.com"
|
|
1137
|
+
- export ROOT_URL="https://unknown-host.example.com"
|
|
1138
|
+
- export HOST_INTERNAL="unknown-host.example.com"
|
|
1139
|
+
- export HOST_CANONICAL="unknown-host.example.com"
|
|
1140
|
+
- export ROOT_URL_INTERNAL="https://unknown-host.example.com"
|
|
1141
|
+
- export _ALL_ENV_VAR_KEYS="[\\"ENV_SHORT\\",\\"APP_DIR\\",\\"ENV_TYPE\\",\\"BUILD_INFO_BUILD_ID\\",\\"BUILD_INFO_BUILD_TIME\\",\\"BUILD_INFO_CURRENT_VERSION\\",\\"HOST\\",\\"ROOT_URL\\",\\"HOST_INTERNAL\\",\\"HOST_CANONICAL\\",\\"ROOT_URL_INTERNAL\\"]"
|
|
1142
|
+
- echo -e "\\e[0Ksection_end:$(date +%s):injectvars\\r\\e[0K"
|
|
1143
|
+
- echo '{"id":"$(git describe --tags 2>/dev/null || git rev-parse HEAD)","time":"$CI_JOB_STARTED_AT"}' > www/__build_info.json
|
|
1144
|
+
- echo -e "\\e[0Ksection_start:$(date +%s):nodeinstall[collapsed=true]\\r\\e[0KEnsure node version"
|
|
1145
|
+
- if [ -f ~/.nvm/nvm.sh ]; then source ~/.nvm/nvm.sh; fi
|
|
1146
|
+
- if command -v nvm &> /dev/null && [ -f ./.nvmrc ]; then nvm install; fi
|
|
1147
|
+
- echo -e "\\e[0Ksection_end:$(date +%s):nodeinstall\\r\\e[0K"
|
|
1148
|
+
- cd www
|
|
1149
|
+
- echo -e "\\e[0Ksection_start:$(date +%s):nodeinstall[collapsed=true]\\r\\e[0KEnsure node version"
|
|
1150
|
+
- if [ -f ~/.nvm/nvm.sh ]; then source ~/.nvm/nvm.sh; fi
|
|
1151
|
+
- if command -v nvm &> /dev/null && [ -f ./.nvmrc ]; then nvm install; fi
|
|
1152
|
+
- echo -e "\\e[0Ksection_end:$(date +%s):nodeinstall\\r\\e[0K"
|
|
1153
|
+
- echo -e "\\e[0Ksection_start:$(date +%s):yarninstall[collapsed=true]\\r\\e[0KYarn install"
|
|
1154
|
+
- yarn install --immutable
|
|
1155
|
+
- echo -e "\\e[0Ksection_end:$(date +%s):yarninstall\\r\\e[0K"
|
|
1156
|
+
- yarn build
|
|
1157
|
+
cache:
|
|
1158
|
+
- key: www-yarn
|
|
1159
|
+
policy: pull-push
|
|
1160
|
+
paths:
|
|
1161
|
+
- www/.yarn
|
|
1162
|
+
- key: www-node-modules
|
|
1163
|
+
policy: pull-push
|
|
1164
|
+
paths:
|
|
1165
|
+
- www/node_modules
|
|
1166
|
+
- key: www-next-cache
|
|
1167
|
+
policy: pull-push
|
|
1168
|
+
paths:
|
|
1169
|
+
- www/.next/cache
|
|
1170
|
+
artifacts:
|
|
1171
|
+
paths:
|
|
1172
|
+
- www/__build_info.json
|
|
1173
|
+
- www/.next
|
|
1174
|
+
- www/dist
|
|
1175
|
+
expire_in: 1 day
|
|
1176
|
+
when: always
|
|
1177
|
+
reports: {}
|
|
1178
|
+
rules:
|
|
1179
|
+
- if: $CI_COMMIT_TAG
|
|
1180
|
+
needs: []
|
|
1181
|
+
retry: *a1
|
|
1182
|
+
interruptible: true
|
|
1183
|
+
'www ๐งพ sbom | prod ':
|
|
1184
|
+
stage: build
|
|
1185
|
+
image: aquasec/trivy:0.38.3
|
|
1186
|
+
variables: {}
|
|
1187
|
+
script:
|
|
1188
|
+
- echo -e "\\e[0Ksection_start:$(date +%s):injectvars[collapsed=true]\\r\\e[0KInjecting variables"
|
|
1189
|
+
- echo -e "\\e[0Ksection_end:$(date +%s):injectvars\\r\\e[0K"
|
|
1190
|
+
- trivy fs --quiet --format cyclonedx --output "__sbom.json" www
|
|
1191
|
+
artifacts:
|
|
1192
|
+
paths:
|
|
1193
|
+
- __sbom.json
|
|
1194
|
+
rules:
|
|
1195
|
+
- if: $CI_COMMIT_TAG
|
|
1196
|
+
needs: []
|
|
1197
|
+
retry: *a1
|
|
1198
|
+
interruptible: true
|
|
1199
|
+
allow_failure: true
|
|
1200
|
+
'www ๐ Deploy | prod ':
|
|
1201
|
+
stage: deploy prod
|
|
1202
|
+
image: path/to/docker/jobs-default:the-version
|
|
1203
|
+
variables:
|
|
1204
|
+
KUBERNETES_CPU_REQUEST: '0.22'
|
|
1205
|
+
KUBERNETES_MEMORY_REQUEST: 200Mi
|
|
1206
|
+
KUBERNETES_MEMORY_LIMIT: 400Mi
|
|
1207
|
+
script:
|
|
1208
|
+
- echo -e "\\e[0Ksection_start:$(date +%s):injectvars[collapsed=true]\\r\\e[0KInjecting variables"
|
|
1209
|
+
- export ENV_SHORT="prod"
|
|
1210
|
+
- export APP_DIR="www"
|
|
1211
|
+
- export ENV_TYPE="prod"
|
|
1212
|
+
- export BUILD_INFO_BUILD_ID="$(git describe --tags 2>/dev/null || git rev-parse HEAD)"
|
|
1213
|
+
- export BUILD_INFO_BUILD_TIME="$CI_JOB_STARTED_AT"
|
|
1214
|
+
- export BUILD_INFO_CURRENT_VERSION="$(tag=$(git ls-remote origin "refs/tags/v*[0-9]" 2>/dev/null | cut -f 2- | sort -V | tail -1 | sed 's/refs\\/tags\\/v//'); [ -z "$tag" ] && echo "0.0.0" || echo "$tag")"
|
|
1215
|
+
- export HOST="unknown-host.example.com"
|
|
1216
|
+
- export ROOT_URL="https://unknown-host.example.com"
|
|
1217
|
+
- export HOST_INTERNAL="unknown-host.example.com"
|
|
1218
|
+
- export HOST_CANONICAL="unknown-host.example.com"
|
|
1219
|
+
- export ROOT_URL_INTERNAL="https://unknown-host.example.com"
|
|
1220
|
+
- export _ALL_ENV_VAR_KEYS="[\\"ENV_SHORT\\",\\"APP_DIR\\",\\"ENV_TYPE\\",\\"BUILD_INFO_BUILD_ID\\",\\"BUILD_INFO_BUILD_TIME\\",\\"BUILD_INFO_CURRENT_VERSION\\",\\"HOST\\",\\"ROOT_URL\\",\\"HOST_INTERNAL\\",\\"HOST_CANONICAL\\",\\"ROOT_URL_INTERNAL\\"]"
|
|
1221
|
+
- echo -e "\\e[0Ksection_end:$(date +%s):injectvars\\r\\e[0K"
|
|
1222
|
+
- cd www
|
|
1223
|
+
- yarn deploy
|
|
1224
|
+
- echo 'Uploading SBOM to Dependency Track'
|
|
1225
|
+
- /dtrackuploader https://dep.panter.swiss/ "$DT_KEY_PROD" upload "pan-test-app/www" "https://unknown-host.example.com" "__sbom.json" vex.json || true
|
|
1226
|
+
cache: []
|
|
1227
|
+
rules:
|
|
1228
|
+
- when: manual
|
|
1229
|
+
if: $CI_COMMIT_TAG
|
|
1230
|
+
needs:
|
|
1231
|
+
- job: 'api ๐ Deploy | prod '
|
|
1232
|
+
artifacts: false
|
|
1233
|
+
- job: 'www ๐จ app | prod '
|
|
1234
|
+
artifacts: true
|
|
1235
|
+
- job: 'www ๐งพ sbom | prod '
|
|
1236
|
+
artifacts: true
|
|
1237
|
+
retry: *a1
|
|
1238
|
+
interruptible: true
|
|
1239
|
+
allow_failure: true
|
|
1240
|
+
create release:
|
|
1241
|
+
stage: release
|
|
1242
|
+
image: path/to/docker/semantic-release:the-version
|
|
1243
|
+
script:
|
|
1244
|
+
- semanticRelease
|
|
1245
|
+
after_script:
|
|
1246
|
+
- echo '๐ The project access token might be invald - run \`project-renew-token\` in catladder CLI to fix.'
|
|
1247
|
+
rules:
|
|
1248
|
+
- &a2
|
|
1249
|
+
if: $CI_COMMIT_MESSAGE =~ /^chore\\(release\\).*/
|
|
1250
|
+
when: never
|
|
1251
|
+
- &a3
|
|
1252
|
+
if: $CI_PIPELINE_SOURCE == "schedule"
|
|
1253
|
+
when: never
|
|
1254
|
+
- if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH && $AUTO_RELEASE == "true"
|
|
1255
|
+
when: on_success
|
|
1256
|
+
- if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH
|
|
1257
|
+
when: manual
|
|
1258
|
+
- if: $CI_COMMIT_BRANCH =~ /^[0-9]+.([0-9]+|x).x$/
|
|
1259
|
+
when: manual
|
|
1260
|
+
โ ๏ธ force create release:
|
|
1261
|
+
stage: release
|
|
1262
|
+
image: path/to/docker/semantic-release:the-version
|
|
1263
|
+
script:
|
|
1264
|
+
- semanticRelease
|
|
1265
|
+
after_script:
|
|
1266
|
+
- echo '๐ The project access token might be invald - run \`project-renew-token\` in catladder CLI to fix.'
|
|
1267
|
+
rules:
|
|
1268
|
+
- *a2
|
|
1269
|
+
- *a3
|
|
1270
|
+
- if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH
|
|
1271
|
+
when: manual
|
|
1272
|
+
- if: $CI_COMMIT_BRANCH =~ /^[0-9]+.([0-9]+|x).x$/
|
|
1273
|
+
when: manual
|
|
1274
|
+
needs: []
|
|
1275
|
+
"
|
|
2105
1276
|
`;
|