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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (639) hide show
  1. package/README.md +15 -1
  2. package/dist/bash/BashExpression.d.ts +36 -0
  3. package/dist/bash/BashExpression.js +114 -0
  4. package/dist/bash/bashEscape.d.ts +37 -0
  5. package/dist/bash/bashEscape.js +119 -0
  6. package/dist/bash/bashExpressionPerPipelineType.d.ts +6 -0
  7. package/dist/bash/bashExpressionPerPipelineType.js +11 -0
  8. package/dist/bash/bashYaml.d.ts +10 -0
  9. package/dist/bash/bashYaml.js +69 -0
  10. package/dist/bash/getInjectVarsScript.d.ts +2 -0
  11. package/dist/bash/getInjectVarsScript.js +47 -0
  12. package/dist/bash/index.d.ts +2 -0
  13. package/dist/bash/index.js +26 -0
  14. package/dist/build/artifacts/createBuildJobArtifact.d.ts +3 -0
  15. package/dist/build/artifacts/createBuildJobArtifact.js +97 -0
  16. package/dist/build/base/__tests__/createArtifactsConfig.test.js +3 -1
  17. package/dist/build/base/constants.js +4 -2
  18. package/dist/build/base/createAppBuildJob.d.ts +5 -3
  19. package/dist/build/base/createAppBuildJob.js +18 -15
  20. package/dist/build/base/createArtifactsConfig.d.ts +1 -1
  21. package/dist/build/base/createArtifactsConfig.js +3 -1
  22. package/dist/build/base/createBuildJobDefinition.d.ts +6 -0
  23. package/dist/build/base/createBuildJobDefinition.js +58 -0
  24. package/dist/build/base/index.d.ts +6 -4
  25. package/dist/build/base/index.js +17 -6
  26. package/dist/build/base/writeBuildInfo.d.ts +2 -2
  27. package/dist/build/base/writeBuildInfo.js +4 -3
  28. package/dist/build/base/writeDotEnv.d.ts +3 -2
  29. package/dist/build/base/writeDotEnv.js +30 -6
  30. package/dist/build/cache/createJobCache.d.ts +7 -0
  31. package/dist/build/cache/createJobCache.js +115 -0
  32. package/dist/build/cache/getAllCacheConfigsFromConfig.d.ts +3 -0
  33. package/dist/build/cache/getAllCacheConfigsFromConfig.js +64 -0
  34. package/dist/build/cache/transformLegacyJobCache.d.ts +3 -0
  35. package/dist/build/cache/transformLegacyJobCache.js +29 -0
  36. package/dist/build/custom/__tests__/testJob.test.js +15 -16
  37. package/dist/build/custom/buildJob.d.ts +2 -2
  38. package/dist/build/custom/buildJob.js +8 -66
  39. package/dist/build/custom/index.d.ts +2 -2
  40. package/dist/build/custom/index.js +3 -1
  41. package/dist/build/custom/testJob.d.ts +4 -4
  42. package/dist/build/custom/testJob.js +25 -20
  43. package/dist/build/docker.d.ts +37 -46
  44. package/dist/build/docker.js +65 -34
  45. package/dist/build/index.d.ts +14 -7
  46. package/dist/build/index.js +44 -17
  47. package/dist/build/node/buildJob.d.ts +8 -2
  48. package/dist/build/node/buildJob.js +39 -52
  49. package/dist/build/node/cache.d.ts +4 -5
  50. package/dist/build/node/cache.js +18 -24
  51. package/dist/build/node/constants.js +5 -3
  52. package/dist/build/node/index.d.ts +4 -4
  53. package/dist/build/node/index.js +3 -1
  54. package/dist/build/node/meteor.d.ts +2 -2
  55. package/dist/build/node/meteor.js +10 -12
  56. package/dist/build/node/testJob.d.ts +3 -2
  57. package/dist/build/node/testJob.js +29 -19
  58. package/dist/build/node/yarn.d.ts +4 -3
  59. package/dist/build/node/yarn.js +11 -12
  60. package/dist/build/rails/build.d.ts +2 -2
  61. package/dist/build/rails/build.js +13 -6
  62. package/dist/build/rails/index.d.ts +2 -2
  63. package/dist/build/rails/index.js +3 -1
  64. package/dist/build/rails/test.d.ts +2 -2
  65. package/dist/build/rails/test.js +30 -11
  66. package/dist/build/sbom.d.ts +2 -2
  67. package/dist/build/sbom.js +13 -7
  68. package/dist/build/types.d.ts +160 -47
  69. package/dist/build/types.js +10 -2
  70. package/dist/catladder-gitlab.js +129 -49
  71. package/dist/config/__tests__/configruedEnvs.test.js +3 -1
  72. package/dist/config/__tests__/getAllEnvs.test.js +79 -0
  73. package/dist/config/__tests__/getAllEnvsInAllComponents.test.d.ts +1 -0
  74. package/dist/config/__tests__/getAllEnvsInAllComponents.test.js +73 -0
  75. package/dist/config/configruedEnvs.js +3 -1
  76. package/dist/config/index.js +13 -7
  77. package/dist/config/readConfig.d.ts +2 -2
  78. package/dist/config/readConfig.js +191 -40
  79. package/dist/constants.js +5 -3
  80. package/dist/context/createAllComponentsContext.d.ts +12 -0
  81. package/dist/{pipeline/commitInfo/getCommitInfo.js โ†’ context/createAllComponentsContext.js} +35 -19
  82. package/dist/context/createComponentContext.d.ts +11 -0
  83. package/dist/context/createComponentContext.js +262 -0
  84. package/dist/context/createWorkspaceContext.d.ts +16 -0
  85. package/dist/context/createWorkspaceContext.js +173 -0
  86. package/dist/context/getBuildInfoVariables.d.ts +6 -0
  87. package/dist/context/getBuildInfoVariables.js +55 -0
  88. package/dist/context/getEnvConfig.js +21 -4
  89. package/dist/context/getEnvType.js +3 -1
  90. package/dist/context/getEnvironment.d.ts +3 -3
  91. package/dist/context/getEnvironment.js +11 -12
  92. package/dist/context/getEnvironmentContext.d.ts +7 -3
  93. package/dist/context/getEnvironmentContext.js +21 -11
  94. package/dist/context/getEnvironmentVariables.d.ts +22 -5
  95. package/dist/context/getEnvironmentVariables.js +79 -53
  96. package/dist/context/getLabels.d.ts +2 -2
  97. package/dist/context/getLabels.js +9 -7
  98. package/dist/context/getReviewSlug.d.ts +4 -0
  99. package/dist/context/getReviewSlug.js +21 -0
  100. package/dist/context/index.d.ts +2 -4
  101. package/dist/context/index.js +15 -162
  102. package/dist/context/transformJobOnlyVars.d.ts +5 -2
  103. package/dist/context/transformJobOnlyVars.js +4 -2
  104. package/dist/context/utils/envVars.d.ts +1 -1
  105. package/dist/context/utils/envVars.js +5 -2
  106. package/dist/defaults/index.js +3 -1
  107. package/dist/deploy/base/deploy.d.ts +3 -3
  108. package/dist/deploy/base/deploy.js +37 -21
  109. package/dist/deploy/base/index.d.ts +3 -5
  110. package/dist/deploy/base/index.js +3 -1
  111. package/dist/deploy/base/rollback.d.ts +3 -3
  112. package/dist/deploy/base/rollback.js +13 -9
  113. package/dist/deploy/base/stop.d.ts +3 -3
  114. package/dist/deploy/base/stop.js +16 -11
  115. package/dist/deploy/base/types.d.ts +1 -1
  116. package/dist/deploy/base/types.js +3 -1
  117. package/dist/deploy/base/variables.js +4 -2
  118. package/dist/deploy/cloudRun/artifactsRegistry.d.ts +8 -11
  119. package/dist/deploy/cloudRun/artifactsRegistry.js +15 -14
  120. package/dist/deploy/cloudRun/cleanup.d.ts +2 -2
  121. package/dist/deploy/cloudRun/cleanup.js +3 -1
  122. package/dist/deploy/cloudRun/cloudRunRevisions.d.ts +2 -2
  123. package/dist/deploy/cloudRun/cloudRunRevisions.js +7 -6
  124. package/dist/deploy/cloudRun/createJobs/cloudRunJobs.d.ts +8 -6
  125. package/dist/deploy/cloudRun/createJobs/cloudRunJobs.js +57 -106
  126. package/dist/deploy/cloudRun/createJobs/cloudRunServices.d.ts +3 -3
  127. package/dist/deploy/cloudRun/createJobs/cloudRunServices.js +79 -15
  128. package/dist/deploy/cloudRun/createJobs/common.d.ts +7 -7
  129. package/dist/deploy/cloudRun/createJobs/common.js +6 -3
  130. package/dist/deploy/cloudRun/createJobs/constants.d.ts +1 -0
  131. package/dist/deploy/cloudRun/createJobs/constants.js +7 -0
  132. package/dist/deploy/cloudRun/createJobs/execute/onDeploy.d.ts +3 -0
  133. package/dist/deploy/cloudRun/createJobs/execute/onDeploy.js +115 -0
  134. package/dist/deploy/cloudRun/createJobs/execute/schedules.d.ts +3 -0
  135. package/dist/deploy/cloudRun/createJobs/execute/schedules.js +173 -0
  136. package/dist/deploy/cloudRun/createJobs/getCloudRunDeployScripts.d.ts +2 -2
  137. package/dist/deploy/cloudRun/createJobs/getCloudRunDeployScripts.js +13 -5
  138. package/dist/deploy/cloudRun/createJobs/getCloudRunStopScripts.d.ts +2 -2
  139. package/dist/deploy/cloudRun/createJobs/getCloudRunStopScripts.js +7 -3
  140. package/dist/deploy/cloudRun/createJobs/healthCheck.d.ts +5 -0
  141. package/dist/deploy/cloudRun/createJobs/healthCheck.js +82 -0
  142. package/dist/deploy/cloudRun/createJobs/index.d.ts +2 -2
  143. package/dist/deploy/cloudRun/createJobs/index.js +26 -12
  144. package/dist/deploy/cloudRun/createJobs/volumes.d.ts +3 -0
  145. package/dist/deploy/cloudRun/createJobs/volumes.js +58 -0
  146. package/dist/deploy/cloudRun/index.d.ts +2 -2
  147. package/dist/deploy/cloudRun/index.js +25 -13
  148. package/dist/deploy/cloudRun/utils/cloudRunExecutionUrl.d.ts +10 -0
  149. package/dist/deploy/cloudRun/utils/cloudRunExecutionUrl.js +16 -0
  150. package/dist/deploy/cloudRun/utils/createArgsString.d.ts +2 -2
  151. package/dist/deploy/cloudRun/utils/createArgsString.js +3 -1
  152. package/dist/deploy/cloudRun/utils/database.d.ts +25 -4
  153. package/dist/deploy/cloudRun/utils/database.js +49 -15
  154. package/dist/deploy/cloudRun/utils/gcloudServiceAccountLoginCommands.d.ts +2 -2
  155. package/dist/deploy/cloudRun/utils/gcloudServiceAccountLoginCommands.js +3 -1
  156. package/dist/deploy/cloudRun/utils/getJobOrServiceArgs.d.ts +2 -0
  157. package/dist/deploy/cloudRun/utils/getJobOrServiceArgs.js +12 -0
  158. package/dist/deploy/cloudRun/utils/getServiceName.d.ts +2 -2
  159. package/dist/deploy/cloudRun/utils/getServiceName.js +3 -1
  160. package/dist/deploy/cloudRun/utils/jobName.d.ts +6 -1
  161. package/dist/deploy/cloudRun/utils/jobName.js +18 -4
  162. package/dist/deploy/cloudRun/utils/removeFirstLinesFromCommandOutput.js +3 -1
  163. package/dist/deploy/cloudSql/utils.d.ts +2 -1
  164. package/dist/deploy/cloudSql/utils.js +7 -2
  165. package/dist/deploy/custom/deployJob.d.ts +2 -2
  166. package/dist/deploy/custom/deployJob.js +10 -9
  167. package/dist/deploy/custom/index.d.ts +2 -2
  168. package/dist/deploy/custom/index.js +3 -1
  169. package/dist/deploy/dockerTag/deployJob.d.ts +2 -2
  170. package/dist/deploy/dockerTag/deployJob.js +6 -6
  171. package/dist/deploy/dockerTag/index.d.ts +2 -2
  172. package/dist/deploy/dockerTag/index.js +3 -1
  173. package/dist/deploy/index.d.ts +10 -9
  174. package/dist/deploy/index.js +13 -7
  175. package/dist/deploy/kubernetes/additionalSecretKeys.d.ts +3 -1
  176. package/dist/deploy/kubernetes/additionalSecretKeys.js +3 -1
  177. package/dist/deploy/kubernetes/cloudSql/index.d.ts +6 -5
  178. package/dist/deploy/kubernetes/cloudSql/index.js +14 -21
  179. package/dist/deploy/kubernetes/deployJob.d.ts +2 -2
  180. package/dist/deploy/kubernetes/deployJob.js +23 -22
  181. package/dist/deploy/kubernetes/index.d.ts +2 -2
  182. package/dist/deploy/kubernetes/index.js +52 -15
  183. package/dist/deploy/kubernetes/kubeEnv.d.ts +5 -4
  184. package/dist/deploy/kubernetes/kubeEnv.js +9 -5
  185. package/dist/deploy/kubernetes/kubeValues.d.ts +5 -6
  186. package/dist/deploy/kubernetes/kubeValues.js +17 -19
  187. package/dist/deploy/kubernetes/mongodb.d.ts +2 -2
  188. package/dist/deploy/kubernetes/mongodb.js +14 -12
  189. package/dist/deploy/sbom.d.ts +4 -4
  190. package/dist/deploy/sbom.js +8 -4
  191. package/dist/deploy/types/base.d.ts +5 -5
  192. package/dist/deploy/types/base.js +3 -1
  193. package/dist/deploy/types/custom.d.ts +3 -7
  194. package/dist/deploy/types/custom.js +3 -1
  195. package/dist/deploy/types/dockerTag.d.ts +1 -1
  196. package/dist/deploy/types/dockerTag.js +3 -1
  197. package/dist/deploy/types/googleCloudRun.d.ts +291 -16
  198. package/dist/deploy/types/googleCloudRun.js +28 -1
  199. package/dist/deploy/types/index.d.ts +8 -7
  200. package/dist/deploy/types/index.js +21 -10
  201. package/dist/deploy/types/kubernetes.d.ts +21 -54
  202. package/dist/deploy/types/kubernetes.js +3 -1
  203. package/dist/deploy/utils.d.ts +2 -2
  204. package/dist/deploy/utils.js +5 -2
  205. package/dist/globalScriptFunctions/index.d.ts +14 -0
  206. package/dist/globalScriptFunctions/index.js +37 -0
  207. package/dist/index.d.ts +5 -2
  208. package/dist/index.js +18 -9
  209. package/dist/packageInfos.d.ts +4 -0
  210. package/dist/packageInfos.js +20 -0
  211. package/dist/pipeline/__tests__/getPipelineStages.test.d.ts +1 -0
  212. package/dist/pipeline/__tests__/getPipelineStages.test.js +73 -0
  213. package/dist/pipeline/createAllJobs.d.ts +16 -6
  214. package/dist/pipeline/createAllJobs.js +99 -27
  215. package/dist/pipeline/createJobsForComponent.d.ts +2 -2
  216. package/dist/pipeline/createJobsForComponent.js +9 -149
  217. package/dist/pipeline/createJobsForWorkspace.d.ts +3 -0
  218. package/dist/pipeline/createJobsForWorkspace.js +12 -0
  219. package/dist/pipeline/createMainPipeline.d.ts +3 -0
  220. package/dist/pipeline/createMainPipeline.js +283 -0
  221. package/dist/pipeline/generatePipelineFiles.d.ts +7 -0
  222. package/dist/pipeline/generatePipelineFiles.js +305 -0
  223. package/dist/pipeline/getPipelineStages.d.ts +7 -0
  224. package/dist/pipeline/getPipelineStages.js +56 -0
  225. package/dist/pipeline/gitlab/createGitlabJobs.d.ts +11 -14
  226. package/dist/pipeline/gitlab/createGitlabJobs.js +264 -74
  227. package/dist/pipeline/gitlab/createGitlabPipeline.d.ts +9 -0
  228. package/dist/pipeline/gitlab/createGitlabPipeline.js +77 -0
  229. package/dist/pipeline/gitlab/gitlabReleaseJobs.d.ts +33 -0
  230. package/dist/pipeline/gitlab/gitlabReleaseJobs.js +25 -0
  231. package/dist/pipeline/gitlab/sortGitLabJobDefProps.d.ts +7 -0
  232. package/dist/pipeline/gitlab/sortGitLabJobDefProps.js +27 -0
  233. package/dist/pipeline/index.d.ts +3 -2
  234. package/dist/pipeline/index.js +16 -9
  235. package/dist/pipeline/packageManager.d.ts +4 -2
  236. package/dist/pipeline/packageManager.js +56 -19
  237. package/dist/pipeline/yarn/yarnUtils.d.ts +2 -2
  238. package/dist/pipeline/yarn/yarnUtils.js +18 -15
  239. package/dist/rules/index.d.ts +10 -3
  240. package/dist/rules/index.js +35 -17
  241. package/dist/runner/index.d.ts +1 -1
  242. package/dist/runner/index.js +3 -1
  243. package/dist/tsconfig.tsbuildinfo +1 -1
  244. package/dist/types/config.d.ts +54 -36
  245. package/dist/types/config.js +5 -2
  246. package/dist/types/context.d.ts +123 -38
  247. package/dist/types/context.js +12 -1
  248. package/dist/types/environmentContext.d.ts +15 -12
  249. package/dist/types/environmentContext.js +3 -1
  250. package/dist/types/gitlab-ci-yml.d.ts +30 -30
  251. package/dist/types/gitlab-ci-yml.js +3 -2
  252. package/dist/types/gitlab-types.d.ts +8 -8
  253. package/dist/types/gitlab-types.js +3 -1
  254. package/dist/types/index.d.ts +3 -1
  255. package/dist/types/index.js +16 -8
  256. package/dist/types/jobDefinition.d.ts +11 -0
  257. package/dist/types/jobDefinition.js +5 -0
  258. package/dist/types/jobs.d.ts +30 -15
  259. package/dist/types/jobs.js +3 -1
  260. package/dist/types/pipeline.d.ts +3 -3
  261. package/dist/types/pipeline.js +3 -1
  262. package/dist/types/utils.d.ts +1 -1
  263. package/dist/types/utils.js +3 -1
  264. package/dist/utils/gitlab.js +7 -2
  265. package/dist/utils/index.d.ts +2 -1
  266. package/dist/utils/index.js +10 -3
  267. package/dist/utils/jsonParse.d.ts +1 -0
  268. package/dist/utils/jsonParse.js +14 -0
  269. package/dist/utils/removeUndefined.d.ts +1 -0
  270. package/dist/utils/removeUndefined.js +36 -0
  271. package/dist/utils/writeFiles.d.ts +11 -0
  272. package/dist/{pipeline/commitInfo/getBuildId.js โ†’ utils/writeFiles.js} +39 -22
  273. package/dist/variables/VariableValue.d.ts +3 -0
  274. package/dist/variables/VariableValue.js +5 -0
  275. package/dist/variables/VariableValueContainingReferences.d.ts +24 -0
  276. package/dist/variables/VariableValueContainingReferences.js +97 -0
  277. package/dist/variables/__tests__/resolveAllReferences.test.d.ts +1 -0
  278. package/dist/variables/__tests__/resolveAllReferences.test.js +218 -0
  279. package/dist/variables/__tests__/resolveAllReferencesOnce.test.d.ts +1 -0
  280. package/dist/variables/__tests__/resolveAllReferencesOnce.test.js +171 -0
  281. package/dist/variables/__tests__/resolveReferencesOnce.test.d.ts +1 -0
  282. package/dist/variables/__tests__/resolveReferencesOnce.test.js +199 -0
  283. package/dist/variables/__tests__/variableValue.test.d.ts +1 -0
  284. package/dist/variables/__tests__/variableValue.test.js +36 -0
  285. package/dist/variables/resolveAllReferences.d.ts +3 -0
  286. package/dist/{pipeline/createChildPipeline.js โ†’ variables/resolveAllReferences.js} +44 -48
  287. package/dist/variables/resolveAllReferencesOnce.d.ts +5 -0
  288. package/dist/variables/resolveAllReferencesOnce.js +191 -0
  289. package/dist/variables/resolveReferencesOnce.d.ts +8 -0
  290. package/dist/variables/resolveReferencesOnce.js +22 -0
  291. package/examples/.test-gen-ignore +1 -0
  292. package/examples/__snapshots__/cloud-run-health-check-defaults.test.ts.snap +1394 -0
  293. package/examples/__snapshots__/cloud-run-health-check-only-startup.test.ts.snap +1394 -0
  294. package/examples/__snapshots__/cloud-run-health-check.test.ts.snap +1394 -0
  295. package/examples/__snapshots__/cloud-run-http2.test.ts.snap +1394 -0
  296. package/examples/__snapshots__/cloud-run-llama.test.ts.snap +624 -0
  297. package/examples/__snapshots__/cloud-run-memory-limit.test.ts.snap +1394 -0
  298. package/examples/__snapshots__/cloud-run-meteor-with-worker.test.ts.snap +1394 -0
  299. package/examples/__snapshots__/cloud-run-nextjs.test.ts.snap +1410 -0
  300. package/examples/__snapshots__/cloud-run-no-cpu-throttling.test.ts.snap +1394 -0
  301. package/examples/__snapshots__/cloud-run-no-service.test.ts.snap +1502 -0
  302. package/examples/__snapshots__/cloud-run-non-public.test.ts.snap +1394 -0
  303. package/examples/__snapshots__/cloud-run-post-stop-job.test.ts.snap +1412 -0
  304. package/examples/__snapshots__/cloud-run-service-custom-vpc-connector.test.ts.snap +1462 -0
  305. package/examples/__snapshots__/cloud-run-service-custom-vpc.test.ts.snap +1462 -0
  306. package/examples/__snapshots__/cloud-run-service-gen2.test.ts.snap +1394 -0
  307. package/examples/__snapshots__/cloud-run-service-increase-timout.test.ts.snap +1394 -0
  308. package/examples/__snapshots__/cloud-run-service-with-volumes.test.ts.snap +1466 -0
  309. package/examples/__snapshots__/cloud-run-storybook.test.ts.snap +1284 -0
  310. package/examples/__snapshots__/cloud-run-with-gpu.test.ts.snap +1394 -0
  311. package/examples/__snapshots__/cloud-run-with-ngnix.test.ts.snap +1394 -0
  312. package/examples/__snapshots__/cloud-run-with-sql-legacy-jobs.test.ts.snap +1709 -0
  313. package/examples/__snapshots__/cloud-run-with-sql-multiple-dbs.test.ts.snap +4515 -0
  314. package/examples/__snapshots__/cloud-run-with-sql-reuse-db.test.ts.snap +2950 -0
  315. package/examples/__snapshots__/cloud-run-with-sql.test.ts.snap +1772 -0
  316. package/examples/__snapshots__/cloud-run-with-worker.test.ts.snap +1402 -0
  317. package/examples/__snapshots__/custom-build-job-with-tests.test.ts.snap +1261 -0
  318. package/examples/__snapshots__/custom-build-job.test.ts.snap +1156 -0
  319. package/examples/__snapshots__/custom-deploy.test.ts.snap +1059 -0
  320. package/examples/__snapshots__/custom-envs.test.ts.snap +786 -0
  321. package/examples/__snapshots__/custom-sbom-java.test.ts.snap +1152 -0
  322. package/examples/__snapshots__/custom-verify-job.test.ts.snap +1606 -0
  323. package/examples/__snapshots__/git-submodule.test.ts.snap +1395 -0
  324. package/examples/__snapshots__/kubernetes-application-customization.test.ts.snap +1713 -0
  325. package/examples/__snapshots__/kubernetes-with-cloud-sql.test.ts.snap +1733 -0
  326. package/examples/__snapshots__/kubernetes-with-jobs.test.ts.snap +3265 -0
  327. package/examples/__snapshots__/kubernetes-with-mongodb.test.ts.snap +1837 -0
  328. package/examples/__snapshots__/local-dot-env.test.ts.snap +1318 -0
  329. package/examples/__snapshots__/meteor-kubernetes.test.ts.snap +1790 -0
  330. package/examples/__snapshots__/multiline-var.test.ts.snap +5585 -0
  331. package/examples/__snapshots__/native-app.test.ts.snap +2210 -0
  332. package/examples/__snapshots__/node-build-with-custom-image.test.ts.snap +1394 -0
  333. package/examples/__snapshots__/node-build-with-docker-additions.test.ts.snap +1402 -0
  334. package/examples/__snapshots__/override-secrets.test.ts.snap +1419 -0
  335. package/examples/__snapshots__/rails-k8s-with-worker-dockerfile.test.ts.snap +1464 -0
  336. package/examples/__snapshots__/rails-k8s-with-worker.test.ts.snap +1444 -0
  337. package/examples/__snapshots__/referencing-other-vars.test.ts.snap +4645 -0
  338. package/examples/__snapshots__/wait-for-other-deploy.test.ts.snap +1424 -0
  339. package/examples/__snapshots__/workspace-api-www-turbo-cache.test.ts.snap +2298 -0
  340. package/examples/__snapshots__/workspace-api-www.test.ts.snap +2290 -0
  341. package/examples/__utils__/helpers.ts +9 -12
  342. package/examples/cloud-run-health-check-defaults.test.ts +11 -0
  343. package/examples/cloud-run-health-check-defaults.ts +28 -0
  344. package/examples/cloud-run-health-check-only-startup.test.ts +11 -0
  345. package/examples/cloud-run-health-check-only-startup.ts +38 -0
  346. package/examples/cloud-run-health-check.test.ts +11 -0
  347. package/examples/cloud-run-health-check.ts +45 -0
  348. package/examples/cloud-run-http2.test.ts +11 -0
  349. package/examples/cloud-run-http2.ts +29 -0
  350. package/examples/cloud-run-llama.test.ts +11 -0
  351. package/examples/cloud-run-llama.ts +40 -0
  352. package/examples/cloud-run-memory-limit.test.ts +11 -0
  353. package/examples/cloud-run-memory-limit.ts +12 -7
  354. package/examples/cloud-run-meteor-with-worker.test.ts +11 -0
  355. package/examples/cloud-run-meteor-with-worker.ts +13 -7
  356. package/examples/cloud-run-nextjs.test.ts +11 -0
  357. package/examples/cloud-run-nextjs.ts +28 -0
  358. package/examples/cloud-run-no-cpu-throttling.test.ts +11 -0
  359. package/examples/cloud-run-no-cpu-throttling.ts +8 -6
  360. package/examples/cloud-run-no-service.test.ts +11 -0
  361. package/examples/cloud-run-no-service.ts +39 -0
  362. package/examples/cloud-run-non-public.test.ts +11 -0
  363. package/examples/cloud-run-non-public.ts +7 -6
  364. package/examples/cloud-run-post-stop-job.test.ts +11 -0
  365. package/examples/cloud-run-post-stop-job.ts +15 -6
  366. package/examples/cloud-run-service-custom-vpc-connector.test.ts +11 -0
  367. package/examples/cloud-run-service-custom-vpc-connector.ts +37 -0
  368. package/examples/cloud-run-service-custom-vpc.test.ts +11 -0
  369. package/examples/cloud-run-service-custom-vpc.ts +39 -0
  370. package/examples/cloud-run-service-gen2.test.ts +11 -0
  371. package/examples/cloud-run-service-gen2.ts +8 -6
  372. package/examples/cloud-run-service-increase-timout.test.ts +11 -0
  373. package/examples/cloud-run-service-increase-timout.ts +29 -0
  374. package/examples/cloud-run-service-with-volumes.test.ts +11 -0
  375. package/examples/cloud-run-service-with-volumes.ts +64 -0
  376. package/examples/cloud-run-storybook.test.ts +11 -0
  377. package/examples/cloud-run-storybook.ts +33 -0
  378. package/examples/cloud-run-with-gpu.test.ts +11 -0
  379. package/examples/cloud-run-with-gpu.ts +30 -0
  380. package/examples/cloud-run-with-ngnix.test.ts +11 -0
  381. package/examples/cloud-run-with-ngnix.ts +29 -0
  382. package/examples/cloud-run-with-sql-legacy-jobs.test.ts +11 -0
  383. package/examples/cloud-run-with-sql-legacy-jobs.ts +49 -0
  384. package/examples/cloud-run-with-sql-multiple-dbs.test.ts +11 -0
  385. package/examples/cloud-run-with-sql-multiple-dbs.ts +87 -0
  386. package/examples/cloud-run-with-sql-reuse-db.test.ts +11 -0
  387. package/examples/cloud-run-with-sql-reuse-db.ts +7 -6
  388. package/examples/cloud-run-with-sql.test.ts +11 -0
  389. package/examples/cloud-run-with-sql.ts +45 -24
  390. package/examples/cloud-run-with-worker.test.ts +11 -0
  391. package/examples/cloud-run-with-worker.ts +8 -6
  392. package/examples/custom-build-job-with-tests.test.ts +11 -0
  393. package/examples/custom-build-job-with-tests.ts +7 -6
  394. package/examples/custom-build-job.test.ts +11 -0
  395. package/examples/custom-build-job.ts +7 -6
  396. package/examples/custom-deploy.test.ts +11 -0
  397. package/examples/custom-deploy.ts +22 -14
  398. package/examples/custom-envs.test.ts +11 -0
  399. package/examples/custom-envs.ts +7 -6
  400. package/examples/custom-sbom-java.test.ts +11 -0
  401. package/examples/custom-sbom-java.ts +12 -8
  402. package/examples/custom-verify-job.test.ts +11 -0
  403. package/examples/custom-verify-job.ts +65 -0
  404. package/examples/git-submodule.test.ts +11 -0
  405. package/examples/git-submodule.ts +30 -0
  406. package/examples/kubernetes-application-customization.test.ts +11 -0
  407. package/examples/kubernetes-application-customization.ts +9 -6
  408. package/examples/kubernetes-with-cloud-sql.test.ts +11 -0
  409. package/examples/kubernetes-with-cloud-sql.ts +9 -6
  410. package/examples/kubernetes-with-jobs.test.ts +11 -0
  411. package/examples/kubernetes-with-jobs.ts +9 -6
  412. package/examples/kubernetes-with-mongodb.test.ts +11 -0
  413. package/examples/kubernetes-with-mongodb.ts +9 -6
  414. package/examples/local-dot-env.test.ts +11 -0
  415. package/examples/local-dot-env.ts +27 -0
  416. package/examples/meteor-kubernetes.test.ts +11 -0
  417. package/examples/meteor-kubernetes.ts +6 -7
  418. package/examples/multiline-var.test.ts +11 -0
  419. package/examples/multiline-var.ts +107 -0
  420. package/examples/native-app.test.ts +11 -0
  421. package/examples/native-app.ts +24 -19
  422. package/examples/node-build-with-custom-image.test.ts +11 -0
  423. package/examples/node-build-with-custom-image.ts +7 -6
  424. package/examples/node-build-with-docker-additions.test.ts +11 -0
  425. package/examples/node-build-with-docker-additions.ts +7 -6
  426. package/examples/override-secrets.test.ts +11 -0
  427. package/examples/override-secrets.ts +44 -0
  428. package/examples/rails-k8s-with-worker-dockerfile.test.ts +33 -0
  429. package/examples/rails-k8s-with-worker.test.ts +11 -0
  430. package/examples/rails-k8s-with-worker.ts +13 -13
  431. package/examples/referencing-other-vars.test.ts +11 -0
  432. package/examples/referencing-other-vars.ts +83 -0
  433. package/examples/wait-for-other-deploy.test.ts +11 -0
  434. package/examples/wait-for-other-deploy.ts +6 -5
  435. package/examples/workspace-api-www-turbo-cache.test.ts +11 -0
  436. package/examples/workspace-api-www-turbo-cache.ts +52 -0
  437. package/examples/workspace-api-www.test.ts +11 -0
  438. package/examples/workspace-api-www.ts +46 -0
  439. package/package.json +23 -26
  440. package/scripts/generate-examples-test.ts +84 -0
  441. package/scripts/generate-gitlab-ci-types.ts +2 -2
  442. package/scripts/tsconfig.json +7 -0
  443. package/src/bash/BashExpression.ts +78 -0
  444. package/src/bash/bashEscape.ts +164 -0
  445. package/src/bash/bashExpressionPerPipelineType.ts +16 -0
  446. package/src/bash/bashYaml.ts +80 -0
  447. package/src/bash/getInjectVarsScript.ts +21 -0
  448. package/src/bash/index.ts +2 -0
  449. package/src/build/artifacts/createBuildJobArtifact.ts +63 -0
  450. package/src/build/base/__tests__/createArtifactsConfig.test.ts +3 -3
  451. package/src/build/base/constants.ts +1 -1
  452. package/src/build/base/createAppBuildJob.ts +40 -24
  453. package/src/build/base/createArtifactsConfig.ts +2 -2
  454. package/src/build/base/createBuildJobDefinition.ts +37 -0
  455. package/src/build/base/index.ts +40 -8
  456. package/src/build/base/writeBuildInfo.ts +3 -3
  457. package/src/build/base/writeDotEnv.ts +25 -6
  458. package/src/build/cache/createJobCache.ts +83 -0
  459. package/src/build/cache/getAllCacheConfigsFromConfig.ts +29 -0
  460. package/src/build/cache/transformLegacyJobCache.ts +14 -0
  461. package/src/build/custom/__tests__/testJob.test.ts +10 -13
  462. package/src/build/custom/buildJob.ts +11 -37
  463. package/src/build/custom/index.ts +4 -2
  464. package/src/build/custom/testJob.ts +24 -21
  465. package/src/build/docker.ts +110 -49
  466. package/src/build/index.ts +45 -11
  467. package/src/build/node/buildJob.ts +68 -69
  468. package/src/build/node/cache.ts +28 -34
  469. package/src/build/node/constants.ts +2 -2
  470. package/src/build/node/index.ts +13 -4
  471. package/src/build/node/meteor.ts +19 -24
  472. package/src/build/node/testJob.ts +44 -25
  473. package/src/build/node/yarn.ts +22 -15
  474. package/src/build/rails/build.ts +15 -9
  475. package/src/build/rails/index.ts +4 -2
  476. package/src/build/rails/test.ts +41 -12
  477. package/src/build/sbom.ts +21 -11
  478. package/src/build/types.ts +198 -47
  479. package/src/catladder-gitlab.ts +7 -56
  480. package/src/config/__tests__/__snapshots__/getAllEnvs.test.ts.snap +31 -0
  481. package/src/config/__tests__/__snapshots__/getAllEnvsInAllComponents.test.ts.snap +15 -0
  482. package/src/config/__tests__/getAllEnvs.test.ts +71 -0
  483. package/src/config/__tests__/getAllEnvsInAllComponents.test.ts +63 -0
  484. package/src/config/configruedEnvs.ts +6 -6
  485. package/src/config/readConfig.ts +15 -22
  486. package/src/constants.ts +5 -2
  487. package/src/context/createAllComponentsContext.ts +31 -0
  488. package/src/context/createComponentContext.ts +148 -0
  489. package/src/context/createWorkspaceContext.ts +56 -0
  490. package/src/context/getBuildInfoVariables.ts +36 -0
  491. package/src/context/getEnvConfig.ts +25 -5
  492. package/src/context/getEnvType.ts +1 -1
  493. package/src/context/getEnvironment.ts +8 -24
  494. package/src/context/getEnvironmentContext.ts +25 -29
  495. package/src/context/getEnvironmentVariables.ts +101 -83
  496. package/src/context/getLabels.ts +8 -5
  497. package/src/context/getReviewSlug.ts +27 -0
  498. package/src/context/index.ts +1 -65
  499. package/src/context/transformJobOnlyVars.ts +6 -3
  500. package/src/context/utils/envVars.ts +5 -4
  501. package/src/deploy/base/deploy.ts +63 -47
  502. package/src/deploy/base/index.ts +11 -6
  503. package/src/deploy/base/rollback.ts +11 -16
  504. package/src/deploy/base/stop.ts +11 -15
  505. package/src/deploy/base/variables.ts +1 -1
  506. package/src/deploy/cloudRun/artifactsRegistry.ts +32 -28
  507. package/src/deploy/cloudRun/cleanup.ts +5 -5
  508. package/src/deploy/cloudRun/cloudRunRevisions.ts +9 -11
  509. package/src/deploy/cloudRun/createJobs/cloudRunJobs.ts +71 -153
  510. package/src/deploy/cloudRun/createJobs/cloudRunServices.ts +65 -26
  511. package/src/deploy/cloudRun/createJobs/common.ts +7 -7
  512. package/src/deploy/cloudRun/createJobs/constants.ts +1 -0
  513. package/src/deploy/cloudRun/createJobs/execute/onDeploy.ts +102 -0
  514. package/src/deploy/cloudRun/createJobs/execute/schedules.ts +186 -0
  515. package/src/deploy/cloudRun/createJobs/getCloudRunDeployScripts.ts +27 -16
  516. package/src/deploy/cloudRun/createJobs/getCloudRunStopScripts.ts +9 -11
  517. package/src/deploy/cloudRun/createJobs/healthCheck.ts +64 -0
  518. package/src/deploy/cloudRun/createJobs/index.ts +20 -14
  519. package/src/deploy/cloudRun/createJobs/volumes.ts +23 -0
  520. package/src/deploy/cloudRun/index.ts +94 -60
  521. package/src/deploy/cloudRun/utils/cloudRunExecutionUrl.ts +20 -0
  522. package/src/deploy/cloudRun/utils/createArgsString.ts +6 -2
  523. package/src/deploy/cloudRun/utils/database.ts +116 -9
  524. package/src/deploy/cloudRun/utils/gcloudServiceAccountLoginCommands.ts +5 -3
  525. package/src/deploy/cloudRun/utils/getJobOrServiceArgs.ts +18 -0
  526. package/src/deploy/cloudRun/utils/getServiceName.ts +2 -2
  527. package/src/deploy/cloudRun/utils/jobName.ts +22 -2
  528. package/src/deploy/cloudRun/utils/removeFirstLinesFromCommandOutput.ts +1 -1
  529. package/src/deploy/cloudSql/utils.ts +13 -10
  530. package/src/deploy/custom/deployJob.ts +15 -10
  531. package/src/deploy/custom/index.ts +2 -2
  532. package/src/deploy/dockerTag/deployJob.ts +6 -7
  533. package/src/deploy/dockerTag/index.ts +8 -7
  534. package/src/deploy/index.ts +15 -12
  535. package/src/deploy/kubernetes/additionalSecretKeys.ts +3 -1
  536. package/src/deploy/kubernetes/cloudSql/index.ts +16 -25
  537. package/src/deploy/kubernetes/deployJob.ts +30 -21
  538. package/src/deploy/kubernetes/index.ts +43 -35
  539. package/src/deploy/kubernetes/kubeEnv.ts +12 -10
  540. package/src/deploy/kubernetes/kubeValues.ts +25 -20
  541. package/src/deploy/kubernetes/mongodb.ts +15 -15
  542. package/src/deploy/sbom.ts +20 -10
  543. package/src/deploy/types/base.ts +3 -3
  544. package/src/deploy/types/custom.ts +3 -7
  545. package/src/deploy/types/googleCloudRun.ts +359 -2
  546. package/src/deploy/types/index.ts +9 -2
  547. package/src/deploy/types/kubernetes.ts +1 -36
  548. package/src/deploy/utils.ts +5 -5
  549. package/src/globalScriptFunctions/index.ts +30 -0
  550. package/src/index.ts +4 -1
  551. package/src/packageInfos.ts +14 -0
  552. package/src/pipeline/__tests__/__snapshots__/getPipelineStages.test.ts.snap +69 -0
  553. package/src/pipeline/__tests__/getPipelineStages.test.ts +63 -0
  554. package/src/pipeline/createAllJobs.ts +67 -33
  555. package/src/pipeline/createJobsForComponent.ts +17 -37
  556. package/src/pipeline/createJobsForWorkspace.ts +12 -0
  557. package/src/pipeline/createMainPipeline.ts +118 -0
  558. package/src/pipeline/generatePipelineFiles.ts +100 -0
  559. package/src/pipeline/getPipelineStages.ts +23 -0
  560. package/src/pipeline/gitlab/createGitlabJobs.ts +398 -108
  561. package/src/pipeline/gitlab/createGitlabPipeline.ts +35 -0
  562. package/src/pipeline/gitlab/gitlabReleaseJobs.ts +23 -0
  563. package/src/pipeline/gitlab/sortGitLabJobDefProps.ts +59 -0
  564. package/src/pipeline/index.ts +2 -1
  565. package/src/pipeline/packageManager.ts +42 -18
  566. package/src/pipeline/yarn/yarnUtils.ts +15 -12
  567. package/src/rules/index.ts +41 -18
  568. package/src/runner/index.ts +0 -1
  569. package/src/types/config.ts +62 -23
  570. package/src/types/context.ts +167 -36
  571. package/src/types/environmentContext.ts +18 -13
  572. package/src/types/gitlab-ci-yml.ts +0 -1
  573. package/src/types/gitlab-types.ts +10 -7
  574. package/src/types/index.ts +2 -0
  575. package/src/types/jobDefinition.ts +34 -0
  576. package/src/types/jobs.ts +31 -15
  577. package/src/types/utils.ts +4 -4
  578. package/src/utils/gitlab.ts +20 -3
  579. package/src/utils/index.ts +6 -3
  580. package/src/utils/jsonParse.ts +7 -0
  581. package/src/utils/removeUndefined.ts +4 -0
  582. package/src/utils/writeFiles.ts +52 -0
  583. package/src/variables/VariableValue.ts +6 -0
  584. package/src/variables/VariableValueContainingReferences.ts +89 -0
  585. package/src/variables/__tests__/resolveAllReferences.test.ts +110 -0
  586. package/src/variables/__tests__/resolveAllReferencesOnce.test.ts +64 -0
  587. package/src/variables/__tests__/resolveReferencesOnce.test.ts +117 -0
  588. package/src/variables/__tests__/variableValue.test.ts +73 -0
  589. package/src/variables/resolveAllReferences.ts +46 -0
  590. package/src/variables/resolveAllReferencesOnce.ts +44 -0
  591. package/src/variables/resolveReferencesOnce.ts +29 -0
  592. package/bin/catladder-gitlab-dev.js +0 -3
  593. package/bin/catladder-gitlab.js +0 -3
  594. package/dist/bundles/catladder-gitlab/index.js +0 -34559
  595. package/dist/context/__tests__/resolveReferences.test.js +0 -336
  596. package/dist/context/resolveReferences.d.ts +0 -4
  597. package/dist/context/resolveReferences.js +0 -254
  598. package/dist/deploy/cloudRun/createJobs/variables.d.ts +0 -5
  599. package/dist/deploy/cloudRun/createJobs/variables.js +0 -19
  600. package/dist/deploy/kubernetes/processSecretsAsFiles.d.ts +0 -84
  601. package/dist/deploy/kubernetes/processSecretsAsFiles.js +0 -31
  602. package/dist/pipeline/commitInfo/getBuildId.d.ts +0 -6
  603. package/dist/pipeline/commitInfo/getCommitInfo.d.ts +0 -2
  604. package/dist/pipeline/createChildPipeline.d.ts +0 -3
  605. package/examples/__snapshots__/cloud-run-memory-limit.ts.snap +0 -1839
  606. package/examples/__snapshots__/cloud-run-meteor-with-worker.ts.snap +0 -1807
  607. package/examples/__snapshots__/cloud-run-no-cpu-throttling.ts.snap +0 -1839
  608. package/examples/__snapshots__/cloud-run-non-public.ts.snap +0 -1839
  609. package/examples/__snapshots__/cloud-run-post-stop-job.ts.snap +0 -1849
  610. package/examples/__snapshots__/cloud-run-service-gen2.ts.snap +0 -1839
  611. package/examples/__snapshots__/cloud-run-with-sql-reuse-db.ts.snap +0 -3647
  612. package/examples/__snapshots__/cloud-run-with-sql.ts.snap +0 -3658
  613. package/examples/__snapshots__/cloud-run-with-worker.ts.snap +0 -1847
  614. package/examples/__snapshots__/custom-build-job-with-tests.ts.snap +0 -1663
  615. package/examples/__snapshots__/custom-build-job.ts.snap +0 -1375
  616. package/examples/__snapshots__/custom-deploy.ts.snap +0 -1625
  617. package/examples/__snapshots__/custom-envs.ts.snap +0 -1127
  618. package/examples/__snapshots__/custom-sbom-java.ts.snap +0 -1383
  619. package/examples/__snapshots__/kubernetes-application-customization.ts.snap +0 -2573
  620. package/examples/__snapshots__/kubernetes-with-cloud-sql-legacy.ts.snap +0 -2533
  621. package/examples/__snapshots__/kubernetes-with-cloud-sql.ts.snap +0 -2545
  622. package/examples/__snapshots__/kubernetes-with-jobs.ts.snap +0 -4660
  623. package/examples/__snapshots__/kubernetes-with-mongodb.ts.snap +0 -2737
  624. package/examples/__snapshots__/meteor-kubernetes.ts.snap +0 -2658
  625. package/examples/__snapshots__/native-app.ts.snap +0 -3007
  626. package/examples/__snapshots__/node-build-with-custom-image.ts.snap +0 -1839
  627. package/examples/__snapshots__/node-build-with-docker-additions.ts.snap +0 -1839
  628. package/examples/__snapshots__/rails-k8s-with-worker.ts.snap +0 -4291
  629. package/examples/__snapshots__/wait-for-other-deploy.ts.snap +0 -2049
  630. package/examples/kubernetes-with-cloud-sql-legacy.ts +0 -33
  631. package/scripts/bundle +0 -2
  632. package/src/context/__tests__/resolveReferences.test.ts +0 -143
  633. package/src/context/resolveReferences.ts +0 -70
  634. package/src/deploy/cloudRun/createJobs/variables.ts +0 -21
  635. package/src/deploy/kubernetes/processSecretsAsFiles.ts +0 -34
  636. package/src/pipeline/commitInfo/getBuildId.ts +0 -17
  637. package/src/pipeline/commitInfo/getCommitInfo.ts +0 -15
  638. package/src/pipeline/createChildPipeline.ts +0 -46
  639. /package/dist/{context/__tests__/resolveReferences.test.d.ts โ†’ config/__tests__/getAllEnvs.test.d.ts} +0 -0
@@ -0,0 +1,1059 @@
1
+ // Jest Snapshot v1, https://goo.gl/fbAQLP
2
+
3
+ exports[`matches snapshot for custom-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
+ www ๐Ÿ›ก 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="www"
88
+ - collapseable_section_end "injectvars"
89
+ - cd www
90
+ - yarn npm audit --environment production
91
+ rules:
92
+ - if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH && $CI_COMMIT_MESSAGE !~ /^chore\\(release\\).*/
93
+ - if: $CI_MERGE_REQUEST_ID
94
+ needs: []
95
+ retry: &a1
96
+ max: 2
97
+ when:
98
+ - runner_system_failure
99
+ - stuck_or_timeout_failure
100
+ interruptible: true
101
+ allow_failure: true
102
+ www ๐Ÿ‘ฎ lint:
103
+ stage: test
104
+ image: path/to/docker/jobs-default:the-version
105
+ variables:
106
+ KUBERNETES_CPU_REQUEST: '0.45'
107
+ KUBERNETES_MEMORY_REQUEST: 1Gi
108
+ KUBERNETES_MEMORY_LIMIT: 4Gi
109
+ script:
110
+ - collapseable_section_start "injectvars" "Injecting variables"
111
+ - export APP_PATH="www"
112
+ - collapseable_section_end "injectvars"
113
+ - collapseable_section_start "nodeinstall" "Ensure node version"
114
+ - if [ -f ~/.nvm/nvm.sh ]; then source ~/.nvm/nvm.sh; fi
115
+ - if command -v nvm &> /dev/null && [ -f ./.nvmrc ]; then nvm install; fi
116
+ - collapseable_section_end "nodeinstall"
117
+ - cd www
118
+ - collapseable_section_start "nodeinstall" "Ensure node version"
119
+ - if [ -f ~/.nvm/nvm.sh ]; then source ~/.nvm/nvm.sh; fi
120
+ - if command -v nvm &> /dev/null && [ -f ./.nvmrc ]; then nvm install; fi
121
+ - collapseable_section_end "nodeinstall"
122
+ - collapseable_section_start "yarninstall" "Yarn install"
123
+ - yarn install --immutable
124
+ - collapseable_section_end "yarninstall"
125
+ - yarn lint
126
+ cache:
127
+ - key: www-yarn
128
+ policy: pull-push
129
+ paths:
130
+ - www/.yarn
131
+ - key: www-node-modules
132
+ policy: pull-push
133
+ paths:
134
+ - www/node_modules
135
+ rules:
136
+ - if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH && $CI_COMMIT_MESSAGE !~ /^chore\\(release\\).*/
137
+ - if: $CI_MERGE_REQUEST_ID
138
+ needs: []
139
+ retry: *a1
140
+ interruptible: true
141
+ www ๐Ÿงช test:
142
+ stage: test
143
+ image: path/to/docker/jobs-testing-chrome:the-version
144
+ variables:
145
+ KUBERNETES_CPU_REQUEST: '0.45'
146
+ KUBERNETES_MEMORY_REQUEST: 1Gi
147
+ KUBERNETES_MEMORY_LIMIT: 4Gi
148
+ script:
149
+ - collapseable_section_start "injectvars" "Injecting variables"
150
+ - export APP_PATH="www"
151
+ - collapseable_section_end "injectvars"
152
+ - collapseable_section_start "nodeinstall" "Ensure node version"
153
+ - if [ -f ~/.nvm/nvm.sh ]; then source ~/.nvm/nvm.sh; fi
154
+ - if command -v nvm &> /dev/null && [ -f ./.nvmrc ]; then nvm install; fi
155
+ - collapseable_section_end "nodeinstall"
156
+ - cd www
157
+ - collapseable_section_start "nodeinstall" "Ensure node version"
158
+ - if [ -f ~/.nvm/nvm.sh ]; then source ~/.nvm/nvm.sh; fi
159
+ - if command -v nvm &> /dev/null && [ -f ./.nvmrc ]; then nvm install; fi
160
+ - collapseable_section_end "nodeinstall"
161
+ - collapseable_section_start "yarninstall" "Yarn install"
162
+ - yarn install --immutable
163
+ - collapseable_section_end "yarninstall"
164
+ - yarn test
165
+ cache:
166
+ - key: www-yarn
167
+ policy: pull-push
168
+ paths:
169
+ - www/.yarn
170
+ - key: www-node-modules
171
+ policy: pull-push
172
+ paths:
173
+ - www/node_modules
174
+ rules:
175
+ - if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH && $CI_COMMIT_MESSAGE !~ /^chore\\(release\\).*/
176
+ - if: $CI_MERGE_REQUEST_ID
177
+ needs: []
178
+ retry: *a1
179
+ interruptible: true
180
+ 'www ๐Ÿ”จ app | dev ':
181
+ stage: build
182
+ image: path/to/docker/jobs-default:the-version
183
+ variables:
184
+ KUBERNETES_CPU_REQUEST: '0.45'
185
+ KUBERNETES_MEMORY_REQUEST: 1Gi
186
+ KUBERNETES_MEMORY_LIMIT: 4Gi
187
+ script:
188
+ - collapseable_section_start "injectvars" "Injecting variables"
189
+ - export ENV_SHORT="dev"
190
+ - export APP_DIR="www"
191
+ - export ENV_TYPE="dev"
192
+ - export BUILD_INFO_BUILD_ID="$(git describe --tags 2>/dev/null || git rev-parse HEAD)"
193
+ - export BUILD_INFO_BUILD_TIME="$CI_JOB_STARTED_AT"
194
+ - export BUILD_INFO_CURRENT_VERSION="$(tag=$(git ls-remote origin "refs/tags/v*[0-9]" 2>/dev/null | cut -f 2- | sort -V | tail -1 | sed 's/refs\\/tags\\/v//'); [ -z "$tag" ] && echo "0.0.0" || echo "$tag")"
195
+ - export HOSTNAME="unknown-host.example.com"
196
+ - export ROOT_URL="https://unknown-host.example.com"
197
+ - export HOSTNAME_INTERNAL="unknown-host.example.com"
198
+ - export ROOT_URL_INTERNAL="https://unknown-host.example.com"
199
+ - export _ALL_ENV_VAR_KEYS="[\\"ENV_SHORT\\",\\"APP_DIR\\",\\"ENV_TYPE\\",\\"BUILD_INFO_BUILD_ID\\",\\"BUILD_INFO_BUILD_TIME\\",\\"BUILD_INFO_CURRENT_VERSION\\",\\"HOSTNAME\\",\\"ROOT_URL\\",\\"HOSTNAME_INTERNAL\\",\\"ROOT_URL_INTERNAL\\"]"
200
+ - collapseable_section_end "injectvars"
201
+ - collapseable_section_start "write-dotenv-www" "write dot env for www"
202
+ - |-
203
+ cat <<EOF > www/.env
204
+ ENV_SHORT=dev
205
+ APP_DIR=www
206
+ ENV_TYPE=dev
207
+ HOSTNAME=unknown-host.example.com
208
+ ROOT_URL=https://unknown-host.example.com
209
+ HOSTNAME_INTERNAL=unknown-host.example.com
210
+ ROOT_URL_INTERNAL=https://unknown-host.example.com
211
+ _ALL_ENV_VAR_KEYS=["ENV_SHORT","APP_DIR","ENV_TYPE","BUILD_INFO_BUILD_ID","BUILD_INFO_BUILD_TIME","BUILD_INFO_CURRENT_VERSION","HOSTNAME","ROOT_URL","HOSTNAME_INTERNAL","ROOT_URL_INTERNAL"]
212
+ EOF
213
+ - collapseable_section_end "write-dotenv-www"
214
+ - echo '{"id":"$(git describe --tags 2>/dev/null || git rev-parse HEAD)","time":"$CI_JOB_STARTED_AT"}' > www/__build_info.json
215
+ - collapseable_section_start "nodeinstall" "Ensure node version"
216
+ - if [ -f ~/.nvm/nvm.sh ]; then source ~/.nvm/nvm.sh; fi
217
+ - if command -v nvm &> /dev/null && [ -f ./.nvmrc ]; then nvm install; fi
218
+ - collapseable_section_end "nodeinstall"
219
+ - cd www
220
+ - collapseable_section_start "nodeinstall" "Ensure node version"
221
+ - if [ -f ~/.nvm/nvm.sh ]; then source ~/.nvm/nvm.sh; fi
222
+ - if command -v nvm &> /dev/null && [ -f ./.nvmrc ]; then nvm install; fi
223
+ - collapseable_section_end "nodeinstall"
224
+ - collapseable_section_start "yarninstall" "Yarn install"
225
+ - yarn install --immutable
226
+ - collapseable_section_end "yarninstall"
227
+ - yarn build
228
+ cache:
229
+ - key: www-yarn
230
+ policy: pull-push
231
+ paths:
232
+ - www/.yarn
233
+ - key: www-node-modules
234
+ policy: pull-push
235
+ paths:
236
+ - www/node_modules
237
+ artifacts:
238
+ paths:
239
+ - www/__build_info.json
240
+ - www/.next
241
+ - www/dist
242
+ exclude:
243
+ - www/.env
244
+ expire_in: 1 day
245
+ when: always
246
+ reports: {}
247
+ rules:
248
+ - if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH && $CI_COMMIT_MESSAGE !~ /^chore\\(release\\).*/
249
+ needs: []
250
+ retry: *a1
251
+ interruptible: true
252
+ 'www ๐Ÿ”จ docker | dev ':
253
+ stage: build
254
+ image: path/to/docker/docker-build:the-version
255
+ services:
256
+ - name: docker:24.0.6-dind
257
+ command:
258
+ - --tls=false
259
+ - --registry-mirror=https://mirror.gcr.io
260
+ variables:
261
+ DOCKER_HOST: tcp://docker:2375
262
+ DOCKER_TLS_CERTDIR: ''
263
+ DOCKER_DRIVER: overlay2
264
+ DOCKER_BUILDKIT: '1'
265
+ KUBERNETES_CPU_REQUEST: '0.45'
266
+ KUBERNETES_MEMORY_REQUEST: 1Gi
267
+ KUBERNETES_MEMORY_LIMIT: 2Gi
268
+ script:
269
+ - collapseable_section_start "injectvars" "Injecting variables"
270
+ - export APP_DIR="www"
271
+ - export DOCKER_BUILD_CONTEXT="."
272
+ - export DOCKER_REGISTRY="$CI_REGISTRY"
273
+ - export DOCKER_CACHE_IMAGE="$CI_REGISTRY_IMAGE/caches/www"
274
+ - export DOCKER_IMAGE_NAME="dev/www"
275
+ - export DOCKER_IMAGE="$CI_REGISTRY_IMAGE/$DOCKER_IMAGE_NAME"
276
+ - export DOCKER_IMAGE_TAG="$CI_COMMIT_SHA"
277
+ - |-
278
+ export DOCKER_COPY_AND_INSTALL_APP="COPY --chown=node:node $APP_DIR .
279
+ RUN yarn plugin import workspace-tools
280
+ RUN yarn workspaces focus --production && yarn rebuild"
281
+ - |-
282
+ export DOCKER_COPY_WORKSPACE_FILES="COPY --chown=node:node www/package.json /app/www/package.json
283
+ COPY --chown=node:node www/yarn.lock /app/www/yarn.lock
284
+ COPY --chown=node:node .yarnrc.yml /app/.yarnrc.yml
285
+ COPY --chown=node:node .yarn /app/.yarn"
286
+ - collapseable_section_end "injectvars"
287
+ - ensureNodeDockerfile
288
+ - collapseable_section_start "docker-login" "Docker Login"
289
+ - docker login --username gitlab-ci-token --password $CI_JOB_TOKEN $CI_REGISTRY
290
+ - collapseable_section_end "docker-login"
291
+ - collapseable_section_start "docker-build" "Docker build"
292
+ - docker build --network host --cache-from $DOCKER_CACHE_IMAGE --tag $DOCKER_IMAGE:$DOCKER_IMAGE_TAG -f $APP_DIR/Dockerfile $DOCKER_BUILD_CONTEXT --build-arg BUILDKIT_INLINE_CACHE=1
293
+ - collapseable_section_end "docker-build"
294
+ - collapseable_section_start "docker-push" "Docker push and tag"
295
+ - docker push $DOCKER_IMAGE:$DOCKER_IMAGE_TAG
296
+ - docker tag $DOCKER_IMAGE:$DOCKER_IMAGE_TAG $DOCKER_CACHE_IMAGE
297
+ - docker push $DOCKER_CACHE_IMAGE
298
+ - collapseable_section_end "docker-push"
299
+ cache:
300
+ - key: www-yarn
301
+ policy: pull
302
+ paths:
303
+ - www/.yarn
304
+ rules:
305
+ - if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH && $CI_COMMIT_MESSAGE !~ /^chore\\(release\\).*/
306
+ needs:
307
+ - 'www ๐Ÿ”จ app | dev '
308
+ retry: *a1
309
+ interruptible: true
310
+ 'www ๐Ÿงพ sbom | dev ':
311
+ stage: build
312
+ image:
313
+ name: aquasec/trivy:0.58.2
314
+ entrypoint:
315
+ - ''
316
+ variables: {}
317
+ script:
318
+ - collapseable_section_start "injectvars" "Injecting variables"
319
+ - collapseable_section_end "injectvars"
320
+ - trivy fs --quiet --format cyclonedx --output "__sbom.json" www
321
+ artifacts:
322
+ paths:
323
+ - __sbom.json
324
+ rules:
325
+ - if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH && $CI_COMMIT_MESSAGE !~ /^chore\\(release\\).*/
326
+ needs: []
327
+ retry: *a1
328
+ interruptible: true
329
+ allow_failure: true
330
+ 'www ๐Ÿš€ Deploy | dev ':
331
+ stage: deploy dev
332
+ image: path/to/docker/jobs-default:the-version
333
+ variables:
334
+ KUBERNETES_CPU_REQUEST: '1'
335
+ KUBERNETES_MEMORY_REQUEST: 1024Mi
336
+ KUBERNETES_MEMORY_LIMIT: 2048Mi
337
+ script:
338
+ - collapseable_section_start "injectvars" "Injecting variables"
339
+ - export ENV_SHORT="dev"
340
+ - export APP_DIR="www"
341
+ - export ENV_TYPE="dev"
342
+ - export BUILD_INFO_BUILD_ID="$(git describe --tags 2>/dev/null || git rev-parse HEAD)"
343
+ - export BUILD_INFO_BUILD_TIME="$CI_JOB_STARTED_AT"
344
+ - 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")"
345
+ - export HOSTNAME="unknown-host.example.com"
346
+ - export ROOT_URL="https://unknown-host.example.com"
347
+ - export HOSTNAME_INTERNAL="unknown-host.example.com"
348
+ - export ROOT_URL_INTERNAL="https://unknown-host.example.com"
349
+ - 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\\"]"
350
+ - export DOCKER_REGISTRY="$CI_REGISTRY"
351
+ - export DOCKER_CACHE_IMAGE="$CI_REGISTRY_IMAGE/caches/www"
352
+ - export DOCKER_IMAGE_NAME="dev/www"
353
+ - export DOCKER_IMAGE="$CI_REGISTRY_IMAGE/$DOCKER_IMAGE_NAME"
354
+ - export DOCKER_IMAGE_TAG="$CI_COMMIT_SHA"
355
+ - export DEPLOY_API_KEY="$CL_dev_www_DEPLOY_API_KEY"
356
+ - collapseable_section_end "injectvars"
357
+ - cd www
358
+ - echo 'would deploy'
359
+ - echo 'Uploading SBOM to Dependency Track'
360
+ - /dtrackuploader https://dep.panter.swiss/ "$DT_KEY_PROD" upload "pan-test-app/www" "$ROOT_URL" "__sbom.json" vex.json || true
361
+ - echo "CL_GITLAB_ENVIRONMENT_URL=$ROOT_URL" >> gitlab_environment.env
362
+ environment:
363
+ name: dev/www
364
+ url: $CL_GITLAB_ENVIRONMENT_URL
365
+ artifacts:
366
+ reports:
367
+ dotenv: gitlab_environment.env
368
+ rules:
369
+ - when: on_success
370
+ if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH && $CI_COMMIT_MESSAGE !~ /^chore\\(release\\).*/
371
+ needs:
372
+ - job: www ๐Ÿ‘ฎ lint
373
+ artifacts: false
374
+ - job: 'www ๐Ÿ”จ app | dev '
375
+ artifacts: false
376
+ - job: 'www ๐Ÿ”จ docker | dev '
377
+ artifacts: false
378
+ - job: www ๐Ÿงช test
379
+ artifacts: false
380
+ - job: 'www ๐Ÿงพ sbom | dev '
381
+ artifacts: true
382
+ - job: www ๐Ÿ›ก audit
383
+ artifacts: false
384
+ retry: *a1
385
+ interruptible: true
386
+ allow_failure: false
387
+ 'www ๐Ÿ”จ app | review ':
388
+ stage: build
389
+ image: path/to/docker/jobs-default:the-version
390
+ variables:
391
+ KUBERNETES_CPU_REQUEST: '0.45'
392
+ KUBERNETES_MEMORY_REQUEST: 1Gi
393
+ KUBERNETES_MEMORY_LIMIT: 4Gi
394
+ script:
395
+ - collapseable_section_start "injectvars" "Injecting variables"
396
+ - export ENV_SHORT="review"
397
+ - export APP_DIR="www"
398
+ - export ENV_TYPE="review"
399
+ - export BUILD_INFO_BUILD_ID="$(git describe --tags 2>/dev/null || git rev-parse HEAD)"
400
+ - export BUILD_INFO_BUILD_TIME="$CI_JOB_STARTED_AT"
401
+ - 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")"
402
+ - export HOSTNAME="unknown-host.example.com"
403
+ - export ROOT_URL="https://unknown-host.example.com"
404
+ - export HOSTNAME_INTERNAL="unknown-host.example.com"
405
+ - export ROOT_URL_INTERNAL="https://unknown-host.example.com"
406
+ - 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\\"]"
407
+ - collapseable_section_end "injectvars"
408
+ - collapseable_section_start "write-dotenv-www" "write dot env for www"
409
+ - |-
410
+ cat <<EOF > www/.env
411
+ ENV_SHORT=review
412
+ APP_DIR=www
413
+ ENV_TYPE=review
414
+ HOSTNAME=unknown-host.example.com
415
+ ROOT_URL=https://unknown-host.example.com
416
+ HOSTNAME_INTERNAL=unknown-host.example.com
417
+ ROOT_URL_INTERNAL=https://unknown-host.example.com
418
+ _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"]
419
+ EOF
420
+ - collapseable_section_end "write-dotenv-www"
421
+ - echo '{"id":"$(git describe --tags 2>/dev/null || git rev-parse HEAD)","time":"$CI_JOB_STARTED_AT"}' > www/__build_info.json
422
+ - collapseable_section_start "nodeinstall" "Ensure node version"
423
+ - if [ -f ~/.nvm/nvm.sh ]; then source ~/.nvm/nvm.sh; fi
424
+ - if command -v nvm &> /dev/null && [ -f ./.nvmrc ]; then nvm install; fi
425
+ - collapseable_section_end "nodeinstall"
426
+ - cd www
427
+ - collapseable_section_start "nodeinstall" "Ensure node version"
428
+ - if [ -f ~/.nvm/nvm.sh ]; then source ~/.nvm/nvm.sh; fi
429
+ - if command -v nvm &> /dev/null && [ -f ./.nvmrc ]; then nvm install; fi
430
+ - collapseable_section_end "nodeinstall"
431
+ - collapseable_section_start "yarninstall" "Yarn install"
432
+ - yarn install --immutable
433
+ - collapseable_section_end "yarninstall"
434
+ - yarn build
435
+ cache:
436
+ - key: www-yarn
437
+ policy: pull-push
438
+ paths:
439
+ - www/.yarn
440
+ - key: www-node-modules
441
+ policy: pull-push
442
+ paths:
443
+ - www/node_modules
444
+ artifacts:
445
+ paths:
446
+ - www/__build_info.json
447
+ - www/.next
448
+ - www/dist
449
+ exclude:
450
+ - www/.env
451
+ expire_in: 1 day
452
+ when: always
453
+ reports: {}
454
+ rules:
455
+ - if: $CI_MERGE_REQUEST_ID
456
+ needs: []
457
+ retry: *a1
458
+ interruptible: true
459
+ 'www ๐Ÿ”จ docker | review ':
460
+ stage: build
461
+ image: path/to/docker/docker-build:the-version
462
+ services:
463
+ - name: docker:24.0.6-dind
464
+ command:
465
+ - --tls=false
466
+ - --registry-mirror=https://mirror.gcr.io
467
+ variables:
468
+ DOCKER_HOST: tcp://docker:2375
469
+ DOCKER_TLS_CERTDIR: ''
470
+ DOCKER_DRIVER: overlay2
471
+ DOCKER_BUILDKIT: '1'
472
+ KUBERNETES_CPU_REQUEST: '0.45'
473
+ KUBERNETES_MEMORY_REQUEST: 1Gi
474
+ KUBERNETES_MEMORY_LIMIT: 2Gi
475
+ script:
476
+ - collapseable_section_start "injectvars" "Injecting variables"
477
+ - export APP_DIR="www"
478
+ - export DOCKER_BUILD_CONTEXT="."
479
+ - export DOCKER_REGISTRY="$CI_REGISTRY"
480
+ - export DOCKER_CACHE_IMAGE="$CI_REGISTRY_IMAGE/caches/www"
481
+ - export DOCKER_IMAGE_NAME="review/www"
482
+ - export DOCKER_IMAGE="$CI_REGISTRY_IMAGE/$DOCKER_IMAGE_NAME"
483
+ - export DOCKER_IMAGE_TAG="$CI_COMMIT_SHA"
484
+ - |-
485
+ export DOCKER_COPY_AND_INSTALL_APP="COPY --chown=node:node $APP_DIR .
486
+ RUN yarn plugin import workspace-tools
487
+ RUN yarn workspaces focus --production && yarn rebuild"
488
+ - |-
489
+ export DOCKER_COPY_WORKSPACE_FILES="COPY --chown=node:node www/package.json /app/www/package.json
490
+ COPY --chown=node:node www/yarn.lock /app/www/yarn.lock
491
+ COPY --chown=node:node .yarnrc.yml /app/.yarnrc.yml
492
+ COPY --chown=node:node .yarn /app/.yarn"
493
+ - collapseable_section_end "injectvars"
494
+ - ensureNodeDockerfile
495
+ - collapseable_section_start "docker-login" "Docker Login"
496
+ - docker login --username gitlab-ci-token --password $CI_JOB_TOKEN $CI_REGISTRY
497
+ - collapseable_section_end "docker-login"
498
+ - collapseable_section_start "docker-build" "Docker build"
499
+ - docker build --network host --cache-from $DOCKER_CACHE_IMAGE --tag $DOCKER_IMAGE:$DOCKER_IMAGE_TAG -f $APP_DIR/Dockerfile $DOCKER_BUILD_CONTEXT --build-arg BUILDKIT_INLINE_CACHE=1
500
+ - collapseable_section_end "docker-build"
501
+ - collapseable_section_start "docker-push" "Docker push and tag"
502
+ - docker push $DOCKER_IMAGE:$DOCKER_IMAGE_TAG
503
+ - docker tag $DOCKER_IMAGE:$DOCKER_IMAGE_TAG $DOCKER_CACHE_IMAGE
504
+ - docker push $DOCKER_CACHE_IMAGE
505
+ - collapseable_section_end "docker-push"
506
+ cache:
507
+ - key: www-yarn
508
+ policy: pull
509
+ paths:
510
+ - www/.yarn
511
+ rules:
512
+ - if: $CI_MERGE_REQUEST_ID
513
+ needs:
514
+ - 'www ๐Ÿ”จ app | review '
515
+ retry: *a1
516
+ interruptible: true
517
+ 'www ๐Ÿงพ sbom | review ':
518
+ stage: build
519
+ image:
520
+ name: aquasec/trivy:0.58.2
521
+ entrypoint:
522
+ - ''
523
+ variables: {}
524
+ script:
525
+ - collapseable_section_start "injectvars" "Injecting variables"
526
+ - collapseable_section_end "injectvars"
527
+ - trivy fs --quiet --format cyclonedx --output "__sbom.json" www
528
+ artifacts:
529
+ paths:
530
+ - __sbom.json
531
+ rules:
532
+ - if: $CI_MERGE_REQUEST_ID
533
+ needs: []
534
+ retry: *a1
535
+ interruptible: true
536
+ allow_failure: true
537
+ 'www ๐Ÿš€ Deploy | review ':
538
+ stage: deploy review
539
+ image: path/to/docker/jobs-default:the-version
540
+ variables:
541
+ KUBERNETES_CPU_REQUEST: '1'
542
+ KUBERNETES_MEMORY_REQUEST: 1024Mi
543
+ KUBERNETES_MEMORY_LIMIT: 2048Mi
544
+ script:
545
+ - collapseable_section_start "injectvars" "Injecting variables"
546
+ - export ENV_SHORT="review"
547
+ - export APP_DIR="www"
548
+ - export ENV_TYPE="review"
549
+ - export BUILD_INFO_BUILD_ID="$(git describe --tags 2>/dev/null || git rev-parse HEAD)"
550
+ - export BUILD_INFO_BUILD_TIME="$CI_JOB_STARTED_AT"
551
+ - 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")"
552
+ - export HOSTNAME="unknown-host.example.com"
553
+ - export ROOT_URL="https://unknown-host.example.com"
554
+ - export HOSTNAME_INTERNAL="unknown-host.example.com"
555
+ - export ROOT_URL_INTERNAL="https://unknown-host.example.com"
556
+ - 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\\"]"
557
+ - export DOCKER_REGISTRY="$CI_REGISTRY"
558
+ - export DOCKER_CACHE_IMAGE="$CI_REGISTRY_IMAGE/caches/www"
559
+ - export DOCKER_IMAGE_NAME="review/www"
560
+ - export DOCKER_IMAGE="$CI_REGISTRY_IMAGE/$DOCKER_IMAGE_NAME"
561
+ - export DOCKER_IMAGE_TAG="$CI_COMMIT_SHA"
562
+ - export DEPLOY_API_KEY="$CL_review_www_DEPLOY_API_KEY"
563
+ - collapseable_section_end "injectvars"
564
+ - cd www
565
+ - ROOT_URL="$(my deploy command)"
566
+ - echo 'Uploading SBOM to Dependency Track'
567
+ - /dtrackuploader https://dep.panter.swiss/ "$DT_KEY_PROD" upload "pan-test-app/www" "$ROOT_URL" "__sbom.json" vex.json || true
568
+ - echo "CL_GITLAB_ENVIRONMENT_URL=$ROOT_URL" >> gitlab_environment.env
569
+ environment:
570
+ name: review/$CI_COMMIT_REF_NAME/www
571
+ url: $CL_GITLAB_ENVIRONMENT_URL
572
+ on_stop: 'www ๐Ÿ›‘ Stop โš ๏ธ | review '
573
+ auto_stop_in: 1 week
574
+ artifacts:
575
+ reports:
576
+ dotenv: gitlab_environment.env
577
+ rules:
578
+ - when: on_success
579
+ if: $CI_MERGE_REQUEST_ID
580
+ needs:
581
+ - job: www ๐Ÿ‘ฎ lint
582
+ artifacts: false
583
+ - job: 'www ๐Ÿ”จ app | review '
584
+ artifacts: false
585
+ - job: 'www ๐Ÿ”จ docker | review '
586
+ artifacts: false
587
+ - job: www ๐Ÿงช test
588
+ artifacts: false
589
+ - job: 'www ๐Ÿงพ sbom | review '
590
+ artifacts: true
591
+ - job: www ๐Ÿ›ก audit
592
+ artifacts: false
593
+ retry: *a1
594
+ interruptible: true
595
+ allow_failure: false
596
+ 'www ๐Ÿ›‘ Stop โš ๏ธ | review ':
597
+ stage: stop review
598
+ image: path/to/docker/jobs-default:the-version
599
+ variables:
600
+ KUBERNETES_CPU_REQUEST: '0.22'
601
+ KUBERNETES_MEMORY_REQUEST: 200Mi
602
+ KUBERNETES_MEMORY_LIMIT: 400Mi
603
+ GIT_STRATEGY: none
604
+ script:
605
+ - collapseable_section_start "injectvars" "Injecting variables"
606
+ - export DEPLOY_API_KEY="$CL_review_www_DEPLOY_API_KEY"
607
+ - collapseable_section_end "injectvars"
608
+ - echo 'would stop'
609
+ - echo 'Disabling component in Dependency Track'
610
+ - /dtrackuploader https://dep.panter.swiss/ "$DT_KEY_PROD" disable "pan-test-app/www" "$CI_ENVIRONMENT_URL" || true
611
+ environment:
612
+ name: review/$CI_COMMIT_REF_NAME/www
613
+ action: stop
614
+ rules:
615
+ - if: $CI_COMMIT_BRANCH =~ /^[0-9]+\\.([0-9]+|x)\\.x$/
616
+ when: on_success
617
+ - when: manual
618
+ if: $CI_MERGE_REQUEST_ID
619
+ needs: []
620
+ retry: *a1
621
+ interruptible: true
622
+ allow_failure: true
623
+ 'www ๐Ÿ”จ app | stage ':
624
+ stage: build
625
+ image: path/to/docker/jobs-default:the-version
626
+ variables:
627
+ KUBERNETES_CPU_REQUEST: '0.45'
628
+ KUBERNETES_MEMORY_REQUEST: 1Gi
629
+ KUBERNETES_MEMORY_LIMIT: 4Gi
630
+ script:
631
+ - collapseable_section_start "injectvars" "Injecting variables"
632
+ - export ENV_SHORT="stage"
633
+ - export APP_DIR="www"
634
+ - export ENV_TYPE="stage"
635
+ - export BUILD_INFO_BUILD_ID="$(git describe --tags 2>/dev/null || git rev-parse HEAD)"
636
+ - export BUILD_INFO_BUILD_TIME="$CI_JOB_STARTED_AT"
637
+ - 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")"
638
+ - export HOSTNAME="unknown-host.example.com"
639
+ - export ROOT_URL="https://unknown-host.example.com"
640
+ - export HOSTNAME_INTERNAL="unknown-host.example.com"
641
+ - export ROOT_URL_INTERNAL="https://unknown-host.example.com"
642
+ - 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\\"]"
643
+ - collapseable_section_end "injectvars"
644
+ - collapseable_section_start "write-dotenv-www" "write dot env for www"
645
+ - |-
646
+ cat <<EOF > www/.env
647
+ ENV_SHORT=stage
648
+ APP_DIR=www
649
+ ENV_TYPE=stage
650
+ HOSTNAME=unknown-host.example.com
651
+ ROOT_URL=https://unknown-host.example.com
652
+ HOSTNAME_INTERNAL=unknown-host.example.com
653
+ ROOT_URL_INTERNAL=https://unknown-host.example.com
654
+ _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"]
655
+ EOF
656
+ - collapseable_section_end "write-dotenv-www"
657
+ - echo '{"id":"$(git describe --tags 2>/dev/null || git rev-parse HEAD)","time":"$CI_JOB_STARTED_AT"}' > www/__build_info.json
658
+ - collapseable_section_start "nodeinstall" "Ensure node version"
659
+ - if [ -f ~/.nvm/nvm.sh ]; then source ~/.nvm/nvm.sh; fi
660
+ - if command -v nvm &> /dev/null && [ -f ./.nvmrc ]; then nvm install; fi
661
+ - collapseable_section_end "nodeinstall"
662
+ - cd www
663
+ - collapseable_section_start "nodeinstall" "Ensure node version"
664
+ - if [ -f ~/.nvm/nvm.sh ]; then source ~/.nvm/nvm.sh; fi
665
+ - if command -v nvm &> /dev/null && [ -f ./.nvmrc ]; then nvm install; fi
666
+ - collapseable_section_end "nodeinstall"
667
+ - collapseable_section_start "yarninstall" "Yarn install"
668
+ - yarn install --immutable
669
+ - collapseable_section_end "yarninstall"
670
+ - yarn build
671
+ cache:
672
+ - key: www-yarn
673
+ policy: pull-push
674
+ paths:
675
+ - www/.yarn
676
+ - key: www-node-modules
677
+ policy: pull-push
678
+ paths:
679
+ - www/node_modules
680
+ artifacts:
681
+ paths:
682
+ - www/__build_info.json
683
+ - www/.next
684
+ - www/dist
685
+ exclude:
686
+ - www/.env
687
+ expire_in: 1 day
688
+ when: always
689
+ reports: {}
690
+ rules:
691
+ - if: $CI_COMMIT_TAG
692
+ needs: []
693
+ retry: *a1
694
+ interruptible: true
695
+ 'www ๐Ÿ”จ docker | stage ':
696
+ stage: build
697
+ image: path/to/docker/docker-build:the-version
698
+ services:
699
+ - name: docker:24.0.6-dind
700
+ command:
701
+ - --tls=false
702
+ - --registry-mirror=https://mirror.gcr.io
703
+ variables:
704
+ DOCKER_HOST: tcp://docker:2375
705
+ DOCKER_TLS_CERTDIR: ''
706
+ DOCKER_DRIVER: overlay2
707
+ DOCKER_BUILDKIT: '1'
708
+ KUBERNETES_CPU_REQUEST: '0.45'
709
+ KUBERNETES_MEMORY_REQUEST: 1Gi
710
+ KUBERNETES_MEMORY_LIMIT: 2Gi
711
+ script:
712
+ - collapseable_section_start "injectvars" "Injecting variables"
713
+ - export APP_DIR="www"
714
+ - export DOCKER_BUILD_CONTEXT="."
715
+ - export DOCKER_REGISTRY="$CI_REGISTRY"
716
+ - export DOCKER_CACHE_IMAGE="$CI_REGISTRY_IMAGE/caches/www"
717
+ - export DOCKER_IMAGE_NAME="stage/www"
718
+ - export DOCKER_IMAGE="$CI_REGISTRY_IMAGE/$DOCKER_IMAGE_NAME"
719
+ - export DOCKER_IMAGE_TAG="$CI_COMMIT_SHA"
720
+ - |-
721
+ export DOCKER_COPY_AND_INSTALL_APP="COPY --chown=node:node $APP_DIR .
722
+ RUN yarn plugin import workspace-tools
723
+ RUN yarn workspaces focus --production && yarn rebuild"
724
+ - |-
725
+ export DOCKER_COPY_WORKSPACE_FILES="COPY --chown=node:node www/package.json /app/www/package.json
726
+ COPY --chown=node:node www/yarn.lock /app/www/yarn.lock
727
+ COPY --chown=node:node .yarnrc.yml /app/.yarnrc.yml
728
+ COPY --chown=node:node .yarn /app/.yarn"
729
+ - collapseable_section_end "injectvars"
730
+ - ensureNodeDockerfile
731
+ - collapseable_section_start "docker-login" "Docker Login"
732
+ - docker login --username gitlab-ci-token --password $CI_JOB_TOKEN $CI_REGISTRY
733
+ - collapseable_section_end "docker-login"
734
+ - collapseable_section_start "docker-build" "Docker build"
735
+ - docker build --network host --cache-from $DOCKER_CACHE_IMAGE --tag $DOCKER_IMAGE:$DOCKER_IMAGE_TAG -f $APP_DIR/Dockerfile $DOCKER_BUILD_CONTEXT --build-arg BUILDKIT_INLINE_CACHE=1
736
+ - collapseable_section_end "docker-build"
737
+ - collapseable_section_start "docker-push" "Docker push and tag"
738
+ - docker push $DOCKER_IMAGE:$DOCKER_IMAGE_TAG
739
+ - docker tag $DOCKER_IMAGE:$DOCKER_IMAGE_TAG $DOCKER_CACHE_IMAGE
740
+ - docker push $DOCKER_CACHE_IMAGE
741
+ - collapseable_section_end "docker-push"
742
+ cache:
743
+ - key: www-yarn
744
+ policy: pull
745
+ paths:
746
+ - www/.yarn
747
+ rules:
748
+ - if: $CI_COMMIT_TAG
749
+ needs:
750
+ - 'www ๐Ÿ”จ app | stage '
751
+ retry: *a1
752
+ interruptible: true
753
+ 'www ๐Ÿงพ sbom | stage ':
754
+ stage: build
755
+ image:
756
+ name: aquasec/trivy:0.58.2
757
+ entrypoint:
758
+ - ''
759
+ variables: {}
760
+ script:
761
+ - collapseable_section_start "injectvars" "Injecting variables"
762
+ - collapseable_section_end "injectvars"
763
+ - trivy fs --quiet --format cyclonedx --output "__sbom.json" www
764
+ artifacts:
765
+ paths:
766
+ - __sbom.json
767
+ rules:
768
+ - if: $CI_COMMIT_TAG
769
+ needs: []
770
+ retry: *a1
771
+ interruptible: true
772
+ allow_failure: true
773
+ 'www ๐Ÿš€ Deploy | stage ':
774
+ stage: deploy stage
775
+ image: path/to/docker/jobs-default:the-version
776
+ variables:
777
+ KUBERNETES_CPU_REQUEST: '1'
778
+ KUBERNETES_MEMORY_REQUEST: 1024Mi
779
+ KUBERNETES_MEMORY_LIMIT: 2048Mi
780
+ script:
781
+ - collapseable_section_start "injectvars" "Injecting variables"
782
+ - export ENV_SHORT="stage"
783
+ - export APP_DIR="www"
784
+ - export ENV_TYPE="stage"
785
+ - export BUILD_INFO_BUILD_ID="$(git describe --tags 2>/dev/null || git rev-parse HEAD)"
786
+ - export BUILD_INFO_BUILD_TIME="$CI_JOB_STARTED_AT"
787
+ - 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")"
788
+ - export HOSTNAME="unknown-host.example.com"
789
+ - export ROOT_URL="https://unknown-host.example.com"
790
+ - export HOSTNAME_INTERNAL="unknown-host.example.com"
791
+ - export ROOT_URL_INTERNAL="https://unknown-host.example.com"
792
+ - 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\\"]"
793
+ - export DOCKER_REGISTRY="$CI_REGISTRY"
794
+ - export DOCKER_CACHE_IMAGE="$CI_REGISTRY_IMAGE/caches/www"
795
+ - export DOCKER_IMAGE_NAME="stage/www"
796
+ - export DOCKER_IMAGE="$CI_REGISTRY_IMAGE/$DOCKER_IMAGE_NAME"
797
+ - export DOCKER_IMAGE_TAG="$CI_COMMIT_SHA"
798
+ - export DEPLOY_API_KEY="$CL_stage_www_DEPLOY_API_KEY"
799
+ - collapseable_section_end "injectvars"
800
+ - cd www
801
+ - echo 'would deploy'
802
+ - echo 'Uploading SBOM to Dependency Track'
803
+ - /dtrackuploader https://dep.panter.swiss/ "$DT_KEY_PROD" upload "pan-test-app/www" "$ROOT_URL" "__sbom.json" vex.json || true
804
+ - echo "CL_GITLAB_ENVIRONMENT_URL=$ROOT_URL" >> gitlab_environment.env
805
+ environment:
806
+ name: stage/www
807
+ url: $CL_GITLAB_ENVIRONMENT_URL
808
+ artifacts:
809
+ reports:
810
+ dotenv: gitlab_environment.env
811
+ rules:
812
+ - when: on_success
813
+ if: $CI_COMMIT_TAG
814
+ needs:
815
+ - job: 'www ๐Ÿ”จ app | stage '
816
+ artifacts: false
817
+ - job: 'www ๐Ÿ”จ docker | stage '
818
+ artifacts: false
819
+ - job: 'www ๐Ÿงพ sbom | stage '
820
+ artifacts: true
821
+ retry: *a1
822
+ interruptible: true
823
+ allow_failure: false
824
+ 'www ๐Ÿ”จ app | prod ':
825
+ stage: build
826
+ image: path/to/docker/jobs-default:the-version
827
+ variables:
828
+ KUBERNETES_CPU_REQUEST: '0.45'
829
+ KUBERNETES_MEMORY_REQUEST: 1Gi
830
+ KUBERNETES_MEMORY_LIMIT: 4Gi
831
+ script:
832
+ - collapseable_section_start "injectvars" "Injecting variables"
833
+ - export ENV_SHORT="prod"
834
+ - export APP_DIR="www"
835
+ - export ENV_TYPE="prod"
836
+ - export BUILD_INFO_BUILD_ID="$(git describe --tags 2>/dev/null || git rev-parse HEAD)"
837
+ - export BUILD_INFO_BUILD_TIME="$CI_JOB_STARTED_AT"
838
+ - 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")"
839
+ - export HOSTNAME="unknown-host.example.com"
840
+ - export ROOT_URL="https://unknown-host.example.com"
841
+ - export HOSTNAME_INTERNAL="unknown-host.example.com"
842
+ - export ROOT_URL_INTERNAL="https://unknown-host.example.com"
843
+ - 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\\"]"
844
+ - collapseable_section_end "injectvars"
845
+ - collapseable_section_start "write-dotenv-www" "write dot env for www"
846
+ - |-
847
+ cat <<EOF > www/.env
848
+ ENV_SHORT=prod
849
+ APP_DIR=www
850
+ ENV_TYPE=prod
851
+ HOSTNAME=unknown-host.example.com
852
+ ROOT_URL=https://unknown-host.example.com
853
+ HOSTNAME_INTERNAL=unknown-host.example.com
854
+ ROOT_URL_INTERNAL=https://unknown-host.example.com
855
+ _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"]
856
+ EOF
857
+ - collapseable_section_end "write-dotenv-www"
858
+ - echo '{"id":"$(git describe --tags 2>/dev/null || git rev-parse HEAD)","time":"$CI_JOB_STARTED_AT"}' > www/__build_info.json
859
+ - collapseable_section_start "nodeinstall" "Ensure node version"
860
+ - if [ -f ~/.nvm/nvm.sh ]; then source ~/.nvm/nvm.sh; fi
861
+ - if command -v nvm &> /dev/null && [ -f ./.nvmrc ]; then nvm install; fi
862
+ - collapseable_section_end "nodeinstall"
863
+ - cd www
864
+ - collapseable_section_start "nodeinstall" "Ensure node version"
865
+ - if [ -f ~/.nvm/nvm.sh ]; then source ~/.nvm/nvm.sh; fi
866
+ - if command -v nvm &> /dev/null && [ -f ./.nvmrc ]; then nvm install; fi
867
+ - collapseable_section_end "nodeinstall"
868
+ - collapseable_section_start "yarninstall" "Yarn install"
869
+ - yarn install --immutable
870
+ - collapseable_section_end "yarninstall"
871
+ - yarn build
872
+ cache:
873
+ - key: www-yarn
874
+ policy: pull-push
875
+ paths:
876
+ - www/.yarn
877
+ - key: www-node-modules
878
+ policy: pull-push
879
+ paths:
880
+ - www/node_modules
881
+ artifacts:
882
+ paths:
883
+ - www/__build_info.json
884
+ - www/.next
885
+ - www/dist
886
+ exclude:
887
+ - www/.env
888
+ expire_in: 1 day
889
+ when: always
890
+ reports: {}
891
+ rules:
892
+ - if: $CI_COMMIT_TAG
893
+ needs: []
894
+ retry: *a1
895
+ interruptible: true
896
+ 'www ๐Ÿ”จ docker | prod ':
897
+ stage: build
898
+ image: path/to/docker/docker-build:the-version
899
+ services:
900
+ - name: docker:24.0.6-dind
901
+ command:
902
+ - --tls=false
903
+ - --registry-mirror=https://mirror.gcr.io
904
+ variables:
905
+ DOCKER_HOST: tcp://docker:2375
906
+ DOCKER_TLS_CERTDIR: ''
907
+ DOCKER_DRIVER: overlay2
908
+ DOCKER_BUILDKIT: '1'
909
+ KUBERNETES_CPU_REQUEST: '0.45'
910
+ KUBERNETES_MEMORY_REQUEST: 1Gi
911
+ KUBERNETES_MEMORY_LIMIT: 2Gi
912
+ script:
913
+ - collapseable_section_start "injectvars" "Injecting variables"
914
+ - export APP_DIR="www"
915
+ - export DOCKER_BUILD_CONTEXT="."
916
+ - export DOCKER_REGISTRY="$CI_REGISTRY"
917
+ - export DOCKER_CACHE_IMAGE="$CI_REGISTRY_IMAGE/caches/www"
918
+ - export DOCKER_IMAGE_NAME="prod/www"
919
+ - export DOCKER_IMAGE="$CI_REGISTRY_IMAGE/$DOCKER_IMAGE_NAME"
920
+ - export DOCKER_IMAGE_TAG="$CI_COMMIT_SHA"
921
+ - |-
922
+ export DOCKER_COPY_AND_INSTALL_APP="COPY --chown=node:node $APP_DIR .
923
+ RUN yarn plugin import workspace-tools
924
+ RUN yarn workspaces focus --production && yarn rebuild"
925
+ - |-
926
+ export DOCKER_COPY_WORKSPACE_FILES="COPY --chown=node:node www/package.json /app/www/package.json
927
+ COPY --chown=node:node www/yarn.lock /app/www/yarn.lock
928
+ COPY --chown=node:node .yarnrc.yml /app/.yarnrc.yml
929
+ COPY --chown=node:node .yarn /app/.yarn"
930
+ - collapseable_section_end "injectvars"
931
+ - ensureNodeDockerfile
932
+ - collapseable_section_start "docker-login" "Docker Login"
933
+ - docker login --username gitlab-ci-token --password $CI_JOB_TOKEN $CI_REGISTRY
934
+ - collapseable_section_end "docker-login"
935
+ - collapseable_section_start "docker-build" "Docker build"
936
+ - docker build --network host --cache-from $DOCKER_CACHE_IMAGE --tag $DOCKER_IMAGE:$DOCKER_IMAGE_TAG -f $APP_DIR/Dockerfile $DOCKER_BUILD_CONTEXT --build-arg BUILDKIT_INLINE_CACHE=1
937
+ - collapseable_section_end "docker-build"
938
+ - collapseable_section_start "docker-push" "Docker push and tag"
939
+ - docker push $DOCKER_IMAGE:$DOCKER_IMAGE_TAG
940
+ - docker tag $DOCKER_IMAGE:$DOCKER_IMAGE_TAG $DOCKER_CACHE_IMAGE
941
+ - docker push $DOCKER_CACHE_IMAGE
942
+ - collapseable_section_end "docker-push"
943
+ cache:
944
+ - key: www-yarn
945
+ policy: pull
946
+ paths:
947
+ - www/.yarn
948
+ rules:
949
+ - if: $CI_COMMIT_TAG
950
+ needs:
951
+ - 'www ๐Ÿ”จ app | prod '
952
+ retry: *a1
953
+ interruptible: true
954
+ 'www ๐Ÿงพ sbom | prod ':
955
+ stage: build
956
+ image:
957
+ name: aquasec/trivy:0.58.2
958
+ entrypoint:
959
+ - ''
960
+ variables: {}
961
+ script:
962
+ - collapseable_section_start "injectvars" "Injecting variables"
963
+ - collapseable_section_end "injectvars"
964
+ - trivy fs --quiet --format cyclonedx --output "__sbom.json" www
965
+ artifacts:
966
+ paths:
967
+ - __sbom.json
968
+ rules:
969
+ - if: $CI_COMMIT_TAG
970
+ needs: []
971
+ retry: *a1
972
+ interruptible: true
973
+ allow_failure: true
974
+ 'www ๐Ÿš€ Deploy | prod ':
975
+ stage: deploy prod
976
+ image: path/to/docker/jobs-default:the-version
977
+ variables:
978
+ KUBERNETES_CPU_REQUEST: '1'
979
+ KUBERNETES_MEMORY_REQUEST: 1024Mi
980
+ KUBERNETES_MEMORY_LIMIT: 2048Mi
981
+ script:
982
+ - collapseable_section_start "injectvars" "Injecting variables"
983
+ - export ENV_SHORT="prod"
984
+ - export APP_DIR="www"
985
+ - export ENV_TYPE="prod"
986
+ - export BUILD_INFO_BUILD_ID="$(git describe --tags 2>/dev/null || git rev-parse HEAD)"
987
+ - export BUILD_INFO_BUILD_TIME="$CI_JOB_STARTED_AT"
988
+ - 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")"
989
+ - export HOSTNAME="unknown-host.example.com"
990
+ - export ROOT_URL="https://unknown-host.example.com"
991
+ - export HOSTNAME_INTERNAL="unknown-host.example.com"
992
+ - export ROOT_URL_INTERNAL="https://unknown-host.example.com"
993
+ - 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\\"]"
994
+ - export DOCKER_REGISTRY="$CI_REGISTRY"
995
+ - export DOCKER_CACHE_IMAGE="$CI_REGISTRY_IMAGE/caches/www"
996
+ - export DOCKER_IMAGE_NAME="prod/www"
997
+ - export DOCKER_IMAGE="$CI_REGISTRY_IMAGE/$DOCKER_IMAGE_NAME"
998
+ - export DOCKER_IMAGE_TAG="$CI_COMMIT_SHA"
999
+ - export DEPLOY_API_KEY="$CL_prod_www_DEPLOY_API_KEY"
1000
+ - collapseable_section_end "injectvars"
1001
+ - cd www
1002
+ - echo 'would deploy'
1003
+ - echo 'Uploading SBOM to Dependency Track'
1004
+ - /dtrackuploader https://dep.panter.swiss/ "$DT_KEY_PROD" upload "pan-test-app/www" "$ROOT_URL" "__sbom.json" vex.json || true
1005
+ - echo "CL_GITLAB_ENVIRONMENT_URL=$ROOT_URL" >> gitlab_environment.env
1006
+ environment:
1007
+ name: prod/www
1008
+ url: $CL_GITLAB_ENVIRONMENT_URL
1009
+ artifacts:
1010
+ reports:
1011
+ dotenv: gitlab_environment.env
1012
+ rules:
1013
+ - when: manual
1014
+ if: $CI_COMMIT_TAG
1015
+ needs:
1016
+ - job: 'www ๐Ÿ”จ app | prod '
1017
+ artifacts: false
1018
+ - job: 'www ๐Ÿ”จ docker | prod '
1019
+ artifacts: false
1020
+ - job: 'www ๐Ÿงพ sbom | prod '
1021
+ artifacts: true
1022
+ retry: *a1
1023
+ interruptible: true
1024
+ allow_failure: true
1025
+ create release:
1026
+ stage: release
1027
+ image: path/to/docker/semantic-release:the-version
1028
+ script:
1029
+ - semanticRelease
1030
+ - echo '๐Ÿ‘‰ The project access token might be invald - run \`project-renew-token\` in catladder CLI to fix.'
1031
+ rules:
1032
+ - &a2
1033
+ if: $CI_COMMIT_MESSAGE =~ /^chore\\(release\\).*/
1034
+ when: never
1035
+ - &a3
1036
+ if: $CI_PIPELINE_SOURCE == "schedule"
1037
+ when: never
1038
+ - if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH && $AUTO_RELEASE == "true"
1039
+ when: on_success
1040
+ - if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH
1041
+ when: manual
1042
+ - if: $CI_COMMIT_BRANCH =~ /^[0-9]+.([0-9]+|x).x$/
1043
+ when: manual
1044
+ โš ๏ธ force create release:
1045
+ stage: release
1046
+ image: path/to/docker/semantic-release:the-version
1047
+ script:
1048
+ - semanticRelease
1049
+ - echo '๐Ÿ‘‰ The project access token might be invald - run \`project-renew-token\` in catladder CLI to fix.'
1050
+ rules:
1051
+ - *a2
1052
+ - *a3
1053
+ - if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH
1054
+ when: manual
1055
+ - if: $CI_COMMIT_BRANCH =~ /^[0-9]+.([0-9]+|x).x$/
1056
+ when: manual
1057
+ needs: []
1058
+ "
1059
+ `;