@catladder/pipeline 1.100.2 โ†’ 1.101.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (49) hide show
  1. package/dist/build/node/buildJob.js +9 -8
  2. package/dist/build/node/yarn.js +1 -1
  3. package/dist/build/types.d.ts +8 -4
  4. package/dist/bundles/catladder-gitlab/index.js +3 -3
  5. package/dist/constants.js +1 -1
  6. package/dist/context/getEnvironmentVariables.js +4 -1
  7. package/dist/deploy/base.js +5 -4
  8. package/dist/deploy/types/base.d.ts +8 -0
  9. package/dist/pipeline/commitInfo/getBuildId.d.ts +6 -1
  10. package/dist/pipeline/commitInfo/getBuildId.js +22 -2
  11. package/dist/pipeline/commitInfo/getCommitInfo.js +4 -1
  12. package/dist/pipeline/gitlab/createGitlabJobs.d.ts +1 -0
  13. package/dist/pipeline/gitlab/createGitlabJobs.js +3 -1
  14. package/dist/tsconfig.tsbuildinfo +1 -1
  15. package/dist/types/context.d.ts +1 -0
  16. package/dist/types/gitlab-types.d.ts +1 -0
  17. package/dist/types/jobs.d.ts +4 -0
  18. package/dist/utils/index.d.ts +1 -1
  19. package/examples/__snapshots__/cloud-run-memory-limit.ts.snap +80 -32
  20. package/examples/__snapshots__/cloud-run-no-cpu-throttling.ts.snap +80 -32
  21. package/examples/__snapshots__/cloud-run-non-public.ts.snap +80 -32
  22. package/examples/__snapshots__/cloud-run-with-sql-reuse-db.ts.snap +160 -64
  23. package/examples/__snapshots__/cloud-run-with-sql.ts.snap +160 -64
  24. package/examples/__snapshots__/custom-build-job-with-tests.ts.snap +64 -24
  25. package/examples/__snapshots__/custom-build-job.ts.snap +64 -24
  26. package/examples/__snapshots__/custom-deploy.ts.snap +64 -28
  27. package/examples/__snapshots__/custom-envs.ts.snap +56 -22
  28. package/examples/__snapshots__/custom-sbom-java.ts.snap +64 -24
  29. package/examples/__snapshots__/kubernetes-application-customization.ts.snap +148 -52
  30. package/examples/__snapshots__/kubernetes-with-cloud-sql-legacy.ts.snap +148 -52
  31. package/examples/__snapshots__/kubernetes-with-cloud-sql.ts.snap +148 -52
  32. package/examples/__snapshots__/kubernetes-with-jobs.ts.snap +296 -104
  33. package/examples/__snapshots__/kubernetes-with-mongodb.ts.snap +148 -52
  34. package/examples/__snapshots__/rails-k8s-with-worker.ts.snap +108 -36
  35. package/examples/__snapshots__/wait-for-other-deploy.ts.snap +120 -48
  36. package/package.json +1 -1
  37. package/src/build/node/buildJob.ts +6 -1
  38. package/src/build/node/yarn.ts +2 -1
  39. package/src/build/types.ts +10 -5
  40. package/src/context/getEnvironmentVariables.ts +4 -1
  41. package/src/deploy/base.ts +7 -2
  42. package/src/deploy/types/base.ts +10 -0
  43. package/src/pipeline/commitInfo/getBuildId.ts +11 -0
  44. package/src/pipeline/commitInfo/getCommitInfo.ts +2 -1
  45. package/src/pipeline/gitlab/createGitlabJobs.ts +2 -0
  46. package/src/types/context.ts +1 -0
  47. package/src/types/gitlab-types.ts +1 -0
  48. package/src/types/jobs.ts +5 -0
  49. package/src/utils/index.ts +1 -1
@@ -33,7 +33,8 @@ exports[`matches snapshot 1`] = `
33
33
  },
34
34
  "script": [
35
35
  "cd api",
36
- "if [ -f ./.nvmrc ]; then source /root/.nvm/nvm.sh && nvm install <<< .nvmrc; fi",
36
+ "if [ -f ~/.nvm/nvm.sh ]; then source ~/.nvm/nvm.sh; fi",
37
+ "if [ -f ./.nvmrc ]; then nvm install <<< .nvmrc; fi",
37
38
  "yarn install --immutable",
38
39
  "yarn lint",
39
40
  ],
@@ -92,15 +93,20 @@ exports[`matches snapshot 1`] = `
92
93
  },
93
94
  "script": [
94
95
  "echo '{"id":"some-id","time":"01-01-2023 12:13:14"}' > api/__build_info.json",
95
- "if [ -f ./.nvmrc ]; then source /root/.nvm/nvm.sh && nvm install <<< .nvmrc; fi",
96
+ "if [ -f ~/.nvm/nvm.sh ]; then source ~/.nvm/nvm.sh; fi",
97
+ "if [ -f ./.nvmrc ]; then nvm install <<< .nvmrc; fi",
96
98
  "cd api",
97
- "if [ -f ./.nvmrc ]; then source /root/.nvm/nvm.sh && nvm install <<< .nvmrc; fi",
99
+ "if [ -f ~/.nvm/nvm.sh ]; then source ~/.nvm/nvm.sh; fi",
100
+ "if [ -f ./.nvmrc ]; then nvm install <<< .nvmrc; fi",
98
101
  "yarn install --immutable",
99
102
  "yarn build",
100
103
  ],
101
104
  "stage": "build",
102
105
  "variables": {
103
106
  "APP_DIR": "api",
107
+ "BUILD_INFO_BUILD_TIME": "01-01-2023 12:13:14",
108
+ "BUILD_INFO_CURRENT_VERSION": "3.2.1",
109
+ "BUILD_INFO_ID": "some-id",
104
110
  "ENV_SHORT": "dev",
105
111
  "ENV_TYPE": "dev",
106
112
  "HOST": "unknown-host.example.com",
@@ -109,7 +115,7 @@ exports[`matches snapshot 1`] = `
109
115
  "KUBERNETES_MEMORY_LIMIT": "4Gi",
110
116
  "KUBERNETES_MEMORY_REQUEST": "2Gi",
111
117
  "ROOT_URL": "https://unknown-host.example.com",
112
- "_ALL_ENV_VAR_KEYS": "["ENV_SHORT","APP_DIR","ENV_TYPE","HOST","ROOT_URL"]",
118
+ "_ALL_ENV_VAR_KEYS": "["ENV_SHORT","APP_DIR","ENV_TYPE","BUILD_INFO_ID","BUILD_INFO_BUILD_TIME","BUILD_INFO_CURRENT_VERSION","HOST","ROOT_URL"]",
113
119
  },
114
120
  },
115
121
  "api ๐Ÿš€ Deploy | dev ": {
@@ -158,15 +164,18 @@ exports[`matches snapshot 1`] = `
158
164
  "stage": "deploy dev",
159
165
  "variables": {
160
166
  "APP_DIR": "api",
167
+ "BUILD_INFO_BUILD_TIME": "01-01-2023 12:13:14",
168
+ "BUILD_INFO_CURRENT_VERSION": "3.2.1",
169
+ "BUILD_INFO_ID": "some-id",
161
170
  "ENV_SHORT": "dev",
162
171
  "ENV_TYPE": "dev",
163
172
  "HOST": "unknown-host.example.com",
164
173
  "KUBERNETES_CPU_LIMIT": "1",
165
174
  "KUBERNETES_CPU_REQUEST": "0.5",
166
- "KUBERNETES_MEMORY_LIMIT": "500Mi",
175
+ "KUBERNETES_MEMORY_LIMIT": "200Mi",
167
176
  "KUBERNETES_MEMORY_REQUEST": "200Mi",
168
177
  "ROOT_URL": "https://unknown-host.example.com",
169
- "_ALL_ENV_VAR_KEYS": "["ENV_SHORT","APP_DIR","ENV_TYPE","HOST","ROOT_URL"]",
178
+ "_ALL_ENV_VAR_KEYS": "["ENV_SHORT","APP_DIR","ENV_TYPE","BUILD_INFO_ID","BUILD_INFO_BUILD_TIME","BUILD_INFO_CURRENT_VERSION","HOST","ROOT_URL"]",
170
179
  },
171
180
  },
172
181
  "api ๐Ÿ›ก audit": {
@@ -222,7 +231,8 @@ exports[`matches snapshot 1`] = `
222
231
  },
223
232
  "script": [
224
233
  "cd api",
225
- "if [ -f ./.nvmrc ]; then source /root/.nvm/nvm.sh && nvm install <<< .nvmrc; fi",
234
+ "if [ -f ~/.nvm/nvm.sh ]; then source ~/.nvm/nvm.sh; fi",
235
+ "if [ -f ./.nvmrc ]; then nvm install <<< .nvmrc; fi",
226
236
  "yarn install --immutable",
227
237
  "yarn test",
228
238
  ],
@@ -308,7 +318,8 @@ exports[`matches snapshot 1`] = `
308
318
  },
309
319
  "script": [
310
320
  "cd www",
311
- "if [ -f ./.nvmrc ]; then source /root/.nvm/nvm.sh && nvm install <<< .nvmrc; fi",
321
+ "if [ -f ~/.nvm/nvm.sh ]; then source ~/.nvm/nvm.sh; fi",
322
+ "if [ -f ./.nvmrc ]; then nvm install <<< .nvmrc; fi",
312
323
  "yarn install --immutable",
313
324
  "yarn lint",
314
325
  ],
@@ -367,15 +378,20 @@ exports[`matches snapshot 1`] = `
367
378
  },
368
379
  "script": [
369
380
  "echo '{"id":"some-id","time":"01-01-2023 12:13:14"}' > www/__build_info.json",
370
- "if [ -f ./.nvmrc ]; then source /root/.nvm/nvm.sh && nvm install <<< .nvmrc; fi",
381
+ "if [ -f ~/.nvm/nvm.sh ]; then source ~/.nvm/nvm.sh; fi",
382
+ "if [ -f ./.nvmrc ]; then nvm install <<< .nvmrc; fi",
371
383
  "cd www",
372
- "if [ -f ./.nvmrc ]; then source /root/.nvm/nvm.sh && nvm install <<< .nvmrc; fi",
384
+ "if [ -f ~/.nvm/nvm.sh ]; then source ~/.nvm/nvm.sh; fi",
385
+ "if [ -f ./.nvmrc ]; then nvm install <<< .nvmrc; fi",
373
386
  "yarn install --immutable",
374
387
  "yarn build",
375
388
  ],
376
389
  "stage": "build",
377
390
  "variables": {
378
391
  "APP_DIR": "www",
392
+ "BUILD_INFO_BUILD_TIME": "01-01-2023 12:13:14",
393
+ "BUILD_INFO_CURRENT_VERSION": "3.2.1",
394
+ "BUILD_INFO_ID": "some-id",
379
395
  "ENV_SHORT": "dev",
380
396
  "ENV_TYPE": "dev",
381
397
  "HOST": "unknown-host.example.com",
@@ -384,7 +400,7 @@ exports[`matches snapshot 1`] = `
384
400
  "KUBERNETES_MEMORY_LIMIT": "4Gi",
385
401
  "KUBERNETES_MEMORY_REQUEST": "2Gi",
386
402
  "ROOT_URL": "https://unknown-host.example.com",
387
- "_ALL_ENV_VAR_KEYS": "["ENV_SHORT","APP_DIR","ENV_TYPE","HOST","ROOT_URL"]",
403
+ "_ALL_ENV_VAR_KEYS": "["ENV_SHORT","APP_DIR","ENV_TYPE","BUILD_INFO_ID","BUILD_INFO_BUILD_TIME","BUILD_INFO_CURRENT_VERSION","HOST","ROOT_URL"]",
388
404
  },
389
405
  },
390
406
  "www ๐Ÿš€ Deploy | dev ": {
@@ -437,15 +453,18 @@ exports[`matches snapshot 1`] = `
437
453
  "stage": "deploy dev",
438
454
  "variables": {
439
455
  "APP_DIR": "www",
456
+ "BUILD_INFO_BUILD_TIME": "01-01-2023 12:13:14",
457
+ "BUILD_INFO_CURRENT_VERSION": "3.2.1",
458
+ "BUILD_INFO_ID": "some-id",
440
459
  "ENV_SHORT": "dev",
441
460
  "ENV_TYPE": "dev",
442
461
  "HOST": "unknown-host.example.com",
443
462
  "KUBERNETES_CPU_LIMIT": "1",
444
463
  "KUBERNETES_CPU_REQUEST": "0.5",
445
- "KUBERNETES_MEMORY_LIMIT": "500Mi",
464
+ "KUBERNETES_MEMORY_LIMIT": "200Mi",
446
465
  "KUBERNETES_MEMORY_REQUEST": "200Mi",
447
466
  "ROOT_URL": "https://unknown-host.example.com",
448
- "_ALL_ENV_VAR_KEYS": "["ENV_SHORT","APP_DIR","ENV_TYPE","HOST","ROOT_URL"]",
467
+ "_ALL_ENV_VAR_KEYS": "["ENV_SHORT","APP_DIR","ENV_TYPE","BUILD_INFO_ID","BUILD_INFO_BUILD_TIME","BUILD_INFO_CURRENT_VERSION","HOST","ROOT_URL"]",
449
468
  },
450
469
  },
451
470
  "www ๐Ÿ›ก audit": {
@@ -501,7 +520,8 @@ exports[`matches snapshot 1`] = `
501
520
  },
502
521
  "script": [
503
522
  "cd www",
504
- "if [ -f ./.nvmrc ]; then source /root/.nvm/nvm.sh && nvm install <<< .nvmrc; fi",
523
+ "if [ -f ~/.nvm/nvm.sh ]; then source ~/.nvm/nvm.sh; fi",
524
+ "if [ -f ./.nvmrc ]; then nvm install <<< .nvmrc; fi",
505
525
  "yarn install --immutable",
506
526
  "yarn test",
507
527
  ],
@@ -659,7 +679,8 @@ exports[`matches snapshot 1`] = `
659
679
  },
660
680
  "script": [
661
681
  "cd api",
662
- "if [ -f ./.nvmrc ]; then source /root/.nvm/nvm.sh && nvm install <<< .nvmrc; fi",
682
+ "if [ -f ~/.nvm/nvm.sh ]; then source ~/.nvm/nvm.sh; fi",
683
+ "if [ -f ./.nvmrc ]; then nvm install <<< .nvmrc; fi",
663
684
  "yarn install --immutable",
664
685
  "yarn lint",
665
686
  ],
@@ -718,15 +739,20 @@ exports[`matches snapshot 1`] = `
718
739
  },
719
740
  "script": [
720
741
  "echo '{"id":"some-id","time":"01-01-2023 12:13:14"}' > api/__build_info.json",
721
- "if [ -f ./.nvmrc ]; then source /root/.nvm/nvm.sh && nvm install <<< .nvmrc; fi",
742
+ "if [ -f ~/.nvm/nvm.sh ]; then source ~/.nvm/nvm.sh; fi",
743
+ "if [ -f ./.nvmrc ]; then nvm install <<< .nvmrc; fi",
722
744
  "cd api",
723
- "if [ -f ./.nvmrc ]; then source /root/.nvm/nvm.sh && nvm install <<< .nvmrc; fi",
745
+ "if [ -f ~/.nvm/nvm.sh ]; then source ~/.nvm/nvm.sh; fi",
746
+ "if [ -f ./.nvmrc ]; then nvm install <<< .nvmrc; fi",
724
747
  "yarn install --immutable",
725
748
  "yarn build",
726
749
  ],
727
750
  "stage": "build",
728
751
  "variables": {
729
752
  "APP_DIR": "api",
753
+ "BUILD_INFO_BUILD_TIME": "01-01-2023 12:13:14",
754
+ "BUILD_INFO_CURRENT_VERSION": "3.2.1",
755
+ "BUILD_INFO_ID": "some-id",
730
756
  "ENV_SHORT": "review",
731
757
  "ENV_TYPE": "review",
732
758
  "HOST": "unknown-host.example.com",
@@ -735,7 +761,7 @@ exports[`matches snapshot 1`] = `
735
761
  "KUBERNETES_MEMORY_LIMIT": "4Gi",
736
762
  "KUBERNETES_MEMORY_REQUEST": "2Gi",
737
763
  "ROOT_URL": "https://unknown-host.example.com",
738
- "_ALL_ENV_VAR_KEYS": "["ENV_SHORT","APP_DIR","ENV_TYPE","HOST","ROOT_URL"]",
764
+ "_ALL_ENV_VAR_KEYS": "["ENV_SHORT","APP_DIR","ENV_TYPE","BUILD_INFO_ID","BUILD_INFO_BUILD_TIME","BUILD_INFO_CURRENT_VERSION","HOST","ROOT_URL"]",
739
765
  },
740
766
  },
741
767
  "api ๐Ÿš€ Deploy | review ": {
@@ -784,15 +810,18 @@ exports[`matches snapshot 1`] = `
784
810
  "stage": "deploy review",
785
811
  "variables": {
786
812
  "APP_DIR": "api",
813
+ "BUILD_INFO_BUILD_TIME": "01-01-2023 12:13:14",
814
+ "BUILD_INFO_CURRENT_VERSION": "3.2.1",
815
+ "BUILD_INFO_ID": "some-id",
787
816
  "ENV_SHORT": "review",
788
817
  "ENV_TYPE": "review",
789
818
  "HOST": "unknown-host.example.com",
790
819
  "KUBERNETES_CPU_LIMIT": "1",
791
820
  "KUBERNETES_CPU_REQUEST": "0.5",
792
- "KUBERNETES_MEMORY_LIMIT": "500Mi",
821
+ "KUBERNETES_MEMORY_LIMIT": "200Mi",
793
822
  "KUBERNETES_MEMORY_REQUEST": "200Mi",
794
823
  "ROOT_URL": "https://unknown-host.example.com",
795
- "_ALL_ENV_VAR_KEYS": "["ENV_SHORT","APP_DIR","ENV_TYPE","HOST","ROOT_URL"]",
824
+ "_ALL_ENV_VAR_KEYS": "["ENV_SHORT","APP_DIR","ENV_TYPE","BUILD_INFO_ID","BUILD_INFO_BUILD_TIME","BUILD_INFO_CURRENT_VERSION","HOST","ROOT_URL"]",
796
825
  },
797
826
  },
798
827
  "api ๐Ÿ›ก audit": {
@@ -848,7 +877,8 @@ exports[`matches snapshot 1`] = `
848
877
  },
849
878
  "script": [
850
879
  "cd api",
851
- "if [ -f ./.nvmrc ]; then source /root/.nvm/nvm.sh && nvm install <<< .nvmrc; fi",
880
+ "if [ -f ~/.nvm/nvm.sh ]; then source ~/.nvm/nvm.sh; fi",
881
+ "if [ -f ./.nvmrc ]; then nvm install <<< .nvmrc; fi",
852
882
  "yarn install --immutable",
853
883
  "yarn test",
854
884
  ],
@@ -934,7 +964,8 @@ exports[`matches snapshot 1`] = `
934
964
  },
935
965
  "script": [
936
966
  "cd www",
937
- "if [ -f ./.nvmrc ]; then source /root/.nvm/nvm.sh && nvm install <<< .nvmrc; fi",
967
+ "if [ -f ~/.nvm/nvm.sh ]; then source ~/.nvm/nvm.sh; fi",
968
+ "if [ -f ./.nvmrc ]; then nvm install <<< .nvmrc; fi",
938
969
  "yarn install --immutable",
939
970
  "yarn lint",
940
971
  ],
@@ -993,15 +1024,20 @@ exports[`matches snapshot 1`] = `
993
1024
  },
994
1025
  "script": [
995
1026
  "echo '{"id":"some-id","time":"01-01-2023 12:13:14"}' > www/__build_info.json",
996
- "if [ -f ./.nvmrc ]; then source /root/.nvm/nvm.sh && nvm install <<< .nvmrc; fi",
1027
+ "if [ -f ~/.nvm/nvm.sh ]; then source ~/.nvm/nvm.sh; fi",
1028
+ "if [ -f ./.nvmrc ]; then nvm install <<< .nvmrc; fi",
997
1029
  "cd www",
998
- "if [ -f ./.nvmrc ]; then source /root/.nvm/nvm.sh && nvm install <<< .nvmrc; fi",
1030
+ "if [ -f ~/.nvm/nvm.sh ]; then source ~/.nvm/nvm.sh; fi",
1031
+ "if [ -f ./.nvmrc ]; then nvm install <<< .nvmrc; fi",
999
1032
  "yarn install --immutable",
1000
1033
  "yarn build",
1001
1034
  ],
1002
1035
  "stage": "build",
1003
1036
  "variables": {
1004
1037
  "APP_DIR": "www",
1038
+ "BUILD_INFO_BUILD_TIME": "01-01-2023 12:13:14",
1039
+ "BUILD_INFO_CURRENT_VERSION": "3.2.1",
1040
+ "BUILD_INFO_ID": "some-id",
1005
1041
  "ENV_SHORT": "review",
1006
1042
  "ENV_TYPE": "review",
1007
1043
  "HOST": "unknown-host.example.com",
@@ -1010,7 +1046,7 @@ exports[`matches snapshot 1`] = `
1010
1046
  "KUBERNETES_MEMORY_LIMIT": "4Gi",
1011
1047
  "KUBERNETES_MEMORY_REQUEST": "2Gi",
1012
1048
  "ROOT_URL": "https://unknown-host.example.com",
1013
- "_ALL_ENV_VAR_KEYS": "["ENV_SHORT","APP_DIR","ENV_TYPE","HOST","ROOT_URL"]",
1049
+ "_ALL_ENV_VAR_KEYS": "["ENV_SHORT","APP_DIR","ENV_TYPE","BUILD_INFO_ID","BUILD_INFO_BUILD_TIME","BUILD_INFO_CURRENT_VERSION","HOST","ROOT_URL"]",
1014
1050
  },
1015
1051
  },
1016
1052
  "www ๐Ÿš€ Deploy | review ": {
@@ -1063,15 +1099,18 @@ exports[`matches snapshot 1`] = `
1063
1099
  "stage": "deploy review",
1064
1100
  "variables": {
1065
1101
  "APP_DIR": "www",
1102
+ "BUILD_INFO_BUILD_TIME": "01-01-2023 12:13:14",
1103
+ "BUILD_INFO_CURRENT_VERSION": "3.2.1",
1104
+ "BUILD_INFO_ID": "some-id",
1066
1105
  "ENV_SHORT": "review",
1067
1106
  "ENV_TYPE": "review",
1068
1107
  "HOST": "unknown-host.example.com",
1069
1108
  "KUBERNETES_CPU_LIMIT": "1",
1070
1109
  "KUBERNETES_CPU_REQUEST": "0.5",
1071
- "KUBERNETES_MEMORY_LIMIT": "500Mi",
1110
+ "KUBERNETES_MEMORY_LIMIT": "200Mi",
1072
1111
  "KUBERNETES_MEMORY_REQUEST": "200Mi",
1073
1112
  "ROOT_URL": "https://unknown-host.example.com",
1074
- "_ALL_ENV_VAR_KEYS": "["ENV_SHORT","APP_DIR","ENV_TYPE","HOST","ROOT_URL"]",
1113
+ "_ALL_ENV_VAR_KEYS": "["ENV_SHORT","APP_DIR","ENV_TYPE","BUILD_INFO_ID","BUILD_INFO_BUILD_TIME","BUILD_INFO_CURRENT_VERSION","HOST","ROOT_URL"]",
1075
1114
  },
1076
1115
  },
1077
1116
  "www ๐Ÿ›ก audit": {
@@ -1127,7 +1166,8 @@ exports[`matches snapshot 1`] = `
1127
1166
  },
1128
1167
  "script": [
1129
1168
  "cd www",
1130
- "if [ -f ./.nvmrc ]; then source /root/.nvm/nvm.sh && nvm install <<< .nvmrc; fi",
1169
+ "if [ -f ~/.nvm/nvm.sh ]; then source ~/.nvm/nvm.sh; fi",
1170
+ "if [ -f ./.nvmrc ]; then nvm install <<< .nvmrc; fi",
1131
1171
  "yarn install --immutable",
1132
1172
  "yarn test",
1133
1173
  ],
@@ -1303,15 +1343,20 @@ exports[`matches snapshot 1`] = `
1303
1343
  },
1304
1344
  "script": [
1305
1345
  "echo '{"id":"some-id","time":"01-01-2023 12:13:14"}' > api/__build_info.json",
1306
- "if [ -f ./.nvmrc ]; then source /root/.nvm/nvm.sh && nvm install <<< .nvmrc; fi",
1346
+ "if [ -f ~/.nvm/nvm.sh ]; then source ~/.nvm/nvm.sh; fi",
1347
+ "if [ -f ./.nvmrc ]; then nvm install <<< .nvmrc; fi",
1307
1348
  "cd api",
1308
- "if [ -f ./.nvmrc ]; then source /root/.nvm/nvm.sh && nvm install <<< .nvmrc; fi",
1349
+ "if [ -f ~/.nvm/nvm.sh ]; then source ~/.nvm/nvm.sh; fi",
1350
+ "if [ -f ./.nvmrc ]; then nvm install <<< .nvmrc; fi",
1309
1351
  "yarn install --immutable",
1310
1352
  "yarn build",
1311
1353
  ],
1312
1354
  "stage": "build",
1313
1355
  "variables": {
1314
1356
  "APP_DIR": "api",
1357
+ "BUILD_INFO_BUILD_TIME": "01-01-2023 12:13:14",
1358
+ "BUILD_INFO_CURRENT_VERSION": "3.2.1",
1359
+ "BUILD_INFO_ID": "some-id",
1315
1360
  "ENV_SHORT": "prod",
1316
1361
  "ENV_TYPE": "prod",
1317
1362
  "HOST": "unknown-host.example.com",
@@ -1320,7 +1365,7 @@ exports[`matches snapshot 1`] = `
1320
1365
  "KUBERNETES_MEMORY_LIMIT": "4Gi",
1321
1366
  "KUBERNETES_MEMORY_REQUEST": "2Gi",
1322
1367
  "ROOT_URL": "https://unknown-host.example.com",
1323
- "_ALL_ENV_VAR_KEYS": "["ENV_SHORT","APP_DIR","ENV_TYPE","HOST","ROOT_URL"]",
1368
+ "_ALL_ENV_VAR_KEYS": "["ENV_SHORT","APP_DIR","ENV_TYPE","BUILD_INFO_ID","BUILD_INFO_BUILD_TIME","BUILD_INFO_CURRENT_VERSION","HOST","ROOT_URL"]",
1324
1369
  },
1325
1370
  },
1326
1371
  "api ๐Ÿ”จ app | stage ": {
@@ -1369,15 +1414,20 @@ exports[`matches snapshot 1`] = `
1369
1414
  },
1370
1415
  "script": [
1371
1416
  "echo '{"id":"some-id","time":"01-01-2023 12:13:14"}' > api/__build_info.json",
1372
- "if [ -f ./.nvmrc ]; then source /root/.nvm/nvm.sh && nvm install <<< .nvmrc; fi",
1417
+ "if [ -f ~/.nvm/nvm.sh ]; then source ~/.nvm/nvm.sh; fi",
1418
+ "if [ -f ./.nvmrc ]; then nvm install <<< .nvmrc; fi",
1373
1419
  "cd api",
1374
- "if [ -f ./.nvmrc ]; then source /root/.nvm/nvm.sh && nvm install <<< .nvmrc; fi",
1420
+ "if [ -f ~/.nvm/nvm.sh ]; then source ~/.nvm/nvm.sh; fi",
1421
+ "if [ -f ./.nvmrc ]; then nvm install <<< .nvmrc; fi",
1375
1422
  "yarn install --immutable",
1376
1423
  "yarn build",
1377
1424
  ],
1378
1425
  "stage": "build",
1379
1426
  "variables": {
1380
1427
  "APP_DIR": "api",
1428
+ "BUILD_INFO_BUILD_TIME": "01-01-2023 12:13:14",
1429
+ "BUILD_INFO_CURRENT_VERSION": "3.2.1",
1430
+ "BUILD_INFO_ID": "some-id",
1381
1431
  "ENV_SHORT": "stage",
1382
1432
  "ENV_TYPE": "stage",
1383
1433
  "HOST": "unknown-host.example.com",
@@ -1386,7 +1436,7 @@ exports[`matches snapshot 1`] = `
1386
1436
  "KUBERNETES_MEMORY_LIMIT": "4Gi",
1387
1437
  "KUBERNETES_MEMORY_REQUEST": "2Gi",
1388
1438
  "ROOT_URL": "https://unknown-host.example.com",
1389
- "_ALL_ENV_VAR_KEYS": "["ENV_SHORT","APP_DIR","ENV_TYPE","HOST","ROOT_URL"]",
1439
+ "_ALL_ENV_VAR_KEYS": "["ENV_SHORT","APP_DIR","ENV_TYPE","BUILD_INFO_ID","BUILD_INFO_BUILD_TIME","BUILD_INFO_CURRENT_VERSION","HOST","ROOT_URL"]",
1390
1440
  },
1391
1441
  },
1392
1442
  "api ๐Ÿš€ Deploy | prod ": {
@@ -1423,15 +1473,18 @@ exports[`matches snapshot 1`] = `
1423
1473
  "stage": "deploy prod",
1424
1474
  "variables": {
1425
1475
  "APP_DIR": "api",
1476
+ "BUILD_INFO_BUILD_TIME": "01-01-2023 12:13:14",
1477
+ "BUILD_INFO_CURRENT_VERSION": "3.2.1",
1478
+ "BUILD_INFO_ID": "some-id",
1426
1479
  "ENV_SHORT": "prod",
1427
1480
  "ENV_TYPE": "prod",
1428
1481
  "HOST": "unknown-host.example.com",
1429
1482
  "KUBERNETES_CPU_LIMIT": "1",
1430
1483
  "KUBERNETES_CPU_REQUEST": "0.5",
1431
- "KUBERNETES_MEMORY_LIMIT": "500Mi",
1484
+ "KUBERNETES_MEMORY_LIMIT": "200Mi",
1432
1485
  "KUBERNETES_MEMORY_REQUEST": "200Mi",
1433
1486
  "ROOT_URL": "https://unknown-host.example.com",
1434
- "_ALL_ENV_VAR_KEYS": "["ENV_SHORT","APP_DIR","ENV_TYPE","HOST","ROOT_URL"]",
1487
+ "_ALL_ENV_VAR_KEYS": "["ENV_SHORT","APP_DIR","ENV_TYPE","BUILD_INFO_ID","BUILD_INFO_BUILD_TIME","BUILD_INFO_CURRENT_VERSION","HOST","ROOT_URL"]",
1435
1488
  },
1436
1489
  },
1437
1490
  "api ๐Ÿš€ Deploy | stage ": {
@@ -1468,15 +1521,18 @@ exports[`matches snapshot 1`] = `
1468
1521
  "stage": "deploy stage",
1469
1522
  "variables": {
1470
1523
  "APP_DIR": "api",
1524
+ "BUILD_INFO_BUILD_TIME": "01-01-2023 12:13:14",
1525
+ "BUILD_INFO_CURRENT_VERSION": "3.2.1",
1526
+ "BUILD_INFO_ID": "some-id",
1471
1527
  "ENV_SHORT": "stage",
1472
1528
  "ENV_TYPE": "stage",
1473
1529
  "HOST": "unknown-host.example.com",
1474
1530
  "KUBERNETES_CPU_LIMIT": "1",
1475
1531
  "KUBERNETES_CPU_REQUEST": "0.5",
1476
- "KUBERNETES_MEMORY_LIMIT": "500Mi",
1532
+ "KUBERNETES_MEMORY_LIMIT": "200Mi",
1477
1533
  "KUBERNETES_MEMORY_REQUEST": "200Mi",
1478
1534
  "ROOT_URL": "https://unknown-host.example.com",
1479
- "_ALL_ENV_VAR_KEYS": "["ENV_SHORT","APP_DIR","ENV_TYPE","HOST","ROOT_URL"]",
1535
+ "_ALL_ENV_VAR_KEYS": "["ENV_SHORT","APP_DIR","ENV_TYPE","BUILD_INFO_ID","BUILD_INFO_BUILD_TIME","BUILD_INFO_CURRENT_VERSION","HOST","ROOT_URL"]",
1480
1536
  },
1481
1537
  },
1482
1538
  "api ๐Ÿงพ sbom upload | prod ": {
@@ -1615,15 +1671,20 @@ exports[`matches snapshot 1`] = `
1615
1671
  },
1616
1672
  "script": [
1617
1673
  "echo '{"id":"some-id","time":"01-01-2023 12:13:14"}' > www/__build_info.json",
1618
- "if [ -f ./.nvmrc ]; then source /root/.nvm/nvm.sh && nvm install <<< .nvmrc; fi",
1674
+ "if [ -f ~/.nvm/nvm.sh ]; then source ~/.nvm/nvm.sh; fi",
1675
+ "if [ -f ./.nvmrc ]; then nvm install <<< .nvmrc; fi",
1619
1676
  "cd www",
1620
- "if [ -f ./.nvmrc ]; then source /root/.nvm/nvm.sh && nvm install <<< .nvmrc; fi",
1677
+ "if [ -f ~/.nvm/nvm.sh ]; then source ~/.nvm/nvm.sh; fi",
1678
+ "if [ -f ./.nvmrc ]; then nvm install <<< .nvmrc; fi",
1621
1679
  "yarn install --immutable",
1622
1680
  "yarn build",
1623
1681
  ],
1624
1682
  "stage": "build",
1625
1683
  "variables": {
1626
1684
  "APP_DIR": "www",
1685
+ "BUILD_INFO_BUILD_TIME": "01-01-2023 12:13:14",
1686
+ "BUILD_INFO_CURRENT_VERSION": "3.2.1",
1687
+ "BUILD_INFO_ID": "some-id",
1627
1688
  "ENV_SHORT": "prod",
1628
1689
  "ENV_TYPE": "prod",
1629
1690
  "HOST": "unknown-host.example.com",
@@ -1632,7 +1693,7 @@ exports[`matches snapshot 1`] = `
1632
1693
  "KUBERNETES_MEMORY_LIMIT": "4Gi",
1633
1694
  "KUBERNETES_MEMORY_REQUEST": "2Gi",
1634
1695
  "ROOT_URL": "https://unknown-host.example.com",
1635
- "_ALL_ENV_VAR_KEYS": "["ENV_SHORT","APP_DIR","ENV_TYPE","HOST","ROOT_URL"]",
1696
+ "_ALL_ENV_VAR_KEYS": "["ENV_SHORT","APP_DIR","ENV_TYPE","BUILD_INFO_ID","BUILD_INFO_BUILD_TIME","BUILD_INFO_CURRENT_VERSION","HOST","ROOT_URL"]",
1636
1697
  },
1637
1698
  },
1638
1699
  "www ๐Ÿ”จ app | stage ": {
@@ -1681,15 +1742,20 @@ exports[`matches snapshot 1`] = `
1681
1742
  },
1682
1743
  "script": [
1683
1744
  "echo '{"id":"some-id","time":"01-01-2023 12:13:14"}' > www/__build_info.json",
1684
- "if [ -f ./.nvmrc ]; then source /root/.nvm/nvm.sh && nvm install <<< .nvmrc; fi",
1745
+ "if [ -f ~/.nvm/nvm.sh ]; then source ~/.nvm/nvm.sh; fi",
1746
+ "if [ -f ./.nvmrc ]; then nvm install <<< .nvmrc; fi",
1685
1747
  "cd www",
1686
- "if [ -f ./.nvmrc ]; then source /root/.nvm/nvm.sh && nvm install <<< .nvmrc; fi",
1748
+ "if [ -f ~/.nvm/nvm.sh ]; then source ~/.nvm/nvm.sh; fi",
1749
+ "if [ -f ./.nvmrc ]; then nvm install <<< .nvmrc; fi",
1687
1750
  "yarn install --immutable",
1688
1751
  "yarn build",
1689
1752
  ],
1690
1753
  "stage": "build",
1691
1754
  "variables": {
1692
1755
  "APP_DIR": "www",
1756
+ "BUILD_INFO_BUILD_TIME": "01-01-2023 12:13:14",
1757
+ "BUILD_INFO_CURRENT_VERSION": "3.2.1",
1758
+ "BUILD_INFO_ID": "some-id",
1693
1759
  "ENV_SHORT": "stage",
1694
1760
  "ENV_TYPE": "stage",
1695
1761
  "HOST": "unknown-host.example.com",
@@ -1698,7 +1764,7 @@ exports[`matches snapshot 1`] = `
1698
1764
  "KUBERNETES_MEMORY_LIMIT": "4Gi",
1699
1765
  "KUBERNETES_MEMORY_REQUEST": "2Gi",
1700
1766
  "ROOT_URL": "https://unknown-host.example.com",
1701
- "_ALL_ENV_VAR_KEYS": "["ENV_SHORT","APP_DIR","ENV_TYPE","HOST","ROOT_URL"]",
1767
+ "_ALL_ENV_VAR_KEYS": "["ENV_SHORT","APP_DIR","ENV_TYPE","BUILD_INFO_ID","BUILD_INFO_BUILD_TIME","BUILD_INFO_CURRENT_VERSION","HOST","ROOT_URL"]",
1702
1768
  },
1703
1769
  },
1704
1770
  "www ๐Ÿš€ Deploy | prod ": {
@@ -1739,15 +1805,18 @@ exports[`matches snapshot 1`] = `
1739
1805
  "stage": "deploy prod",
1740
1806
  "variables": {
1741
1807
  "APP_DIR": "www",
1808
+ "BUILD_INFO_BUILD_TIME": "01-01-2023 12:13:14",
1809
+ "BUILD_INFO_CURRENT_VERSION": "3.2.1",
1810
+ "BUILD_INFO_ID": "some-id",
1742
1811
  "ENV_SHORT": "prod",
1743
1812
  "ENV_TYPE": "prod",
1744
1813
  "HOST": "unknown-host.example.com",
1745
1814
  "KUBERNETES_CPU_LIMIT": "1",
1746
1815
  "KUBERNETES_CPU_REQUEST": "0.5",
1747
- "KUBERNETES_MEMORY_LIMIT": "500Mi",
1816
+ "KUBERNETES_MEMORY_LIMIT": "200Mi",
1748
1817
  "KUBERNETES_MEMORY_REQUEST": "200Mi",
1749
1818
  "ROOT_URL": "https://unknown-host.example.com",
1750
- "_ALL_ENV_VAR_KEYS": "["ENV_SHORT","APP_DIR","ENV_TYPE","HOST","ROOT_URL"]",
1819
+ "_ALL_ENV_VAR_KEYS": "["ENV_SHORT","APP_DIR","ENV_TYPE","BUILD_INFO_ID","BUILD_INFO_BUILD_TIME","BUILD_INFO_CURRENT_VERSION","HOST","ROOT_URL"]",
1751
1820
  },
1752
1821
  },
1753
1822
  "www ๐Ÿš€ Deploy | stage ": {
@@ -1788,15 +1857,18 @@ exports[`matches snapshot 1`] = `
1788
1857
  "stage": "deploy stage",
1789
1858
  "variables": {
1790
1859
  "APP_DIR": "www",
1860
+ "BUILD_INFO_BUILD_TIME": "01-01-2023 12:13:14",
1861
+ "BUILD_INFO_CURRENT_VERSION": "3.2.1",
1862
+ "BUILD_INFO_ID": "some-id",
1791
1863
  "ENV_SHORT": "stage",
1792
1864
  "ENV_TYPE": "stage",
1793
1865
  "HOST": "unknown-host.example.com",
1794
1866
  "KUBERNETES_CPU_LIMIT": "1",
1795
1867
  "KUBERNETES_CPU_REQUEST": "0.5",
1796
- "KUBERNETES_MEMORY_LIMIT": "500Mi",
1868
+ "KUBERNETES_MEMORY_LIMIT": "200Mi",
1797
1869
  "KUBERNETES_MEMORY_REQUEST": "200Mi",
1798
1870
  "ROOT_URL": "https://unknown-host.example.com",
1799
- "_ALL_ENV_VAR_KEYS": "["ENV_SHORT","APP_DIR","ENV_TYPE","HOST","ROOT_URL"]",
1871
+ "_ALL_ENV_VAR_KEYS": "["ENV_SHORT","APP_DIR","ENV_TYPE","BUILD_INFO_ID","BUILD_INFO_BUILD_TIME","BUILD_INFO_CURRENT_VERSION","HOST","ROOT_URL"]",
1800
1872
  },
1801
1873
  },
1802
1874
  "www ๐Ÿงพ sbom upload | prod ": {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@catladder/pipeline",
3
- "version": "1.100.2",
3
+ "version": "1.101.0",
4
4
  "scripts": {
5
5
  "build:tsc": "yarn tsc",
6
6
  "build": "yarn build:compile && yarn build:inline-variables && yarn build:bundle",
@@ -24,7 +24,11 @@ export const createNodeBuildJobs = (context: Context): CatladderJob[] => {
24
24
  variables: {
25
25
  ...NODE_RUNNER_BUILD_VARIABLES,
26
26
  },
27
- cache: [...getNodeCache(context), ...getNextCache(context)],
27
+ cache: [
28
+ ...(ensureArray(buildConfig.jobCache) ?? []),
29
+ ...getNodeCache(context),
30
+ ...getNextCache(context),
31
+ ],
28
32
  script: [
29
33
  ...yarnInstall,
30
34
  ...(ensureArray(buildConfig.buildCommand) ?? []),
@@ -39,6 +43,7 @@ export const createNodeBuildJobs = (context: Context): CatladderJob[] => {
39
43
  ) ?? []),
40
44
  ],
41
45
  },
46
+ jobTags: buildConfig.jobTags,
42
47
  })
43
48
  : null;
44
49
  return [
@@ -14,7 +14,8 @@ const getYarnInstallCommand = (context: Context) => {
14
14
  };
15
15
 
16
16
  export const ensureNodeVersion = (context: Context) => [
17
- "if [ -f ./.nvmrc ]; then source /root/.nvm/nvm.sh && nvm install <<< .nvmrc; fi",
17
+ "if [ -f ~/.nvm/nvm.sh ]; then source ~/.nvm/nvm.sh; fi",
18
+ "if [ -f ./.nvmrc ]; then nvm install <<< .nvmrc; fi",
18
19
  ];
19
20
 
20
21
  export const getYarnInstall = (context: Context) => [
@@ -75,6 +75,16 @@ export type BuildConfigBase = {
75
75
  * use to display information in merge requests, pipeline views and security dashboards.
76
76
  */
77
77
  artifactsReports?: BuildConfigArtifactsReports;
78
+
79
+ /**
80
+ * customize cache for the job
81
+ */
82
+ jobCache?: CatladderJob["cache"];
83
+
84
+ /**
85
+ * tags for the underlying job runner (e.g gitlab)
86
+ */
87
+ jobTags?: string[];
78
88
  };
79
89
 
80
90
  export type BuildConfigNodeBase = BuildConfigBase;
@@ -123,11 +133,6 @@ export type BuildConfigCustom = Omit<
123
133
 
124
134
  docker: BuildConfigCustomDocker;
125
135
 
126
- /**
127
- * customize cache for the job
128
- */
129
- jobCache?: CatladderJob["cache"];
130
-
131
136
  /**
132
137
  * custom lint, disabled when not set
133
138
  */
@@ -39,9 +39,12 @@ export const getEnvironmentVariables = async (
39
39
  ENV_SHORT: env,
40
40
  APP_DIR: envConfigRaw.dir,
41
41
  ENV_TYPE: envType,
42
+ BUILD_INFO_ID: commitInfo?.buildId,
43
+ BUILD_INFO_BUILD_TIME: commitInfo?.buildTime,
44
+ BUILD_INFO_CURRENT_VERSION: commitInfo?.currentVersion,
42
45
  };
43
46
 
44
- let predefinedVariables: Record<string, string>;
47
+ let predefinedVariables: Record<string, string | undefined>;
45
48
  let host: string;
46
49
  let url: string;
47
50
 
@@ -1,7 +1,6 @@
1
1
  import { getDockerImageVariables, requiresDockerBuild } from "../build/docker";
2
2
  import type { Context } from "../types";
3
3
  import type { CatladderJob } from "../types/jobs";
4
- import { isOfDeployType } from "./types";
5
4
  import { contextIsStoppable } from "./utils";
6
5
 
7
6
  export const DEPLOY_JOB_NAME = "๐Ÿš€ Deploy";
@@ -12,7 +11,7 @@ const DEPLOY_RUNNER_VARIABLES = {
12
11
  KUBERNETES_CPU_REQUEST: "0.5",
13
12
  KUBERNETES_CPU_LIMIT: "1",
14
13
  KUBERNETES_MEMORY_REQUEST: "200Mi",
15
- KUBERNETES_MEMORY_LIMIT: "500Mi",
14
+ KUBERNETES_MEMORY_LIMIT: "200Mi",
16
15
  };
17
16
  type JobWithoutScript = Omit<CatladderJob, "script">;
18
17
  export const getBaseDeploymentJob = (context: Context): JobWithoutScript => {
@@ -77,6 +76,9 @@ export const getBaseDeploymentJob = (context: Context): JobWithoutScript => {
77
76
  ...DEPLOY_RUNNER_VARIABLES,
78
77
  ...context.environment.envVars,
79
78
  ...(hasDocker ? getDockerImageVariables(context) : {}),
79
+ ...(context.componentConfig.deploy
80
+ ? context.componentConfig.deploy.extraVars ?? {}
81
+ : {}),
80
82
  },
81
83
  environment: {
82
84
  ...context.environment.gitlabEnvironment,
@@ -87,6 +89,9 @@ export const getBaseDeploymentJob = (context: Context): JobWithoutScript => {
87
89
  }
88
90
  : {}),
89
91
  },
92
+ jobTags: context.componentConfig.deploy
93
+ ? context.componentConfig.deploy.jobTags
94
+ : undefined,
90
95
  };
91
96
  };
92
97
 
@@ -11,6 +11,16 @@ export type DeployConfigBase = {
11
11
  * wait for other components to deploy first, before doing this deployment
12
12
  */
13
13
  waitFor?: string[];
14
+
15
+ /**
16
+ * tags for the underlying job runner (e.g gitlab)
17
+ */
18
+ jobTags?: string[];
19
+
20
+ /**
21
+ * additional env vars for the deploy job
22
+ */
23
+ extraVars?: Record<string, string>;
14
24
  };
15
25
 
16
26
  export type AllowUnknownProps<T extends Record<string, unknown>> = T &