@catladder/pipeline 0.0.0-more-collapse-deeb54d7 โ†’ 0.0.0-multiple-gitlab-includes-1a40efc0

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