@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
@@ -1,22 +1,28 @@
1
1
  import { existsSync } from "fs";
2
2
  import { join } from "path";
3
3
  import { pathEqual } from "path-equal";
4
- import type { Config, PackageManagerInfo } from "../types";
5
- import { getWorkspaces, getYarnVersion } from "./yarn/yarnUtils";
4
+ import type {
5
+ Config,
6
+ PackageManagerInfoBase,
7
+ PackageManagerInfoComponent,
8
+ } from "../types";
9
+ import {
10
+ getWorkspaces,
11
+ getYarnVersion,
12
+ getWorkspaceDependencies,
13
+ } from "./yarn/yarnUtils";
6
14
 
7
- export const getPackageManagerInfo = async (
15
+ export const getPackageManagerInfoForComponent = async (
8
16
  config: Config,
9
- componentName: string
10
- ): Promise<PackageManagerInfo> => {
17
+ componentName: string,
18
+ ): Promise<PackageManagerInfoComponent> => {
19
+ const baseInfo = await getPackageManagerInfoBase();
20
+ const { workspaces } = baseInfo;
11
21
  // currently only supports yarn
12
- const version = await getYarnVersion();
13
- if (!version) throw new Error("could not get yarn version");
14
- const isClassic = version.startsWith("1");
15
22
 
16
23
  const component = config.components[componentName];
17
- const workspaces = await getWorkspaces(isClassic);
18
24
  const currentWorkspace = workspaces.find((w) =>
19
- pathEqual(component.dir, w.location)
25
+ pathEqual(component.dir, w.location),
20
26
  );
21
27
  const componentIsInWorkspace = Boolean(currentWorkspace);
22
28
  const workspaceRoot = "."; // currently we assume the root folder, later on we might support nested workspaces
@@ -38,29 +44,41 @@ export const getPackageManagerInfo = async (
38
44
 
39
45
  // get all folders that this workspace depend on
40
46
  // we will later copy them into the docker build
41
- const workspaceDependencies = currentWorkspace
42
- ? ([
43
- ...currentWorkspace.workspaceDependencies,
44
- ...currentWorkspace.mismatchedWorkspaceDependencies,
45
- ]
46
- .map((name) => workspaces.find((w) => w.name === name)?.location)
47
- .filter(Boolean) as string[])
47
+ const currentWorkspaceDependencies = currentWorkspace
48
+ ? getWorkspaceDependencies(currentWorkspace, workspaces)
48
49
  : [];
49
50
 
50
51
  const pathsToCopyInDocker = [
51
- packageJson,
52
- ...(workspacePackageJson ? [workspacePackageJson] : []),
53
- lockFile,
54
- ...configFilePaths,
55
- ...workspaceDependencies,
52
+ ...new Set([
53
+ packageJson,
54
+ ...(workspacePackageJson ? [workspacePackageJson] : []),
55
+ lockFile,
56
+ ...configFilePaths,
57
+ ...currentWorkspaceDependencies,
58
+ ]),
56
59
  ];
57
60
  return {
58
- type: "yarn",
59
- workspaces,
60
- version,
61
- isClassic,
61
+ ...baseInfo,
62
62
  currentWorkspace,
63
+ currentWorkspaceDependencies,
63
64
  componentIsInWorkspace,
64
65
  pathsToCopyInDocker,
65
66
  };
66
67
  };
68
+ // TODO: memoizee
69
+ export const getPackageManagerInfoBase =
70
+ async (): Promise<PackageManagerInfoBase> => {
71
+ // currently only supports yarn
72
+ const version = await getYarnVersion();
73
+ if (!version) throw new Error("could not get yarn version");
74
+ const isClassic = version.startsWith("1");
75
+
76
+ const workspaces = await getWorkspaces(isClassic);
77
+
78
+ return {
79
+ type: "yarn",
80
+ workspaces,
81
+ version,
82
+ isClassic,
83
+ };
84
+ };
@@ -1,6 +1,7 @@
1
1
  import { exec } from "child-process-promise";
2
2
  import memoizee from "memoizee";
3
- import type { PackageManagerInfo } from "../../types";
3
+ import type { YarnWorkspace } from "../../types";
4
+ import { jsonParseOrThrow } from "../../utils/jsonParse";
4
5
 
5
6
  const execOrFail = async (cmd: string, onFail: string): Promise<string> => {
6
7
  try {
@@ -14,24 +15,52 @@ export const getYarnVersion = memoizee(
14
15
  async () => {
15
16
  return await execOrFail("yarn --version", "");
16
17
  },
17
- { promise: true }
18
+ { promise: true },
18
19
  );
20
+
19
21
  // export for mocking
20
22
  export const getWorkspaces = memoizee(
21
- async (isClassic: boolean): Promise<PackageManagerInfo["workspaces"]> => {
23
+ async (isClassic: boolean): Promise<Array<YarnWorkspace>> => {
22
24
  return isClassic
23
25
  ? Object.values(
24
- JSON.parse(
25
- JSON.parse(await execOrFail("yarn workspaces --json info", "{}"))
26
- ?.data ?? "{}"
27
- )
26
+ jsonParseOrThrow(
27
+ jsonParseOrThrow(
28
+ await execOrFail("yarn workspaces --json info", "{}"),
29
+ )?.data ?? "{}",
30
+ ),
28
31
  )
29
- : JSON.parse(
32
+ : jsonParseOrThrow(
30
33
  `[${(await execOrFail("yarn workspaces list --json --verbose", ""))
31
34
  .trim()
32
35
  .split("\n")
33
- .join(",")}]`
36
+ .join(",")}]`,
34
37
  );
35
38
  },
36
- { promise: true }
39
+ { promise: true },
37
40
  );
41
+
42
+ // recursivly get all workspace dependencies
43
+ export const getWorkspaceDependencies = (
44
+ ws: YarnWorkspace,
45
+ allWorkspaces: YarnWorkspace[],
46
+ ): string[] => {
47
+ return ws
48
+ ? ([...ws.workspaceDependencies, ...ws.mismatchedWorkspaceDependencies]
49
+ .flatMap((location) => {
50
+ // we have to do this recursivly
51
+
52
+ const otherWorkspace = allWorkspaces.find(
53
+ (w) => w.location === location,
54
+ );
55
+
56
+ if (otherWorkspace) {
57
+ return [
58
+ ...getWorkspaceDependencies(otherWorkspace, allWorkspaces),
59
+ otherWorkspace.location,
60
+ ];
61
+ }
62
+ return [];
63
+ })
64
+ .filter(Boolean) as string[])
65
+ : [];
66
+ };
@@ -1,33 +1,47 @@
1
1
  import type { GitlabRule } from "../types";
2
+ export const RULE_CONDITION_MAIN_BRANCH =
3
+ "$CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH";
2
4
 
5
+ export const RULE_IS_MAIN_BRANCH: GitlabRule = {
6
+ if: RULE_CONDITION_MAIN_BRANCH,
7
+ };
3
8
  export const RULE_NEVER_ON_RELEASE_COMMIT: GitlabRule = {
4
9
  if: "$CI_COMMIT_MESSAGE =~ /^chore\\(release\\).*/",
5
10
  when: "never",
6
11
  };
12
+
13
+ export const RULE_NEVER_ON_SCHEDULE: GitlabRule = {
14
+ if: '$CI_PIPELINE_SOURCE == "schedule"',
15
+ when: "never",
16
+ };
17
+
18
+ export const RULE_IS_MERGE_REQUEST: GitlabRule = {
19
+ if: "$CI_MERGE_REQUEST_ID",
20
+ };
21
+
22
+ export const RULE_IS_TAGGED_RELEASE: GitlabRule = {
23
+ if: "$CI_COMMIT_TAG",
24
+ };
25
+
7
26
  export const RULES_ALWAYS: GitlabRule[] = [
8
- {
9
- if: "$CI_COMMIT_TAG",
10
- },
27
+ RULE_IS_TAGGED_RELEASE,
11
28
  RULE_NEVER_ON_RELEASE_COMMIT,
29
+ RULE_NEVER_ON_SCHEDULE,
12
30
  {
13
31
  if: "$CI_COMMIT_BRANCH =~ /^[0-9]+.([0-9]+|x).x$/",
14
32
  },
15
33
  {
16
34
  if: "$CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH",
17
35
  },
18
- {
19
- if: "$CI_MERGE_REQUEST_ID",
20
- },
36
+ RULE_IS_MERGE_REQUEST,
21
37
  ];
22
38
 
23
- export const RULE_CONDITION_MAIN_BRANCH =
24
- "$CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH";
25
-
26
39
  export const RULE_CONDITION_HOTFIX_BRANCH =
27
40
  "$CI_COMMIT_BRANCH =~ /^[0-9]+.([0-9]+|x).x$/";
28
41
 
29
42
  export const RULES_RELEASE: GitlabRule[] = [
30
43
  RULE_NEVER_ON_RELEASE_COMMIT,
44
+ RULE_NEVER_ON_SCHEDULE,
31
45
  {
32
46
  if: RULE_CONDITION_MAIN_BRANCH + ' && $AUTO_RELEASE == "true"',
33
47
  when: "on_success",
@@ -41,3 +55,16 @@ export const RULES_RELEASE: GitlabRule[] = [
41
55
  when: "manual",
42
56
  },
43
57
  ];
58
+
59
+ export const RULES_MANUAL_RELEASE: GitlabRule[] = [
60
+ RULE_NEVER_ON_RELEASE_COMMIT,
61
+ RULE_NEVER_ON_SCHEDULE,
62
+ {
63
+ if: RULE_CONDITION_MAIN_BRANCH,
64
+ when: "manual",
65
+ },
66
+ {
67
+ if: RULE_CONDITION_HOTFIX_BRANCH,
68
+ when: "manual",
69
+ },
70
+ ];
@@ -5,7 +5,6 @@ export type RunnerImageName =
5
5
  | "jobs-meteor"
6
6
  | "jobs-testing-chrome"
7
7
  | "kubernetes"
8
- | "base-pipeline"
9
8
  | "docker-build"
10
9
  | "gcloud"
11
10
  | "semantic-release";
@@ -2,9 +2,16 @@ import type { BuildConfig } from "../build/types";
2
2
  import type { DeployConfig } from "../deploy/types";
3
3
 
4
4
  import type { CatladderJob } from "./jobs";
5
- import type { Context } from "./context";
5
+ import type { ComponentContext } from "./context";
6
6
  import type { PartialDeep } from "./utils";
7
- export type PipelineTrigger = "mainBranch" | "mr" | "taggedRelease";
7
+ import type { PipelineType, WorkspaceBuildConfig } from "..";
8
+
9
+ export const ALL_PIPELINE_TRIGGERS = [
10
+ "mainBranch",
11
+ "mr",
12
+ "taggedRelease",
13
+ ] as const;
14
+ export type PipelineTrigger = (typeof ALL_PIPELINE_TRIGGERS)[number];
8
15
 
9
16
  /**
10
17
  * all env types with their trigger.
@@ -36,7 +43,7 @@ export const ENV_TYPES = {
36
43
  export const getEnvTypesByTrigger = (trigger: PipelineTrigger) =>
37
44
  Object.entries(ENV_TYPES)
38
45
  .filter(([, e]) =>
39
- (e.triggers as readonly PipelineTrigger[]).includes(trigger)
46
+ (e.triggers as readonly PipelineTrigger[]).includes(trigger),
40
47
  )
41
48
  .map(([e]) => e as EnvType);
42
49
 
@@ -60,19 +67,12 @@ export type EnvVars = {
60
67
  * You can reuse vars from other components in the same project using ${componentName:variableName}
61
68
  * EXAMPLE: A_VAR: "the other var is ${api:OTHER_VAR}"
62
69
  */
70
+
63
71
  public?: Record<string, any>;
64
72
  /**
65
73
  * secret env vars. These vars can be managed with catladder/cli
66
74
  */
67
75
  secret?: string[];
68
- /**
69
- * @deprecated, use ${componentName:variableName} instead
70
- *
71
- * With fromComponents you can inject env vars from other components.
72
- */
73
- fromComponents?: {
74
- [otherApp: string]: Record<string, string>;
75
- };
76
76
  };
77
77
 
78
78
  export type DefaultEnvConfig = {
@@ -143,18 +143,32 @@ export type ComponentConfig<C extends ConfigProps = never> = {
143
143
  * to let us know about why you need to use custom jobs.
144
144
  * This feedback will help us to generalize use cases
145
145
  */
146
- customJobs?: CatladderJob[] | ((context: Context) => CatladderJob[]);
146
+ customJobs?:
147
+ | CatladderJob[]
148
+ | ((context: Omit<ComponentContext, "customJobs">) => CatladderJob[]);
147
149
 
148
150
  /**
149
- * experimental. whether to create a .env localy and during build jobs
151
+ * whether to create a .env
150
152
  *
151
153
  * Be careful, this will overwrite any existing .env file!
154
+ *
155
+ * if set to true it will create .env locally and during build.
156
+ * Be careful: the .env file usually ends up in the build artifacts.
157
+ * Use this for apps and clients where env does not contain any secrets
158
+ *
159
+ *
160
+ * if set to "local" it will only create .env file locally.
161
+ * Use this in combination with @dotenvx/dotenvx or node 20 to start apps locally with .env files
162
+ * During build and runtime, it relies on the env vars set in the environment
163
+ *
164
+ * @defaultValue true
165
+ *
152
166
  */
153
- dotEnv?: boolean;
167
+ dotEnv?: boolean | "local";
154
168
  /**
155
- * experimental. whether to create a env.d.ts localy and during build jobs
169
+ * whether to create a env.d.ts localy and during build jobs
156
170
  *
157
- * Be careful, this will overwrite any existing env.d.ts file!
171
+ * @defaultValue true
158
172
  */
159
173
  envDTs?: boolean;
160
174
  } & DefaultEnvConfig;
@@ -164,6 +178,11 @@ export type ConfigProps = {
164
178
  };
165
179
 
166
180
  export type Config<C extends ConfigProps = never> = {
181
+ /**
182
+ * the pipeline type to generate, defaults to gitlab
183
+ */
184
+ pipelineType?: PipelineType;
185
+
167
186
  /**
168
187
  * name of the customer or group
169
188
  */
@@ -178,6 +197,9 @@ export type Config<C extends ConfigProps = never> = {
178
197
  *
179
198
  */
180
199
  domainCanonical?: string;
200
+
201
+ // shared workspace Builds
202
+ builds?: Record<string, WorkspaceBuildConfig>;
181
203
  /**
182
204
  * components (sub apps)
183
205
  */
@@ -189,4 +211,9 @@ export type Config<C extends ConfigProps = never> = {
189
211
  meta?: {
190
212
  labels?: Record<string, string>;
191
213
  };
214
+
215
+ /**
216
+ * additional vars only for the runner in all jobs.
217
+ */
218
+ runnerVariables?: Record<string, string>;
192
219
  };
@@ -1,18 +1,35 @@
1
- import type { SecretEnvVar } from "../context";
1
+ import type { StringOrBashExpression } from "../bash/BashExpression";
2
+ import type {
3
+ BuildConfigFromWorkspace,
4
+ BuildConfigStandalone,
5
+ WorkspaceBuildConfig,
6
+ } from "../build";
7
+ import type { PredefinedVariables, SecretEnvVar } from "../context";
8
+ import type { DeployConfig } from "../deploy";
9
+ import type { VariableValue } from "../variables/VariableValue";
2
10
  import type {
3
- PipelineTrigger,
4
11
  ComponentConfig,
5
12
  Config,
6
13
  EnvType,
14
+ PipelineTrigger,
7
15
  } from "./config";
16
+ import type { BaseStage, CatladderJob } from "./jobs";
17
+ import type { PipelineType } from "./pipeline";
18
+
19
+ export type UnspecifiedEnvVars = Record<
20
+ string,
21
+ VariableValue | undefined | null
22
+ >;
8
23
 
9
- export type EnvironmentEnvVars = {
10
- envVars: Record<string, string>;
24
+ export type EnvironmentEnvVars<
25
+ V extends UnspecifiedEnvVars = UnspecifiedEnvVars,
26
+ > = {
27
+ envVars: V & UnspecifiedEnvVars;
11
28
  secretEnvVarKeys: SecretEnvVar[];
12
29
  };
13
30
  export type EnvironmentEnvVarPart = {
14
- host: string;
15
- url: string;
31
+ host: StringOrBashExpression;
32
+ url: StringOrBashExpression;
16
33
 
17
34
  /**
18
35
  * vars that only are injected in certain jobs, but not elsewhere
@@ -21,64 +38,175 @@ export type EnvironmentEnvVarPart = {
21
38
  deploy: EnvironmentEnvVars;
22
39
  build: EnvironmentEnvVars;
23
40
  };
24
- } & EnvironmentEnvVars;
41
+ } & EnvironmentEnvVars<PredefinedVariables>;
42
+ // FIXME: align with EnvironmentContext
25
43
  export type Environment = {
26
- host: string;
27
- url: string;
44
+ host: StringOrBashExpression;
45
+ url: StringOrBashExpression;
28
46
  /**
29
47
  * the full name of the app. We use this as RELEASE_NAME in kubernetes and the service name in google cloud run
30
48
  */
31
- fullName: string;
49
+ fullName: StringOrBashExpression;
32
50
 
33
- gitlabEnvironment: {
34
- name: string;
35
- url: string;
36
- };
37
- shortName: string;
38
- slugPrefix: string;
39
- slug: string;
51
+ /**
52
+ * the environment slug without component name.
53
+ */
54
+ slugPrefix: StringOrBashExpression;
55
+ /**
56
+ * the review slug, if it is a review app, null otherwise
57
+ */
58
+ reviewSlug: StringOrBashExpression | null;
59
+ /**
60
+ * the full environment slug, including the componentName
61
+ */
62
+ slug: StringOrBashExpression;
40
63
 
41
64
  envType: EnvType;
42
65
  } & EnvironmentEnvVarPart;
43
66
 
44
- export type CommitInfo = {
45
- refName: string;
46
- reviewSlug: string;
47
- buildTime: string;
48
- buildId: string;
49
- trigger: PipelineTrigger;
50
- currentVersion: string;
51
- };
52
-
53
- type Workspace = {
67
+ export type YarnWorkspace = {
54
68
  name: string;
55
69
  location: string;
56
70
  workspaceDependencies: string[];
57
71
  mismatchedWorkspaceDependencies: string[];
58
72
  };
59
- export type YarnPackageManagerInfo = {
73
+ export type YarnPackageManagerInfoBase = {
60
74
  type: "yarn";
61
75
  version: string;
62
- workspaces: Workspace[];
63
- currentWorkspace?: Workspace;
76
+ workspaces: YarnWorkspace[];
64
77
  isClassic: boolean;
78
+ };
79
+
80
+ export type YarnPackageManagerInfoComponent = YarnPackageManagerInfoBase & {
81
+ currentWorkspace?: YarnWorkspace;
65
82
  componentIsInWorkspace: boolean;
66
83
  pathsToCopyInDocker: string[];
84
+ currentWorkspaceDependencies: string[];
67
85
  };
68
86
 
69
- export type PackageManagerInfo = YarnPackageManagerInfo;
87
+ export type PackageManagerInfoComponent = YarnPackageManagerInfoComponent;
88
+
89
+ /**
90
+ * not confuse with yarn workspaces
91
+ */
92
+ export type PackageManagerInfoBase = YarnPackageManagerInfoBase;
70
93
 
71
94
  export type ContextBeforeConfig = {
72
95
  componentName: string;
73
96
  fullConfig: Config;
74
- commitInfo?: CommitInfo;
75
- packageManagerInfo?: PackageManagerInfo;
97
+ packageManagerInfo?: PackageManagerInfoComponent;
76
98
  };
77
- export type Context = {
78
- componentName: string;
99
+
100
+ export type BuildContextBase = {
101
+ /**
102
+ * the directory where the component or workspace is located
103
+ */
104
+ dir: string;
105
+ /**
106
+ * directories of all components that are part of the build.
107
+ * In case of a standalone build, this is just the dir of the component + yarn workspace dependencies (if mode = all)
108
+ *
109
+ * in case of a workspace this contains all components in the workspace (+ yarn workspace dependencies if mode = all)
110
+ */
111
+ getComponentDirs: (mode: "direct" | "all") => string[];
112
+ };
113
+
114
+ export type BuildContextComponentBase = BuildContextBase;
115
+
116
+ export type BuildContextStandalone<
117
+ C extends BuildConfigStandalone = BuildConfigStandalone,
118
+ > = BuildContextComponentBase & {
119
+ config: C;
120
+ type: "standalone";
121
+ buildType: C["type"];
122
+ };
123
+
124
+ export type BuildContextFromWorkspace = BuildContextComponentBase & {
125
+ config: BuildConfigFromWorkspace;
126
+ workspaceName: string;
127
+ buildType: WorkspaceBuildConfig["type"];
128
+ /**
129
+ * merged docker config
130
+ */
131
+ workspaceBuildConfig: WorkspaceBuildConfig;
132
+ type: "fromWorkspace";
133
+ };
134
+
135
+ export type BuildContextWorkspace = BuildContextBase & {
136
+ type: "workspace";
137
+ buildType: WorkspaceBuildConfig["type"];
138
+ config: WorkspaceBuildConfig;
139
+ };
140
+
141
+ export type BuildContextComponent =
142
+ | BuildContextStandalone
143
+ | BuildContextFromWorkspace;
144
+
145
+ export type BuildContext = BuildContextComponent | BuildContextWorkspace;
146
+
147
+ export type DeployContext = {
148
+ config: DeployConfig;
149
+ };
150
+ export type ComponentContext<
151
+ BC extends BuildContextComponent = BuildContextComponent,
152
+ > = {
153
+ type: "component";
154
+ env: string;
155
+ /**
156
+ * the name of the component
157
+ */
158
+ name: string;
159
+
160
+ /**
161
+ * the merged component config.
162
+ *
163
+ * use build.config and deploy.config instead if you need something from there
164
+ *
165
+ */
79
166
  componentConfig: ComponentConfig;
167
+ build: BC;
168
+ deploy?: DeployContext | null;
80
169
  fullConfig: Config;
81
170
  environment: Environment;
82
- commitInfo?: CommitInfo;
83
- packageManagerInfo?: PackageManagerInfo;
171
+
172
+ trigger?: PipelineTrigger;
173
+ pipelineType?: PipelineType;
174
+
175
+ packageManagerInfo: PackageManagerInfoComponent;
176
+
177
+ customJobs?: CatladderJob[];
178
+ };
179
+
180
+ export type Context = ComponentContext | WorkspaceContext;
181
+
182
+ export type CatladderJobWithContext<S = BaseStage> = CatladderJob<S> & {
183
+ context: ComponentContext;
184
+ };
185
+
186
+ export const componentContextIsStandaloneBuild = (
187
+ context: ComponentContext<BuildContextComponent>,
188
+ ): context is ComponentContext<BuildContextStandalone> => {
189
+ return context.build.type === "standalone";
190
+ };
191
+
192
+ export const componentContextHasWorkspaceBuild = (
193
+ context: ComponentContext<BuildContextComponent>,
194
+ ): context is ComponentContext<BuildContextFromWorkspace> => {
195
+ return context.build.type === "fromWorkspace";
196
+ };
197
+
198
+ export type WorkspaceContext = {
199
+ type: "workspace";
200
+ /**
201
+ * the name of the workspace
202
+ */
203
+ name: string;
204
+ fullConfig: Config;
205
+ workspaceConfig: WorkspaceBuildConfig;
206
+ packageManagerInfo: PackageManagerInfoBase;
207
+ components: Array<ComponentContext>;
208
+ build: BuildContextWorkspace;
209
+ trigger: PipelineTrigger;
210
+ pipelineType: PipelineType;
211
+ env: string;
84
212
  };
@@ -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,