@catladder/pipeline 0.0.0-more-collapse-deeb54d7 → 0.0.0-multiple-gitlab-includes-3df5566d

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
@@ -62,6 +62,21 @@ export type DeployConfigCloudRunCloudSql = {
62
62
  */
63
63
  deleteDatabaseOnStop?: boolean;
64
64
 
65
+ /**
66
+ * format of the `DATABASE_URL` environment variable
67
+ *
68
+ * the options are:
69
+ * - prisma: adds [required but ignored hostname](https://www.prisma.io/docs/orm/overview/databases/postgresql#connecting-via-sockets):
70
+ * `postgresql://$DB_USER:$DB_PASSWORD@localhost/$DB_NAME?host=/cloudsql/$CLOUD_SQL_INSTANCE_CONNECTION_NAME`
71
+ * - rails: percent-encodes the socket in the host part
72
+ * `postgresql://$DB_USER:$DB_PASSWORD@%2Fcloudsql%2FprojectId%3Aregion%3Ainstancename/$DB_NAME?`
73
+ * - jdbc: for use with Google Cloud SQL Connector for Java
74
+ * `jdbc:postgresql:///$DB_NAME?cloudSqlInstance=$CLOUD_SQL_INSTANCE_CONNECTION_NAME&socketFactory=com.google.cloud.sql.postgres.SocketFactory&user=$DB_USER&password=$DB_PASSWORD`
75
+ *
76
+ * defaults to prisma
77
+ */
78
+ dbConnectionStringFormat?: "prisma" | "rails" | "jdbc";
79
+
65
80
  /**
66
81
  * add additional query params to the database connection string
67
82
  */
@@ -74,11 +89,12 @@ export type DeployConfigCloudRunCloudSql = {
74
89
  };
75
90
 
76
91
  type Memory = `${number}${"M" | "G" | "Mi" | "Gi"}`;
92
+ type Cpu = 1 | 2 | 4 | 6 | 8;
77
93
  export type DeployConfigCloudRunService = {
78
94
  /**
79
95
  * command / entrypoint, fallsback to buildConfig.startcommand
80
96
  */
81
- command?: string;
97
+ command?: string | string[];
82
98
 
83
99
  /**
84
100
  * how many instances to keep around when there are no requests. defaults to 0.
@@ -97,24 +113,98 @@ export type DeployConfigCloudRunService = {
97
113
  noCpuThrottling?: true;
98
114
 
99
115
  /**
100
- * whether to allow public access (defaults to true)
116
+ * whether to allow public access without authentification (defaults to true)
101
117
  */
102
118
  allowUnauthenticated?: boolean;
103
119
 
120
+ /**
121
+ * whether to expose the service to the internet.
122
+ *
123
+ * The options are:
124
+ * - all: expose to the internet and internal traffic
125
+ * - internal: only expose to internal traffic
126
+ * - internal-and-cloud-load-balancing: expose to internal traffic and cloud load balancing
127
+ *
128
+ * Defaults to "all"
129
+ */
130
+ ingress?: "all" | "internal" | "internal-and-cloud-load-balancing";
131
+
132
+ /**
133
+ * CPU limit.
134
+ */
135
+ cpu?: Cpu;
136
+
104
137
  /**
105
138
  * memory limit. Defaults to 512MB
106
139
  */
107
140
  memory?: Memory;
108
- };
141
+
142
+ /**
143
+ * timeout of the service, defaults to 5 minutes.
144
+ *
145
+ * you can specify something like 10m30s. if its just a number, it will be interpreted as seconds
146
+ *
147
+ * max supported is 60min
148
+ */
149
+ timeout?: string;
150
+
151
+ /**
152
+ *
153
+ * set the execution environment.
154
+ *
155
+ * see https://cloud.google.com/run/docs/about-execution-environments
156
+ *
157
+ * defaults to gen1 according to gcloud
158
+ */
159
+ executionEnvironment?: "gen2" | "gen1";
160
+
161
+ /* the vpc network, see https://cloud.google.com/sdk/gcloud/reference/run/deploy#--network */
162
+ network?: string;
163
+
164
+ /**
165
+ * vpc subnet to use, see https://cloud.google.com/sdk/gcloud/reference/run/deploy#--subnet
166
+ */
167
+ subnet?: string;
168
+ /**
169
+ * vpc egress, see https://cloud.google.com/sdk/gcloud/reference/run/deploy#--vpc-egress
170
+ */
171
+ vpcEgress?: "all-traffic" | "private-ranges-only";
172
+
173
+ /**
174
+ * vpc connector
175
+ */
176
+ vpcConnector?: string;
177
+
178
+ /**
179
+ * Use http2 end-to-end. See https://cloud.google.com/run/docs/configuring/http2
180
+ *
181
+ * Defaults to false.
182
+ *
183
+ * Your service needs to be able to handle http2 requests.
184
+ * Its recommended to use http2 without tls, since cloud run handles the encryption for you. (so called "h2c" (http2 cleartext))
185
+ *
186
+ */
187
+ http2?: boolean;
188
+ } & DeployConfigCloudRunWithVolumes;
109
189
 
110
190
  export type DeployConfigCloudRunJobBase = {
111
191
  /**
112
192
  * command
113
193
  */
114
- command: string;
194
+ command: string | string[];
195
+
196
+ /**
197
+ * custom image to use. Defaults to the image from the build
198
+ */
199
+ image?: string;
200
+
201
+ /**
202
+ * CPU limit of the job.
203
+ */
204
+ cpu?: Cpu;
115
205
 
116
206
  /**
117
- * memory limit of the job, defaults to 51Mi
207
+ * memory limit of the job, defaults to 512Mi
118
208
  */
119
209
  memory?: `${number}${"M" | "G" | "Mi" | "Gi"}`;
120
210
 
@@ -124,7 +214,12 @@ export type DeployConfigCloudRunJobBase = {
124
214
  * you can specify something like 10m30s
125
215
  */
126
216
  timeout?: string;
127
- };
217
+
218
+ /**
219
+ * number of tasks that may run concurrently, defaults to 1
220
+ */
221
+ parallelism?: number;
222
+ } & DeployConfigCloudRunWithVolumes;
128
223
 
129
224
  type Minute = string;
130
225
  type Hour = string;
@@ -135,11 +230,25 @@ export type DeployConfigCloudRunJobWithSchedule =
135
230
  DeployConfigCloudRunJobBase & {
136
231
  when: "schedule";
137
232
  schedule: `${Minute} ${Hour} ${DayOfMonth} ${Month} ${DayOfWeek}`;
233
+ /**
234
+ * Max number of retries of the cloud scheduler.
235
+ * Note: the task itself is never retried.
236
+ *
237
+ * defaults to 0 (no retries)
238
+ */
138
239
  maxRetryAttempts?: 0 | 1 | 2 | 3 | 4 | 5;
139
240
  };
140
241
 
141
242
  export type DeployConfigCloudRunJobNormal = DeployConfigCloudRunJobBase & {
142
- when: "manual" | "preDeploy" | "postDeploy";
243
+ when: "manual" | "preDeploy" | "postDeploy" | "preStop" | "postStop";
244
+ };
245
+
246
+ export type DeployConfigCloudRunWithVolumes = {
247
+ /**
248
+ * adds volumes to the service. This is an experimental feature and requires beta gcloud.
249
+ * sets executionEnvironment to gen2 automatically, since that is required
250
+ */
251
+ volumes?: DeployConfigCloudRunVolumes;
143
252
  };
144
253
 
145
254
  export type DeployConfigCloudRunJob =
@@ -148,9 +257,9 @@ export type DeployConfigCloudRunJob =
148
257
 
149
258
  export type DeployConfigCloudRun = {
150
259
  /**
151
- * EXPERIMENTAL cloud run deployment.
260
+ * cloud run deployment.
152
261
  *
153
- * This will deploy a cloud run service.
262
+ * This will deploy a cloud run service. You can optionally define one-time and scheduled jobs running on cloud run
154
263
  *
155
264
  * Requires that cloud run is enabled on the project, as well as cloud run api and artifacts registry.
156
265
  */
@@ -170,7 +279,7 @@ export type DeployConfigCloudRun = {
170
279
  service?: boolean | DeployConfigCloudRunService;
171
280
 
172
281
  /**
173
- * deploy additional services with different entry pointss
282
+ * deploy additional services with different entry points.
174
283
  */
175
284
  additionalServices?: {
176
285
  [name: string]: DeployConfigCloudRunService;
@@ -184,4 +293,18 @@ export type DeployConfigCloudRun = {
184
293
  * add cloudSql
185
294
  */
186
295
  cloudSql?: DeployConfigCloudRunCloudSql | false;
296
+
297
+ debug?: boolean;
187
298
  } & DeployConfigBase;
299
+
300
+ export type DeployConfigCloudRunVolumes = Record<
301
+ string,
302
+ DeployConfigCloudRunVolume
303
+ >;
304
+
305
+ export type DeployConfigCloudRunVolume = {
306
+ type: "cloud-storage";
307
+ bucket: string;
308
+ mountPath: string;
309
+ readonly?: boolean;
310
+ };
@@ -21,8 +21,8 @@ export type DeployConfigGeneric<T extends DeployConfigType> = Extract<
21
21
  >;
22
22
 
23
23
  export const isOfDeployType = <T extends Array<DeployConfigType>>(
24
- t: DeployConfig | false,
24
+ t: DeployConfig | false | null | undefined,
25
25
  ...types: T
26
26
  ): t is Extract<DeployConfig, { type: T[number] }> => {
27
- return t && types.includes(t.type);
27
+ return t && types.includes(t.type) ? true : false;
28
28
  };
@@ -96,6 +96,10 @@ export type KubernetesWorkerDef = {
96
96
  service?: {
97
97
  enabled?: boolean;
98
98
  };
99
+ /**
100
+ * if the same livenessProbe as the application should be used, defaults to `true`
101
+ */
102
+ livenessProbe?: boolean;
99
103
  };
100
104
 
101
105
  type KubernetesTolerationExists = {
@@ -160,33 +164,6 @@ export type DeployConfigMongodbReplicaset = {
160
164
  export type DeployConfigMongodb = DeployConfigMongodbBase &
161
165
  (DeployConfigMongodbStandalone | DeployConfigMongodbReplicaset);
162
166
 
163
- /**
164
- * @deprecated use config with instanceConnectionName
165
- */
166
- type DeployConfigKubernetesValuesCloudSQLLegacy = {
167
- enabled: boolean;
168
- /**
169
- * @deprecated use config with instanceConnectionName
170
- */
171
- instanceId?: string;
172
- /**
173
- * @deprecated use config with instanceConnectionName
174
- */
175
- projectId?: string;
176
- /**
177
- * @deprecated use config with instanceConnectionName
178
- */
179
- region?: string;
180
- /**
181
- * @deprecated use type "unmanaged".
182
- *
183
- * Be aware that "unmanaged" is not fully backward compatible with "legacy".
184
- *
185
- *
186
- */
187
- type?: "legacy";
188
- };
189
-
190
167
  export type DeployConfigKubernetesValuesCloudSQLUnmanaged = {
191
168
  enabled: boolean;
192
169
  instanceConnectionName: string;
@@ -216,8 +193,7 @@ export type DeployConfigKubernetesValuesCloudSQLUnmanaged = {
216
193
  dbBaseName?: string;
217
194
  };
218
195
  export type DeployConfigKubernetesValuesCloudSQL =
219
- | DeployConfigKubernetesValuesCloudSQLLegacy
220
- | DeployConfigKubernetesValuesCloudSQLUnmanaged;
196
+ DeployConfigKubernetesValuesCloudSQLUnmanaged;
221
197
  export type DeployConfigKubernetesValues = AllowUnknownProps<{
222
198
  /**
223
199
  * enable cloudsql db. Currently you have to manually set it up
@@ -354,13 +330,6 @@ export type DeployConfigKubernetesValues = AllowUnknownProps<{
354
330
  mapServiceUrlToEnv?: {
355
331
  [envVar: string]: string;
356
332
  };
357
- /**
358
- * Mount secrets as files in the filesystem.
359
- * These secrets are still available as env vars, but will contain the path of the file instead
360
- *
361
- * @deprecated this will be removed in the future, because its very niche and not used
362
- */
363
- secretsAsFile?: string[];
364
333
  }>;
365
334
 
366
335
  export type DeployConfigKubernetes = {
@@ -1,9 +1,9 @@
1
- import type { Config, Context } from "../types";
1
+ import type { Config, ComponentContext } from "../types";
2
2
  import type { DeployConfigKubernetesCluster } from "./types";
3
3
  import { isOfDeployType } from "./types";
4
4
 
5
5
  export const getFullKubernetesClusterName = (
6
- cluster: DeployConfigKubernetesCluster
6
+ cluster: DeployConfigKubernetesCluster,
7
7
  ) => {
8
8
  if (cluster.type === "gcloud") {
9
9
  return `gke_${cluster.projectId}_${cluster.region}_${cluster.name}`;
@@ -12,13 +12,13 @@ export const getFullKubernetesClusterName = (
12
12
 
13
13
  export const getKubernetesNamespace = (
14
14
  config: Pick<Config, "customerName" | "appName">,
15
- env: string
15
+ env: string,
16
16
  ) => {
17
17
  return `${config.customerName}-${config.appName}-${env}`;
18
18
  };
19
19
 
20
- export const contextIsStoppable = (context: Context) => {
21
- const deployConfig = context.componentConfig.deploy;
20
+ export const contextIsStoppable = (context: ComponentContext) => {
21
+ const deployConfig = context.deploy?.config;
22
22
  if (isOfDeployType(deployConfig, "kubernetes")) {
23
23
  return true;
24
24
  }
@@ -0,0 +1,30 @@
1
+ class GlobalScriptFunction {
2
+ constructor(
3
+ public name: string,
4
+ public script: string,
5
+ ) {}
6
+
7
+ toBashFunction() {
8
+ return `function ${this.name} () {
9
+ ${this.script.trim()}
10
+ }`.trim();
11
+ }
12
+ invoke(...args: string[]) {
13
+ return `${this.name} ${args.join(" ")}`;
14
+ }
15
+ }
16
+
17
+ export const globalScriptFunctions = new Map<string, GlobalScriptFunction>();
18
+
19
+ /**
20
+ * registers a global script function
21
+ * only use that in top-level scopes as it will attach the function to the global scope
22
+ */
23
+ export const registerGlobalScriptFunction = (name: string, script: string) => {
24
+ if (globalScriptFunctions.has(name)) {
25
+ throw new Error(`Global script function ${name} already exists`);
26
+ }
27
+ const scriptFunction = new GlobalScriptFunction(name, script);
28
+ globalScriptFunctions.set(name, scriptFunction);
29
+ return scriptFunction;
30
+ };
package/src/index.ts CHANGED
@@ -1,4 +1,4 @@
1
- export * from "./pipeline/";
1
+ export * from "./pipeline";
2
2
  export * from "./types";
3
3
  export * from "./rules";
4
4
  export * from "./runner";
@@ -6,3 +6,6 @@ export * from "./config";
6
6
  export * from "./context";
7
7
  export * from "./build";
8
8
  export * from "./deploy";
9
+ export * from "./utils/writeFiles";
10
+ export * from "./variables/VariableValue";
11
+ export * from "./bash";
@@ -0,0 +1,14 @@
1
+ // we can't import the package.json directly, because the bundling process will inline it
2
+ // but the version is only set during deployement, when its already bundled
3
+ // instead we need to use require.main.path to get the path of the main module, which is actually the file in the bin
4
+ // this will point to the root package.json
5
+ let ownPkg = { version: "0.0.0" };
6
+ try {
7
+ const path = require.main?.path + "/../package.json";
8
+
9
+ ownPkg = require(path);
10
+ } catch (e) {
11
+ // ignore, currently in the gitlab-includes, this doesn't work
12
+ }
13
+
14
+ export default ownPkg;
@@ -0,0 +1,69 @@
1
+ // Jest Snapshot v1, https://goo.gl/fbAQLP
2
+
3
+ exports[`getPipelineStages() should return all envs for SIMPLE_CONFIG1 1`] = `
4
+ [
5
+ "setup",
6
+ "setup dev",
7
+ "setup review",
8
+ "setup stage",
9
+ "setup prod",
10
+ "setup dev2",
11
+ "setup review2",
12
+ "setup stage2",
13
+ "setup prod2",
14
+ "test",
15
+ "test dev",
16
+ "test review",
17
+ "test stage",
18
+ "test prod",
19
+ "test dev2",
20
+ "test review2",
21
+ "test stage2",
22
+ "test prod2",
23
+ "build",
24
+ "build dev",
25
+ "build review",
26
+ "build stage",
27
+ "build prod",
28
+ "build dev2",
29
+ "build review2",
30
+ "build stage2",
31
+ "build prod2",
32
+ "deploy",
33
+ "deploy dev",
34
+ "deploy review",
35
+ "deploy stage",
36
+ "deploy prod",
37
+ "deploy dev2",
38
+ "deploy review2",
39
+ "deploy stage2",
40
+ "deploy prod2",
41
+ "verify",
42
+ "verify dev",
43
+ "verify review",
44
+ "verify stage",
45
+ "verify prod",
46
+ "verify dev2",
47
+ "verify review2",
48
+ "verify stage2",
49
+ "verify prod2",
50
+ "rollback",
51
+ "rollback dev",
52
+ "rollback review",
53
+ "rollback stage",
54
+ "rollback prod",
55
+ "rollback dev2",
56
+ "rollback review2",
57
+ "rollback stage2",
58
+ "rollback prod2",
59
+ "stop",
60
+ "stop dev",
61
+ "stop review",
62
+ "stop stage",
63
+ "stop prod",
64
+ "stop dev2",
65
+ "stop review2",
66
+ "stop stage2",
67
+ "stop prod2",
68
+ ]
69
+ `;
@@ -0,0 +1,63 @@
1
+ import { type DeployConfigKubernetesCluster } from "../..";
2
+ import type { Config } from "../../types";
3
+ import { getPipelineStages } from "../getPipelineStages";
4
+
5
+ describe("getPipelineStages()", () => {
6
+ const cluster: DeployConfigKubernetesCluster = {
7
+ type: "gcloud",
8
+ name: "mega-cluster",
9
+ projectId: "super-google-project",
10
+ region: "ch-blabla",
11
+ };
12
+ const SIMPLE_CONFIG1: Config = {
13
+ appName: "my-app",
14
+ customerName: "pan",
15
+ components: {
16
+ app1: {
17
+ dir: "dir1",
18
+ build: {
19
+ type: "node",
20
+ },
21
+ deploy: { type: "kubernetes", cluster },
22
+ },
23
+ app2: {
24
+ dir: "dir2",
25
+ build: {
26
+ type: "node",
27
+ },
28
+ deploy: { type: "kubernetes", cluster },
29
+ env: {
30
+ dev2: {
31
+ type: "dev",
32
+ },
33
+ review2: {
34
+ type: "review",
35
+ },
36
+ stage2: {
37
+ type: "stage",
38
+ },
39
+ prod2: {
40
+ type: "prod",
41
+ },
42
+ },
43
+ },
44
+ app3: {
45
+ dir: "dir2",
46
+ build: {
47
+ type: "node",
48
+ },
49
+ deploy: { type: "kubernetes", cluster },
50
+ env: {
51
+ dev: false,
52
+ review: false,
53
+ stage: false,
54
+ prod: false,
55
+ },
56
+ },
57
+ },
58
+ };
59
+
60
+ it("should return all envs for SIMPLE_CONFIG1", () => {
61
+ expect(getPipelineStages(SIMPLE_CONFIG1)).toMatchSnapshot();
62
+ });
63
+ });
@@ -1,38 +1,72 @@
1
- import { getAllEnvsByTrigger } from "../config";
2
- import type { Config, PipelineTrigger } from "../types";
1
+ import type { CreateAllComponentsContextProps } from "../context/createAllComponentsContext";
2
+ import { createAllComponentsContext } from "../context/createAllComponentsContext";
3
+ import { createWorkspaceContext } from "../context/createWorkspaceContext";
4
+ import type { ComponentContext, WorkspaceContext } from "../types";
5
+ import { componentContextHasWorkspaceBuild } from "../types";
3
6
  import type { CatladderJob } from "../types/jobs";
4
- import { createJobsForComponent } from "./createJobsForComponent";
7
+ import { createJobsForComponentContext } from "./createJobsForComponent";
8
+ import { createJobsForWorkspace } from "./createJobsForWorkspace";
5
9
 
6
10
  export type AllCatladderJobs = {
7
- [componentName: string]: {
8
- [env: string]: Array<CatladderJob>;
9
- };
11
+ workspaces: Array<{
12
+ context: WorkspaceContext;
13
+ jobs: Array<CatladderJob>;
14
+ }>;
15
+ components: Array<{
16
+ context: ComponentContext;
17
+ jobs: Array<CatladderJob>;
18
+ }>;
10
19
  };
11
- export const createAllJobs = async (
12
- config: Config,
13
- trigger: PipelineTrigger
14
- ): Promise<AllCatladderJobs> => {
15
- return Object.fromEntries(
16
- await Promise.all(
17
- Object.keys(config.components).map(async (componentName) => {
18
- const envs = getAllEnvsByTrigger(config, componentName, trigger);
19
- return [
20
- componentName,
21
- Object.fromEntries(
22
- await Promise.all(
23
- envs.map(async (env) => [
24
- env,
25
- await createJobsForComponent(
26
- config,
27
- componentName,
28
- env,
29
- trigger
30
- ),
31
- ])
32
- )
33
- ),
34
- ];
35
- })
36
- )
37
- );
20
+
21
+ export const createAllJobs = async ({
22
+ config,
23
+ trigger,
24
+ pipelineType,
25
+ }: CreateAllComponentsContextProps): Promise<AllCatladderJobs> => {
26
+ const allComponentsContext = await createAllComponentsContext({
27
+ config,
28
+ trigger,
29
+ pipelineType,
30
+ });
31
+
32
+ return {
33
+ workspaces: await Promise.all(
34
+ Object.keys(config.builds ?? {}).map(async (workspaceName) => {
35
+ const componentsInAllEnvs = allComponentsContext.filter(
36
+ (context) =>
37
+ componentContextHasWorkspaceBuild(context) &&
38
+ context.build.workspaceName === workspaceName,
39
+ );
40
+
41
+ const allEnvs = [...new Set(componentsInAllEnvs.map(({ env }) => env))];
42
+
43
+ return await Promise.all(
44
+ allEnvs.map(async (env) => {
45
+ const workspaceContext = await createWorkspaceContext({
46
+ components: componentsInAllEnvs.filter(
47
+ ({ env: componentEnv }) => componentEnv === env,
48
+ ),
49
+ workspaceName,
50
+ config,
51
+ trigger,
52
+ pipelineType,
53
+ env,
54
+ });
55
+
56
+ return {
57
+ context: workspaceContext,
58
+ jobs: createJobsForWorkspace(workspaceContext),
59
+ };
60
+ }),
61
+ );
62
+ }),
63
+ ).then((f) => f.flat()),
64
+
65
+ components: allComponentsContext.map((context) => {
66
+ return {
67
+ context,
68
+ jobs: createJobsForComponentContext(context),
69
+ };
70
+ }),
71
+ };
38
72
  };