@catladder/pipeline 0.0.0-refactore-catenv-command-validates-argument-78d05852 โ†’ 0.0.0-reference-database-url-1befbbee

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 (639) hide show
  1. package/README.md +15 -1
  2. package/dist/bash/BashExpression.d.ts +36 -0
  3. package/dist/bash/BashExpression.js +114 -0
  4. package/dist/bash/bashEscape.d.ts +37 -0
  5. package/dist/bash/bashEscape.js +119 -0
  6. package/dist/bash/bashExpressionPerPipelineType.d.ts +6 -0
  7. package/dist/bash/bashExpressionPerPipelineType.js +11 -0
  8. package/dist/bash/bashYaml.d.ts +10 -0
  9. package/dist/bash/bashYaml.js +69 -0
  10. package/dist/bash/getInjectVarsScript.d.ts +2 -0
  11. package/dist/bash/getInjectVarsScript.js +47 -0
  12. package/dist/bash/index.d.ts +2 -0
  13. package/dist/bash/index.js +26 -0
  14. package/dist/build/artifacts/createBuildJobArtifact.d.ts +3 -0
  15. package/dist/build/artifacts/createBuildJobArtifact.js +97 -0
  16. package/dist/build/base/__tests__/createArtifactsConfig.test.js +3 -1
  17. package/dist/build/base/constants.js +4 -2
  18. package/dist/build/base/createAppBuildJob.d.ts +5 -3
  19. package/dist/build/base/createAppBuildJob.js +18 -15
  20. package/dist/build/base/createArtifactsConfig.d.ts +1 -1
  21. package/dist/build/base/createArtifactsConfig.js +3 -1
  22. package/dist/build/base/createBuildJobDefinition.d.ts +6 -0
  23. package/dist/build/base/createBuildJobDefinition.js +58 -0
  24. package/dist/build/base/index.d.ts +6 -4
  25. package/dist/build/base/index.js +17 -6
  26. package/dist/build/base/writeBuildInfo.d.ts +2 -2
  27. package/dist/build/base/writeBuildInfo.js +4 -3
  28. package/dist/build/base/writeDotEnv.d.ts +3 -2
  29. package/dist/build/base/writeDotEnv.js +30 -6
  30. package/dist/build/cache/createJobCache.d.ts +7 -0
  31. package/dist/build/cache/createJobCache.js +115 -0
  32. package/dist/build/cache/getAllCacheConfigsFromConfig.d.ts +3 -0
  33. package/dist/build/cache/getAllCacheConfigsFromConfig.js +64 -0
  34. package/dist/build/cache/transformLegacyJobCache.d.ts +3 -0
  35. package/dist/build/cache/transformLegacyJobCache.js +29 -0
  36. package/dist/build/custom/__tests__/testJob.test.js +15 -16
  37. package/dist/build/custom/buildJob.d.ts +2 -2
  38. package/dist/build/custom/buildJob.js +8 -66
  39. package/dist/build/custom/index.d.ts +2 -2
  40. package/dist/build/custom/index.js +3 -1
  41. package/dist/build/custom/testJob.d.ts +4 -4
  42. package/dist/build/custom/testJob.js +25 -20
  43. package/dist/build/docker.d.ts +37 -46
  44. package/dist/build/docker.js +65 -34
  45. package/dist/build/index.d.ts +14 -7
  46. package/dist/build/index.js +44 -17
  47. package/dist/build/node/buildJob.d.ts +8 -2
  48. package/dist/build/node/buildJob.js +39 -52
  49. package/dist/build/node/cache.d.ts +4 -5
  50. package/dist/build/node/cache.js +18 -24
  51. package/dist/build/node/constants.js +5 -3
  52. package/dist/build/node/index.d.ts +4 -4
  53. package/dist/build/node/index.js +3 -1
  54. package/dist/build/node/meteor.d.ts +2 -2
  55. package/dist/build/node/meteor.js +10 -12
  56. package/dist/build/node/testJob.d.ts +3 -2
  57. package/dist/build/node/testJob.js +29 -19
  58. package/dist/build/node/yarn.d.ts +4 -3
  59. package/dist/build/node/yarn.js +11 -12
  60. package/dist/build/rails/build.d.ts +2 -2
  61. package/dist/build/rails/build.js +13 -6
  62. package/dist/build/rails/index.d.ts +2 -2
  63. package/dist/build/rails/index.js +3 -1
  64. package/dist/build/rails/test.d.ts +2 -2
  65. package/dist/build/rails/test.js +30 -11
  66. package/dist/build/sbom.d.ts +2 -2
  67. package/dist/build/sbom.js +13 -7
  68. package/dist/build/types.d.ts +160 -47
  69. package/dist/build/types.js +10 -2
  70. package/dist/catladder-gitlab.js +129 -49
  71. package/dist/config/__tests__/configruedEnvs.test.js +3 -1
  72. package/dist/config/__tests__/getAllEnvs.test.js +79 -0
  73. package/dist/config/__tests__/getAllEnvsInAllComponents.test.d.ts +1 -0
  74. package/dist/config/__tests__/getAllEnvsInAllComponents.test.js +73 -0
  75. package/dist/config/configruedEnvs.js +3 -1
  76. package/dist/config/index.js +13 -7
  77. package/dist/config/readConfig.d.ts +2 -2
  78. package/dist/config/readConfig.js +191 -40
  79. package/dist/constants.js +5 -3
  80. package/dist/context/createAllComponentsContext.d.ts +12 -0
  81. package/dist/{pipeline/commitInfo/getCommitInfo.js โ†’ context/createAllComponentsContext.js} +35 -19
  82. package/dist/context/createComponentContext.d.ts +11 -0
  83. package/dist/context/createComponentContext.js +262 -0
  84. package/dist/context/createWorkspaceContext.d.ts +16 -0
  85. package/dist/context/createWorkspaceContext.js +173 -0
  86. package/dist/context/getBuildInfoVariables.d.ts +6 -0
  87. package/dist/context/getBuildInfoVariables.js +55 -0
  88. package/dist/context/getEnvConfig.js +21 -4
  89. package/dist/context/getEnvType.js +3 -1
  90. package/dist/context/getEnvironment.d.ts +3 -3
  91. package/dist/context/getEnvironment.js +11 -12
  92. package/dist/context/getEnvironmentContext.d.ts +7 -3
  93. package/dist/context/getEnvironmentContext.js +21 -11
  94. package/dist/context/getEnvironmentVariables.d.ts +22 -5
  95. package/dist/context/getEnvironmentVariables.js +79 -53
  96. package/dist/context/getLabels.d.ts +2 -2
  97. package/dist/context/getLabels.js +9 -7
  98. package/dist/context/getReviewSlug.d.ts +4 -0
  99. package/dist/context/getReviewSlug.js +21 -0
  100. package/dist/context/index.d.ts +2 -4
  101. package/dist/context/index.js +15 -162
  102. package/dist/context/transformJobOnlyVars.d.ts +5 -2
  103. package/dist/context/transformJobOnlyVars.js +4 -2
  104. package/dist/context/utils/envVars.d.ts +1 -1
  105. package/dist/context/utils/envVars.js +5 -2
  106. package/dist/defaults/index.js +3 -1
  107. package/dist/deploy/base/deploy.d.ts +3 -3
  108. package/dist/deploy/base/deploy.js +37 -21
  109. package/dist/deploy/base/index.d.ts +3 -5
  110. package/dist/deploy/base/index.js +3 -1
  111. package/dist/deploy/base/rollback.d.ts +3 -3
  112. package/dist/deploy/base/rollback.js +13 -9
  113. package/dist/deploy/base/stop.d.ts +3 -3
  114. package/dist/deploy/base/stop.js +16 -11
  115. package/dist/deploy/base/types.d.ts +1 -1
  116. package/dist/deploy/base/types.js +3 -1
  117. package/dist/deploy/base/variables.js +4 -2
  118. package/dist/deploy/cloudRun/artifactsRegistry.d.ts +8 -11
  119. package/dist/deploy/cloudRun/artifactsRegistry.js +15 -14
  120. package/dist/deploy/cloudRun/cleanup.d.ts +2 -2
  121. package/dist/deploy/cloudRun/cleanup.js +3 -1
  122. package/dist/deploy/cloudRun/cloudRunRevisions.d.ts +2 -2
  123. package/dist/deploy/cloudRun/cloudRunRevisions.js +7 -6
  124. package/dist/deploy/cloudRun/createJobs/cloudRunJobs.d.ts +8 -6
  125. package/dist/deploy/cloudRun/createJobs/cloudRunJobs.js +57 -106
  126. package/dist/deploy/cloudRun/createJobs/cloudRunServices.d.ts +3 -3
  127. package/dist/deploy/cloudRun/createJobs/cloudRunServices.js +79 -15
  128. package/dist/deploy/cloudRun/createJobs/common.d.ts +7 -7
  129. package/dist/deploy/cloudRun/createJobs/common.js +6 -3
  130. package/dist/deploy/cloudRun/createJobs/constants.d.ts +1 -0
  131. package/dist/deploy/cloudRun/createJobs/constants.js +7 -0
  132. package/dist/deploy/cloudRun/createJobs/execute/onDeploy.d.ts +3 -0
  133. package/dist/deploy/cloudRun/createJobs/execute/onDeploy.js +115 -0
  134. package/dist/deploy/cloudRun/createJobs/execute/schedules.d.ts +3 -0
  135. package/dist/deploy/cloudRun/createJobs/execute/schedules.js +173 -0
  136. package/dist/deploy/cloudRun/createJobs/getCloudRunDeployScripts.d.ts +2 -2
  137. package/dist/deploy/cloudRun/createJobs/getCloudRunDeployScripts.js +13 -5
  138. package/dist/deploy/cloudRun/createJobs/getCloudRunStopScripts.d.ts +2 -2
  139. package/dist/deploy/cloudRun/createJobs/getCloudRunStopScripts.js +7 -3
  140. package/dist/deploy/cloudRun/createJobs/healthCheck.d.ts +5 -0
  141. package/dist/deploy/cloudRun/createJobs/healthCheck.js +82 -0
  142. package/dist/deploy/cloudRun/createJobs/index.d.ts +2 -2
  143. package/dist/deploy/cloudRun/createJobs/index.js +26 -12
  144. package/dist/deploy/cloudRun/createJobs/volumes.d.ts +3 -0
  145. package/dist/deploy/cloudRun/createJobs/volumes.js +58 -0
  146. package/dist/deploy/cloudRun/index.d.ts +2 -2
  147. package/dist/deploy/cloudRun/index.js +25 -13
  148. package/dist/deploy/cloudRun/utils/cloudRunExecutionUrl.d.ts +10 -0
  149. package/dist/deploy/cloudRun/utils/cloudRunExecutionUrl.js +16 -0
  150. package/dist/deploy/cloudRun/utils/createArgsString.d.ts +2 -2
  151. package/dist/deploy/cloudRun/utils/createArgsString.js +3 -1
  152. package/dist/deploy/cloudRun/utils/database.d.ts +25 -4
  153. package/dist/deploy/cloudRun/utils/database.js +49 -15
  154. package/dist/deploy/cloudRun/utils/gcloudServiceAccountLoginCommands.d.ts +2 -2
  155. package/dist/deploy/cloudRun/utils/gcloudServiceAccountLoginCommands.js +3 -1
  156. package/dist/deploy/cloudRun/utils/getJobOrServiceArgs.d.ts +2 -0
  157. package/dist/deploy/cloudRun/utils/getJobOrServiceArgs.js +12 -0
  158. package/dist/deploy/cloudRun/utils/getServiceName.d.ts +2 -2
  159. package/dist/deploy/cloudRun/utils/getServiceName.js +3 -1
  160. package/dist/deploy/cloudRun/utils/jobName.d.ts +6 -1
  161. package/dist/deploy/cloudRun/utils/jobName.js +18 -4
  162. package/dist/deploy/cloudRun/utils/removeFirstLinesFromCommandOutput.js +3 -1
  163. package/dist/deploy/cloudSql/utils.d.ts +2 -1
  164. package/dist/deploy/cloudSql/utils.js +7 -2
  165. package/dist/deploy/custom/deployJob.d.ts +2 -2
  166. package/dist/deploy/custom/deployJob.js +10 -9
  167. package/dist/deploy/custom/index.d.ts +2 -2
  168. package/dist/deploy/custom/index.js +3 -1
  169. package/dist/deploy/dockerTag/deployJob.d.ts +2 -2
  170. package/dist/deploy/dockerTag/deployJob.js +6 -6
  171. package/dist/deploy/dockerTag/index.d.ts +2 -2
  172. package/dist/deploy/dockerTag/index.js +3 -1
  173. package/dist/deploy/index.d.ts +10 -9
  174. package/dist/deploy/index.js +13 -7
  175. package/dist/deploy/kubernetes/additionalSecretKeys.d.ts +3 -1
  176. package/dist/deploy/kubernetes/additionalSecretKeys.js +3 -1
  177. package/dist/deploy/kubernetes/cloudSql/index.d.ts +6 -5
  178. package/dist/deploy/kubernetes/cloudSql/index.js +14 -21
  179. package/dist/deploy/kubernetes/deployJob.d.ts +2 -2
  180. package/dist/deploy/kubernetes/deployJob.js +23 -22
  181. package/dist/deploy/kubernetes/index.d.ts +2 -2
  182. package/dist/deploy/kubernetes/index.js +52 -15
  183. package/dist/deploy/kubernetes/kubeEnv.d.ts +5 -4
  184. package/dist/deploy/kubernetes/kubeEnv.js +9 -5
  185. package/dist/deploy/kubernetes/kubeValues.d.ts +5 -6
  186. package/dist/deploy/kubernetes/kubeValues.js +17 -19
  187. package/dist/deploy/kubernetes/mongodb.d.ts +2 -2
  188. package/dist/deploy/kubernetes/mongodb.js +14 -12
  189. package/dist/deploy/sbom.d.ts +4 -4
  190. package/dist/deploy/sbom.js +8 -4
  191. package/dist/deploy/types/base.d.ts +5 -5
  192. package/dist/deploy/types/base.js +3 -1
  193. package/dist/deploy/types/custom.d.ts +3 -7
  194. package/dist/deploy/types/custom.js +3 -1
  195. package/dist/deploy/types/dockerTag.d.ts +1 -1
  196. package/dist/deploy/types/dockerTag.js +3 -1
  197. package/dist/deploy/types/googleCloudRun.d.ts +291 -16
  198. package/dist/deploy/types/googleCloudRun.js +28 -1
  199. package/dist/deploy/types/index.d.ts +8 -7
  200. package/dist/deploy/types/index.js +21 -10
  201. package/dist/deploy/types/kubernetes.d.ts +21 -54
  202. package/dist/deploy/types/kubernetes.js +3 -1
  203. package/dist/deploy/utils.d.ts +2 -2
  204. package/dist/deploy/utils.js +5 -2
  205. package/dist/globalScriptFunctions/index.d.ts +14 -0
  206. package/dist/globalScriptFunctions/index.js +37 -0
  207. package/dist/index.d.ts +5 -2
  208. package/dist/index.js +18 -9
  209. package/dist/packageInfos.d.ts +4 -0
  210. package/dist/packageInfos.js +20 -0
  211. package/dist/pipeline/__tests__/getPipelineStages.test.d.ts +1 -0
  212. package/dist/pipeline/__tests__/getPipelineStages.test.js +73 -0
  213. package/dist/pipeline/createAllJobs.d.ts +16 -6
  214. package/dist/pipeline/createAllJobs.js +99 -27
  215. package/dist/pipeline/createJobsForComponent.d.ts +2 -2
  216. package/dist/pipeline/createJobsForComponent.js +9 -149
  217. package/dist/pipeline/createJobsForWorkspace.d.ts +3 -0
  218. package/dist/pipeline/createJobsForWorkspace.js +12 -0
  219. package/dist/pipeline/createMainPipeline.d.ts +3 -0
  220. package/dist/pipeline/createMainPipeline.js +283 -0
  221. package/dist/pipeline/generatePipelineFiles.d.ts +7 -0
  222. package/dist/pipeline/generatePipelineFiles.js +305 -0
  223. package/dist/pipeline/getPipelineStages.d.ts +7 -0
  224. package/dist/pipeline/getPipelineStages.js +56 -0
  225. package/dist/pipeline/gitlab/createGitlabJobs.d.ts +11 -14
  226. package/dist/pipeline/gitlab/createGitlabJobs.js +264 -74
  227. package/dist/pipeline/gitlab/createGitlabPipeline.d.ts +9 -0
  228. package/dist/pipeline/gitlab/createGitlabPipeline.js +77 -0
  229. package/dist/pipeline/gitlab/gitlabReleaseJobs.d.ts +33 -0
  230. package/dist/pipeline/gitlab/gitlabReleaseJobs.js +25 -0
  231. package/dist/pipeline/gitlab/sortGitLabJobDefProps.d.ts +7 -0
  232. package/dist/pipeline/gitlab/sortGitLabJobDefProps.js +27 -0
  233. package/dist/pipeline/index.d.ts +3 -2
  234. package/dist/pipeline/index.js +16 -9
  235. package/dist/pipeline/packageManager.d.ts +4 -2
  236. package/dist/pipeline/packageManager.js +56 -19
  237. package/dist/pipeline/yarn/yarnUtils.d.ts +2 -2
  238. package/dist/pipeline/yarn/yarnUtils.js +18 -15
  239. package/dist/rules/index.d.ts +10 -3
  240. package/dist/rules/index.js +35 -17
  241. package/dist/runner/index.d.ts +1 -1
  242. package/dist/runner/index.js +3 -1
  243. package/dist/tsconfig.tsbuildinfo +1 -1
  244. package/dist/types/config.d.ts +54 -36
  245. package/dist/types/config.js +5 -2
  246. package/dist/types/context.d.ts +123 -38
  247. package/dist/types/context.js +12 -1
  248. package/dist/types/environmentContext.d.ts +15 -12
  249. package/dist/types/environmentContext.js +3 -1
  250. package/dist/types/gitlab-ci-yml.d.ts +30 -30
  251. package/dist/types/gitlab-ci-yml.js +3 -2
  252. package/dist/types/gitlab-types.d.ts +8 -8
  253. package/dist/types/gitlab-types.js +3 -1
  254. package/dist/types/index.d.ts +3 -1
  255. package/dist/types/index.js +16 -8
  256. package/dist/types/jobDefinition.d.ts +11 -0
  257. package/dist/types/jobDefinition.js +5 -0
  258. package/dist/types/jobs.d.ts +30 -15
  259. package/dist/types/jobs.js +3 -1
  260. package/dist/types/pipeline.d.ts +3 -3
  261. package/dist/types/pipeline.js +3 -1
  262. package/dist/types/utils.d.ts +1 -1
  263. package/dist/types/utils.js +3 -1
  264. package/dist/utils/gitlab.js +7 -2
  265. package/dist/utils/index.d.ts +2 -1
  266. package/dist/utils/index.js +10 -3
  267. package/dist/utils/jsonParse.d.ts +1 -0
  268. package/dist/utils/jsonParse.js +14 -0
  269. package/dist/utils/removeUndefined.d.ts +1 -0
  270. package/dist/utils/removeUndefined.js +36 -0
  271. package/dist/utils/writeFiles.d.ts +11 -0
  272. package/dist/{pipeline/commitInfo/getBuildId.js โ†’ utils/writeFiles.js} +39 -22
  273. package/dist/variables/VariableValue.d.ts +3 -0
  274. package/dist/variables/VariableValue.js +5 -0
  275. package/dist/variables/VariableValueContainingReferences.d.ts +24 -0
  276. package/dist/variables/VariableValueContainingReferences.js +97 -0
  277. package/dist/variables/__tests__/resolveAllReferences.test.d.ts +1 -0
  278. package/dist/variables/__tests__/resolveAllReferences.test.js +218 -0
  279. package/dist/variables/__tests__/resolveAllReferencesOnce.test.d.ts +1 -0
  280. package/dist/variables/__tests__/resolveAllReferencesOnce.test.js +171 -0
  281. package/dist/variables/__tests__/resolveReferencesOnce.test.d.ts +1 -0
  282. package/dist/variables/__tests__/resolveReferencesOnce.test.js +199 -0
  283. package/dist/variables/__tests__/variableValue.test.d.ts +1 -0
  284. package/dist/variables/__tests__/variableValue.test.js +36 -0
  285. package/dist/variables/resolveAllReferences.d.ts +3 -0
  286. package/dist/{pipeline/createChildPipeline.js โ†’ variables/resolveAllReferences.js} +44 -48
  287. package/dist/variables/resolveAllReferencesOnce.d.ts +5 -0
  288. package/dist/variables/resolveAllReferencesOnce.js +191 -0
  289. package/dist/variables/resolveReferencesOnce.d.ts +8 -0
  290. package/dist/variables/resolveReferencesOnce.js +22 -0
  291. package/examples/.test-gen-ignore +1 -0
  292. package/examples/__snapshots__/cloud-run-health-check-defaults.test.ts.snap +1394 -0
  293. package/examples/__snapshots__/cloud-run-health-check-only-startup.test.ts.snap +1394 -0
  294. package/examples/__snapshots__/cloud-run-health-check.test.ts.snap +1394 -0
  295. package/examples/__snapshots__/cloud-run-http2.test.ts.snap +1394 -0
  296. package/examples/__snapshots__/cloud-run-llama.test.ts.snap +624 -0
  297. package/examples/__snapshots__/cloud-run-memory-limit.test.ts.snap +1394 -0
  298. package/examples/__snapshots__/cloud-run-meteor-with-worker.test.ts.snap +1394 -0
  299. package/examples/__snapshots__/cloud-run-nextjs.test.ts.snap +1410 -0
  300. package/examples/__snapshots__/cloud-run-no-cpu-throttling.test.ts.snap +1394 -0
  301. package/examples/__snapshots__/cloud-run-no-service.test.ts.snap +1502 -0
  302. package/examples/__snapshots__/cloud-run-non-public.test.ts.snap +1394 -0
  303. package/examples/__snapshots__/cloud-run-post-stop-job.test.ts.snap +1412 -0
  304. package/examples/__snapshots__/cloud-run-service-custom-vpc-connector.test.ts.snap +1462 -0
  305. package/examples/__snapshots__/cloud-run-service-custom-vpc.test.ts.snap +1462 -0
  306. package/examples/__snapshots__/cloud-run-service-gen2.test.ts.snap +1394 -0
  307. package/examples/__snapshots__/cloud-run-service-increase-timout.test.ts.snap +1394 -0
  308. package/examples/__snapshots__/cloud-run-service-with-volumes.test.ts.snap +1466 -0
  309. package/examples/__snapshots__/cloud-run-storybook.test.ts.snap +1284 -0
  310. package/examples/__snapshots__/cloud-run-with-gpu.test.ts.snap +1394 -0
  311. package/examples/__snapshots__/cloud-run-with-ngnix.test.ts.snap +1394 -0
  312. package/examples/__snapshots__/cloud-run-with-sql-legacy-jobs.test.ts.snap +1709 -0
  313. package/examples/__snapshots__/cloud-run-with-sql-multiple-dbs.test.ts.snap +4515 -0
  314. package/examples/__snapshots__/cloud-run-with-sql-reuse-db.test.ts.snap +2950 -0
  315. package/examples/__snapshots__/cloud-run-with-sql.test.ts.snap +1772 -0
  316. package/examples/__snapshots__/cloud-run-with-worker.test.ts.snap +1402 -0
  317. package/examples/__snapshots__/custom-build-job-with-tests.test.ts.snap +1261 -0
  318. package/examples/__snapshots__/custom-build-job.test.ts.snap +1156 -0
  319. package/examples/__snapshots__/custom-deploy.test.ts.snap +1059 -0
  320. package/examples/__snapshots__/custom-envs.test.ts.snap +786 -0
  321. package/examples/__snapshots__/custom-sbom-java.test.ts.snap +1152 -0
  322. package/examples/__snapshots__/custom-verify-job.test.ts.snap +1606 -0
  323. package/examples/__snapshots__/git-submodule.test.ts.snap +1395 -0
  324. package/examples/__snapshots__/kubernetes-application-customization.test.ts.snap +1713 -0
  325. package/examples/__snapshots__/kubernetes-with-cloud-sql.test.ts.snap +1733 -0
  326. package/examples/__snapshots__/kubernetes-with-jobs.test.ts.snap +3265 -0
  327. package/examples/__snapshots__/kubernetes-with-mongodb.test.ts.snap +1837 -0
  328. package/examples/__snapshots__/local-dot-env.test.ts.snap +1318 -0
  329. package/examples/__snapshots__/meteor-kubernetes.test.ts.snap +1790 -0
  330. package/examples/__snapshots__/multiline-var.test.ts.snap +5585 -0
  331. package/examples/__snapshots__/native-app.test.ts.snap +2210 -0
  332. package/examples/__snapshots__/node-build-with-custom-image.test.ts.snap +1394 -0
  333. package/examples/__snapshots__/node-build-with-docker-additions.test.ts.snap +1402 -0
  334. package/examples/__snapshots__/override-secrets.test.ts.snap +1419 -0
  335. package/examples/__snapshots__/rails-k8s-with-worker-dockerfile.test.ts.snap +1464 -0
  336. package/examples/__snapshots__/rails-k8s-with-worker.test.ts.snap +1444 -0
  337. package/examples/__snapshots__/referencing-other-vars.test.ts.snap +4645 -0
  338. package/examples/__snapshots__/wait-for-other-deploy.test.ts.snap +1424 -0
  339. package/examples/__snapshots__/workspace-api-www-turbo-cache.test.ts.snap +2298 -0
  340. package/examples/__snapshots__/workspace-api-www.test.ts.snap +2290 -0
  341. package/examples/__utils__/helpers.ts +9 -12
  342. package/examples/cloud-run-health-check-defaults.test.ts +11 -0
  343. package/examples/cloud-run-health-check-defaults.ts +28 -0
  344. package/examples/cloud-run-health-check-only-startup.test.ts +11 -0
  345. package/examples/cloud-run-health-check-only-startup.ts +38 -0
  346. package/examples/cloud-run-health-check.test.ts +11 -0
  347. package/examples/cloud-run-health-check.ts +45 -0
  348. package/examples/cloud-run-http2.test.ts +11 -0
  349. package/examples/cloud-run-http2.ts +29 -0
  350. package/examples/cloud-run-llama.test.ts +11 -0
  351. package/examples/cloud-run-llama.ts +40 -0
  352. package/examples/cloud-run-memory-limit.test.ts +11 -0
  353. package/examples/cloud-run-memory-limit.ts +12 -7
  354. package/examples/cloud-run-meteor-with-worker.test.ts +11 -0
  355. package/examples/cloud-run-meteor-with-worker.ts +13 -7
  356. package/examples/cloud-run-nextjs.test.ts +11 -0
  357. package/examples/cloud-run-nextjs.ts +28 -0
  358. package/examples/cloud-run-no-cpu-throttling.test.ts +11 -0
  359. package/examples/cloud-run-no-cpu-throttling.ts +8 -6
  360. package/examples/cloud-run-no-service.test.ts +11 -0
  361. package/examples/cloud-run-no-service.ts +39 -0
  362. package/examples/cloud-run-non-public.test.ts +11 -0
  363. package/examples/cloud-run-non-public.ts +7 -6
  364. package/examples/cloud-run-post-stop-job.test.ts +11 -0
  365. package/examples/cloud-run-post-stop-job.ts +15 -6
  366. package/examples/cloud-run-service-custom-vpc-connector.test.ts +11 -0
  367. package/examples/cloud-run-service-custom-vpc-connector.ts +37 -0
  368. package/examples/cloud-run-service-custom-vpc.test.ts +11 -0
  369. package/examples/cloud-run-service-custom-vpc.ts +39 -0
  370. package/examples/cloud-run-service-gen2.test.ts +11 -0
  371. package/examples/cloud-run-service-gen2.ts +8 -6
  372. package/examples/cloud-run-service-increase-timout.test.ts +11 -0
  373. package/examples/cloud-run-service-increase-timout.ts +29 -0
  374. package/examples/cloud-run-service-with-volumes.test.ts +11 -0
  375. package/examples/cloud-run-service-with-volumes.ts +64 -0
  376. package/examples/cloud-run-storybook.test.ts +11 -0
  377. package/examples/cloud-run-storybook.ts +33 -0
  378. package/examples/cloud-run-with-gpu.test.ts +11 -0
  379. package/examples/cloud-run-with-gpu.ts +30 -0
  380. package/examples/cloud-run-with-ngnix.test.ts +11 -0
  381. package/examples/cloud-run-with-ngnix.ts +29 -0
  382. package/examples/cloud-run-with-sql-legacy-jobs.test.ts +11 -0
  383. package/examples/cloud-run-with-sql-legacy-jobs.ts +49 -0
  384. package/examples/cloud-run-with-sql-multiple-dbs.test.ts +11 -0
  385. package/examples/cloud-run-with-sql-multiple-dbs.ts +87 -0
  386. package/examples/cloud-run-with-sql-reuse-db.test.ts +11 -0
  387. package/examples/cloud-run-with-sql-reuse-db.ts +7 -6
  388. package/examples/cloud-run-with-sql.test.ts +11 -0
  389. package/examples/cloud-run-with-sql.ts +45 -24
  390. package/examples/cloud-run-with-worker.test.ts +11 -0
  391. package/examples/cloud-run-with-worker.ts +8 -6
  392. package/examples/custom-build-job-with-tests.test.ts +11 -0
  393. package/examples/custom-build-job-with-tests.ts +7 -6
  394. package/examples/custom-build-job.test.ts +11 -0
  395. package/examples/custom-build-job.ts +7 -6
  396. package/examples/custom-deploy.test.ts +11 -0
  397. package/examples/custom-deploy.ts +22 -14
  398. package/examples/custom-envs.test.ts +11 -0
  399. package/examples/custom-envs.ts +7 -6
  400. package/examples/custom-sbom-java.test.ts +11 -0
  401. package/examples/custom-sbom-java.ts +12 -8
  402. package/examples/custom-verify-job.test.ts +11 -0
  403. package/examples/custom-verify-job.ts +65 -0
  404. package/examples/git-submodule.test.ts +11 -0
  405. package/examples/git-submodule.ts +30 -0
  406. package/examples/kubernetes-application-customization.test.ts +11 -0
  407. package/examples/kubernetes-application-customization.ts +9 -6
  408. package/examples/kubernetes-with-cloud-sql.test.ts +11 -0
  409. package/examples/kubernetes-with-cloud-sql.ts +9 -6
  410. package/examples/kubernetes-with-jobs.test.ts +11 -0
  411. package/examples/kubernetes-with-jobs.ts +9 -6
  412. package/examples/kubernetes-with-mongodb.test.ts +11 -0
  413. package/examples/kubernetes-with-mongodb.ts +9 -6
  414. package/examples/local-dot-env.test.ts +11 -0
  415. package/examples/local-dot-env.ts +27 -0
  416. package/examples/meteor-kubernetes.test.ts +11 -0
  417. package/examples/meteor-kubernetes.ts +6 -7
  418. package/examples/multiline-var.test.ts +11 -0
  419. package/examples/multiline-var.ts +107 -0
  420. package/examples/native-app.test.ts +11 -0
  421. package/examples/native-app.ts +24 -19
  422. package/examples/node-build-with-custom-image.test.ts +11 -0
  423. package/examples/node-build-with-custom-image.ts +7 -6
  424. package/examples/node-build-with-docker-additions.test.ts +11 -0
  425. package/examples/node-build-with-docker-additions.ts +7 -6
  426. package/examples/override-secrets.test.ts +11 -0
  427. package/examples/override-secrets.ts +44 -0
  428. package/examples/rails-k8s-with-worker-dockerfile.test.ts +33 -0
  429. package/examples/rails-k8s-with-worker.test.ts +11 -0
  430. package/examples/rails-k8s-with-worker.ts +13 -13
  431. package/examples/referencing-other-vars.test.ts +11 -0
  432. package/examples/referencing-other-vars.ts +83 -0
  433. package/examples/wait-for-other-deploy.test.ts +11 -0
  434. package/examples/wait-for-other-deploy.ts +6 -5
  435. package/examples/workspace-api-www-turbo-cache.test.ts +11 -0
  436. package/examples/workspace-api-www-turbo-cache.ts +52 -0
  437. package/examples/workspace-api-www.test.ts +11 -0
  438. package/examples/workspace-api-www.ts +46 -0
  439. package/package.json +23 -26
  440. package/scripts/generate-examples-test.ts +84 -0
  441. package/scripts/generate-gitlab-ci-types.ts +2 -2
  442. package/scripts/tsconfig.json +7 -0
  443. package/src/bash/BashExpression.ts +78 -0
  444. package/src/bash/bashEscape.ts +164 -0
  445. package/src/bash/bashExpressionPerPipelineType.ts +16 -0
  446. package/src/bash/bashYaml.ts +80 -0
  447. package/src/bash/getInjectVarsScript.ts +21 -0
  448. package/src/bash/index.ts +2 -0
  449. package/src/build/artifacts/createBuildJobArtifact.ts +63 -0
  450. package/src/build/base/__tests__/createArtifactsConfig.test.ts +3 -3
  451. package/src/build/base/constants.ts +1 -1
  452. package/src/build/base/createAppBuildJob.ts +40 -24
  453. package/src/build/base/createArtifactsConfig.ts +2 -2
  454. package/src/build/base/createBuildJobDefinition.ts +37 -0
  455. package/src/build/base/index.ts +40 -8
  456. package/src/build/base/writeBuildInfo.ts +3 -3
  457. package/src/build/base/writeDotEnv.ts +25 -6
  458. package/src/build/cache/createJobCache.ts +83 -0
  459. package/src/build/cache/getAllCacheConfigsFromConfig.ts +29 -0
  460. package/src/build/cache/transformLegacyJobCache.ts +14 -0
  461. package/src/build/custom/__tests__/testJob.test.ts +10 -13
  462. package/src/build/custom/buildJob.ts +11 -37
  463. package/src/build/custom/index.ts +4 -2
  464. package/src/build/custom/testJob.ts +24 -21
  465. package/src/build/docker.ts +110 -49
  466. package/src/build/index.ts +45 -11
  467. package/src/build/node/buildJob.ts +68 -69
  468. package/src/build/node/cache.ts +28 -34
  469. package/src/build/node/constants.ts +2 -2
  470. package/src/build/node/index.ts +13 -4
  471. package/src/build/node/meteor.ts +19 -24
  472. package/src/build/node/testJob.ts +44 -25
  473. package/src/build/node/yarn.ts +22 -15
  474. package/src/build/rails/build.ts +15 -9
  475. package/src/build/rails/index.ts +4 -2
  476. package/src/build/rails/test.ts +41 -12
  477. package/src/build/sbom.ts +21 -11
  478. package/src/build/types.ts +198 -47
  479. package/src/catladder-gitlab.ts +7 -56
  480. package/src/config/__tests__/__snapshots__/getAllEnvs.test.ts.snap +31 -0
  481. package/src/config/__tests__/__snapshots__/getAllEnvsInAllComponents.test.ts.snap +15 -0
  482. package/src/config/__tests__/getAllEnvs.test.ts +71 -0
  483. package/src/config/__tests__/getAllEnvsInAllComponents.test.ts +63 -0
  484. package/src/config/configruedEnvs.ts +6 -6
  485. package/src/config/readConfig.ts +15 -22
  486. package/src/constants.ts +5 -2
  487. package/src/context/createAllComponentsContext.ts +31 -0
  488. package/src/context/createComponentContext.ts +148 -0
  489. package/src/context/createWorkspaceContext.ts +56 -0
  490. package/src/context/getBuildInfoVariables.ts +36 -0
  491. package/src/context/getEnvConfig.ts +25 -5
  492. package/src/context/getEnvType.ts +1 -1
  493. package/src/context/getEnvironment.ts +8 -24
  494. package/src/context/getEnvironmentContext.ts +25 -29
  495. package/src/context/getEnvironmentVariables.ts +101 -83
  496. package/src/context/getLabels.ts +8 -5
  497. package/src/context/getReviewSlug.ts +27 -0
  498. package/src/context/index.ts +1 -65
  499. package/src/context/transformJobOnlyVars.ts +6 -3
  500. package/src/context/utils/envVars.ts +5 -4
  501. package/src/deploy/base/deploy.ts +63 -47
  502. package/src/deploy/base/index.ts +11 -6
  503. package/src/deploy/base/rollback.ts +11 -16
  504. package/src/deploy/base/stop.ts +11 -15
  505. package/src/deploy/base/variables.ts +1 -1
  506. package/src/deploy/cloudRun/artifactsRegistry.ts +32 -28
  507. package/src/deploy/cloudRun/cleanup.ts +5 -5
  508. package/src/deploy/cloudRun/cloudRunRevisions.ts +9 -11
  509. package/src/deploy/cloudRun/createJobs/cloudRunJobs.ts +71 -153
  510. package/src/deploy/cloudRun/createJobs/cloudRunServices.ts +65 -26
  511. package/src/deploy/cloudRun/createJobs/common.ts +7 -7
  512. package/src/deploy/cloudRun/createJobs/constants.ts +1 -0
  513. package/src/deploy/cloudRun/createJobs/execute/onDeploy.ts +102 -0
  514. package/src/deploy/cloudRun/createJobs/execute/schedules.ts +186 -0
  515. package/src/deploy/cloudRun/createJobs/getCloudRunDeployScripts.ts +27 -16
  516. package/src/deploy/cloudRun/createJobs/getCloudRunStopScripts.ts +9 -11
  517. package/src/deploy/cloudRun/createJobs/healthCheck.ts +64 -0
  518. package/src/deploy/cloudRun/createJobs/index.ts +20 -14
  519. package/src/deploy/cloudRun/createJobs/volumes.ts +23 -0
  520. package/src/deploy/cloudRun/index.ts +94 -60
  521. package/src/deploy/cloudRun/utils/cloudRunExecutionUrl.ts +20 -0
  522. package/src/deploy/cloudRun/utils/createArgsString.ts +6 -2
  523. package/src/deploy/cloudRun/utils/database.ts +116 -9
  524. package/src/deploy/cloudRun/utils/gcloudServiceAccountLoginCommands.ts +5 -3
  525. package/src/deploy/cloudRun/utils/getJobOrServiceArgs.ts +18 -0
  526. package/src/deploy/cloudRun/utils/getServiceName.ts +2 -2
  527. package/src/deploy/cloudRun/utils/jobName.ts +22 -2
  528. package/src/deploy/cloudRun/utils/removeFirstLinesFromCommandOutput.ts +1 -1
  529. package/src/deploy/cloudSql/utils.ts +13 -10
  530. package/src/deploy/custom/deployJob.ts +15 -10
  531. package/src/deploy/custom/index.ts +2 -2
  532. package/src/deploy/dockerTag/deployJob.ts +6 -7
  533. package/src/deploy/dockerTag/index.ts +8 -7
  534. package/src/deploy/index.ts +15 -12
  535. package/src/deploy/kubernetes/additionalSecretKeys.ts +3 -1
  536. package/src/deploy/kubernetes/cloudSql/index.ts +16 -25
  537. package/src/deploy/kubernetes/deployJob.ts +30 -21
  538. package/src/deploy/kubernetes/index.ts +43 -35
  539. package/src/deploy/kubernetes/kubeEnv.ts +12 -10
  540. package/src/deploy/kubernetes/kubeValues.ts +25 -20
  541. package/src/deploy/kubernetes/mongodb.ts +15 -15
  542. package/src/deploy/sbom.ts +20 -10
  543. package/src/deploy/types/base.ts +3 -3
  544. package/src/deploy/types/custom.ts +3 -7
  545. package/src/deploy/types/googleCloudRun.ts +359 -2
  546. package/src/deploy/types/index.ts +9 -2
  547. package/src/deploy/types/kubernetes.ts +1 -36
  548. package/src/deploy/utils.ts +5 -5
  549. package/src/globalScriptFunctions/index.ts +30 -0
  550. package/src/index.ts +4 -1
  551. package/src/packageInfos.ts +14 -0
  552. package/src/pipeline/__tests__/__snapshots__/getPipelineStages.test.ts.snap +69 -0
  553. package/src/pipeline/__tests__/getPipelineStages.test.ts +63 -0
  554. package/src/pipeline/createAllJobs.ts +67 -33
  555. package/src/pipeline/createJobsForComponent.ts +17 -37
  556. package/src/pipeline/createJobsForWorkspace.ts +12 -0
  557. package/src/pipeline/createMainPipeline.ts +118 -0
  558. package/src/pipeline/generatePipelineFiles.ts +100 -0
  559. package/src/pipeline/getPipelineStages.ts +23 -0
  560. package/src/pipeline/gitlab/createGitlabJobs.ts +398 -108
  561. package/src/pipeline/gitlab/createGitlabPipeline.ts +35 -0
  562. package/src/pipeline/gitlab/gitlabReleaseJobs.ts +23 -0
  563. package/src/pipeline/gitlab/sortGitLabJobDefProps.ts +59 -0
  564. package/src/pipeline/index.ts +2 -1
  565. package/src/pipeline/packageManager.ts +42 -18
  566. package/src/pipeline/yarn/yarnUtils.ts +15 -12
  567. package/src/rules/index.ts +41 -18
  568. package/src/runner/index.ts +0 -1
  569. package/src/types/config.ts +62 -23
  570. package/src/types/context.ts +167 -36
  571. package/src/types/environmentContext.ts +18 -13
  572. package/src/types/gitlab-ci-yml.ts +0 -1
  573. package/src/types/gitlab-types.ts +10 -7
  574. package/src/types/index.ts +2 -0
  575. package/src/types/jobDefinition.ts +34 -0
  576. package/src/types/jobs.ts +31 -15
  577. package/src/types/utils.ts +4 -4
  578. package/src/utils/gitlab.ts +20 -3
  579. package/src/utils/index.ts +6 -3
  580. package/src/utils/jsonParse.ts +7 -0
  581. package/src/utils/removeUndefined.ts +4 -0
  582. package/src/utils/writeFiles.ts +52 -0
  583. package/src/variables/VariableValue.ts +6 -0
  584. package/src/variables/VariableValueContainingReferences.ts +89 -0
  585. package/src/variables/__tests__/resolveAllReferences.test.ts +110 -0
  586. package/src/variables/__tests__/resolveAllReferencesOnce.test.ts +64 -0
  587. package/src/variables/__tests__/resolveReferencesOnce.test.ts +117 -0
  588. package/src/variables/__tests__/variableValue.test.ts +73 -0
  589. package/src/variables/resolveAllReferences.ts +46 -0
  590. package/src/variables/resolveAllReferencesOnce.ts +44 -0
  591. package/src/variables/resolveReferencesOnce.ts +29 -0
  592. package/bin/catladder-gitlab-dev.js +0 -3
  593. package/bin/catladder-gitlab.js +0 -3
  594. package/dist/bundles/catladder-gitlab/index.js +0 -34559
  595. package/dist/context/__tests__/resolveReferences.test.js +0 -336
  596. package/dist/context/resolveReferences.d.ts +0 -4
  597. package/dist/context/resolveReferences.js +0 -254
  598. package/dist/deploy/cloudRun/createJobs/variables.d.ts +0 -5
  599. package/dist/deploy/cloudRun/createJobs/variables.js +0 -19
  600. package/dist/deploy/kubernetes/processSecretsAsFiles.d.ts +0 -84
  601. package/dist/deploy/kubernetes/processSecretsAsFiles.js +0 -31
  602. package/dist/pipeline/commitInfo/getBuildId.d.ts +0 -6
  603. package/dist/pipeline/commitInfo/getCommitInfo.d.ts +0 -2
  604. package/dist/pipeline/createChildPipeline.d.ts +0 -3
  605. package/examples/__snapshots__/cloud-run-memory-limit.ts.snap +0 -1839
  606. package/examples/__snapshots__/cloud-run-meteor-with-worker.ts.snap +0 -1807
  607. package/examples/__snapshots__/cloud-run-no-cpu-throttling.ts.snap +0 -1839
  608. package/examples/__snapshots__/cloud-run-non-public.ts.snap +0 -1839
  609. package/examples/__snapshots__/cloud-run-post-stop-job.ts.snap +0 -1849
  610. package/examples/__snapshots__/cloud-run-service-gen2.ts.snap +0 -1839
  611. package/examples/__snapshots__/cloud-run-with-sql-reuse-db.ts.snap +0 -3647
  612. package/examples/__snapshots__/cloud-run-with-sql.ts.snap +0 -3658
  613. package/examples/__snapshots__/cloud-run-with-worker.ts.snap +0 -1847
  614. package/examples/__snapshots__/custom-build-job-with-tests.ts.snap +0 -1663
  615. package/examples/__snapshots__/custom-build-job.ts.snap +0 -1375
  616. package/examples/__snapshots__/custom-deploy.ts.snap +0 -1625
  617. package/examples/__snapshots__/custom-envs.ts.snap +0 -1127
  618. package/examples/__snapshots__/custom-sbom-java.ts.snap +0 -1383
  619. package/examples/__snapshots__/kubernetes-application-customization.ts.snap +0 -2573
  620. package/examples/__snapshots__/kubernetes-with-cloud-sql-legacy.ts.snap +0 -2533
  621. package/examples/__snapshots__/kubernetes-with-cloud-sql.ts.snap +0 -2545
  622. package/examples/__snapshots__/kubernetes-with-jobs.ts.snap +0 -4660
  623. package/examples/__snapshots__/kubernetes-with-mongodb.ts.snap +0 -2737
  624. package/examples/__snapshots__/meteor-kubernetes.ts.snap +0 -2658
  625. package/examples/__snapshots__/native-app.ts.snap +0 -3007
  626. package/examples/__snapshots__/node-build-with-custom-image.ts.snap +0 -1839
  627. package/examples/__snapshots__/node-build-with-docker-additions.ts.snap +0 -1839
  628. package/examples/__snapshots__/rails-k8s-with-worker.ts.snap +0 -4291
  629. package/examples/__snapshots__/wait-for-other-deploy.ts.snap +0 -2049
  630. package/examples/kubernetes-with-cloud-sql-legacy.ts +0 -33
  631. package/scripts/bundle +0 -2
  632. package/src/context/__tests__/resolveReferences.test.ts +0 -143
  633. package/src/context/resolveReferences.ts +0 -70
  634. package/src/deploy/cloudRun/createJobs/variables.ts +0 -21
  635. package/src/deploy/kubernetes/processSecretsAsFiles.ts +0 -34
  636. package/src/pipeline/commitInfo/getBuildId.ts +0 -17
  637. package/src/pipeline/commitInfo/getCommitInfo.ts +0 -15
  638. package/src/pipeline/createChildPipeline.ts +0 -46
  639. /package/dist/{context/__tests__/resolveReferences.test.d.ts โ†’ config/__tests__/getAllEnvs.test.d.ts} +0 -0
@@ -0,0 +1,1424 @@
1
+ // Jest Snapshot v1, https://goo.gl/fbAQLP
2
+
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
+ before_script:
49
+ - |-
50
+ function escapeForDotEnv () {
51
+ input="\${1:-$(cat)}"
52
+ input="\${input//$'\\n'/\\\\n}"
53
+ if [[ "$input" == *\\\\n* ]]; then
54
+ if [[ "$input" == *\\"* && "$input" == *\\'* && "$input" == *\\\`* ]]; then
55
+ printf "\\"%s\\"\\n" "$input"
56
+ elif [[ "$input" == *\\"* && "$input" == *\\'* ]]; then
57
+ printf "\`%s\`\\n" "$input"
58
+ elif [[ "$input" == *\\"* ]]; then
59
+ printf "'%s'\\n" "$input"
60
+ else
61
+ printf "\\"%s\\"\\n" "$input"
62
+ fi
63
+ else
64
+ printf "%s\\n" "$input"
65
+ fi
66
+ }
67
+ - |-
68
+ function collapseable_section_start () {
69
+ local section_title="\${1}"
70
+ local section_description="\${2:-$section_title}"
71
+ echo -e "section_start:\`date +%s\`:\${section_title}[collapsed=true]\\r\\e[0K\${section_description}"
72
+ }
73
+ - |-
74
+ function collapseable_section_end () {
75
+ local section_title="\${1}"
76
+ echo -e "section_end:\`date +%s\`:\${section_title}\\r\\e[0K"
77
+ }
78
+ api ๐Ÿ›ก audit:
79
+ stage: test
80
+ image: path/to/docker/jobs-default:the-version
81
+ variables:
82
+ KUBERNETES_CPU_REQUEST: '0.45'
83
+ KUBERNETES_MEMORY_REQUEST: 1Gi
84
+ KUBERNETES_MEMORY_LIMIT: 4Gi
85
+ script:
86
+ - collapseable_section_start "injectvars" "Injecting variables"
87
+ - export APP_PATH="api"
88
+ - collapseable_section_end "injectvars"
89
+ - cd api
90
+ - yarn npm audit --environment production
91
+ rules:
92
+ - if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH && $CI_COMMIT_MESSAGE !~ /^chore\\(release\\).*/
93
+ - if: $CI_MERGE_REQUEST_ID
94
+ needs: []
95
+ retry: &a1
96
+ max: 2
97
+ when:
98
+ - runner_system_failure
99
+ - stuck_or_timeout_failure
100
+ interruptible: true
101
+ allow_failure: true
102
+ api ๐Ÿ‘ฎ lint:
103
+ stage: test
104
+ image: path/to/docker/jobs-default:the-version
105
+ variables:
106
+ KUBERNETES_CPU_REQUEST: '0.45'
107
+ KUBERNETES_MEMORY_REQUEST: 1Gi
108
+ KUBERNETES_MEMORY_LIMIT: 4Gi
109
+ script:
110
+ - collapseable_section_start "injectvars" "Injecting variables"
111
+ - export APP_PATH="api"
112
+ - collapseable_section_end "injectvars"
113
+ - collapseable_section_start "nodeinstall" "Ensure node version"
114
+ - if [ -f ~/.nvm/nvm.sh ]; then source ~/.nvm/nvm.sh; fi
115
+ - if command -v nvm &> /dev/null && [ -f ./.nvmrc ]; then nvm install; fi
116
+ - collapseable_section_end "nodeinstall"
117
+ - cd api
118
+ - collapseable_section_start "nodeinstall" "Ensure node version"
119
+ - if [ -f ~/.nvm/nvm.sh ]; then source ~/.nvm/nvm.sh; fi
120
+ - if command -v nvm &> /dev/null && [ -f ./.nvmrc ]; then nvm install; fi
121
+ - collapseable_section_end "nodeinstall"
122
+ - collapseable_section_start "yarninstall" "Yarn install"
123
+ - yarn install --immutable
124
+ - collapseable_section_end "yarninstall"
125
+ - yarn lint
126
+ cache:
127
+ - key: api-yarn
128
+ policy: pull-push
129
+ paths:
130
+ - api/.yarn
131
+ - key: api-node-modules
132
+ policy: pull-push
133
+ paths:
134
+ - api/node_modules
135
+ rules:
136
+ - if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH && $CI_COMMIT_MESSAGE !~ /^chore\\(release\\).*/
137
+ - if: $CI_MERGE_REQUEST_ID
138
+ needs: []
139
+ retry: *a1
140
+ interruptible: true
141
+ api ๐Ÿงช test:
142
+ stage: test
143
+ image: path/to/docker/jobs-testing-chrome:the-version
144
+ variables:
145
+ KUBERNETES_CPU_REQUEST: '0.45'
146
+ KUBERNETES_MEMORY_REQUEST: 1Gi
147
+ KUBERNETES_MEMORY_LIMIT: 4Gi
148
+ script:
149
+ - collapseable_section_start "injectvars" "Injecting variables"
150
+ - export APP_PATH="api"
151
+ - collapseable_section_end "injectvars"
152
+ - collapseable_section_start "nodeinstall" "Ensure node version"
153
+ - if [ -f ~/.nvm/nvm.sh ]; then source ~/.nvm/nvm.sh; fi
154
+ - if command -v nvm &> /dev/null && [ -f ./.nvmrc ]; then nvm install; fi
155
+ - collapseable_section_end "nodeinstall"
156
+ - cd api
157
+ - collapseable_section_start "nodeinstall" "Ensure node version"
158
+ - if [ -f ~/.nvm/nvm.sh ]; then source ~/.nvm/nvm.sh; fi
159
+ - if command -v nvm &> /dev/null && [ -f ./.nvmrc ]; then nvm install; fi
160
+ - collapseable_section_end "nodeinstall"
161
+ - collapseable_section_start "yarninstall" "Yarn install"
162
+ - yarn install --immutable
163
+ - collapseable_section_end "yarninstall"
164
+ - yarn test
165
+ cache:
166
+ - key: api-yarn
167
+ policy: pull-push
168
+ paths:
169
+ - api/.yarn
170
+ - key: api-node-modules
171
+ policy: pull-push
172
+ paths:
173
+ - api/node_modules
174
+ rules:
175
+ - if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH && $CI_COMMIT_MESSAGE !~ /^chore\\(release\\).*/
176
+ - if: $CI_MERGE_REQUEST_ID
177
+ needs: []
178
+ retry: *a1
179
+ interruptible: true
180
+ 'api ๐Ÿ”จ app | dev ':
181
+ stage: build
182
+ image: path/to/docker/jobs-default:the-version
183
+ variables:
184
+ KUBERNETES_CPU_REQUEST: '0.45'
185
+ KUBERNETES_MEMORY_REQUEST: 1Gi
186
+ KUBERNETES_MEMORY_LIMIT: 4Gi
187
+ script:
188
+ - collapseable_section_start "injectvars" "Injecting variables"
189
+ - export ENV_SHORT="dev"
190
+ - export APP_DIR="api"
191
+ - export ENV_TYPE="dev"
192
+ - export BUILD_INFO_BUILD_ID="$(git describe --tags 2>/dev/null || git rev-parse HEAD)"
193
+ - export BUILD_INFO_BUILD_TIME="$CI_JOB_STARTED_AT"
194
+ - 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")"
195
+ - export HOSTNAME="unknown-host.example.com"
196
+ - export ROOT_URL="https://unknown-host.example.com"
197
+ - export HOSTNAME_INTERNAL="unknown-host.example.com"
198
+ - export ROOT_URL_INTERNAL="https://unknown-host.example.com"
199
+ - export _ALL_ENV_VAR_KEYS="[\\"ENV_SHORT\\",\\"APP_DIR\\",\\"ENV_TYPE\\",\\"BUILD_INFO_BUILD_ID\\",\\"BUILD_INFO_BUILD_TIME\\",\\"BUILD_INFO_CURRENT_VERSION\\",\\"HOSTNAME\\",\\"ROOT_URL\\",\\"HOSTNAME_INTERNAL\\",\\"ROOT_URL_INTERNAL\\"]"
200
+ - collapseable_section_end "injectvars"
201
+ - collapseable_section_start "write-dotenv-api" "write dot env for api"
202
+ - |-
203
+ cat <<EOF > api/.env
204
+ ENV_SHORT=dev
205
+ APP_DIR=api
206
+ ENV_TYPE=dev
207
+ HOSTNAME=unknown-host.example.com
208
+ ROOT_URL=https://unknown-host.example.com
209
+ HOSTNAME_INTERNAL=unknown-host.example.com
210
+ ROOT_URL_INTERNAL=https://unknown-host.example.com
211
+ _ALL_ENV_VAR_KEYS=["ENV_SHORT","APP_DIR","ENV_TYPE","BUILD_INFO_BUILD_ID","BUILD_INFO_BUILD_TIME","BUILD_INFO_CURRENT_VERSION","HOSTNAME","ROOT_URL","HOSTNAME_INTERNAL","ROOT_URL_INTERNAL"]
212
+ EOF
213
+ - collapseable_section_end "write-dotenv-api"
214
+ - echo '{"id":"$(git describe --tags 2>/dev/null || git rev-parse HEAD)","time":"$CI_JOB_STARTED_AT"}' > api/__build_info.json
215
+ - collapseable_section_start "nodeinstall" "Ensure node version"
216
+ - if [ -f ~/.nvm/nvm.sh ]; then source ~/.nvm/nvm.sh; fi
217
+ - if command -v nvm &> /dev/null && [ -f ./.nvmrc ]; then nvm install; fi
218
+ - collapseable_section_end "nodeinstall"
219
+ - cd api
220
+ - collapseable_section_start "nodeinstall" "Ensure node version"
221
+ - if [ -f ~/.nvm/nvm.sh ]; then source ~/.nvm/nvm.sh; fi
222
+ - if command -v nvm &> /dev/null && [ -f ./.nvmrc ]; then nvm install; fi
223
+ - collapseable_section_end "nodeinstall"
224
+ - collapseable_section_start "yarninstall" "Yarn install"
225
+ - yarn install --immutable
226
+ - collapseable_section_end "yarninstall"
227
+ - yarn build
228
+ cache:
229
+ - key: api-yarn
230
+ policy: pull-push
231
+ paths:
232
+ - api/.yarn
233
+ - key: api-node-modules
234
+ policy: pull-push
235
+ paths:
236
+ - api/node_modules
237
+ artifacts:
238
+ paths:
239
+ - api/__build_info.json
240
+ - api/.next
241
+ - api/dist
242
+ exclude:
243
+ - api/.env
244
+ expire_in: 1 day
245
+ when: always
246
+ reports: {}
247
+ rules:
248
+ - if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH && $CI_COMMIT_MESSAGE !~ /^chore\\(release\\).*/
249
+ needs: []
250
+ retry: *a1
251
+ interruptible: true
252
+ 'api ๐Ÿงพ sbom | dev ':
253
+ stage: build
254
+ image:
255
+ name: aquasec/trivy:0.58.2
256
+ entrypoint:
257
+ - ''
258
+ variables: {}
259
+ script:
260
+ - collapseable_section_start "injectvars" "Injecting variables"
261
+ - collapseable_section_end "injectvars"
262
+ - trivy fs --quiet --format cyclonedx --output "__sbom.json" api
263
+ artifacts:
264
+ paths:
265
+ - __sbom.json
266
+ rules:
267
+ - if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH && $CI_COMMIT_MESSAGE !~ /^chore\\(release\\).*/
268
+ needs: []
269
+ retry: *a1
270
+ interruptible: true
271
+ allow_failure: true
272
+ 'api ๐Ÿš€ Deploy | dev ':
273
+ stage: deploy dev
274
+ image: path/to/docker/jobs-default:the-version
275
+ variables:
276
+ KUBERNETES_CPU_REQUEST: '0.22'
277
+ KUBERNETES_MEMORY_REQUEST: 200Mi
278
+ KUBERNETES_MEMORY_LIMIT: 400Mi
279
+ script:
280
+ - collapseable_section_start "injectvars" "Injecting variables"
281
+ - export ENV_SHORT="dev"
282
+ - export APP_DIR="api"
283
+ - export ENV_TYPE="dev"
284
+ - export BUILD_INFO_BUILD_ID="$(git describe --tags 2>/dev/null || git rev-parse HEAD)"
285
+ - export BUILD_INFO_BUILD_TIME="$CI_JOB_STARTED_AT"
286
+ - 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")"
287
+ - export HOSTNAME="unknown-host.example.com"
288
+ - export ROOT_URL="https://unknown-host.example.com"
289
+ - export HOSTNAME_INTERNAL="unknown-host.example.com"
290
+ - export ROOT_URL_INTERNAL="https://unknown-host.example.com"
291
+ - export _ALL_ENV_VAR_KEYS="[\\"ENV_SHORT\\",\\"APP_DIR\\",\\"ENV_TYPE\\",\\"BUILD_INFO_BUILD_ID\\",\\"BUILD_INFO_BUILD_TIME\\",\\"BUILD_INFO_CURRENT_VERSION\\",\\"HOSTNAME\\",\\"ROOT_URL\\",\\"HOSTNAME_INTERNAL\\",\\"ROOT_URL_INTERNAL\\"]"
292
+ - collapseable_section_end "injectvars"
293
+ - cd api
294
+ - yarn deploy
295
+ - echo 'Uploading SBOM to Dependency Track'
296
+ - /dtrackuploader https://dep.panter.swiss/ "$DT_KEY_PROD" upload "pan-test-app/api" "$ROOT_URL" "__sbom.json" vex.json || true
297
+ - echo "CL_GITLAB_ENVIRONMENT_URL=$ROOT_URL" >> gitlab_environment.env
298
+ environment:
299
+ name: dev/api
300
+ url: $CL_GITLAB_ENVIRONMENT_URL
301
+ artifacts:
302
+ reports:
303
+ dotenv: gitlab_environment.env
304
+ rules:
305
+ - when: on_success
306
+ if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH && $CI_COMMIT_MESSAGE !~ /^chore\\(release\\).*/
307
+ needs:
308
+ - job: api ๐Ÿ‘ฎ lint
309
+ artifacts: false
310
+ - job: 'api ๐Ÿ”จ app | dev '
311
+ artifacts: true
312
+ - job: api ๐Ÿงช test
313
+ artifacts: false
314
+ - job: 'api ๐Ÿงพ sbom | dev '
315
+ artifacts: true
316
+ - job: api ๐Ÿ›ก audit
317
+ artifacts: false
318
+ retry: *a1
319
+ interruptible: true
320
+ allow_failure: false
321
+ 'api ๐Ÿ”จ app | review ':
322
+ stage: build
323
+ image: path/to/docker/jobs-default:the-version
324
+ variables:
325
+ KUBERNETES_CPU_REQUEST: '0.45'
326
+ KUBERNETES_MEMORY_REQUEST: 1Gi
327
+ KUBERNETES_MEMORY_LIMIT: 4Gi
328
+ script:
329
+ - collapseable_section_start "injectvars" "Injecting variables"
330
+ - export ENV_SHORT="review"
331
+ - export APP_DIR="api"
332
+ - export ENV_TYPE="review"
333
+ - export BUILD_INFO_BUILD_ID="$(git describe --tags 2>/dev/null || git rev-parse HEAD)"
334
+ - export BUILD_INFO_BUILD_TIME="$CI_JOB_STARTED_AT"
335
+ - 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")"
336
+ - export HOSTNAME="unknown-host.example.com"
337
+ - export ROOT_URL="https://unknown-host.example.com"
338
+ - export HOSTNAME_INTERNAL="unknown-host.example.com"
339
+ - export ROOT_URL_INTERNAL="https://unknown-host.example.com"
340
+ - export _ALL_ENV_VAR_KEYS="[\\"ENV_SHORT\\",\\"APP_DIR\\",\\"ENV_TYPE\\",\\"BUILD_INFO_BUILD_ID\\",\\"BUILD_INFO_BUILD_TIME\\",\\"BUILD_INFO_CURRENT_VERSION\\",\\"HOSTNAME\\",\\"ROOT_URL\\",\\"HOSTNAME_INTERNAL\\",\\"ROOT_URL_INTERNAL\\"]"
341
+ - collapseable_section_end "injectvars"
342
+ - collapseable_section_start "write-dotenv-api" "write dot env for api"
343
+ - |-
344
+ cat <<EOF > api/.env
345
+ ENV_SHORT=review
346
+ APP_DIR=api
347
+ ENV_TYPE=review
348
+ HOSTNAME=unknown-host.example.com
349
+ ROOT_URL=https://unknown-host.example.com
350
+ HOSTNAME_INTERNAL=unknown-host.example.com
351
+ ROOT_URL_INTERNAL=https://unknown-host.example.com
352
+ _ALL_ENV_VAR_KEYS=["ENV_SHORT","APP_DIR","ENV_TYPE","BUILD_INFO_BUILD_ID","BUILD_INFO_BUILD_TIME","BUILD_INFO_CURRENT_VERSION","HOSTNAME","ROOT_URL","HOSTNAME_INTERNAL","ROOT_URL_INTERNAL"]
353
+ EOF
354
+ - collapseable_section_end "write-dotenv-api"
355
+ - echo '{"id":"$(git describe --tags 2>/dev/null || git rev-parse HEAD)","time":"$CI_JOB_STARTED_AT"}' > api/__build_info.json
356
+ - collapseable_section_start "nodeinstall" "Ensure node version"
357
+ - if [ -f ~/.nvm/nvm.sh ]; then source ~/.nvm/nvm.sh; fi
358
+ - if command -v nvm &> /dev/null && [ -f ./.nvmrc ]; then nvm install; fi
359
+ - collapseable_section_end "nodeinstall"
360
+ - cd api
361
+ - collapseable_section_start "nodeinstall" "Ensure node version"
362
+ - if [ -f ~/.nvm/nvm.sh ]; then source ~/.nvm/nvm.sh; fi
363
+ - if command -v nvm &> /dev/null && [ -f ./.nvmrc ]; then nvm install; fi
364
+ - collapseable_section_end "nodeinstall"
365
+ - collapseable_section_start "yarninstall" "Yarn install"
366
+ - yarn install --immutable
367
+ - collapseable_section_end "yarninstall"
368
+ - yarn build
369
+ cache:
370
+ - key: api-yarn
371
+ policy: pull-push
372
+ paths:
373
+ - api/.yarn
374
+ - key: api-node-modules
375
+ policy: pull-push
376
+ paths:
377
+ - api/node_modules
378
+ artifacts:
379
+ paths:
380
+ - api/__build_info.json
381
+ - api/.next
382
+ - api/dist
383
+ exclude:
384
+ - api/.env
385
+ expire_in: 1 day
386
+ when: always
387
+ reports: {}
388
+ rules:
389
+ - if: $CI_MERGE_REQUEST_ID
390
+ needs: []
391
+ retry: *a1
392
+ interruptible: true
393
+ 'api ๐Ÿงพ sbom | review ':
394
+ stage: build
395
+ image:
396
+ name: aquasec/trivy:0.58.2
397
+ entrypoint:
398
+ - ''
399
+ variables: {}
400
+ script:
401
+ - collapseable_section_start "injectvars" "Injecting variables"
402
+ - collapseable_section_end "injectvars"
403
+ - trivy fs --quiet --format cyclonedx --output "__sbom.json" api
404
+ artifacts:
405
+ paths:
406
+ - __sbom.json
407
+ rules:
408
+ - if: $CI_MERGE_REQUEST_ID
409
+ needs: []
410
+ retry: *a1
411
+ interruptible: true
412
+ allow_failure: true
413
+ 'api ๐Ÿš€ Deploy | review ':
414
+ stage: deploy review
415
+ image: path/to/docker/jobs-default:the-version
416
+ variables:
417
+ KUBERNETES_CPU_REQUEST: '0.22'
418
+ KUBERNETES_MEMORY_REQUEST: 200Mi
419
+ KUBERNETES_MEMORY_LIMIT: 400Mi
420
+ script:
421
+ - collapseable_section_start "injectvars" "Injecting variables"
422
+ - export ENV_SHORT="review"
423
+ - export APP_DIR="api"
424
+ - export ENV_TYPE="review"
425
+ - export BUILD_INFO_BUILD_ID="$(git describe --tags 2>/dev/null || git rev-parse HEAD)"
426
+ - export BUILD_INFO_BUILD_TIME="$CI_JOB_STARTED_AT"
427
+ - 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")"
428
+ - export HOSTNAME="unknown-host.example.com"
429
+ - export ROOT_URL="https://unknown-host.example.com"
430
+ - export HOSTNAME_INTERNAL="unknown-host.example.com"
431
+ - export ROOT_URL_INTERNAL="https://unknown-host.example.com"
432
+ - export _ALL_ENV_VAR_KEYS="[\\"ENV_SHORT\\",\\"APP_DIR\\",\\"ENV_TYPE\\",\\"BUILD_INFO_BUILD_ID\\",\\"BUILD_INFO_BUILD_TIME\\",\\"BUILD_INFO_CURRENT_VERSION\\",\\"HOSTNAME\\",\\"ROOT_URL\\",\\"HOSTNAME_INTERNAL\\",\\"ROOT_URL_INTERNAL\\"]"
433
+ - collapseable_section_end "injectvars"
434
+ - cd api
435
+ - yarn deploy
436
+ - echo 'Uploading SBOM to Dependency Track'
437
+ - /dtrackuploader https://dep.panter.swiss/ "$DT_KEY_PROD" upload "pan-test-app/api" "$ROOT_URL" "__sbom.json" vex.json || true
438
+ - echo "CL_GITLAB_ENVIRONMENT_URL=$ROOT_URL" >> gitlab_environment.env
439
+ environment:
440
+ name: review/$CI_COMMIT_REF_NAME/api
441
+ url: $CL_GITLAB_ENVIRONMENT_URL
442
+ artifacts:
443
+ reports:
444
+ dotenv: gitlab_environment.env
445
+ rules:
446
+ - when: on_success
447
+ if: $CI_MERGE_REQUEST_ID
448
+ needs:
449
+ - job: api ๐Ÿ‘ฎ lint
450
+ artifacts: false
451
+ - job: 'api ๐Ÿ”จ app | review '
452
+ artifacts: true
453
+ - job: api ๐Ÿงช test
454
+ artifacts: false
455
+ - job: 'api ๐Ÿงพ sbom | review '
456
+ artifacts: true
457
+ - job: api ๐Ÿ›ก audit
458
+ artifacts: false
459
+ retry: *a1
460
+ interruptible: true
461
+ allow_failure: false
462
+ 'api ๐Ÿ”จ app | stage ':
463
+ stage: build
464
+ image: path/to/docker/jobs-default:the-version
465
+ variables:
466
+ KUBERNETES_CPU_REQUEST: '0.45'
467
+ KUBERNETES_MEMORY_REQUEST: 1Gi
468
+ KUBERNETES_MEMORY_LIMIT: 4Gi
469
+ script:
470
+ - collapseable_section_start "injectvars" "Injecting variables"
471
+ - export ENV_SHORT="stage"
472
+ - export APP_DIR="api"
473
+ - export ENV_TYPE="stage"
474
+ - export BUILD_INFO_BUILD_ID="$(git describe --tags 2>/dev/null || git rev-parse HEAD)"
475
+ - export BUILD_INFO_BUILD_TIME="$CI_JOB_STARTED_AT"
476
+ - 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")"
477
+ - export HOSTNAME="unknown-host.example.com"
478
+ - export ROOT_URL="https://unknown-host.example.com"
479
+ - export HOSTNAME_INTERNAL="unknown-host.example.com"
480
+ - export ROOT_URL_INTERNAL="https://unknown-host.example.com"
481
+ - export _ALL_ENV_VAR_KEYS="[\\"ENV_SHORT\\",\\"APP_DIR\\",\\"ENV_TYPE\\",\\"BUILD_INFO_BUILD_ID\\",\\"BUILD_INFO_BUILD_TIME\\",\\"BUILD_INFO_CURRENT_VERSION\\",\\"HOSTNAME\\",\\"ROOT_URL\\",\\"HOSTNAME_INTERNAL\\",\\"ROOT_URL_INTERNAL\\"]"
482
+ - collapseable_section_end "injectvars"
483
+ - collapseable_section_start "write-dotenv-api" "write dot env for api"
484
+ - |-
485
+ cat <<EOF > api/.env
486
+ ENV_SHORT=stage
487
+ APP_DIR=api
488
+ ENV_TYPE=stage
489
+ HOSTNAME=unknown-host.example.com
490
+ ROOT_URL=https://unknown-host.example.com
491
+ HOSTNAME_INTERNAL=unknown-host.example.com
492
+ ROOT_URL_INTERNAL=https://unknown-host.example.com
493
+ _ALL_ENV_VAR_KEYS=["ENV_SHORT","APP_DIR","ENV_TYPE","BUILD_INFO_BUILD_ID","BUILD_INFO_BUILD_TIME","BUILD_INFO_CURRENT_VERSION","HOSTNAME","ROOT_URL","HOSTNAME_INTERNAL","ROOT_URL_INTERNAL"]
494
+ EOF
495
+ - collapseable_section_end "write-dotenv-api"
496
+ - echo '{"id":"$(git describe --tags 2>/dev/null || git rev-parse HEAD)","time":"$CI_JOB_STARTED_AT"}' > api/__build_info.json
497
+ - collapseable_section_start "nodeinstall" "Ensure node version"
498
+ - if [ -f ~/.nvm/nvm.sh ]; then source ~/.nvm/nvm.sh; fi
499
+ - if command -v nvm &> /dev/null && [ -f ./.nvmrc ]; then nvm install; fi
500
+ - collapseable_section_end "nodeinstall"
501
+ - cd api
502
+ - collapseable_section_start "nodeinstall" "Ensure node version"
503
+ - if [ -f ~/.nvm/nvm.sh ]; then source ~/.nvm/nvm.sh; fi
504
+ - if command -v nvm &> /dev/null && [ -f ./.nvmrc ]; then nvm install; fi
505
+ - collapseable_section_end "nodeinstall"
506
+ - collapseable_section_start "yarninstall" "Yarn install"
507
+ - yarn install --immutable
508
+ - collapseable_section_end "yarninstall"
509
+ - yarn build
510
+ cache:
511
+ - key: api-yarn
512
+ policy: pull-push
513
+ paths:
514
+ - api/.yarn
515
+ - key: api-node-modules
516
+ policy: pull-push
517
+ paths:
518
+ - api/node_modules
519
+ artifacts:
520
+ paths:
521
+ - api/__build_info.json
522
+ - api/.next
523
+ - api/dist
524
+ exclude:
525
+ - api/.env
526
+ expire_in: 1 day
527
+ when: always
528
+ reports: {}
529
+ rules:
530
+ - if: $CI_COMMIT_TAG
531
+ needs: []
532
+ retry: *a1
533
+ interruptible: true
534
+ 'api ๐Ÿงพ sbom | stage ':
535
+ stage: build
536
+ image:
537
+ name: aquasec/trivy:0.58.2
538
+ entrypoint:
539
+ - ''
540
+ variables: {}
541
+ script:
542
+ - collapseable_section_start "injectvars" "Injecting variables"
543
+ - collapseable_section_end "injectvars"
544
+ - trivy fs --quiet --format cyclonedx --output "__sbom.json" api
545
+ artifacts:
546
+ paths:
547
+ - __sbom.json
548
+ rules:
549
+ - if: $CI_COMMIT_TAG
550
+ needs: []
551
+ retry: *a1
552
+ interruptible: true
553
+ allow_failure: true
554
+ 'api ๐Ÿš€ Deploy | stage ':
555
+ stage: deploy stage
556
+ image: path/to/docker/jobs-default:the-version
557
+ variables:
558
+ KUBERNETES_CPU_REQUEST: '0.22'
559
+ KUBERNETES_MEMORY_REQUEST: 200Mi
560
+ KUBERNETES_MEMORY_LIMIT: 400Mi
561
+ script:
562
+ - collapseable_section_start "injectvars" "Injecting variables"
563
+ - export ENV_SHORT="stage"
564
+ - export APP_DIR="api"
565
+ - export ENV_TYPE="stage"
566
+ - export BUILD_INFO_BUILD_ID="$(git describe --tags 2>/dev/null || git rev-parse HEAD)"
567
+ - export BUILD_INFO_BUILD_TIME="$CI_JOB_STARTED_AT"
568
+ - 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")"
569
+ - export HOSTNAME="unknown-host.example.com"
570
+ - export ROOT_URL="https://unknown-host.example.com"
571
+ - export HOSTNAME_INTERNAL="unknown-host.example.com"
572
+ - export ROOT_URL_INTERNAL="https://unknown-host.example.com"
573
+ - export _ALL_ENV_VAR_KEYS="[\\"ENV_SHORT\\",\\"APP_DIR\\",\\"ENV_TYPE\\",\\"BUILD_INFO_BUILD_ID\\",\\"BUILD_INFO_BUILD_TIME\\",\\"BUILD_INFO_CURRENT_VERSION\\",\\"HOSTNAME\\",\\"ROOT_URL\\",\\"HOSTNAME_INTERNAL\\",\\"ROOT_URL_INTERNAL\\"]"
574
+ - collapseable_section_end "injectvars"
575
+ - cd api
576
+ - yarn deploy
577
+ - echo 'Uploading SBOM to Dependency Track'
578
+ - /dtrackuploader https://dep.panter.swiss/ "$DT_KEY_PROD" upload "pan-test-app/api" "$ROOT_URL" "__sbom.json" vex.json || true
579
+ - echo "CL_GITLAB_ENVIRONMENT_URL=$ROOT_URL" >> gitlab_environment.env
580
+ environment:
581
+ name: stage/api
582
+ url: $CL_GITLAB_ENVIRONMENT_URL
583
+ artifacts:
584
+ reports:
585
+ dotenv: gitlab_environment.env
586
+ rules:
587
+ - when: on_success
588
+ if: $CI_COMMIT_TAG
589
+ needs:
590
+ - job: 'api ๐Ÿ”จ app | stage '
591
+ artifacts: true
592
+ - job: 'api ๐Ÿงพ sbom | stage '
593
+ artifacts: true
594
+ retry: *a1
595
+ interruptible: true
596
+ allow_failure: false
597
+ 'api ๐Ÿ”จ app | prod ':
598
+ stage: build
599
+ image: path/to/docker/jobs-default:the-version
600
+ variables:
601
+ KUBERNETES_CPU_REQUEST: '0.45'
602
+ KUBERNETES_MEMORY_REQUEST: 1Gi
603
+ KUBERNETES_MEMORY_LIMIT: 4Gi
604
+ script:
605
+ - collapseable_section_start "injectvars" "Injecting variables"
606
+ - export ENV_SHORT="prod"
607
+ - export APP_DIR="api"
608
+ - export ENV_TYPE="prod"
609
+ - export BUILD_INFO_BUILD_ID="$(git describe --tags 2>/dev/null || git rev-parse HEAD)"
610
+ - export BUILD_INFO_BUILD_TIME="$CI_JOB_STARTED_AT"
611
+ - 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")"
612
+ - export HOSTNAME="unknown-host.example.com"
613
+ - export ROOT_URL="https://unknown-host.example.com"
614
+ - export HOSTNAME_INTERNAL="unknown-host.example.com"
615
+ - export ROOT_URL_INTERNAL="https://unknown-host.example.com"
616
+ - export _ALL_ENV_VAR_KEYS="[\\"ENV_SHORT\\",\\"APP_DIR\\",\\"ENV_TYPE\\",\\"BUILD_INFO_BUILD_ID\\",\\"BUILD_INFO_BUILD_TIME\\",\\"BUILD_INFO_CURRENT_VERSION\\",\\"HOSTNAME\\",\\"ROOT_URL\\",\\"HOSTNAME_INTERNAL\\",\\"ROOT_URL_INTERNAL\\"]"
617
+ - collapseable_section_end "injectvars"
618
+ - collapseable_section_start "write-dotenv-api" "write dot env for api"
619
+ - |-
620
+ cat <<EOF > api/.env
621
+ ENV_SHORT=prod
622
+ APP_DIR=api
623
+ ENV_TYPE=prod
624
+ HOSTNAME=unknown-host.example.com
625
+ ROOT_URL=https://unknown-host.example.com
626
+ HOSTNAME_INTERNAL=unknown-host.example.com
627
+ ROOT_URL_INTERNAL=https://unknown-host.example.com
628
+ _ALL_ENV_VAR_KEYS=["ENV_SHORT","APP_DIR","ENV_TYPE","BUILD_INFO_BUILD_ID","BUILD_INFO_BUILD_TIME","BUILD_INFO_CURRENT_VERSION","HOSTNAME","ROOT_URL","HOSTNAME_INTERNAL","ROOT_URL_INTERNAL"]
629
+ EOF
630
+ - collapseable_section_end "write-dotenv-api"
631
+ - echo '{"id":"$(git describe --tags 2>/dev/null || git rev-parse HEAD)","time":"$CI_JOB_STARTED_AT"}' > api/__build_info.json
632
+ - collapseable_section_start "nodeinstall" "Ensure node version"
633
+ - if [ -f ~/.nvm/nvm.sh ]; then source ~/.nvm/nvm.sh; fi
634
+ - if command -v nvm &> /dev/null && [ -f ./.nvmrc ]; then nvm install; fi
635
+ - collapseable_section_end "nodeinstall"
636
+ - cd api
637
+ - collapseable_section_start "nodeinstall" "Ensure node version"
638
+ - if [ -f ~/.nvm/nvm.sh ]; then source ~/.nvm/nvm.sh; fi
639
+ - if command -v nvm &> /dev/null && [ -f ./.nvmrc ]; then nvm install; fi
640
+ - collapseable_section_end "nodeinstall"
641
+ - collapseable_section_start "yarninstall" "Yarn install"
642
+ - yarn install --immutable
643
+ - collapseable_section_end "yarninstall"
644
+ - yarn build
645
+ cache:
646
+ - key: api-yarn
647
+ policy: pull-push
648
+ paths:
649
+ - api/.yarn
650
+ - key: api-node-modules
651
+ policy: pull-push
652
+ paths:
653
+ - api/node_modules
654
+ artifacts:
655
+ paths:
656
+ - api/__build_info.json
657
+ - api/.next
658
+ - api/dist
659
+ exclude:
660
+ - api/.env
661
+ expire_in: 1 day
662
+ when: always
663
+ reports: {}
664
+ rules:
665
+ - if: $CI_COMMIT_TAG
666
+ needs: []
667
+ retry: *a1
668
+ interruptible: true
669
+ 'api ๐Ÿงพ sbom | prod ':
670
+ stage: build
671
+ image:
672
+ name: aquasec/trivy:0.58.2
673
+ entrypoint:
674
+ - ''
675
+ variables: {}
676
+ script:
677
+ - collapseable_section_start "injectvars" "Injecting variables"
678
+ - collapseable_section_end "injectvars"
679
+ - trivy fs --quiet --format cyclonedx --output "__sbom.json" api
680
+ artifacts:
681
+ paths:
682
+ - __sbom.json
683
+ rules:
684
+ - if: $CI_COMMIT_TAG
685
+ needs: []
686
+ retry: *a1
687
+ interruptible: true
688
+ allow_failure: true
689
+ 'api ๐Ÿš€ Deploy | prod ':
690
+ stage: deploy prod
691
+ image: path/to/docker/jobs-default:the-version
692
+ variables:
693
+ KUBERNETES_CPU_REQUEST: '0.22'
694
+ KUBERNETES_MEMORY_REQUEST: 200Mi
695
+ KUBERNETES_MEMORY_LIMIT: 400Mi
696
+ script:
697
+ - collapseable_section_start "injectvars" "Injecting variables"
698
+ - export ENV_SHORT="prod"
699
+ - export APP_DIR="api"
700
+ - export ENV_TYPE="prod"
701
+ - export BUILD_INFO_BUILD_ID="$(git describe --tags 2>/dev/null || git rev-parse HEAD)"
702
+ - export BUILD_INFO_BUILD_TIME="$CI_JOB_STARTED_AT"
703
+ - 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")"
704
+ - export HOSTNAME="unknown-host.example.com"
705
+ - export ROOT_URL="https://unknown-host.example.com"
706
+ - export HOSTNAME_INTERNAL="unknown-host.example.com"
707
+ - export ROOT_URL_INTERNAL="https://unknown-host.example.com"
708
+ - export _ALL_ENV_VAR_KEYS="[\\"ENV_SHORT\\",\\"APP_DIR\\",\\"ENV_TYPE\\",\\"BUILD_INFO_BUILD_ID\\",\\"BUILD_INFO_BUILD_TIME\\",\\"BUILD_INFO_CURRENT_VERSION\\",\\"HOSTNAME\\",\\"ROOT_URL\\",\\"HOSTNAME_INTERNAL\\",\\"ROOT_URL_INTERNAL\\"]"
709
+ - collapseable_section_end "injectvars"
710
+ - cd api
711
+ - yarn deploy
712
+ - echo 'Uploading SBOM to Dependency Track'
713
+ - /dtrackuploader https://dep.panter.swiss/ "$DT_KEY_PROD" upload "pan-test-app/api" "$ROOT_URL" "__sbom.json" vex.json || true
714
+ - echo "CL_GITLAB_ENVIRONMENT_URL=$ROOT_URL" >> gitlab_environment.env
715
+ environment:
716
+ name: prod/api
717
+ url: $CL_GITLAB_ENVIRONMENT_URL
718
+ artifacts:
719
+ reports:
720
+ dotenv: gitlab_environment.env
721
+ rules:
722
+ - when: manual
723
+ if: $CI_COMMIT_TAG
724
+ needs:
725
+ - job: 'api ๐Ÿ”จ app | prod '
726
+ artifacts: true
727
+ - job: 'api ๐Ÿงพ sbom | prod '
728
+ artifacts: true
729
+ retry: *a1
730
+ interruptible: true
731
+ allow_failure: true
732
+ www ๐Ÿ›ก audit:
733
+ stage: test
734
+ image: path/to/docker/jobs-default:the-version
735
+ variables:
736
+ KUBERNETES_CPU_REQUEST: '0.45'
737
+ KUBERNETES_MEMORY_REQUEST: 1Gi
738
+ KUBERNETES_MEMORY_LIMIT: 4Gi
739
+ script:
740
+ - collapseable_section_start "injectvars" "Injecting variables"
741
+ - export APP_PATH="www"
742
+ - collapseable_section_end "injectvars"
743
+ - cd www
744
+ - yarn npm audit --environment production
745
+ rules:
746
+ - if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH && $CI_COMMIT_MESSAGE !~ /^chore\\(release\\).*/
747
+ - if: $CI_MERGE_REQUEST_ID
748
+ needs: []
749
+ retry: *a1
750
+ interruptible: true
751
+ allow_failure: true
752
+ www ๐Ÿ‘ฎ lint:
753
+ stage: test
754
+ image: path/to/docker/jobs-default:the-version
755
+ variables:
756
+ KUBERNETES_CPU_REQUEST: '0.45'
757
+ KUBERNETES_MEMORY_REQUEST: 1Gi
758
+ KUBERNETES_MEMORY_LIMIT: 4Gi
759
+ script:
760
+ - collapseable_section_start "injectvars" "Injecting variables"
761
+ - export APP_PATH="www"
762
+ - collapseable_section_end "injectvars"
763
+ - collapseable_section_start "nodeinstall" "Ensure node version"
764
+ - if [ -f ~/.nvm/nvm.sh ]; then source ~/.nvm/nvm.sh; fi
765
+ - if command -v nvm &> /dev/null && [ -f ./.nvmrc ]; then nvm install; fi
766
+ - collapseable_section_end "nodeinstall"
767
+ - cd www
768
+ - collapseable_section_start "nodeinstall" "Ensure node version"
769
+ - if [ -f ~/.nvm/nvm.sh ]; then source ~/.nvm/nvm.sh; fi
770
+ - if command -v nvm &> /dev/null && [ -f ./.nvmrc ]; then nvm install; fi
771
+ - collapseable_section_end "nodeinstall"
772
+ - collapseable_section_start "yarninstall" "Yarn install"
773
+ - yarn install --immutable
774
+ - collapseable_section_end "yarninstall"
775
+ - yarn lint
776
+ cache:
777
+ - key: www-yarn
778
+ policy: pull-push
779
+ paths:
780
+ - www/.yarn
781
+ - key: www-node-modules
782
+ policy: pull-push
783
+ paths:
784
+ - www/node_modules
785
+ rules:
786
+ - if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH && $CI_COMMIT_MESSAGE !~ /^chore\\(release\\).*/
787
+ - if: $CI_MERGE_REQUEST_ID
788
+ needs: []
789
+ retry: *a1
790
+ interruptible: true
791
+ www ๐Ÿงช test:
792
+ stage: test
793
+ image: path/to/docker/jobs-testing-chrome:the-version
794
+ variables:
795
+ KUBERNETES_CPU_REQUEST: '0.45'
796
+ KUBERNETES_MEMORY_REQUEST: 1Gi
797
+ KUBERNETES_MEMORY_LIMIT: 4Gi
798
+ script:
799
+ - collapseable_section_start "injectvars" "Injecting variables"
800
+ - export APP_PATH="www"
801
+ - collapseable_section_end "injectvars"
802
+ - collapseable_section_start "nodeinstall" "Ensure node version"
803
+ - if [ -f ~/.nvm/nvm.sh ]; then source ~/.nvm/nvm.sh; fi
804
+ - if command -v nvm &> /dev/null && [ -f ./.nvmrc ]; then nvm install; fi
805
+ - collapseable_section_end "nodeinstall"
806
+ - cd www
807
+ - collapseable_section_start "nodeinstall" "Ensure node version"
808
+ - if [ -f ~/.nvm/nvm.sh ]; then source ~/.nvm/nvm.sh; fi
809
+ - if command -v nvm &> /dev/null && [ -f ./.nvmrc ]; then nvm install; fi
810
+ - collapseable_section_end "nodeinstall"
811
+ - collapseable_section_start "yarninstall" "Yarn install"
812
+ - yarn install --immutable
813
+ - collapseable_section_end "yarninstall"
814
+ - yarn test
815
+ cache:
816
+ - key: www-yarn
817
+ policy: pull-push
818
+ paths:
819
+ - www/.yarn
820
+ - key: www-node-modules
821
+ policy: pull-push
822
+ paths:
823
+ - www/node_modules
824
+ rules:
825
+ - if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH && $CI_COMMIT_MESSAGE !~ /^chore\\(release\\).*/
826
+ - if: $CI_MERGE_REQUEST_ID
827
+ needs: []
828
+ retry: *a1
829
+ interruptible: true
830
+ 'www ๐Ÿ”จ app | dev ':
831
+ stage: build
832
+ image: path/to/docker/jobs-default:the-version
833
+ variables:
834
+ KUBERNETES_CPU_REQUEST: '0.45'
835
+ KUBERNETES_MEMORY_REQUEST: 1Gi
836
+ KUBERNETES_MEMORY_LIMIT: 4Gi
837
+ script:
838
+ - collapseable_section_start "injectvars" "Injecting variables"
839
+ - export ENV_SHORT="dev"
840
+ - export APP_DIR="www"
841
+ - export ENV_TYPE="dev"
842
+ - export BUILD_INFO_BUILD_ID="$(git describe --tags 2>/dev/null || git rev-parse HEAD)"
843
+ - export BUILD_INFO_BUILD_TIME="$CI_JOB_STARTED_AT"
844
+ - 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")"
845
+ - export HOSTNAME="unknown-host.example.com"
846
+ - export ROOT_URL="https://unknown-host.example.com"
847
+ - export HOSTNAME_INTERNAL="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\\",\\"HOSTNAME\\",\\"ROOT_URL\\",\\"HOSTNAME_INTERNAL\\",\\"ROOT_URL_INTERNAL\\"]"
850
+ - collapseable_section_end "injectvars"
851
+ - collapseable_section_start "write-dotenv-www" "write dot env for www"
852
+ - |-
853
+ cat <<EOF > www/.env
854
+ ENV_SHORT=dev
855
+ APP_DIR=www
856
+ ENV_TYPE=dev
857
+ HOSTNAME=unknown-host.example.com
858
+ ROOT_URL=https://unknown-host.example.com
859
+ HOSTNAME_INTERNAL=unknown-host.example.com
860
+ ROOT_URL_INTERNAL=https://unknown-host.example.com
861
+ _ALL_ENV_VAR_KEYS=["ENV_SHORT","APP_DIR","ENV_TYPE","BUILD_INFO_BUILD_ID","BUILD_INFO_BUILD_TIME","BUILD_INFO_CURRENT_VERSION","HOSTNAME","ROOT_URL","HOSTNAME_INTERNAL","ROOT_URL_INTERNAL"]
862
+ EOF
863
+ - collapseable_section_end "write-dotenv-www"
864
+ - echo '{"id":"$(git describe --tags 2>/dev/null || git rev-parse HEAD)","time":"$CI_JOB_STARTED_AT"}' > www/__build_info.json
865
+ - collapseable_section_start "nodeinstall" "Ensure node version"
866
+ - if [ -f ~/.nvm/nvm.sh ]; then source ~/.nvm/nvm.sh; fi
867
+ - if command -v nvm &> /dev/null && [ -f ./.nvmrc ]; then nvm install; fi
868
+ - collapseable_section_end "nodeinstall"
869
+ - cd www
870
+ - collapseable_section_start "nodeinstall" "Ensure node version"
871
+ - if [ -f ~/.nvm/nvm.sh ]; then source ~/.nvm/nvm.sh; fi
872
+ - if command -v nvm &> /dev/null && [ -f ./.nvmrc ]; then nvm install; fi
873
+ - collapseable_section_end "nodeinstall"
874
+ - collapseable_section_start "yarninstall" "Yarn install"
875
+ - yarn install --immutable
876
+ - collapseable_section_end "yarninstall"
877
+ - yarn build
878
+ cache:
879
+ - key: www-yarn
880
+ policy: pull-push
881
+ paths:
882
+ - www/.yarn
883
+ - key: www-node-modules
884
+ policy: pull-push
885
+ paths:
886
+ - www/node_modules
887
+ artifacts:
888
+ paths:
889
+ - www/__build_info.json
890
+ - www/.next
891
+ - www/dist
892
+ exclude:
893
+ - www/.env
894
+ expire_in: 1 day
895
+ when: always
896
+ reports: {}
897
+ rules:
898
+ - if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH && $CI_COMMIT_MESSAGE !~ /^chore\\(release\\).*/
899
+ needs: []
900
+ retry: *a1
901
+ interruptible: true
902
+ 'www ๐Ÿงพ sbom | dev ':
903
+ stage: build
904
+ image:
905
+ name: aquasec/trivy:0.58.2
906
+ entrypoint:
907
+ - ''
908
+ variables: {}
909
+ script:
910
+ - collapseable_section_start "injectvars" "Injecting variables"
911
+ - collapseable_section_end "injectvars"
912
+ - trivy fs --quiet --format cyclonedx --output "__sbom.json" www
913
+ artifacts:
914
+ paths:
915
+ - __sbom.json
916
+ rules:
917
+ - if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH && $CI_COMMIT_MESSAGE !~ /^chore\\(release\\).*/
918
+ needs: []
919
+ retry: *a1
920
+ interruptible: true
921
+ allow_failure: true
922
+ 'www ๐Ÿš€ Deploy | dev ':
923
+ stage: deploy dev
924
+ image: path/to/docker/jobs-default:the-version
925
+ variables:
926
+ KUBERNETES_CPU_REQUEST: '0.22'
927
+ KUBERNETES_MEMORY_REQUEST: 200Mi
928
+ KUBERNETES_MEMORY_LIMIT: 400Mi
929
+ script:
930
+ - collapseable_section_start "injectvars" "Injecting variables"
931
+ - export ENV_SHORT="dev"
932
+ - export APP_DIR="www"
933
+ - export ENV_TYPE="dev"
934
+ - export BUILD_INFO_BUILD_ID="$(git describe --tags 2>/dev/null || git rev-parse HEAD)"
935
+ - export BUILD_INFO_BUILD_TIME="$CI_JOB_STARTED_AT"
936
+ - 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")"
937
+ - export HOSTNAME="unknown-host.example.com"
938
+ - export ROOT_URL="https://unknown-host.example.com"
939
+ - export HOSTNAME_INTERNAL="unknown-host.example.com"
940
+ - export ROOT_URL_INTERNAL="https://unknown-host.example.com"
941
+ - export _ALL_ENV_VAR_KEYS="[\\"ENV_SHORT\\",\\"APP_DIR\\",\\"ENV_TYPE\\",\\"BUILD_INFO_BUILD_ID\\",\\"BUILD_INFO_BUILD_TIME\\",\\"BUILD_INFO_CURRENT_VERSION\\",\\"HOSTNAME\\",\\"ROOT_URL\\",\\"HOSTNAME_INTERNAL\\",\\"ROOT_URL_INTERNAL\\"]"
942
+ - collapseable_section_end "injectvars"
943
+ - cd www
944
+ - yarn deploy
945
+ - echo 'Uploading SBOM to Dependency Track'
946
+ - /dtrackuploader https://dep.panter.swiss/ "$DT_KEY_PROD" upload "pan-test-app/www" "$ROOT_URL" "__sbom.json" vex.json || true
947
+ - echo "CL_GITLAB_ENVIRONMENT_URL=$ROOT_URL" >> gitlab_environment.env
948
+ environment:
949
+ name: dev/www
950
+ url: $CL_GITLAB_ENVIRONMENT_URL
951
+ artifacts:
952
+ reports:
953
+ dotenv: gitlab_environment.env
954
+ rules:
955
+ - when: on_success
956
+ if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH && $CI_COMMIT_MESSAGE !~ /^chore\\(release\\).*/
957
+ needs:
958
+ - job: 'api ๐Ÿš€ Deploy | dev '
959
+ artifacts: false
960
+ - job: www ๐Ÿ‘ฎ lint
961
+ artifacts: false
962
+ - job: 'www ๐Ÿ”จ app | dev '
963
+ artifacts: true
964
+ - job: www ๐Ÿงช test
965
+ artifacts: false
966
+ - job: 'www ๐Ÿงพ sbom | dev '
967
+ artifacts: true
968
+ - job: www ๐Ÿ›ก audit
969
+ artifacts: false
970
+ retry: *a1
971
+ interruptible: true
972
+ allow_failure: false
973
+ 'www ๐Ÿ”จ app | review ':
974
+ stage: build
975
+ image: path/to/docker/jobs-default:the-version
976
+ variables:
977
+ KUBERNETES_CPU_REQUEST: '0.45'
978
+ KUBERNETES_MEMORY_REQUEST: 1Gi
979
+ KUBERNETES_MEMORY_LIMIT: 4Gi
980
+ script:
981
+ - collapseable_section_start "injectvars" "Injecting variables"
982
+ - export ENV_SHORT="review"
983
+ - export APP_DIR="www"
984
+ - export ENV_TYPE="review"
985
+ - export BUILD_INFO_BUILD_ID="$(git describe --tags 2>/dev/null || git rev-parse HEAD)"
986
+ - export BUILD_INFO_BUILD_TIME="$CI_JOB_STARTED_AT"
987
+ - 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")"
988
+ - export HOSTNAME="unknown-host.example.com"
989
+ - export ROOT_URL="https://unknown-host.example.com"
990
+ - export HOSTNAME_INTERNAL="unknown-host.example.com"
991
+ - export ROOT_URL_INTERNAL="https://unknown-host.example.com"
992
+ - export _ALL_ENV_VAR_KEYS="[\\"ENV_SHORT\\",\\"APP_DIR\\",\\"ENV_TYPE\\",\\"BUILD_INFO_BUILD_ID\\",\\"BUILD_INFO_BUILD_TIME\\",\\"BUILD_INFO_CURRENT_VERSION\\",\\"HOSTNAME\\",\\"ROOT_URL\\",\\"HOSTNAME_INTERNAL\\",\\"ROOT_URL_INTERNAL\\"]"
993
+ - collapseable_section_end "injectvars"
994
+ - collapseable_section_start "write-dotenv-www" "write dot env for www"
995
+ - |-
996
+ cat <<EOF > www/.env
997
+ ENV_SHORT=review
998
+ APP_DIR=www
999
+ ENV_TYPE=review
1000
+ HOSTNAME=unknown-host.example.com
1001
+ ROOT_URL=https://unknown-host.example.com
1002
+ HOSTNAME_INTERNAL=unknown-host.example.com
1003
+ ROOT_URL_INTERNAL=https://unknown-host.example.com
1004
+ _ALL_ENV_VAR_KEYS=["ENV_SHORT","APP_DIR","ENV_TYPE","BUILD_INFO_BUILD_ID","BUILD_INFO_BUILD_TIME","BUILD_INFO_CURRENT_VERSION","HOSTNAME","ROOT_URL","HOSTNAME_INTERNAL","ROOT_URL_INTERNAL"]
1005
+ EOF
1006
+ - collapseable_section_end "write-dotenv-www"
1007
+ - echo '{"id":"$(git describe --tags 2>/dev/null || git rev-parse HEAD)","time":"$CI_JOB_STARTED_AT"}' > www/__build_info.json
1008
+ - collapseable_section_start "nodeinstall" "Ensure node version"
1009
+ - if [ -f ~/.nvm/nvm.sh ]; then source ~/.nvm/nvm.sh; fi
1010
+ - if command -v nvm &> /dev/null && [ -f ./.nvmrc ]; then nvm install; fi
1011
+ - collapseable_section_end "nodeinstall"
1012
+ - cd www
1013
+ - collapseable_section_start "nodeinstall" "Ensure node version"
1014
+ - if [ -f ~/.nvm/nvm.sh ]; then source ~/.nvm/nvm.sh; fi
1015
+ - if command -v nvm &> /dev/null && [ -f ./.nvmrc ]; then nvm install; fi
1016
+ - collapseable_section_end "nodeinstall"
1017
+ - collapseable_section_start "yarninstall" "Yarn install"
1018
+ - yarn install --immutable
1019
+ - collapseable_section_end "yarninstall"
1020
+ - yarn build
1021
+ cache:
1022
+ - key: www-yarn
1023
+ policy: pull-push
1024
+ paths:
1025
+ - www/.yarn
1026
+ - key: www-node-modules
1027
+ policy: pull-push
1028
+ paths:
1029
+ - www/node_modules
1030
+ artifacts:
1031
+ paths:
1032
+ - www/__build_info.json
1033
+ - www/.next
1034
+ - www/dist
1035
+ exclude:
1036
+ - www/.env
1037
+ expire_in: 1 day
1038
+ when: always
1039
+ reports: {}
1040
+ rules:
1041
+ - if: $CI_MERGE_REQUEST_ID
1042
+ needs: []
1043
+ retry: *a1
1044
+ interruptible: true
1045
+ 'www ๐Ÿงพ sbom | review ':
1046
+ stage: build
1047
+ image:
1048
+ name: aquasec/trivy:0.58.2
1049
+ entrypoint:
1050
+ - ''
1051
+ variables: {}
1052
+ script:
1053
+ - collapseable_section_start "injectvars" "Injecting variables"
1054
+ - collapseable_section_end "injectvars"
1055
+ - trivy fs --quiet --format cyclonedx --output "__sbom.json" www
1056
+ artifacts:
1057
+ paths:
1058
+ - __sbom.json
1059
+ rules:
1060
+ - if: $CI_MERGE_REQUEST_ID
1061
+ needs: []
1062
+ retry: *a1
1063
+ interruptible: true
1064
+ allow_failure: true
1065
+ 'www ๐Ÿš€ Deploy | review ':
1066
+ stage: deploy review
1067
+ image: path/to/docker/jobs-default:the-version
1068
+ variables:
1069
+ KUBERNETES_CPU_REQUEST: '0.22'
1070
+ KUBERNETES_MEMORY_REQUEST: 200Mi
1071
+ KUBERNETES_MEMORY_LIMIT: 400Mi
1072
+ script:
1073
+ - collapseable_section_start "injectvars" "Injecting variables"
1074
+ - export ENV_SHORT="review"
1075
+ - export APP_DIR="www"
1076
+ - export ENV_TYPE="review"
1077
+ - export BUILD_INFO_BUILD_ID="$(git describe --tags 2>/dev/null || git rev-parse HEAD)"
1078
+ - export BUILD_INFO_BUILD_TIME="$CI_JOB_STARTED_AT"
1079
+ - 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")"
1080
+ - export HOSTNAME="unknown-host.example.com"
1081
+ - export ROOT_URL="https://unknown-host.example.com"
1082
+ - export HOSTNAME_INTERNAL="unknown-host.example.com"
1083
+ - export ROOT_URL_INTERNAL="https://unknown-host.example.com"
1084
+ - export _ALL_ENV_VAR_KEYS="[\\"ENV_SHORT\\",\\"APP_DIR\\",\\"ENV_TYPE\\",\\"BUILD_INFO_BUILD_ID\\",\\"BUILD_INFO_BUILD_TIME\\",\\"BUILD_INFO_CURRENT_VERSION\\",\\"HOSTNAME\\",\\"ROOT_URL\\",\\"HOSTNAME_INTERNAL\\",\\"ROOT_URL_INTERNAL\\"]"
1085
+ - collapseable_section_end "injectvars"
1086
+ - cd www
1087
+ - yarn deploy
1088
+ - echo 'Uploading SBOM to Dependency Track'
1089
+ - /dtrackuploader https://dep.panter.swiss/ "$DT_KEY_PROD" upload "pan-test-app/www" "$ROOT_URL" "__sbom.json" vex.json || true
1090
+ - echo "CL_GITLAB_ENVIRONMENT_URL=$ROOT_URL" >> gitlab_environment.env
1091
+ environment:
1092
+ name: review/$CI_COMMIT_REF_NAME/www
1093
+ url: $CL_GITLAB_ENVIRONMENT_URL
1094
+ artifacts:
1095
+ reports:
1096
+ dotenv: gitlab_environment.env
1097
+ rules:
1098
+ - when: on_success
1099
+ if: $CI_MERGE_REQUEST_ID
1100
+ needs:
1101
+ - job: 'api ๐Ÿš€ Deploy | review '
1102
+ artifacts: false
1103
+ - job: www ๐Ÿ‘ฎ lint
1104
+ artifacts: false
1105
+ - job: 'www ๐Ÿ”จ app | review '
1106
+ artifacts: true
1107
+ - job: www ๐Ÿงช test
1108
+ artifacts: false
1109
+ - job: 'www ๐Ÿงพ sbom | review '
1110
+ artifacts: true
1111
+ - job: www ๐Ÿ›ก audit
1112
+ artifacts: false
1113
+ retry: *a1
1114
+ interruptible: true
1115
+ allow_failure: false
1116
+ 'www ๐Ÿ”จ app | stage ':
1117
+ stage: build
1118
+ image: path/to/docker/jobs-default:the-version
1119
+ variables:
1120
+ KUBERNETES_CPU_REQUEST: '0.45'
1121
+ KUBERNETES_MEMORY_REQUEST: 1Gi
1122
+ KUBERNETES_MEMORY_LIMIT: 4Gi
1123
+ script:
1124
+ - collapseable_section_start "injectvars" "Injecting variables"
1125
+ - export ENV_SHORT="stage"
1126
+ - export APP_DIR="www"
1127
+ - export ENV_TYPE="stage"
1128
+ - export BUILD_INFO_BUILD_ID="$(git describe --tags 2>/dev/null || git rev-parse HEAD)"
1129
+ - export BUILD_INFO_BUILD_TIME="$CI_JOB_STARTED_AT"
1130
+ - 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")"
1131
+ - export HOSTNAME="unknown-host.example.com"
1132
+ - export ROOT_URL="https://unknown-host.example.com"
1133
+ - export HOSTNAME_INTERNAL="unknown-host.example.com"
1134
+ - export ROOT_URL_INTERNAL="https://unknown-host.example.com"
1135
+ - export _ALL_ENV_VAR_KEYS="[\\"ENV_SHORT\\",\\"APP_DIR\\",\\"ENV_TYPE\\",\\"BUILD_INFO_BUILD_ID\\",\\"BUILD_INFO_BUILD_TIME\\",\\"BUILD_INFO_CURRENT_VERSION\\",\\"HOSTNAME\\",\\"ROOT_URL\\",\\"HOSTNAME_INTERNAL\\",\\"ROOT_URL_INTERNAL\\"]"
1136
+ - collapseable_section_end "injectvars"
1137
+ - collapseable_section_start "write-dotenv-www" "write dot env for www"
1138
+ - |-
1139
+ cat <<EOF > www/.env
1140
+ ENV_SHORT=stage
1141
+ APP_DIR=www
1142
+ ENV_TYPE=stage
1143
+ HOSTNAME=unknown-host.example.com
1144
+ ROOT_URL=https://unknown-host.example.com
1145
+ HOSTNAME_INTERNAL=unknown-host.example.com
1146
+ ROOT_URL_INTERNAL=https://unknown-host.example.com
1147
+ _ALL_ENV_VAR_KEYS=["ENV_SHORT","APP_DIR","ENV_TYPE","BUILD_INFO_BUILD_ID","BUILD_INFO_BUILD_TIME","BUILD_INFO_CURRENT_VERSION","HOSTNAME","ROOT_URL","HOSTNAME_INTERNAL","ROOT_URL_INTERNAL"]
1148
+ EOF
1149
+ - collapseable_section_end "write-dotenv-www"
1150
+ - echo '{"id":"$(git describe --tags 2>/dev/null || git rev-parse HEAD)","time":"$CI_JOB_STARTED_AT"}' > www/__build_info.json
1151
+ - collapseable_section_start "nodeinstall" "Ensure node version"
1152
+ - if [ -f ~/.nvm/nvm.sh ]; then source ~/.nvm/nvm.sh; fi
1153
+ - if command -v nvm &> /dev/null && [ -f ./.nvmrc ]; then nvm install; fi
1154
+ - collapseable_section_end "nodeinstall"
1155
+ - cd www
1156
+ - collapseable_section_start "nodeinstall" "Ensure node version"
1157
+ - if [ -f ~/.nvm/nvm.sh ]; then source ~/.nvm/nvm.sh; fi
1158
+ - if command -v nvm &> /dev/null && [ -f ./.nvmrc ]; then nvm install; fi
1159
+ - collapseable_section_end "nodeinstall"
1160
+ - collapseable_section_start "yarninstall" "Yarn install"
1161
+ - yarn install --immutable
1162
+ - collapseable_section_end "yarninstall"
1163
+ - yarn build
1164
+ cache:
1165
+ - key: www-yarn
1166
+ policy: pull-push
1167
+ paths:
1168
+ - www/.yarn
1169
+ - key: www-node-modules
1170
+ policy: pull-push
1171
+ paths:
1172
+ - www/node_modules
1173
+ artifacts:
1174
+ paths:
1175
+ - www/__build_info.json
1176
+ - www/.next
1177
+ - www/dist
1178
+ exclude:
1179
+ - www/.env
1180
+ expire_in: 1 day
1181
+ when: always
1182
+ reports: {}
1183
+ rules:
1184
+ - if: $CI_COMMIT_TAG
1185
+ needs: []
1186
+ retry: *a1
1187
+ interruptible: true
1188
+ 'www ๐Ÿงพ sbom | stage ':
1189
+ stage: build
1190
+ image:
1191
+ name: aquasec/trivy:0.58.2
1192
+ entrypoint:
1193
+ - ''
1194
+ variables: {}
1195
+ script:
1196
+ - collapseable_section_start "injectvars" "Injecting variables"
1197
+ - collapseable_section_end "injectvars"
1198
+ - trivy fs --quiet --format cyclonedx --output "__sbom.json" www
1199
+ artifacts:
1200
+ paths:
1201
+ - __sbom.json
1202
+ rules:
1203
+ - if: $CI_COMMIT_TAG
1204
+ needs: []
1205
+ retry: *a1
1206
+ interruptible: true
1207
+ allow_failure: true
1208
+ 'www ๐Ÿš€ Deploy | stage ':
1209
+ stage: deploy stage
1210
+ image: path/to/docker/jobs-default:the-version
1211
+ variables:
1212
+ KUBERNETES_CPU_REQUEST: '0.22'
1213
+ KUBERNETES_MEMORY_REQUEST: 200Mi
1214
+ KUBERNETES_MEMORY_LIMIT: 400Mi
1215
+ script:
1216
+ - collapseable_section_start "injectvars" "Injecting variables"
1217
+ - export ENV_SHORT="stage"
1218
+ - export APP_DIR="www"
1219
+ - export ENV_TYPE="stage"
1220
+ - export BUILD_INFO_BUILD_ID="$(git describe --tags 2>/dev/null || git rev-parse HEAD)"
1221
+ - export BUILD_INFO_BUILD_TIME="$CI_JOB_STARTED_AT"
1222
+ - 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")"
1223
+ - export HOSTNAME="unknown-host.example.com"
1224
+ - export ROOT_URL="https://unknown-host.example.com"
1225
+ - export HOSTNAME_INTERNAL="unknown-host.example.com"
1226
+ - export ROOT_URL_INTERNAL="https://unknown-host.example.com"
1227
+ - export _ALL_ENV_VAR_KEYS="[\\"ENV_SHORT\\",\\"APP_DIR\\",\\"ENV_TYPE\\",\\"BUILD_INFO_BUILD_ID\\",\\"BUILD_INFO_BUILD_TIME\\",\\"BUILD_INFO_CURRENT_VERSION\\",\\"HOSTNAME\\",\\"ROOT_URL\\",\\"HOSTNAME_INTERNAL\\",\\"ROOT_URL_INTERNAL\\"]"
1228
+ - collapseable_section_end "injectvars"
1229
+ - cd www
1230
+ - yarn deploy
1231
+ - echo 'Uploading SBOM to Dependency Track'
1232
+ - /dtrackuploader https://dep.panter.swiss/ "$DT_KEY_PROD" upload "pan-test-app/www" "$ROOT_URL" "__sbom.json" vex.json || true
1233
+ - echo "CL_GITLAB_ENVIRONMENT_URL=$ROOT_URL" >> gitlab_environment.env
1234
+ environment:
1235
+ name: stage/www
1236
+ url: $CL_GITLAB_ENVIRONMENT_URL
1237
+ artifacts:
1238
+ reports:
1239
+ dotenv: gitlab_environment.env
1240
+ rules:
1241
+ - when: on_success
1242
+ if: $CI_COMMIT_TAG
1243
+ needs:
1244
+ - job: 'api ๐Ÿš€ Deploy | stage '
1245
+ artifacts: false
1246
+ - job: 'www ๐Ÿ”จ app | stage '
1247
+ artifacts: true
1248
+ - job: 'www ๐Ÿงพ sbom | stage '
1249
+ artifacts: true
1250
+ retry: *a1
1251
+ interruptible: true
1252
+ allow_failure: false
1253
+ 'www ๐Ÿ”จ app | prod ':
1254
+ stage: build
1255
+ image: path/to/docker/jobs-default:the-version
1256
+ variables:
1257
+ KUBERNETES_CPU_REQUEST: '0.45'
1258
+ KUBERNETES_MEMORY_REQUEST: 1Gi
1259
+ KUBERNETES_MEMORY_LIMIT: 4Gi
1260
+ script:
1261
+ - collapseable_section_start "injectvars" "Injecting variables"
1262
+ - export ENV_SHORT="prod"
1263
+ - export APP_DIR="www"
1264
+ - export ENV_TYPE="prod"
1265
+ - export BUILD_INFO_BUILD_ID="$(git describe --tags 2>/dev/null || git rev-parse HEAD)"
1266
+ - export BUILD_INFO_BUILD_TIME="$CI_JOB_STARTED_AT"
1267
+ - 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")"
1268
+ - export HOSTNAME="unknown-host.example.com"
1269
+ - export ROOT_URL="https://unknown-host.example.com"
1270
+ - export HOSTNAME_INTERNAL="unknown-host.example.com"
1271
+ - export ROOT_URL_INTERNAL="https://unknown-host.example.com"
1272
+ - export _ALL_ENV_VAR_KEYS="[\\"ENV_SHORT\\",\\"APP_DIR\\",\\"ENV_TYPE\\",\\"BUILD_INFO_BUILD_ID\\",\\"BUILD_INFO_BUILD_TIME\\",\\"BUILD_INFO_CURRENT_VERSION\\",\\"HOSTNAME\\",\\"ROOT_URL\\",\\"HOSTNAME_INTERNAL\\",\\"ROOT_URL_INTERNAL\\"]"
1273
+ - collapseable_section_end "injectvars"
1274
+ - collapseable_section_start "write-dotenv-www" "write dot env for www"
1275
+ - |-
1276
+ cat <<EOF > www/.env
1277
+ ENV_SHORT=prod
1278
+ APP_DIR=www
1279
+ ENV_TYPE=prod
1280
+ HOSTNAME=unknown-host.example.com
1281
+ ROOT_URL=https://unknown-host.example.com
1282
+ HOSTNAME_INTERNAL=unknown-host.example.com
1283
+ ROOT_URL_INTERNAL=https://unknown-host.example.com
1284
+ _ALL_ENV_VAR_KEYS=["ENV_SHORT","APP_DIR","ENV_TYPE","BUILD_INFO_BUILD_ID","BUILD_INFO_BUILD_TIME","BUILD_INFO_CURRENT_VERSION","HOSTNAME","ROOT_URL","HOSTNAME_INTERNAL","ROOT_URL_INTERNAL"]
1285
+ EOF
1286
+ - collapseable_section_end "write-dotenv-www"
1287
+ - echo '{"id":"$(git describe --tags 2>/dev/null || git rev-parse HEAD)","time":"$CI_JOB_STARTED_AT"}' > www/__build_info.json
1288
+ - collapseable_section_start "nodeinstall" "Ensure node version"
1289
+ - if [ -f ~/.nvm/nvm.sh ]; then source ~/.nvm/nvm.sh; fi
1290
+ - if command -v nvm &> /dev/null && [ -f ./.nvmrc ]; then nvm install; fi
1291
+ - collapseable_section_end "nodeinstall"
1292
+ - cd www
1293
+ - collapseable_section_start "nodeinstall" "Ensure node version"
1294
+ - if [ -f ~/.nvm/nvm.sh ]; then source ~/.nvm/nvm.sh; fi
1295
+ - if command -v nvm &> /dev/null && [ -f ./.nvmrc ]; then nvm install; fi
1296
+ - collapseable_section_end "nodeinstall"
1297
+ - collapseable_section_start "yarninstall" "Yarn install"
1298
+ - yarn install --immutable
1299
+ - collapseable_section_end "yarninstall"
1300
+ - yarn build
1301
+ cache:
1302
+ - key: www-yarn
1303
+ policy: pull-push
1304
+ paths:
1305
+ - www/.yarn
1306
+ - key: www-node-modules
1307
+ policy: pull-push
1308
+ paths:
1309
+ - www/node_modules
1310
+ artifacts:
1311
+ paths:
1312
+ - www/__build_info.json
1313
+ - www/.next
1314
+ - www/dist
1315
+ exclude:
1316
+ - www/.env
1317
+ expire_in: 1 day
1318
+ when: always
1319
+ reports: {}
1320
+ rules:
1321
+ - if: $CI_COMMIT_TAG
1322
+ needs: []
1323
+ retry: *a1
1324
+ interruptible: true
1325
+ 'www ๐Ÿงพ sbom | prod ':
1326
+ stage: build
1327
+ image:
1328
+ name: aquasec/trivy:0.58.2
1329
+ entrypoint:
1330
+ - ''
1331
+ variables: {}
1332
+ script:
1333
+ - collapseable_section_start "injectvars" "Injecting variables"
1334
+ - collapseable_section_end "injectvars"
1335
+ - trivy fs --quiet --format cyclonedx --output "__sbom.json" www
1336
+ artifacts:
1337
+ paths:
1338
+ - __sbom.json
1339
+ rules:
1340
+ - if: $CI_COMMIT_TAG
1341
+ needs: []
1342
+ retry: *a1
1343
+ interruptible: true
1344
+ allow_failure: true
1345
+ 'www ๐Ÿš€ Deploy | prod ':
1346
+ stage: deploy prod
1347
+ image: path/to/docker/jobs-default:the-version
1348
+ variables:
1349
+ KUBERNETES_CPU_REQUEST: '0.22'
1350
+ KUBERNETES_MEMORY_REQUEST: 200Mi
1351
+ KUBERNETES_MEMORY_LIMIT: 400Mi
1352
+ script:
1353
+ - collapseable_section_start "injectvars" "Injecting variables"
1354
+ - export ENV_SHORT="prod"
1355
+ - export APP_DIR="www"
1356
+ - export ENV_TYPE="prod"
1357
+ - export BUILD_INFO_BUILD_ID="$(git describe --tags 2>/dev/null || git rev-parse HEAD)"
1358
+ - export BUILD_INFO_BUILD_TIME="$CI_JOB_STARTED_AT"
1359
+ - 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")"
1360
+ - export HOSTNAME="unknown-host.example.com"
1361
+ - export ROOT_URL="https://unknown-host.example.com"
1362
+ - export HOSTNAME_INTERNAL="unknown-host.example.com"
1363
+ - export ROOT_URL_INTERNAL="https://unknown-host.example.com"
1364
+ - export _ALL_ENV_VAR_KEYS="[\\"ENV_SHORT\\",\\"APP_DIR\\",\\"ENV_TYPE\\",\\"BUILD_INFO_BUILD_ID\\",\\"BUILD_INFO_BUILD_TIME\\",\\"BUILD_INFO_CURRENT_VERSION\\",\\"HOSTNAME\\",\\"ROOT_URL\\",\\"HOSTNAME_INTERNAL\\",\\"ROOT_URL_INTERNAL\\"]"
1365
+ - collapseable_section_end "injectvars"
1366
+ - cd www
1367
+ - yarn deploy
1368
+ - echo 'Uploading SBOM to Dependency Track'
1369
+ - /dtrackuploader https://dep.panter.swiss/ "$DT_KEY_PROD" upload "pan-test-app/www" "$ROOT_URL" "__sbom.json" vex.json || true
1370
+ - echo "CL_GITLAB_ENVIRONMENT_URL=$ROOT_URL" >> gitlab_environment.env
1371
+ environment:
1372
+ name: prod/www
1373
+ url: $CL_GITLAB_ENVIRONMENT_URL
1374
+ artifacts:
1375
+ reports:
1376
+ dotenv: gitlab_environment.env
1377
+ rules:
1378
+ - when: manual
1379
+ if: $CI_COMMIT_TAG
1380
+ needs:
1381
+ - job: 'api ๐Ÿš€ Deploy | prod '
1382
+ artifacts: false
1383
+ - job: 'www ๐Ÿ”จ app | prod '
1384
+ artifacts: true
1385
+ - job: 'www ๐Ÿงพ sbom | prod '
1386
+ artifacts: true
1387
+ retry: *a1
1388
+ interruptible: true
1389
+ allow_failure: true
1390
+ create release:
1391
+ stage: release
1392
+ image: path/to/docker/semantic-release:the-version
1393
+ script:
1394
+ - semanticRelease
1395
+ - echo '๐Ÿ‘‰ The project access token might be invald - run \`project-renew-token\` in catladder CLI to fix.'
1396
+ rules:
1397
+ - &a2
1398
+ if: $CI_COMMIT_MESSAGE =~ /^chore\\(release\\).*/
1399
+ when: never
1400
+ - &a3
1401
+ if: $CI_PIPELINE_SOURCE == "schedule"
1402
+ when: never
1403
+ - if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH && $AUTO_RELEASE == "true"
1404
+ when: on_success
1405
+ - if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH
1406
+ when: manual
1407
+ - if: $CI_COMMIT_BRANCH =~ /^[0-9]+.([0-9]+|x).x$/
1408
+ when: manual
1409
+ โš ๏ธ force create release:
1410
+ stage: release
1411
+ image: path/to/docker/semantic-release:the-version
1412
+ script:
1413
+ - semanticRelease
1414
+ - echo '๐Ÿ‘‰ The project access token might be invald - run \`project-renew-token\` in catladder CLI to fix.'
1415
+ rules:
1416
+ - *a2
1417
+ - *a3
1418
+ - if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH
1419
+ when: manual
1420
+ - if: $CI_COMMIT_BRANCH =~ /^[0-9]+.([0-9]+|x).x$/
1421
+ when: manual
1422
+ needs: []
1423
+ "
1424
+ `;