@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,26 +1,29 @@
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";
4
+ import type {
5
+ Config,
6
+ PackageManagerInfoBase,
7
+ PackageManagerInfoComponent,
8
+ } from "../types";
5
9
  import {
6
10
  getWorkspaces,
7
11
  getYarnVersion,
8
12
  getWorkspaceDependencies,
9
13
  } from "./yarn/yarnUtils";
14
+ import memoizee from "memoizee";
10
15
 
11
- export const getPackageManagerInfo = async (
16
+ export const getPackageManagerInfoForComponent = async (
12
17
  config: Config,
13
- componentName: string
14
- ): Promise<PackageManagerInfo> => {
18
+ componentName: string,
19
+ ): Promise<PackageManagerInfoComponent> => {
20
+ const baseInfo = await getPackageManagerInfoBase();
21
+ const { workspaces } = baseInfo;
15
22
  // currently only supports yarn
16
- const version = await getYarnVersion();
17
- if (!version) throw new Error("could not get yarn version");
18
- const isClassic = version.startsWith("1");
19
23
 
20
24
  const component = config.components[componentName];
21
- const workspaces = await getWorkspaces(isClassic);
22
25
  const currentWorkspace = workspaces.find((w) =>
23
- pathEqual(component.dir, w.location)
26
+ pathEqual(component.dir, w.location),
24
27
  );
25
28
  const componentIsInWorkspace = Boolean(currentWorkspace);
26
29
  const workspaceRoot = "."; // currently we assume the root folder, later on we might support nested workspaces
@@ -47,20 +50,41 @@ export const getPackageManagerInfo = async (
47
50
  : [];
48
51
 
49
52
  const pathsToCopyInDocker = [
50
- packageJson,
51
- ...(workspacePackageJson ? [workspacePackageJson] : []),
52
- lockFile,
53
- ...configFilePaths,
54
- ...currentWorkspaceDependencies,
53
+ ...new Set([
54
+ packageJson,
55
+ ...(workspacePackageJson ? [workspacePackageJson] : []),
56
+ lockFile,
57
+ ...configFilePaths,
58
+ ...currentWorkspaceDependencies,
59
+ ]),
55
60
  ];
56
61
  return {
57
- type: "yarn",
58
- workspaces,
59
- version,
60
- isClassic,
62
+ ...baseInfo,
61
63
  currentWorkspace,
62
64
  currentWorkspaceDependencies,
63
65
  componentIsInWorkspace,
64
66
  pathsToCopyInDocker,
65
67
  };
66
68
  };
69
+
70
+ const _getPackageManagerInfoBase =
71
+ async (): Promise<PackageManagerInfoBase> => {
72
+ // currently only supports yarn
73
+
74
+ const version = await getYarnVersion();
75
+ if (!version) throw new Error("could not get yarn version");
76
+ const isClassic = version.startsWith("1");
77
+
78
+ const workspaces = await getWorkspaces(isClassic);
79
+
80
+ return {
81
+ type: "yarn",
82
+ workspaces,
83
+ version,
84
+ isClassic,
85
+ };
86
+ };
87
+
88
+ export const getPackageManagerInfoBase = memoizee(_getPackageManagerInfoBase, {
89
+ promise: true,
90
+ });
@@ -1,6 +1,7 @@
1
1
  import { exec } from "child-process-promise";
2
2
  import memoizee from "memoizee";
3
- import type { PackageManagerInfo, YarnWorkspace } 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,32 +15,34 @@ 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
  );
38
41
 
39
42
  // recursivly get all workspace dependencies
40
43
  export const getWorkspaceDependencies = (
41
44
  ws: YarnWorkspace,
42
- allWorkspaces: YarnWorkspace[]
45
+ allWorkspaces: YarnWorkspace[],
43
46
  ): string[] => {
44
47
  return ws
45
48
  ? ([...ws.workspaceDependencies, ...ws.mismatchedWorkspaceDependencies]
@@ -47,7 +50,7 @@ export const getWorkspaceDependencies = (
47
50
  // we have to do this recursivly
48
51
 
49
52
  const otherWorkspace = allWorkspaces.find(
50
- (w) => w.location === location
53
+ (w) => w.location === location,
51
54
  );
52
55
 
53
56
  if (otherWorkspace) {
@@ -1,33 +1,43 @@
1
1
  import type { GitlabRule } from "../types";
2
+ export const RULE_CONDITION_MAIN_BRANCH =
3
+ "$CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH";
4
+
5
+ export const RULE_CONDITION_RELEASE_COMMIT =
6
+ "$CI_COMMIT_MESSAGE =~ /^chore\\(release\\).*/";
2
7
 
8
+ export const RULE_CONDITION_NOT_RELEASE_COMMIT =
9
+ "$CI_COMMIT_MESSAGE !~ /^chore\\(release\\).*/";
10
+
11
+ export const RULE_IS_MAIN_BRANCH: GitlabRule = {
12
+ if: RULE_CONDITION_MAIN_BRANCH,
13
+ };
14
+ export const RULE_IS_MAIN_BRANCH_AND_NOT_RELEASE_COMMIT: GitlabRule = {
15
+ if: RULE_CONDITION_MAIN_BRANCH + " && " + RULE_CONDITION_NOT_RELEASE_COMMIT,
16
+ };
3
17
  export const RULE_NEVER_ON_RELEASE_COMMIT: GitlabRule = {
4
- if: "$CI_COMMIT_MESSAGE =~ /^chore\\(release\\).*/",
18
+ if: RULE_CONDITION_RELEASE_COMMIT,
5
19
  when: "never",
6
20
  };
7
- export const RULES_ALWAYS: GitlabRule[] = [
8
- {
9
- if: "$CI_COMMIT_TAG",
10
- },
11
- RULE_NEVER_ON_RELEASE_COMMIT,
12
- {
13
- if: "$CI_COMMIT_BRANCH =~ /^[0-9]+.([0-9]+|x).x$/",
14
- },
15
- {
16
- if: "$CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH",
17
- },
18
- {
19
- if: "$CI_MERGE_REQUEST_ID",
20
- },
21
- ];
22
21
 
23
- export const RULE_CONDITION_MAIN_BRANCH =
24
- "$CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH";
22
+ export const RULE_NEVER_ON_SCHEDULE: GitlabRule = {
23
+ if: '$CI_PIPELINE_SOURCE == "schedule"',
24
+ when: "never",
25
+ };
26
+
27
+ export const RULE_IS_MERGE_REQUEST: GitlabRule = {
28
+ if: "$CI_MERGE_REQUEST_ID",
29
+ };
30
+
31
+ export const RULE_IS_TAGGED_RELEASE: GitlabRule = {
32
+ if: "$CI_COMMIT_TAG",
33
+ };
25
34
 
26
35
  export const RULE_CONDITION_HOTFIX_BRANCH =
27
36
  "$CI_COMMIT_BRANCH =~ /^[0-9]+.([0-9]+|x).x$/";
28
37
 
29
38
  export const RULES_RELEASE: GitlabRule[] = [
30
39
  RULE_NEVER_ON_RELEASE_COMMIT,
40
+ RULE_NEVER_ON_SCHEDULE,
31
41
  {
32
42
  if: RULE_CONDITION_MAIN_BRANCH + ' && $AUTO_RELEASE == "true"',
33
43
  when: "on_success",
@@ -41,3 +51,16 @@ export const RULES_RELEASE: GitlabRule[] = [
41
51
  when: "manual",
42
52
  },
43
53
  ];
54
+
55
+ export const RULES_MANUAL_RELEASE: GitlabRule[] = [
56
+ RULE_NEVER_ON_RELEASE_COMMIT,
57
+ RULE_NEVER_ON_SCHEDULE,
58
+ {
59
+ if: RULE_CONDITION_MAIN_BRANCH,
60
+ when: "manual",
61
+ },
62
+ {
63
+ if: RULE_CONDITION_HOTFIX_BRANCH,
64
+ when: "manual",
65
+ },
66
+ ];
@@ -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 = {
@@ -83,7 +83,7 @@ export type DefaultEnvConfig = {
83
83
  /**
84
84
  * how the app is built and its runtime
85
85
  */
86
- build: BuildConfig;
86
+ build: BuildConfig | false;
87
87
  /**
88
88
  * environment variables
89
89
  */
@@ -94,6 +94,18 @@ export type DevLocalEnvConfig = {
94
94
  vars?: EnvVars;
95
95
  port?: number;
96
96
  };
97
+ type AddOverrideFunction<T> = {
98
+ [K in keyof T]:
99
+ | T[K] // either accept the value
100
+ | ((defaultValue: T[K]) => T[K]) // or function that returns the value
101
+ | (T[K] extends Record<string, unknown> | undefined // unknown is important, see https://stackoverflow.com/questions/71422178/typescript-record-accepts-array-why
102
+ ? AddOverrideFunction<T[K]>
103
+ : never); // or a nested object
104
+ };
105
+
106
+ type EnvConfigWithOverride<E extends EnvType = EnvType> = AddOverrideFunction<
107
+ EnvConfig<E>
108
+ >;
97
109
  export type EnvConfig<E extends EnvType = EnvType> = {
98
110
  /**
99
111
  * type of the env (stage, prod, review, dev)
@@ -107,19 +119,19 @@ export type EnvConfig<E extends EnvType = EnvType> = {
107
119
 
108
120
  export type EnvConfigWithComponent = EnvConfig<EnvType> & ComponentConfig;
109
121
 
110
- export type CustomEnv = EnvConfig & {
122
+ export type CustomEnv = EnvConfigWithOverride & {
111
123
  type: EnvType;
112
124
  };
113
125
  export type Env<C extends ConfigProps = never> = {
114
126
  /**
115
127
  * local is a special env that is only used in local development
116
128
  */
117
- local?: DevLocalEnvConfig;
129
+ local?: AddOverrideFunction<DevLocalEnvConfig>;
118
130
 
119
- dev?: EnvConfig<"dev"> | false;
120
- stage?: EnvConfig<"stage"> | false;
121
- review?: EnvConfig<"review"> | false;
122
- prod?: EnvConfig<"prod"> | false;
131
+ dev?: EnvConfigWithOverride<"dev"> | false;
132
+ stage?: EnvConfigWithOverride<"stage"> | false;
133
+ review?: EnvConfigWithOverride<"review"> | false;
134
+ prod?: EnvConfigWithOverride<"prod"> | false;
123
135
  // unfortunatly, typescript does not properly support objects with a mix of known and unknown properties.
124
136
  // for backwards compatiblity we allow unknown props, but we cannot type it (typescript problem)
125
137
  // however, we now support providing custom envs through a generic parameter of `Config`
@@ -143,18 +155,32 @@ export type ComponentConfig<C extends ConfigProps = never> = {
143
155
  * to let us know about why you need to use custom jobs.
144
156
  * This feedback will help us to generalize use cases
145
157
  */
146
- customJobs?: CatladderJob[] | ((context: Context) => CatladderJob[]);
158
+ customJobs?:
159
+ | CatladderJob[]
160
+ | ((context: Omit<ComponentContext, "customJobs">) => CatladderJob[]);
147
161
 
148
162
  /**
149
- * experimental. whether to create a .env localy and during build jobs
163
+ * whether to create a .env
150
164
  *
151
165
  * Be careful, this will overwrite any existing .env file!
166
+ *
167
+ * if set to true it will create .env locally and during build.
168
+ * Be careful: the .env file usually ends up in the build artifacts.
169
+ * Use this for apps and clients where env does not contain any secrets
170
+ *
171
+ *
172
+ * if set to "local" it will only create .env file locally.
173
+ * Use this in combination with @dotenvx/dotenvx or node 20 to start apps locally with .env files
174
+ * During build and runtime, it relies on the env vars set in the environment
175
+ *
176
+ * @defaultValue true
177
+ *
152
178
  */
153
- dotEnv?: boolean;
179
+ dotEnv?: boolean | "local";
154
180
  /**
155
- * experimental. whether to create a env.d.ts localy and during build jobs
181
+ * whether to create a env.d.ts localy and during build jobs
156
182
  *
157
- * Be careful, this will overwrite any existing env.d.ts file!
183
+ * @defaultValue true
158
184
  */
159
185
  envDTs?: boolean;
160
186
  } & DefaultEnvConfig;
@@ -164,6 +190,11 @@ export type ConfigProps = {
164
190
  };
165
191
 
166
192
  export type Config<C extends ConfigProps = never> = {
193
+ /**
194
+ * the pipeline type to generate, defaults to gitlab
195
+ */
196
+ pipelineType?: PipelineType;
197
+
167
198
  /**
168
199
  * name of the customer or group
169
200
  */
@@ -178,6 +209,9 @@ export type Config<C extends ConfigProps = never> = {
178
209
  *
179
210
  */
180
211
  domainCanonical?: string;
212
+
213
+ // shared workspace Builds
214
+ builds?: Record<string, WorkspaceBuildConfig>;
181
215
  /**
182
216
  * components (sub apps)
183
217
  */
@@ -189,4 +223,9 @@ export type Config<C extends ConfigProps = never> = {
189
223
  meta?: {
190
224
  labels?: Record<string, string>;
191
225
  };
226
+
227
+ /**
228
+ * additional vars only for the runner in all jobs.
229
+ */
230
+ runnerVariables?: Record<string, string>;
192
231
  };
@@ -1,19 +1,33 @@
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";
8
18
 
9
- export type EnvironmentEnvVars = {
10
- envVars: Record<string, string>;
19
+ export type UnspecifiedEnvVars = Record<
20
+ string,
21
+ VariableValue | undefined | null
22
+ >;
23
+
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;
16
-
17
31
  /**
18
32
  * vars that only are injected in certain jobs, but not elsewhere
19
33
  */
@@ -21,65 +35,182 @@ export type EnvironmentEnvVarPart = {
21
35
  deploy: EnvironmentEnvVars;
22
36
  build: EnvironmentEnvVars;
23
37
  };
24
- } & EnvironmentEnvVars;
38
+ } & EnvironmentEnvVars<PredefinedVariables>;
39
+ // FIXME: align with EnvironmentContext
25
40
  export type Environment = {
26
- host: string;
27
- url: string;
28
41
  /**
29
42
  * the full name of the app. We use this as RELEASE_NAME in kubernetes and the service name in google cloud run
30
43
  */
31
- fullName: string;
44
+ fullName: StringOrBashExpression;
32
45
 
33
- gitlabEnvironment: {
34
- name: string;
35
- url: string;
36
- };
37
- shortName: string;
38
- slugPrefix: string;
39
- slug: string;
46
+ /**
47
+ * the environment slug without component name.
48
+ */
49
+ slugPrefix: StringOrBashExpression;
50
+ /**
51
+ * the review slug, if it is a review app, null otherwise
52
+ */
53
+ reviewSlug: StringOrBashExpression | null;
54
+ /**
55
+ * the full environment slug, including the componentName
56
+ */
57
+ slug: StringOrBashExpression;
40
58
 
41
59
  envType: EnvType;
42
60
  } & EnvironmentEnvVarPart;
43
61
 
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
62
  export type YarnWorkspace = {
54
63
  name: string;
55
64
  location: string;
56
65
  workspaceDependencies: string[];
57
66
  mismatchedWorkspaceDependencies: string[];
58
67
  };
59
- export type YarnPackageManagerInfo = {
68
+ export type YarnPackageManagerInfoBase = {
60
69
  type: "yarn";
61
70
  version: string;
62
71
  workspaces: YarnWorkspace[];
63
- currentWorkspace?: YarnWorkspace;
64
72
  isClassic: boolean;
73
+ };
74
+
75
+ export type YarnPackageManagerInfoComponent = YarnPackageManagerInfoBase & {
76
+ currentWorkspace?: YarnWorkspace;
65
77
  componentIsInWorkspace: boolean;
66
78
  pathsToCopyInDocker: string[];
67
79
  currentWorkspaceDependencies: string[];
68
80
  };
69
81
 
70
- export type PackageManagerInfo = YarnPackageManagerInfo;
82
+ export type PackageManagerInfoComponent = YarnPackageManagerInfoComponent;
83
+
84
+ /**
85
+ * not confuse with yarn workspaces
86
+ */
87
+ export type PackageManagerInfoBase = YarnPackageManagerInfoBase;
71
88
 
72
89
  export type ContextBeforeConfig = {
73
90
  componentName: string;
74
91
  fullConfig: Config;
75
- commitInfo?: CommitInfo;
76
- packageManagerInfo?: PackageManagerInfo;
92
+ packageManagerInfo?: PackageManagerInfoComponent;
77
93
  };
78
- export type Context = {
79
- componentName: string;
94
+
95
+ export type BuildContextBase = {
96
+ /**
97
+ * the directory where the component or workspace is located
98
+ */
99
+ dir: string;
100
+ /**
101
+ * directories of all components that are part of the build.
102
+ * In case of a standalone build, this is just the dir of the component + yarn workspace dependencies (if mode = all)
103
+ *
104
+ * in case of a workspace this contains all components in the workspace (+ yarn workspace dependencies if mode = all)
105
+ */
106
+ getComponentDirs: (mode: "direct" | "all") => string[];
107
+ };
108
+
109
+ export type BuildContextComponentBase = BuildContextBase;
110
+
111
+ export type BuildContextStandalone<
112
+ C extends BuildConfigStandalone = BuildConfigStandalone,
113
+ > = BuildContextComponentBase & {
114
+ config: C;
115
+ type: "standalone";
116
+ buildType: C["type"];
117
+ };
118
+
119
+ export type BuildContextDisabled = BuildContextComponentBase & {
120
+ type: "disabled";
121
+ };
122
+ export type BuildContextFromWorkspace = BuildContextComponentBase & {
123
+ config: BuildConfigFromWorkspace;
124
+ workspaceName: string;
125
+ buildType: WorkspaceBuildConfig["type"];
126
+ /**
127
+ * merged docker config
128
+ */
129
+ workspaceBuildConfig: WorkspaceBuildConfig;
130
+ type: "fromWorkspace";
131
+ };
132
+
133
+ export type BuildContextWorkspace = BuildContextBase & {
134
+ type: "workspace";
135
+ buildType: WorkspaceBuildConfig["type"];
136
+ config: WorkspaceBuildConfig;
137
+ };
138
+
139
+ export type BuildContextWithBuild =
140
+ | BuildContextStandalone
141
+ | BuildContextFromWorkspace;
142
+
143
+ export type BuildContextComponent =
144
+ | BuildContextWithBuild
145
+ | BuildContextDisabled;
146
+
147
+ export type BuildContext = BuildContextComponent | BuildContextWorkspace;
148
+
149
+ export type DeployContext = {
150
+ config: DeployConfig;
151
+ };
152
+ export type ComponentContext<
153
+ BC extends BuildContextComponent = BuildContextComponent,
154
+ > = {
155
+ type: "component";
156
+ env: string;
157
+ /**
158
+ * the name of the component
159
+ */
160
+ name: string;
161
+
162
+ /**
163
+ * the merged component config.
164
+ *
165
+ * use build.config and deploy.config instead if you need something from there
166
+ *
167
+ */
80
168
  componentConfig: ComponentConfig;
169
+ build: BC;
170
+ deploy?: DeployContext | null;
81
171
  fullConfig: Config;
82
172
  environment: Environment;
83
- commitInfo?: CommitInfo;
84
- packageManagerInfo?: PackageManagerInfo;
173
+
174
+ trigger?: PipelineTrigger;
175
+ pipelineType?: PipelineType;
176
+
177
+ packageManagerInfo: PackageManagerInfoComponent;
178
+
179
+ customJobs?: CatladderJob[];
180
+ };
181
+
182
+ export type ComponentContextWithBuild = ComponentContext<BuildContextWithBuild>;
183
+
184
+ export type Context = ComponentContext | WorkspaceContext;
185
+
186
+ export type CatladderJobWithContext<S = BaseStage> = CatladderJob<S> & {
187
+ context: ComponentContext;
188
+ };
189
+
190
+ export const componentContextIsStandaloneBuild = (
191
+ context: ComponentContext<BuildContextComponent>,
192
+ ): context is ComponentContext<BuildContextStandalone> => {
193
+ return context.build.type === "standalone";
194
+ };
195
+
196
+ export const componentContextHasWorkspaceBuild = (
197
+ context: ComponentContext<BuildContextComponent>,
198
+ ): context is ComponentContext<BuildContextFromWorkspace> => {
199
+ return context.build.type === "fromWorkspace";
200
+ };
201
+
202
+ export type WorkspaceContext = {
203
+ type: "workspace";
204
+ /**
205
+ * the name of the workspace
206
+ */
207
+ name: string;
208
+ fullConfig: Config;
209
+ workspaceConfig: WorkspaceBuildConfig;
210
+ packageManagerInfo: PackageManagerInfoBase;
211
+ components: Array<ComponentContext>;
212
+ build: BuildContextWorkspace;
213
+ trigger: PipelineTrigger;
214
+ pipelineType: PipelineType;
215
+ env: string;
85
216
  };