@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,7 +1,42 @@
1
1
  import type { Artifacts, EnvVars, GitlabJobImage } from "../types";
2
2
  import type { Services } from "../types/gitlab-ci-yml";
3
3
 
4
- import type { CatladderJob } from "../types/jobs";
4
+ import type { CatladderJob, CatladderJobCache } from "../types/jobs";
5
+
6
+ export type CacheConfigAdvanced = Omit<CatladderJobCache, "paths" | "key"> & {
7
+ /**
8
+ * if you set a key, the cache is scoped to the key. Be aware that there is a limit in gitlab of 4 caches.
9
+ *
10
+ * see https://gitlab.com/gitlab-org/gitlab/-/issues/421962
11
+ */
12
+ key: Required<CatladderJobCache>["key"];
13
+
14
+ /**
15
+ * whether the cache is scoped to the context (component or workspace) or the build directory.
16
+ *
17
+ * defaults to context
18
+ */
19
+ scope?: "context" | "buildDir" | "global";
20
+ } & CacheConfigSimple;
21
+
22
+ export type CacheConfigSimple = {
23
+ /**
24
+ * paths to cache. All Paths are relative to the context dir.
25
+ */
26
+ paths: string[];
27
+
28
+ /**
29
+ * whether paths are relative to the base dir. defaults to relative.
30
+ */
31
+ pathMode?: "relative" | "absolute";
32
+
33
+ /**
34
+ * custom base dir
35
+ */
36
+ baseDir?: string;
37
+ };
38
+
39
+ export type CacheConfig = CacheConfigSimple | CacheConfigAdvanced;
5
40
 
6
41
  export type BuildConfigArtifactsReports = {
7
42
  /**
@@ -13,6 +48,20 @@ export type BuildConfigArtifactsReports = {
13
48
  junit?: string[];
14
49
  };
15
50
 
51
+ export type WithCacheConfig = {
52
+ /*
53
+ cache config. All Paths are relative to the context dir.
54
+ */
55
+ cache?: CacheConfig | CacheConfig[];
56
+
57
+ /**
58
+ * customize cache for the job
59
+ *
60
+ * @deprecated use cache
61
+ */
62
+ jobCache?: CatladderJob["cache"];
63
+ };
64
+
16
65
  export type TestJobCustom = {
17
66
  command?: string | string[];
18
67
  jobImage?: GitlabJobImage;
@@ -40,39 +89,18 @@ export type BuildConfigBase = {
40
89
  * Can curently not reference other variables from other components
41
90
  */
42
91
  jobVars?: EnvVars;
92
+
43
93
  /**
44
- * additional env vars for the buid jobs
94
+ * additional vars only for the runner.
95
+ * Also if you use services: that require env vars, you need to set them here.
45
96
  *
46
- * @deprecated use jobVars
47
97
  */
48
- extraVars?: Record<string, string>;
98
+ runnerVariables?: Record<string, string>;
49
99
  /**
50
100
  * define the build command
51
101
  */
52
102
  buildCommand?: string | string[] | null;
53
103
 
54
- /**
55
- * customize docker build
56
- */
57
- docker?: {
58
- /**
59
- * Custom Dockerfile lines integrated in the generated Dockerfile before the standard build steps.
60
- *
61
- * - [runner-images/docker-build/scripts/ensureNodeDockerfile](https://git.panter.ch/catladder/catladder/-/tree/main/runner-images/docker-build/scripts/ensureNodeDockerfile)
62
- * - [runner-images/docker-build/scripts/ensureNginxDockerfile](https://git.panter.ch/catladder/catladder/-/tree/main/runner-images/docker-build/scripts/ensureNginxDockerfile)
63
- * - [runner-images/docker-build/scripts/ensureMeteorDockerfile](https://git.panter.ch/catladder/catladder/-/tree/main/runner-images/docker-build/scripts/ensureMeteorDockerfile)
64
- */
65
- additionsBegin?: string[];
66
- /**
67
- * Custom Dockerfile lines integrated in the generated Dockerfile after the standard build steps.
68
- *
69
- * - [runner-images/docker-build/scripts/ensureNodeDockerfile](https://git.panter.ch/catladder/catladder/-/tree/main/runner-images/docker-build/scripts/ensureNodeDockerfile)
70
- * - [runner-images/docker-build/scripts/ensureNginxDockerfile](https://git.panter.ch/catladder/catladder/-/tree/main/runner-images/docker-build/scripts/ensureNginxDockerfile)
71
- * - [runner-images/docker-build/scripts/ensureMeteorDockerfile](https://git.panter.ch/catladder/catladder/-/tree/main/runner-images/docker-build/scripts/ensureMeteorDockerfile)
72
- */
73
- additionsEnd?: string[];
74
- };
75
-
76
104
  /**
77
105
  * customize lint, set false to disable
78
106
  */
@@ -102,6 +130,8 @@ export type BuildConfigBase = {
102
130
 
103
131
  /**
104
132
  * customize cache for the job
133
+ *
134
+ * @deprecated use cache
105
135
  */
106
136
  jobCache?: CatladderJob["cache"];
107
137
 
@@ -113,7 +143,7 @@ export type BuildConfigBase = {
113
143
  * custom image to use
114
144
  */
115
145
  jobImage?: GitlabJobImage;
116
- };
146
+ } & WithCacheConfig;
117
147
 
118
148
  export type BuildConfigNodeBase = BuildConfigBase & {
119
149
  /**
@@ -125,11 +155,16 @@ export type BuildConfigNodeBase = BuildConfigBase & {
125
155
 
126
156
  export type BuildConfigNode = {
127
157
  type: "node";
158
+ docker?: Omit<BuildConfigDockerBuiltInNode, "type"> | BuildConfigDocker;
128
159
  } & BuildConfigNodeBase;
129
160
 
130
161
  export type BuildConfigNodeStatic = BuildConfigNodeBase & {
162
+ /**
163
+ * @deprecated use type: "node" and docker: { type: "nginx" } instead
164
+ */
131
165
  type: "node-static";
132
166
  startCommand?: never;
167
+ docker?: Omit<BuildConfigDockerBuiltInNgninx, "type"> | BuildConfigDocker;
133
168
  };
134
169
 
135
170
  export type BuildConfigMeteor = BuildConfigNodeBase & {
@@ -139,23 +174,64 @@ export type BuildConfigMeteor = BuildConfigNodeBase & {
139
174
  * This is only required if you have custom scripts in your image
140
175
  */
141
176
  installScripts?: boolean;
177
+ docker?: Omit<BuildConfigDockerBuiltInMeteor, "type"> | BuildConfigDocker;
142
178
  };
143
179
 
144
- export type BuildConfigCustomDocker = BuildConfigBase["docker"] &
145
- (
146
- | {
147
- /**
148
- * use the built-in nginx image for simple static apps
149
- */
150
- type: "nginx";
151
- }
152
- | {
153
- /**
154
- * custom docker build, expect that a Dockerfile in your directory
155
- */
156
- type: "custom";
157
- }
158
- );
180
+ export type BuildConfigNodeLike =
181
+ | BuildConfigNode
182
+ | BuildConfigNodeStatic
183
+ | BuildConfigStorybook
184
+ | BuildConfigMeteor;
185
+
186
+ type BuildConfigDockerWithAdditions = {
187
+ /**
188
+ * Custom Dockerfile lines integrated in the generated Dockerfile before the standard build steps.
189
+ *
190
+ */
191
+ additionsBegin?: string[];
192
+ /**
193
+ * Custom Dockerfile lines integrated in the generated Dockerfile after the standard build steps.
194
+ *
195
+ */
196
+ additionsEnd?: string[];
197
+ };
198
+
199
+ type BuildConfigDockerBuiltInNode = {
200
+ type: "node";
201
+ } & BuildConfigDockerWithAdditions;
202
+
203
+ type BuildConfigDockerBuiltInMeteor = {
204
+ type: "meteor";
205
+ } & BuildConfigDockerWithAdditions;
206
+
207
+ type BuildConfigDockerBuiltInNgninx = {
208
+ /**
209
+ * use the built-in nginx image for simple static apps
210
+ */
211
+ type: "nginx";
212
+ } & BuildConfigDockerWithAdditions;
213
+ type BuildConfigDockerBuiltIn =
214
+ | BuildConfigDockerBuiltInNgninx
215
+ | BuildConfigDockerBuiltInNode
216
+ | BuildConfigDockerBuiltInMeteor;
217
+
218
+ type BuildConfigDockerCustom = {
219
+ /**
220
+ * custom docker build, expect that a Dockerfile in your directory
221
+ */
222
+ type: "custom";
223
+
224
+ /**
225
+ * where to run the docker build, defaults to the root of the repo.
226
+ *
227
+ * Depending on your Dockerfile you may want to change it to "component"
228
+ */
229
+ buildContextLocation?: "root" | "component";
230
+ };
231
+
232
+ export type BuildConfigDocker =
233
+ | BuildConfigDockerBuiltIn
234
+ | BuildConfigDockerCustom;
159
235
 
160
236
  export type BuildConfigCustom = Omit<
161
237
  BuildConfigBase,
@@ -168,7 +244,7 @@ export type BuildConfigCustom = Omit<
168
244
  */
169
245
  jobServices?: Services;
170
246
 
171
- docker: BuildConfigCustomDocker;
247
+ docker: BuildConfigDocker;
172
248
 
173
249
  /**
174
250
  * custom lint, disabled when not set
@@ -236,10 +312,24 @@ export type BuildConfigRails = BuildConfigBase & {
236
312
  };
237
313
 
238
314
  export type BuildConfigStorybook = BuildConfigNodeBase & {
315
+ /**
316
+ * @deprecated use type: "node" and docker: { type: "nginx" } instead
317
+ */
239
318
  type: "storybook";
240
319
  startCommand?: never;
241
320
  };
242
- export type BuildConfig =
321
+
322
+ export type BuildConfigFromWorkspace = {
323
+ from: string;
324
+ docker?: BuildConfigDocker;
325
+ startCommand?: string;
326
+ /**
327
+ * additional paths for artifacts,
328
+ * by default "dist" and ".next" are allways included
329
+ */
330
+ artifactsPaths?: string[];
331
+ } & WithCacheConfig;
332
+ export type BuildConfigStandalone =
243
333
  | BuildConfigNode
244
334
  | BuildConfigNodeStatic
245
335
  | BuildConfigStorybook
@@ -247,16 +337,69 @@ export type BuildConfig =
247
337
  | BuildConfigCustom
248
338
  | BuildConfigRails;
249
339
 
250
- export type BuildConfigType = BuildConfig["type"];
340
+ export type BuildConfig = BuildConfigFromWorkspace | BuildConfigStandalone;
341
+
342
+ export type BuildConfigStandaloneType = BuildConfigStandalone["type"];
251
343
 
252
- export type BuildConfigGeneric<T extends BuildConfigType> = Extract<
344
+ export type BuildConfigGeneric<T extends BuildConfigStandaloneType> = Extract<
253
345
  BuildConfig,
254
346
  { type: T }
255
347
  >;
256
348
 
257
- export const isOfBuildType = <T extends Array<BuildConfigType>>(
349
+ export const isStandaloneBuildConfig = (
350
+ t: BuildConfig | false,
351
+ ): t is BuildConfigStandalone => {
352
+ if (!t) return false;
353
+ return !("from" in t);
354
+ };
355
+
356
+ export const isOfBuildType = <T extends Array<BuildConfigStandaloneType>>(
258
357
  t: BuildConfig,
259
358
  ...types: T
260
359
  ): t is Extract<BuildConfig, { type: T[number] }> => {
360
+ if (!isStandaloneBuildConfig(t)) return false;
261
361
  return types.includes(t.type);
262
362
  };
363
+
364
+ export type WorkspaceBuildConfigBase = {
365
+ dir?: string;
366
+ /**
367
+ * customize lint, set false to disable
368
+ */
369
+ lint?: false | TestJobCustom;
370
+
371
+ /**
372
+ * customize test, set false to disable
373
+ */
374
+ test?: false | TestJobCustom;
375
+
376
+ /**
377
+ * customize audit, set false to disable
378
+ */
379
+ audit?: false | TestJobCustom;
380
+ /**
381
+ * additional vars only for the runner.
382
+ * Also if you use services: that require env vars, you need to set them here.
383
+ *
384
+ */
385
+ runnerVariables?: Record<string, string>;
386
+
387
+ /**
388
+ * additional CI/CD artifacts reports,
389
+ * use to display information in merge requests, pipeline views and security dashboards.
390
+ */
391
+ artifactsReports?: BuildConfigArtifactsReports;
392
+
393
+ jobImage?: GitlabJobImage;
394
+ /**
395
+ * tags for the underlying job runner (e.g gitlab)
396
+ */
397
+ jobTags?: string[];
398
+ } & WithCacheConfig;
399
+
400
+ export type WorkspaceBuildConfigNode = {
401
+ type: "node";
402
+ buildCommand?: string | string[];
403
+ } & WorkspaceBuildConfigBase;
404
+
405
+ export type WorkspaceBuildConfig = WorkspaceBuildConfigNode;
@@ -1,59 +1,10 @@
1
- import { writeFileSync } from "fs";
2
- import { dump } from "js-yaml";
3
- import { readConfigSync } from "./config";
4
- import { PIPELINE_IMAGE_TAG } from "./constants";
5
- import { createChildPipeline } from "./pipeline";
6
- import type { PipelineTrigger } from "./types";
1
+ import { readConfig } from "./config";
2
+ import { generatePipelineFiles } from "./pipeline/generatePipelineFiles";
7
3
 
8
- const {
9
- CI_MERGE_REQUEST_ID,
10
- CI_COMMIT_TAG,
11
- CI_COMMIT_BRANCH,
12
- CI_DEFAULT_BRANCH,
13
- } = process.env;
14
-
15
- const isDefaultBranch =
16
- Boolean(CI_DEFAULT_BRANCH) && CI_COMMIT_BRANCH === CI_DEFAULT_BRANCH;
17
- const isHotfixBranch = CI_COMMIT_BRANCH
18
- ? /^[0-9]+\.([0-9]+|x)\.x$/.test(CI_COMMIT_BRANCH)
19
- : false;
20
- const isMergeRequest = Boolean(CI_MERGE_REQUEST_ID);
21
- const isTaggedRelease = Boolean(CI_COMMIT_TAG);
22
-
23
- console.info(`catladder version ${PIPELINE_IMAGE_TAG}`);
24
-
25
- const trigger: PipelineTrigger | null =
26
- isMergeRequest || isHotfixBranch
27
- ? "mr"
28
- : isDefaultBranch
29
- ? "mainBranch"
30
- : isTaggedRelease
31
- ? "taggedRelease"
32
- : null;
33
- if (trigger) {
34
- const config = readConfigSync()?.config;
35
- if (!config) {
4
+ readConfig().then(async (result) => {
5
+ if (!result?.config) {
36
6
  throw new Error("no catladder config found");
37
7
  }
38
- createChildPipeline("gitlab", trigger, config).then(
39
- ({ jobs, ...mainPipeline }) => {
40
- // need to spread out the jobs
41
- writeFileSync(`__pipeline.yml`, dump({ ...jobs, ...mainPipeline }), {
42
- encoding: "utf-8",
43
- });
44
- }
45
- );
46
- } else {
47
- throw new Error(
48
- "no matching trigger: " +
49
- JSON.stringify(
50
- {
51
- isMergeRequest,
52
- isDefaultBranch,
53
- isTaggedRelease,
54
- },
55
- null,
56
- 2
57
- )
58
- );
59
- }
8
+
9
+ await generatePipelineFiles(result.config, "gitlab");
10
+ });
@@ -0,0 +1,31 @@
1
+ // Jest Snapshot v1, https://goo.gl/fbAQLP
2
+
3
+ exports[`getAllEnvs() should return all envs for app1 1`] = `
4
+ [
5
+ "dev",
6
+ "review",
7
+ "stage",
8
+ "prod",
9
+ "local",
10
+ ]
11
+ `;
12
+
13
+ exports[`getAllEnvs() should return all envs for app2 1`] = `
14
+ [
15
+ "dev",
16
+ "review",
17
+ "stage",
18
+ "prod",
19
+ "local",
20
+ "dev2",
21
+ "review2",
22
+ "stage2",
23
+ "prod2",
24
+ ]
25
+ `;
26
+
27
+ exports[`getAllEnvs() should return all envs for app3 1`] = `
28
+ [
29
+ "local",
30
+ ]
31
+ `;
@@ -0,0 +1,15 @@
1
+ // Jest Snapshot v1, https://goo.gl/fbAQLP
2
+
3
+ exports[`getAllEnvsInAllComponents() should return all envs for SIMPLE_CONFIG1 1`] = `
4
+ [
5
+ "dev",
6
+ "review",
7
+ "stage",
8
+ "prod",
9
+ "local",
10
+ "dev2",
11
+ "review2",
12
+ "stage2",
13
+ "prod2",
14
+ ]
15
+ `;
@@ -0,0 +1,71 @@
1
+ import { type DeployConfigKubernetesCluster } from "../..";
2
+ import type { Config } from "../../types";
3
+ import { getAllEnvs } from "../configruedEnvs";
4
+
5
+ describe("getAllEnvs()", () => {
6
+ const cluster: DeployConfigKubernetesCluster = {
7
+ type: "gcloud",
8
+ name: "mega-cluster",
9
+ projectId: "super-google-project",
10
+ region: "ch-blabla",
11
+ };
12
+ const SIMPLE_CONFIG: Config = {
13
+ appName: "my-app",
14
+ customerName: "pan",
15
+ components: {
16
+ app1: {
17
+ dir: "dir1",
18
+ build: {
19
+ type: "node",
20
+ },
21
+ deploy: { type: "kubernetes", cluster },
22
+ },
23
+ app2: {
24
+ dir: "dir2",
25
+ build: {
26
+ type: "node",
27
+ },
28
+ deploy: { type: "kubernetes", cluster },
29
+ env: {
30
+ dev2: {
31
+ type: "dev",
32
+ },
33
+ review2: {
34
+ type: "review",
35
+ },
36
+ stage2: {
37
+ type: "stage",
38
+ },
39
+ prod2: {
40
+ type: "prod",
41
+ },
42
+ },
43
+ },
44
+ app3: {
45
+ dir: "dir2",
46
+ build: {
47
+ type: "node",
48
+ },
49
+ deploy: { type: "kubernetes", cluster },
50
+ env: {
51
+ dev: false,
52
+ review: false,
53
+ stage: false,
54
+ prod: false,
55
+ },
56
+ },
57
+ },
58
+ };
59
+
60
+ it("should return all envs for app1", () => {
61
+ expect(getAllEnvs(SIMPLE_CONFIG, "app1")).toMatchSnapshot();
62
+ });
63
+
64
+ it("should return all envs for app2", () => {
65
+ expect(getAllEnvs(SIMPLE_CONFIG, "app2")).toMatchSnapshot();
66
+ });
67
+
68
+ it("should return all envs for app3", () => {
69
+ expect(getAllEnvs(SIMPLE_CONFIG, "app3")).toMatchSnapshot();
70
+ });
71
+ });
@@ -0,0 +1,63 @@
1
+ import { type DeployConfigKubernetesCluster } from "../..";
2
+ import type { Config } from "../../types";
3
+ import { getAllEnvsInAllComponents } from "../configruedEnvs";
4
+
5
+ describe("getAllEnvsInAllComponents()", () => {
6
+ const cluster: DeployConfigKubernetesCluster = {
7
+ type: "gcloud",
8
+ name: "mega-cluster",
9
+ projectId: "super-google-project",
10
+ region: "ch-blabla",
11
+ };
12
+ const SIMPLE_CONFIG1: Config = {
13
+ appName: "my-app",
14
+ customerName: "pan",
15
+ components: {
16
+ app1: {
17
+ dir: "dir1",
18
+ build: {
19
+ type: "node",
20
+ },
21
+ deploy: { type: "kubernetes", cluster },
22
+ },
23
+ app2: {
24
+ dir: "dir2",
25
+ build: {
26
+ type: "node",
27
+ },
28
+ deploy: { type: "kubernetes", cluster },
29
+ env: {
30
+ dev2: {
31
+ type: "dev",
32
+ },
33
+ review2: {
34
+ type: "review",
35
+ },
36
+ stage2: {
37
+ type: "stage",
38
+ },
39
+ prod2: {
40
+ type: "prod",
41
+ },
42
+ },
43
+ },
44
+ app3: {
45
+ dir: "dir2",
46
+ build: {
47
+ type: "node",
48
+ },
49
+ deploy: { type: "kubernetes", cluster },
50
+ env: {
51
+ dev: false,
52
+ review: false,
53
+ stage: false,
54
+ prod: false,
55
+ },
56
+ },
57
+ },
58
+ };
59
+
60
+ it("should return all envs for SIMPLE_CONFIG1", () => {
61
+ expect(getAllEnvsInAllComponents(SIMPLE_CONFIG1)).toMatchSnapshot();
62
+ });
63
+ });
@@ -4,25 +4,25 @@ import { DEFAULT_ENV_TYPES, getEnvTypesByTrigger } from "../types";
4
4
  const getConfiguredAndDefaultEnvs = (
5
5
  config: Config,
6
6
  componentName: string,
7
- envTypes: EnvType[]
7
+ envTypes: EnvType[],
8
8
  ) => {
9
9
  const configuredEnvs = config.components[componentName].env ?? {};
10
10
  // the default envs have the same name as the env types
11
11
  // these can be disabled with settimg them to `false`
12
12
  // this is the list of all not disabled envs. These are always returned
13
13
  const enabledDefaultEnvs = envTypes.filter(
14
- (e) => configuredEnvs[e] !== false
14
+ (e) => configuredEnvs[e] !== false,
15
15
  );
16
16
 
17
17
  const configuredCustomEnvs = Object.entries(
18
- config.components[componentName].env ?? {}
18
+ config.components[componentName].env ?? {},
19
19
  )
20
20
  .filter(
21
21
  ([, config]) =>
22
22
  config &&
23
23
  "type" in config &&
24
24
  config.type &&
25
- envTypes.includes(config.type)
25
+ envTypes.includes(config.type),
26
26
  )
27
27
  .map(([envName]) => envName);
28
28
 
@@ -36,7 +36,7 @@ export const getAllEnvs = (config: Config, componentName: string) => {
36
36
  export const getAllEnvsInAllComponents = (config: Config) => {
37
37
  return [
38
38
  ...new Set(
39
- Object.keys(config.components).flatMap((c) => getAllEnvs(config, c))
39
+ Object.keys(config.components).flatMap((c) => getAllEnvs(config, c)),
40
40
  ),
41
41
  ];
42
42
  };
@@ -44,7 +44,7 @@ export const getAllEnvsInAllComponents = (config: Config) => {
44
44
  export const getAllEnvsByTrigger = (
45
45
  config: Config,
46
46
  componentName: string,
47
- trigger: PipelineTrigger
47
+ trigger: PipelineTrigger,
48
48
  ) => {
49
49
  const envTypesByTrigger = getEnvTypesByTrigger(trigger);
50
50
  return getConfiguredAndDefaultEnvs(config, componentName, envTypesByTrigger);
@@ -1,6 +1,8 @@
1
1
  import { existsSync, readFileSync } from "fs";
2
- import { register } from "ts-node";
3
- import { load } from "js-yaml";
2
+
3
+ const tsx = require("tsx/cjs/api");
4
+
5
+ import { parse } from "yaml";
4
6
  import type { Config } from "../types";
5
7
 
6
8
  // allows us to load ts files
@@ -8,39 +10,30 @@ import type { Config } from "../types";
8
10
  const fullPath = (directory: string, ext: string) =>
9
11
  directory + "/catladder." + ext;
10
12
 
11
- function requireUncached(module: string) {
12
- delete require.cache[require.resolve(module)];
13
- return require(module);
14
- }
15
-
16
- export const readConfigSync = (
17
- directory: string = process.cwd()
18
- ): { config: Config; path: string; ext: string } | null => {
19
- register({
20
- cwd: directory,
21
- transpileOnly: true,
22
- compilerOptions: {
23
- module: "commonjs",
24
- },
25
- });
26
-
13
+ export const readConfig = async (
14
+ directory: string = process.cwd(),
15
+ ): Promise<{ config: Config; path: string; ext: string } | null> => {
27
16
  const found = ["ts", "js", "yml", "yaml"].find((extension) =>
28
- existsSync(fullPath(directory, extension))
17
+ existsSync(fullPath(directory, extension)),
29
18
  );
19
+
30
20
  if (found) {
31
21
  const filePath = fullPath(directory, found);
32
22
  if (found === "ts" || found === "js") {
23
+ const result = await tsx.require(filePath, directory);
24
+
25
+ // weird: if target project is esm, result is under result.default, but if its commonjs, its under result.default.default
26
+ const config = result.default.default || result.default;
33
27
  return {
34
28
  path: filePath,
35
29
  ext: found,
36
- // eslint-disable-next-line @typescript-eslint/no-var-requires
37
- config: requireUncached(filePath).default,
30
+ config,
38
31
  };
39
32
  } else {
40
33
  return {
41
34
  path: filePath,
42
35
  ext: found,
43
- config: load(readFileSync(filePath, { encoding: "utf-8" })) as Config,
36
+ config: parse(readFileSync(filePath, { encoding: "utf-8" })) as Config,
44
37
  };
45
38
  }
46
39
  }
package/src/constants.ts CHANGED
@@ -1,2 +1,5 @@
1
- export const PIPELINE_IMAGE_TAG = process.env.INLINE_PIPELINE_IMAGE_TAG || "";
2
- export const DOCKER_REGISTRY = process.env.INLINE_DOCKER_REGISTRY || "";
1
+ export const PIPELINE_IMAGE_TAG =
2
+ process.env.INLINE_PIPELINE_IMAGE_TAG || "latest";
3
+ export const DOCKER_REGISTRY =
4
+ process.env.INLINE_DOCKER_REGISTRY ||
5
+ "git.panter.ch:5001/catladder/catladder";