@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
@@ -1,33 +1,38 @@
1
- import type { BuildConfigGeneric, BuildConfigType } from "../build";
2
- import type { DeployConfigGeneric } from "../deploy";
3
- import type { DeployConfigType } from "../deploy";
1
+ import type { StringOrBashExpression } from "../bash/BashExpression";
2
+ import type { BuildConfig } from "../build";
3
+ import type { DeployConfig } from "../deploy";
4
4
  import type { Config, EnvConfigWithComponent, EnvType } from "./config";
5
- import type { CommitInfo } from "./context";
5
+ import type { PipelineType } from "./pipeline";
6
6
 
7
7
  export type EnvironmentContext<
8
- B extends BuildConfigType,
9
- D extends DeployConfigType
8
+ B extends BuildConfig = BuildConfig,
9
+ D extends DeployConfig = DeployConfig,
10
10
  > = {
11
11
  envConfigRaw: EnvConfigWithComponent;
12
- buildConfigRaw: false | BuildConfigGeneric<B>;
13
- deployConfigRaw: false | DeployConfigGeneric<D>;
14
- commitInfo?: CommitInfo;
12
+ buildConfigRaw: false | B;
13
+ deployConfigRaw: false | D;
14
+
15
15
  env: string;
16
16
  envType: EnvType;
17
17
  componentName: string;
18
- fullName: string;
18
+ fullName: StringOrBashExpression;
19
19
  /**
20
20
  * the environment slug without component name.
21
21
  */
22
- environmentSlugPrefix: string;
22
+ environmentSlugPrefix: StringOrBashExpression;
23
+ /**
24
+ * the review slug, if it is a review app, null otherwise
25
+ */
26
+ reviewSlug: StringOrBashExpression | null;
23
27
  /**
24
28
  * the full environment slug, including the componentName
25
29
  */
26
- environmentSlug: string;
27
- gitlabEnvironmentName: string;
30
+ environmentSlug: StringOrBashExpression;
28
31
 
29
32
  /**
30
33
  * the full catladder config
31
34
  */
32
35
  fullConfig: Config;
36
+
37
+ pipelineType?: PipelineType;
33
38
  };
@@ -1,4 +1,3 @@
1
- /* eslint-disable */
2
1
  /**
3
2
  * This file was automatically generated by json-schema-to-typescript.
4
3
  * DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file,
@@ -1,18 +1,20 @@
1
+ import type { GitlabJobWithContext } from "../pipeline/gitlab/createGitlabJobs";
1
2
  import type {
2
3
  Artifacts as GitlabCiArtifacts,
3
4
  JobTemplate,
4
- Cache,
5
+ Cache as GitlabJobCache,
5
6
  Rules,
6
7
  } from "./gitlab-ci-yml";
7
8
 
8
9
  export { Retry, Image as GitlabJobImage } from "./gitlab-ci-yml";
9
10
 
10
11
  // Reports won't show up on MRs until https://gitlab.com/groups/gitlab-org/-/epics/8205
11
- export interface Artifacts extends Omit<GitlabCiArtifacts, "paths"> {
12
- paths: string[];
13
- }
14
- export type GitlabJobCache = Cache;
15
- export type GitlabRule = Exclude<Rules, null>[number];
12
+ export type Artifacts = GitlabCiArtifacts;
13
+ export type { GitlabJobCache };
14
+ export type GitlabRule = Exclude<
15
+ Exclude<Rules, null>[number],
16
+ string | string[] // we only use the object version
17
+ >;
16
18
  export type GitlabEnvironment = Omit<
17
19
  Exclude<JobTemplate["environment"], undefined | string>,
18
20
  "deployment_tier"
@@ -64,5 +66,6 @@ export interface GitlabPipeline extends Pick<JobTemplate, "variables"> {
64
66
  rules: GitlabRule[];
65
67
  };
66
68
  stages: string[];
67
- jobs: Record<string, GitlabJobDef>;
69
+ jobs: Record<string, GitlabJobWithContext>;
70
+ before_script?: string[];
68
71
  }
@@ -1,4 +1,6 @@
1
1
  export * from "./config";
2
2
  export * from "./gitlab-types";
3
3
  export * from "./context";
4
+ export * from "./jobDefinition";
4
5
  export * from "./pipeline";
6
+ export * from "./jobs";
@@ -0,0 +1,34 @@
1
+ import type { CacheConfig } from "../build";
2
+ import type { CatladderJob } from "./jobs";
3
+
4
+ // new intermediate types. Currently not widely used, but we will built a bit more abstraction on top of this
5
+
6
+ export type AppBuildJobDefinition = Partial<
7
+ Omit<CatladderJob, "artifacts" | "cache">
8
+ > & {
9
+ cache?: CacheConfig[];
10
+ };
11
+
12
+ export type DockerBuildJobDefinition = AppBuildJobDefinition; // currently the same
13
+
14
+ export type DeployJobDefinition = Pick<
15
+ CatladderJob,
16
+ | "script"
17
+ | "variables"
18
+ | "image"
19
+ | "artifacts"
20
+ | "services"
21
+ | "runnerVariables"
22
+ > & {
23
+ cache?: CacheConfig[];
24
+ };
25
+
26
+ export type StopJobDefinition = Pick<
27
+ CatladderJob,
28
+ "script" | "variables" | "image" | "runnerVariables"
29
+ >;
30
+
31
+ export type RollbackJobDefinition = Pick<
32
+ CatladderJob,
33
+ "script" | "variables" | "runnerVariables" | "image"
34
+ >;
package/src/types/jobs.ts CHANGED
@@ -1,12 +1,14 @@
1
+ import type { UnspecifiedEnvVars } from "..";
1
2
  import type {
2
3
  Artifacts,
3
4
  GitlabEnvironment,
4
5
  GitlabJobCache,
5
- GitlabRule,
6
- GitlabJobImage,
7
6
  GitlabJobDef,
7
+ GitlabJobImage,
8
+ GitlabRule,
8
9
  } from "./gitlab-types";
9
10
 
11
+ export type CatladderJobCache = GitlabJobCache;
10
12
  export const BASE_STAGES = [
11
13
  "setup",
12
14
  "test",
@@ -16,11 +18,18 @@ export const BASE_STAGES = [
16
18
  "rollback",
17
19
  "stop",
18
20
  ] as const;
19
- export type BaseStage = typeof BASE_STAGES[number];
21
+ export type BaseStage = (typeof BASE_STAGES)[number];
20
22
 
21
23
  export type CatladderJobNeed =
22
24
  | string
23
- | { job: string; artifacts: boolean; componentName?: string };
25
+ | { job: string; artifacts: boolean; componentName?: string }
26
+ | { job: string; artifacts: boolean; workspaceName: string };
27
+
28
+ export type CatladderJobEnvironmentConfig = {
29
+ action?: GitlabEnvironment["action"];
30
+ on_stop?: GitlabEnvironment["on_stop"];
31
+ auto_stop_in?: string;
32
+ };
24
33
  export type CatladderJob<S = BaseStage> = {
25
34
  /**
26
35
  * the name of the job (without any env or app prefix and suffix)
@@ -50,6 +59,7 @@ export type CatladderJob<S = BaseStage> = {
50
59
  needsStages?: {
51
60
  stage: S;
52
61
  artifacts?: boolean;
62
+ workspaceName?: string;
53
63
  }[];
54
64
 
55
65
  /**
@@ -60,18 +70,10 @@ export type CatladderJob<S = BaseStage> = {
60
70
  */
61
71
  needs?: Array<CatladderJobNeed>;
62
72
 
63
- /**
64
- * @deprecated set `componentName` to `needs` if you want to wait for a job from another component
65
- */
66
- needsOtherComponent?: Array<{
67
- componentName: string;
68
- job: string;
69
- artifacts: boolean;
70
- }>;
71
73
  /**
72
74
  * cache config, we use here the same shape as gitlab itself
73
75
  */
74
- cache?: GitlabJobCache | GitlabJobCache[];
76
+ cache?: CatladderJobCache | CatladderJobCache[];
75
77
 
76
78
  /**
77
79
  * job artifacts, we also use gitlab shape here
@@ -91,14 +93,28 @@ export type CatladderJob<S = BaseStage> = {
91
93
  /**
92
94
  * variables to pass
93
95
  */
94
- variables: GitlabJobDef["variables"];
96
+ variables: UnspecifiedEnvVars | undefined;
97
+
98
+ /**
99
+ * additional vars only for the runner.
100
+ * Also if you use services: that require env vars, you need to set them here.
101
+ *
102
+ */
103
+ runnerVariables?: Record<string, string>;
95
104
 
96
105
  /**
97
106
  * whether failures are allowed
98
107
  */
99
108
  allow_failure?: boolean;
100
109
 
101
- environment?: GitlabEnvironment;
110
+ /**
111
+ * gitlab environment config, subject to change
112
+ */
113
+ environment?: CatladderJobEnvironmentConfig;
114
+
115
+ /** */
116
+
117
+ when?: GitlabRule["when"];
102
118
 
103
119
  rules?: GitlabRule[];
104
120
 
@@ -1,7 +1,7 @@
1
1
  export type PartialDeep<T> = T extends any[]
2
2
  ? T
3
3
  : T extends Record<string, any>
4
- ? {
5
- [P in keyof T]?: PartialDeep<T[P]>;
6
- }
7
- : T;
4
+ ? {
5
+ [P in keyof T]?: PartialDeep<T[P]>;
6
+ }
7
+ : T;
@@ -1,3 +1,5 @@
1
+ import { registerGlobalScriptFunction } from "../globalScriptFunctions";
2
+
1
3
  export const allowFailureInScripts = (script: string[]): string[] => [
2
4
  "set +e", // disable fail job on error
3
5
  ...script,
@@ -11,7 +13,7 @@ export const repeatOnFailure = (
11
13
  command: string,
12
14
  options: {
13
15
  pauseInSeconds: number;
14
- }
16
+ },
15
17
  ): string => {
16
18
  return `
17
19
  until ${command}
@@ -22,12 +24,27 @@ export const repeatOnFailure = (
22
24
  `;
23
25
  };
24
26
 
27
+ const start = registerGlobalScriptFunction(
28
+ "collapseable_section_start",
29
+ `local section_title="\${1}"
30
+ local section_description="\${2:-$section_title}"
31
+ echo -e "section_start:\`date +%s\`:\${section_title}[collapsed=true]\\r\\e[0K$\{section_description}"
32
+ `,
33
+ );
34
+
35
+ const end = registerGlobalScriptFunction(
36
+ "collapseable_section_end",
37
+ `local section_title="\${1}"
38
+ echo -e "section_end:\`date +%s\`:\${section_title}\\r\\e[0K"
39
+ `,
40
+ );
41
+
25
42
  export const collapseableSection =
26
43
  (name: string, header: string) =>
27
44
  (commands: string[]): string[] => {
28
45
  return [
29
- `echo -e "\\e[0Ksection_start:$(date +%s):${name}[collapsed=true]\\r\\e[0K${header}"`,
46
+ start.invoke(`"${name}"`, `"${header}"`),
30
47
  ...commands,
31
- `echo -e "\\e[0Ksection_end:$(date +%s):${name}\\r\\e[0K"`,
48
+ end.invoke(`"${name}"`),
32
49
  ];
33
50
  };
@@ -1,19 +1,22 @@
1
1
  import { isNil, mergeWith } from "lodash";
2
2
 
3
3
  export function notNil<TValue>(
4
- value: TValue | null | undefined
4
+ value: TValue | null | undefined,
5
5
  ): value is TValue {
6
6
  return value !== null && value !== undefined;
7
7
  }
8
8
 
9
- export const ensureArray = <T>(s: undefined | T | T[]): T[] | null =>
9
+ export const ensureArrayOrNull = <T>(s: undefined | T | T[]): T[] | null =>
10
10
  isNil(s) ? null : Array.isArray(s) ? s : [s];
11
11
 
12
+ export const ensureArray = <T>(s: undefined | T | T[]): T[] =>
13
+ ensureArrayOrNull(s) ?? [];
14
+
12
15
  // see https://github.com/lodash/lodash/issues/5384
13
16
  export const mergeWithMergingArrays = <A, B>(obj1: A, obj2: B): A & B => {
14
17
  return mergeWith({}, obj1, obj2, (prop1, prop2) =>
15
18
  Array.isArray(prop1) && Array.isArray(prop2)
16
19
  ? [...prop1, ...prop2]
17
- : undefined
20
+ : undefined,
18
21
  );
19
22
  };
@@ -0,0 +1,7 @@
1
+ export const jsonParseOrThrow = (str: string): any => {
2
+ try {
3
+ return JSON.parse(str);
4
+ } catch (e) {
5
+ throw new Error(`could not parse json: ${str}`);
6
+ }
7
+ };
@@ -0,0 +1,4 @@
1
+ export const removeUndefined = <T extends object>(obj: T): T =>
2
+ Object.fromEntries(
3
+ Object.entries(obj).filter(([, value]) => value !== undefined),
4
+ ) as T;
@@ -0,0 +1,52 @@
1
+ import { writeFile } from "fs/promises";
2
+ import { stringify } from "yaml";
3
+
4
+ export const getAutoGeneratedHeader = (commentChar: string) => {
5
+ return [
6
+ "-------------------------------------------------",
7
+ `🐱 🔨 This file is generated by catladder`,
8
+ `🚨 Do not edit this file manually 🚨`,
9
+ "-------------------------------------------------",
10
+ ]
11
+ .map((line) => `${commentChar} ${line}`)
12
+ .join("\n")
13
+ .concat("\n");
14
+ };
15
+
16
+ export const writeGeneratedFile = async (
17
+ path: string,
18
+ content: string,
19
+ {
20
+ commentChar,
21
+ }: {
22
+ commentChar: string;
23
+ },
24
+ ) => {
25
+ await writeFile(
26
+ path,
27
+ // need to spread out the jobs, forgot why
28
+ [getAutoGeneratedHeader(commentChar), content].join("\n"),
29
+ {
30
+ encoding: "utf-8",
31
+ },
32
+ );
33
+ };
34
+
35
+ type StringifyOptions = Exclude<
36
+ Parameters<typeof stringify>[2],
37
+ null | undefined | string | number
38
+ >;
39
+ export const yamlStringifyOptions: StringifyOptions = {
40
+ // prevents colapsing long command statements into multiple lines
41
+ lineWidth: 0,
42
+ // represent multi line commands as single line json strings
43
+ doubleQuotedAsJSON: true,
44
+ // Better readability when bash commands most often use double quotes
45
+ singleQuote: true,
46
+ };
47
+
48
+ export const writeYamlfile = async (path: string, data: any) => {
49
+ await writeGeneratedFile(path, stringify(data, yamlStringifyOptions), {
50
+ commentChar: "#",
51
+ });
52
+ };
@@ -0,0 +1,6 @@
1
+ import type { BashExpression } from "../bash/BashExpression";
2
+ import type { VariableValueContainingReferences } from "./VariableValueContainingReferences";
3
+ export type VariableValue =
4
+ | VariableValueContainingReferences
5
+ | BashExpression
6
+ | string;
@@ -0,0 +1,89 @@
1
+ import { BashExpression } from "../bash/BashExpression";
2
+ import type { EscapeOptions } from "../bash/bashEscape";
3
+ import { escapeBashExpression, escapeString } from "../bash/bashEscape";
4
+
5
+ export class UnresolvableReference {
6
+ constructor(public reference: VariableReference) {}
7
+ public toString() {
8
+ return `Unresolvable reference: ${this.reference.toString()}`;
9
+ }
10
+ }
11
+ export class VariableReference {
12
+ public componentName: string;
13
+ public variableName: string;
14
+
15
+ constructor(componentName: string, variableName: string) {
16
+ this.componentName = componentName;
17
+ this.variableName = variableName;
18
+ }
19
+
20
+ public toString() {
21
+ return `\${${this.componentName}:${this.variableName}}`;
22
+ }
23
+ }
24
+
25
+ type VariableValuePart =
26
+ | string
27
+ | BashExpression
28
+ | VariableReference
29
+ | UnresolvableReference;
30
+
31
+ type MaybeArray<T> = T | T[];
32
+ export class VariableValueContainingReferences {
33
+ public parts: VariableValuePart[];
34
+ constructor(
35
+ parts: MaybeArray<VariableValuePart | VariableValueContainingReferences>,
36
+ ) {
37
+ this.parts = (Array.isArray(parts) ? parts : [parts]).flatMap((part) =>
38
+ part instanceof VariableValueContainingReferences
39
+ ? part.parts
40
+ : part === ""
41
+ ? []
42
+ : [part],
43
+ );
44
+ }
45
+
46
+ public toString(
47
+ options: EscapeOptions = {
48
+ quotes: false,
49
+ },
50
+ ) {
51
+ return this.parts
52
+ .map((part) => {
53
+ if (typeof part === "string") {
54
+ return escapeString(part, options);
55
+ } else if (part instanceof BashExpression) {
56
+ return escapeBashExpression(part, options);
57
+ } else {
58
+ return part.toString();
59
+ }
60
+ })
61
+ .join("");
62
+ }
63
+ }
64
+
65
+ // regex to resolve references in catladder variables
66
+ // those expressions have the pattern ${componentName:variableName}
67
+ const REGEX = /\$\{(([^:}]+):)?([^}]+)}/gm;
68
+ export const createVariableValueContainingReferencesFromString = (
69
+ value: string,
70
+ options: { componentName: string },
71
+ ) => {
72
+ const parts: Array<VariableValuePart> = [];
73
+ let match: any;
74
+ let lastIndex = 0;
75
+ while ((match = REGEX.exec(value)) !== null) {
76
+ const [fullMatch, _, otherComponentName, variableName] = match;
77
+
78
+ parts.push(value.slice(lastIndex, match.index));
79
+ parts.push(
80
+ new VariableReference(
81
+ otherComponentName || options.componentName,
82
+ variableName,
83
+ ),
84
+ );
85
+ lastIndex = REGEX.lastIndex;
86
+ }
87
+ parts.push(value.slice(lastIndex));
88
+ return new VariableValueContainingReferences(parts);
89
+ };
@@ -0,0 +1,110 @@
1
+ import {
2
+ VariableValueContainingReferences,
3
+ createVariableValueContainingReferencesFromString,
4
+ } from "../VariableValueContainingReferences";
5
+ import { resolveAllReferences } from "../resolveAllReferences";
6
+
7
+ describe("replaceAllReferences", () => {
8
+ it("should replace all references recursivly", async () => {
9
+ const values = {
10
+ myVar: createVariableValueContainingReferencesFromString(
11
+ "the 2nd component has ${component2:variable1} and self reference ${variable2}",
12
+ {
13
+ componentName: "component1",
14
+ },
15
+ ),
16
+ myOtherVar: createVariableValueContainingReferencesFromString(
17
+ "the third component has ${component3:variable1}, isn't that cool?",
18
+ {
19
+ componentName: "component1",
20
+ },
21
+ ),
22
+ myThirdVar: createVariableValueContainingReferencesFromString(
23
+ "value from component3: ${component3:variable3}",
24
+ {
25
+ componentName: "component1",
26
+ },
27
+ ),
28
+ };
29
+
30
+ const getEnvVars = async (componentName: string) => {
31
+ return {
32
+ variable1: createVariableValueContainingReferencesFromString(
33
+ `i am variable1 from ${componentName}`,
34
+ { componentName },
35
+ ),
36
+ variable2: createVariableValueContainingReferencesFromString(
37
+ `foo from ${componentName}`,
38
+ {
39
+ componentName,
40
+ },
41
+ ),
42
+ variable3: createVariableValueContainingReferencesFromString(
43
+ `i am referencing \${component1:variable1}`,
44
+ { componentName },
45
+ ),
46
+ };
47
+ };
48
+
49
+ const result = await resolveAllReferences(values, getEnvVars);
50
+ expect(result).toEqual({
51
+ myVar: new VariableValueContainingReferences([
52
+ "the 2nd component has ",
53
+ "i am variable1 from component2",
54
+ " and self reference ",
55
+ "foo from component1",
56
+ ]),
57
+ myOtherVar: new VariableValueContainingReferences([
58
+ "the third component has ",
59
+ "i am variable1 from component3",
60
+ ", isn't that cool?",
61
+ ]),
62
+ myThirdVar: new VariableValueContainingReferences([
63
+ "value from component3: ",
64
+ "i am referencing ",
65
+ "i am variable1 from component1",
66
+ ]),
67
+ });
68
+ });
69
+
70
+ it("detects infinte loop", async () => {
71
+ const values = {
72
+ myVar: createVariableValueContainingReferencesFromString(
73
+ "i am referencing ${component2:variable1}",
74
+ {
75
+ componentName: "component1",
76
+ },
77
+ ),
78
+ };
79
+
80
+ const getEnvVars = async (componentName: string) => {
81
+ if (componentName === "component2") {
82
+ return {
83
+ variable1: createVariableValueContainingReferencesFromString(
84
+ `i am referencing \${component3:variable1}`,
85
+ { componentName },
86
+ ),
87
+ };
88
+ } else if (componentName === "component3") {
89
+ return {
90
+ variable1: createVariableValueContainingReferencesFromString(
91
+ `i am referencing \${component1:variable1}`,
92
+ { componentName },
93
+ ),
94
+ };
95
+ } else {
96
+ return {
97
+ variable1: createVariableValueContainingReferencesFromString(
98
+ `i am referencing \${component2:variable1}`,
99
+ { componentName },
100
+ ),
101
+ };
102
+ }
103
+ };
104
+
105
+ // expect to throw an error
106
+ await expect(resolveAllReferences(values, getEnvVars)).rejects.toThrow(
107
+ "Infinite loop detected in these variables: myVar (last reference: ${component1:variable1})",
108
+ );
109
+ });
110
+ });
@@ -0,0 +1,64 @@
1
+ import {
2
+ VariableReference,
3
+ VariableValueContainingReferences,
4
+ createVariableValueContainingReferencesFromString,
5
+ } from "../VariableValueContainingReferences";
6
+ import { resolveAllReferencesOnce } from "../resolveAllReferencesOnce";
7
+
8
+ describe("resolveAllReferencesOnce", () => {
9
+ it("should replace all references", async () => {
10
+ const values = {
11
+ myVar: createVariableValueContainingReferencesFromString(
12
+ "the 2nd component has ${component2:variable1} and self reference ${variable2}",
13
+ { componentName: "component1" },
14
+ ),
15
+ myOtherVar: createVariableValueContainingReferencesFromString(
16
+ "the third component has ${component3:variable1}, isn't that cool?",
17
+ { componentName: "component1" },
18
+ ),
19
+ myThirdVar: createVariableValueContainingReferencesFromString(
20
+ "value from component3: ${component3:variable3}",
21
+ { componentName: "component1" },
22
+ ),
23
+ };
24
+
25
+ const getEnvVars = async (componentName: string) => {
26
+ return {
27
+ variable1: createVariableValueContainingReferencesFromString(
28
+ `i am variable1 from ${componentName}`,
29
+ { componentName },
30
+ ),
31
+ variable2: createVariableValueContainingReferencesFromString(
32
+ `foo from ${componentName}`,
33
+ {
34
+ componentName,
35
+ },
36
+ ),
37
+ variable3: createVariableValueContainingReferencesFromString(
38
+ `i am referencing \${component1:variable1}`,
39
+ { componentName },
40
+ ),
41
+ };
42
+ };
43
+
44
+ const result = await resolveAllReferencesOnce(values, getEnvVars);
45
+ expect(result).toEqual({
46
+ myVar: new VariableValueContainingReferences([
47
+ "the 2nd component has ",
48
+ "i am variable1 from component2",
49
+ " and self reference ",
50
+ "foo from component1",
51
+ ]),
52
+ myOtherVar: new VariableValueContainingReferences([
53
+ "the third component has ",
54
+ "i am variable1 from component3",
55
+ ", isn't that cool?",
56
+ ]),
57
+ myThirdVar: new VariableValueContainingReferences([
58
+ "value from component3: ",
59
+ "i am referencing ",
60
+ new VariableReference("component1", "variable1"),
61
+ ]),
62
+ });
63
+ });
64
+ });