@catladder/pipeline 0.0.0-node16-ddfae617 → 0.0.0-perf-cli-reduce-bundle-size-with-tsconfig-optimization-3556aaa4

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 (543) hide show
  1. package/README.md +17 -0
  2. package/bin/catladder-gitlab-dev.js +3 -0
  3. package/bin/catladder-gitlab.js +1 -1
  4. package/dist/bash/BashExpression.d.ts +40 -0
  5. package/dist/bash/BashExpression.js +124 -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 +46 -0
  10. package/dist/bash/getInjectVarsScript.d.ts +2 -0
  11. package/dist/bash/getInjectVarsScript.js +45 -0
  12. package/dist/bash/replaceAsync.d.ts +2 -0
  13. package/dist/bash/replaceAsync.js +171 -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 +42 -0
  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 +9 -0
  20. package/dist/build/base/createAppBuildJob.js +87 -0
  21. package/dist/build/base/createArtifactsConfig.d.ts +4 -0
  22. package/dist/build/base/createArtifactsConfig.js +65 -0
  23. package/dist/build/base/index.d.ts +12 -0
  24. package/dist/build/base/index.js +68 -0
  25. package/dist/build/base/writeBuildInfo.d.ts +2 -0
  26. package/dist/build/base/writeBuildInfo.js +10 -0
  27. package/dist/build/base/writeDotEnv.d.ts +8 -0
  28. package/dist/build/base/writeDotEnv.js +66 -0
  29. package/dist/build/custom/__tests__/testJob.test.js +36 -0
  30. package/dist/build/custom/buildJob.d.ts +3 -0
  31. package/dist/build/custom/buildJob.js +67 -0
  32. package/dist/build/custom/index.d.ts +3 -0
  33. package/dist/build/custom/index.js +43 -0
  34. package/dist/build/custom/testJob.d.ts +7 -0
  35. package/dist/build/custom/testJob.js +100 -0
  36. package/dist/build/docker.d.ts +61 -22
  37. package/dist/build/docker.js +110 -73
  38. package/dist/build/index.d.ts +16 -8
  39. package/dist/build/index.js +61 -19
  40. package/dist/build/node/buildJob.d.ts +8 -3
  41. package/dist/build/node/buildJob.js +48 -68
  42. package/dist/build/node/cache.d.ts +4 -3
  43. package/dist/build/node/cache.js +45 -32
  44. package/dist/build/node/constants.d.ts +0 -1
  45. package/dist/build/node/constants.js +5 -4
  46. package/dist/build/node/index.d.ts +5 -5
  47. package/dist/build/node/index.js +6 -17
  48. package/dist/build/node/meteor.d.ts +3 -3
  49. package/dist/build/node/meteor.js +26 -37
  50. package/dist/build/node/testJob.d.ts +4 -3
  51. package/dist/build/node/testJob.js +35 -36
  52. package/dist/build/node/yarn.d.ts +6 -6
  53. package/dist/build/node/yarn.js +40 -25
  54. package/dist/build/rails/build.d.ts +3 -0
  55. package/dist/build/rails/build.js +90 -0
  56. package/dist/build/rails/index.d.ts +3 -0
  57. package/dist/build/rails/index.js +43 -0
  58. package/dist/build/rails/test.d.ts +3 -0
  59. package/dist/build/rails/test.js +103 -0
  60. package/dist/build/sbom.d.ts +5 -0
  61. package/dist/build/sbom.js +32 -0
  62. package/dist/build/types.d.ts +251 -33
  63. package/dist/build/types.js +10 -6
  64. package/dist/bundles/catladder-gitlab/index.js +41626 -0
  65. package/dist/catladder-gitlab.js +130 -68
  66. package/dist/config/{configruedEnvs.test.js → __tests__/configruedEnvs.test.js} +13 -13
  67. package/dist/config/__tests__/getAllEnvs.test.js +79 -0
  68. package/dist/config/__tests__/getAllEnvsInAllComponents.test.d.ts +1 -0
  69. package/dist/config/__tests__/getAllEnvsInAllComponents.test.js +73 -0
  70. package/dist/config/configruedEnvs.d.ts +1 -1
  71. package/dist/config/configruedEnvs.js +10 -23
  72. package/dist/config/index.js +13 -11
  73. package/dist/config/readConfig.d.ts +3 -3
  74. package/dist/config/readConfig.js +193 -52
  75. package/dist/constants.js +5 -3
  76. package/dist/context/__tests__/resolveReferences.test.d.ts +1 -0
  77. package/dist/context/__tests__/resolveReferences.test.js +368 -0
  78. package/dist/context/createAllComponentsContext.d.ts +12 -0
  79. package/dist/context/createAllComponentsContext.js +159 -0
  80. package/dist/context/createComponentContext.d.ts +11 -0
  81. package/dist/context/createComponentContext.js +256 -0
  82. package/dist/context/createWorkspaceContext.d.ts +16 -0
  83. package/dist/context/createWorkspaceContext.js +173 -0
  84. package/dist/context/getBuildInfoVariables.d.ts +6 -0
  85. package/dist/context/getBuildInfoVariables.js +55 -0
  86. package/dist/context/getEnvConfig.d.ts +2 -0
  87. package/dist/context/getEnvConfig.js +20 -0
  88. package/dist/context/getEnvType.d.ts +4 -0
  89. package/dist/context/getEnvType.js +15 -0
  90. package/dist/context/getEnvironment.d.ts +3 -0
  91. package/dist/{pipeline/createChildPipeline.test.js → context/getEnvironment.js} +50 -86
  92. package/dist/context/getEnvironmentContext.d.ts +8 -0
  93. package/dist/context/getEnvironmentContext.js +43 -0
  94. package/dist/context/getEnvironmentVariables.d.ts +27 -0
  95. package/dist/context/getEnvironmentVariables.js +285 -0
  96. package/dist/context/getLabels.d.ts +9 -0
  97. package/dist/context/getLabels.js +41 -0
  98. package/dist/context/getReviewSlug.d.ts +4 -0
  99. package/dist/context/getReviewSlug.js +22 -0
  100. package/dist/context/index.d.ts +3 -6
  101. package/dist/context/index.js +22 -219
  102. package/dist/context/resolveReferences.d.ts +3 -3
  103. package/dist/context/resolveReferences.js +248 -55
  104. package/dist/context/transformJobOnlyVars.d.ts +13 -0
  105. package/dist/{build/tests/storybook.test.js → context/transformJobOnlyVars.js} +54 -106
  106. package/dist/context/utils/envVars.d.ts +8 -0
  107. package/dist/context/utils/envVars.js +55 -0
  108. package/dist/defaults/index.d.ts +1 -1
  109. package/dist/defaults/index.js +3 -1
  110. package/dist/deploy/base/deploy.d.ts +5 -0
  111. package/dist/deploy/base/deploy.js +121 -0
  112. package/dist/deploy/base/index.d.ts +10 -0
  113. package/dist/deploy/base/index.js +44 -0
  114. package/dist/deploy/base/rollback.d.ts +5 -0
  115. package/dist/deploy/base/rollback.js +41 -0
  116. package/dist/deploy/base/stop.d.ts +5 -0
  117. package/dist/deploy/base/stop.js +46 -0
  118. package/dist/deploy/base/types.d.ts +2 -0
  119. package/dist/deploy/base/types.js +5 -0
  120. package/dist/deploy/base/variables.d.ts +5 -0
  121. package/dist/deploy/base/variables.js +11 -0
  122. package/dist/deploy/cloudRun/artifactsRegistry.d.ts +19 -0
  123. package/dist/deploy/cloudRun/artifactsRegistry.js +125 -0
  124. package/dist/deploy/cloudRun/cleanup.d.ts +2 -0
  125. package/dist/deploy/cloudRun/cleanup.js +53 -0
  126. package/dist/deploy/cloudRun/cloudRunRevisions.d.ts +2 -0
  127. package/dist/deploy/cloudRun/cloudRunRevisions.js +62 -0
  128. package/dist/deploy/cloudRun/createJobs/cloudRunJobs.d.ts +7 -0
  129. package/dist/deploy/cloudRun/createJobs/cloudRunJobs.js +187 -0
  130. package/dist/deploy/cloudRun/createJobs/cloudRunServices.d.ts +4 -0
  131. package/dist/deploy/cloudRun/createJobs/cloudRunServices.js +93 -0
  132. package/dist/deploy/cloudRun/createJobs/common.d.ts +18 -0
  133. package/dist/deploy/cloudRun/createJobs/common.js +93 -0
  134. package/dist/deploy/cloudRun/createJobs/constants.d.ts +1 -0
  135. package/dist/deploy/cloudRun/createJobs/constants.js +7 -0
  136. package/dist/deploy/cloudRun/createJobs/getCloudRunDeployScripts.d.ts +2 -0
  137. package/dist/deploy/cloudRun/createJobs/getCloudRunDeployScripts.js +62 -0
  138. package/dist/deploy/cloudRun/createJobs/getCloudRunStopScripts.d.ts +2 -0
  139. package/dist/deploy/cloudRun/createJobs/getCloudRunStopScripts.js +54 -0
  140. package/dist/deploy/cloudRun/createJobs/index.d.ts +3 -0
  141. package/dist/deploy/cloudRun/createJobs/index.js +58 -0
  142. package/dist/deploy/cloudRun/createJobs/volumes.d.ts +3 -0
  143. package/dist/deploy/cloudRun/createJobs/volumes.js +58 -0
  144. package/dist/deploy/cloudRun/index.d.ts +4 -0
  145. package/dist/deploy/cloudRun/index.js +128 -0
  146. package/dist/deploy/cloudRun/utils/createArgsString.d.ts +13 -0
  147. package/dist/deploy/cloudRun/utils/createArgsString.js +63 -0
  148. package/dist/deploy/cloudRun/utils/database.d.ts +6 -0
  149. package/dist/deploy/cloudRun/utils/database.js +77 -0
  150. package/dist/deploy/cloudRun/utils/gcloudServiceAccountLoginCommands.d.ts +2 -0
  151. package/dist/deploy/cloudRun/utils/gcloudServiceAccountLoginCommands.js +12 -0
  152. package/dist/deploy/cloudRun/utils/getServiceName.d.ts +2 -0
  153. package/dist/deploy/cloudRun/utils/getServiceName.js +10 -0
  154. package/dist/deploy/cloudRun/utils/jobName.d.ts +2 -0
  155. package/dist/deploy/cloudRun/utils/jobName.js +10 -0
  156. package/dist/deploy/cloudRun/utils/removeFirstLinesFromCommandOutput.d.ts +9 -0
  157. package/dist/deploy/cloudRun/utils/removeFirstLinesFromCommandOutput.js +18 -0
  158. package/dist/deploy/cloudSql/utils.d.ts +4 -0
  159. package/dist/deploy/cloudSql/utils.js +14 -0
  160. package/dist/deploy/custom/deployJob.d.ts +3 -3
  161. package/dist/deploy/custom/deployJob.js +28 -25
  162. package/dist/deploy/custom/index.d.ts +2 -1
  163. package/dist/deploy/custom/index.js +16 -19
  164. package/dist/deploy/dockerTag/deployJob.d.ts +3 -0
  165. package/dist/deploy/dockerTag/deployJob.js +65 -0
  166. package/dist/deploy/dockerTag/index.d.ts +2 -0
  167. package/dist/deploy/dockerTag/index.js +19 -0
  168. package/dist/deploy/index.d.ts +15 -9
  169. package/dist/deploy/index.js +20 -27
  170. package/dist/deploy/kubernetes/additionalSecretKeys.d.ts +8 -0
  171. package/dist/deploy/kubernetes/additionalSecretKeys.js +30 -0
  172. package/dist/deploy/kubernetes/cloudSql/index.d.ts +14 -0
  173. package/dist/deploy/kubernetes/cloudSql/index.js +55 -0
  174. package/dist/deploy/kubernetes/deployJob.d.ts +3 -3
  175. package/dist/deploy/kubernetes/deployJob.js +43 -124
  176. package/dist/deploy/kubernetes/index.d.ts +3 -1
  177. package/dist/deploy/kubernetes/index.js +86 -11
  178. package/dist/deploy/kubernetes/kubeEnv.d.ts +10 -0
  179. package/dist/deploy/kubernetes/kubeEnv.js +76 -0
  180. package/dist/deploy/kubernetes/kubeValues.d.ts +90 -0
  181. package/dist/deploy/kubernetes/kubeValues.js +123 -0
  182. package/dist/deploy/kubernetes/mongodb.d.ts +19 -6
  183. package/dist/deploy/kubernetes/mongodb.js +100 -11
  184. package/dist/deploy/kubernetes/processSecretsAsFiles.d.ts +27 -29
  185. package/dist/deploy/kubernetes/processSecretsAsFiles.js +5 -11
  186. package/dist/deploy/sbom.d.ts +4 -0
  187. package/dist/deploy/sbom.js +20 -0
  188. package/dist/deploy/types/base.d.ts +36 -0
  189. package/dist/deploy/types/base.js +5 -0
  190. package/dist/deploy/types/custom.d.ts +33 -0
  191. package/dist/deploy/types/custom.js +5 -0
  192. package/dist/deploy/types/dockerTag.d.ts +12 -0
  193. package/dist/deploy/types/dockerTag.js +5 -0
  194. package/dist/deploy/types/googleCloudRun.d.ts +208 -0
  195. package/dist/deploy/types/googleCloudRun.js +5 -0
  196. package/dist/deploy/types/index.d.ts +22 -0
  197. package/dist/deploy/types/index.js +37 -0
  198. package/dist/deploy/types/kubernetes.d.ts +355 -0
  199. package/dist/deploy/types/kubernetes.js +5 -0
  200. package/dist/deploy/utils.d.ts +3 -3
  201. package/dist/deploy/utils.js +8 -12
  202. package/dist/index.d.ts +3 -2
  203. package/dist/index.js +16 -19
  204. package/dist/packageInfos.d.ts +4 -0
  205. package/dist/packageInfos.js +20 -0
  206. package/dist/pipeline/__tests__/getPipelineStages.test.d.ts +1 -0
  207. package/dist/pipeline/__tests__/getPipelineStages.test.js +73 -0
  208. package/dist/pipeline/createAllJobs.d.ts +18 -0
  209. package/dist/pipeline/createAllJobs.js +236 -0
  210. package/dist/pipeline/createChildPipeline.d.ts +3 -3
  211. package/dist/pipeline/createChildPipeline.js +45 -157
  212. package/dist/pipeline/createJobsForComponent.d.ts +3 -0
  213. package/dist/{build/base/createBuildJob.js → pipeline/createJobsForComponent.js} +32 -51
  214. package/dist/pipeline/createJobsForWorkspace.d.ts +3 -0
  215. package/dist/pipeline/createJobsForWorkspace.js +12 -0
  216. package/dist/pipeline/createMainPipeline.d.ts +3 -0
  217. package/dist/pipeline/createMainPipeline.js +269 -0
  218. package/dist/pipeline/generatePipelineFiles.d.ts +40 -0
  219. package/dist/pipeline/generatePipelineFiles.js +240 -0
  220. package/dist/pipeline/getPipelineStages.d.ts +7 -0
  221. package/dist/pipeline/getPipelineStages.js +56 -0
  222. package/dist/pipeline/gitlab/createGitlabJobs.d.ts +11 -0
  223. package/dist/pipeline/gitlab/createGitlabJobs.js +461 -0
  224. package/dist/pipeline/gitlab/createGitlabPipeline.d.ts +8 -0
  225. package/dist/pipeline/gitlab/createGitlabPipeline.js +41 -0
  226. package/dist/pipeline/gitlab/getPipelineTriggerForGitlabChildPipeline.d.ts +1 -0
  227. package/dist/pipeline/gitlab/getPipelineTriggerForGitlabChildPipeline.js +29 -0
  228. package/dist/pipeline/gitlab/gitlabReleaseJobs.d.ts +35 -0
  229. package/dist/pipeline/gitlab/gitlabReleaseJobs.js +27 -0
  230. package/dist/pipeline/gitlab/sortGitLabJobDefProps.d.ts +7 -0
  231. package/dist/pipeline/gitlab/sortGitLabJobDefProps.js +27 -0
  232. package/dist/pipeline/index.d.ts +3 -1
  233. package/dist/pipeline/index.js +16 -12
  234. package/dist/pipeline/packageManager.d.ts +3 -2
  235. package/dist/pipeline/packageManager.js +69 -196
  236. package/dist/pipeline/yarn/yarnUtils.d.ts +5 -0
  237. package/dist/pipeline/yarn/yarnUtils.js +241 -0
  238. package/dist/rules/index.d.ts +10 -2
  239. package/dist/rules/index.js +36 -16
  240. package/dist/runner/index.d.ts +2 -3
  241. package/dist/runner/index.js +3 -4
  242. package/dist/tsconfig.tsbuildinfo +1 -1
  243. package/dist/types/config.d.ts +56 -32
  244. package/dist/types/config.js +11 -18
  245. package/dist/types/context.d.ts +143 -27
  246. package/dist/types/context.js +12 -1
  247. package/dist/types/environmentContext.d.ts +31 -0
  248. package/dist/types/environmentContext.js +5 -0
  249. package/dist/types/gitlab-ci-yml.d.ts +769 -0
  250. package/dist/types/gitlab-ci-yml.js +10 -0
  251. package/dist/types/gitlab-types.d.ts +12 -60
  252. package/dist/types/gitlab-types.js +3 -1
  253. package/dist/types/index.js +13 -13
  254. package/dist/types/jobs.d.ts +55 -21
  255. package/dist/types/jobs.js +4 -2
  256. package/dist/types/pipeline.d.ts +5 -4
  257. package/dist/types/pipeline.js +3 -1
  258. package/dist/types/utils.d.ts +1 -0
  259. package/dist/types/utils.js +5 -0
  260. package/dist/utils/gitlab.d.ts +6 -0
  261. package/dist/utils/gitlab.js +56 -0
  262. package/dist/utils/index.d.ts +1 -1
  263. package/dist/utils/index.js +8 -16
  264. package/dist/utils/jsonParse.d.ts +1 -0
  265. package/dist/utils/jsonParse.js +14 -0
  266. package/dist/utils/removeUndefined.d.ts +1 -0
  267. package/dist/utils/removeUndefined.js +36 -0
  268. package/dist/utils/writeFiles.d.ts +11 -0
  269. package/dist/utils/writeFiles.js +180 -0
  270. package/examples/.test-gen-ignore +1 -0
  271. package/examples/__snapshots__/cloud-run-memory-limit.test.ts.snap +3300 -0
  272. package/examples/__snapshots__/cloud-run-meteor-with-worker.test.ts.snap +3260 -0
  273. package/examples/__snapshots__/cloud-run-no-cpu-throttling.test.ts.snap +3300 -0
  274. package/examples/__snapshots__/cloud-run-no-service.test.ts.snap +3404 -0
  275. package/examples/__snapshots__/cloud-run-non-public.test.ts.snap +3300 -0
  276. package/examples/__snapshots__/cloud-run-post-stop-job.test.ts.snap +3322 -0
  277. package/examples/__snapshots__/cloud-run-service-gen2.test.ts.snap +3300 -0
  278. package/examples/__snapshots__/cloud-run-service-increase-timout.test.ts.snap +3300 -0
  279. package/examples/__snapshots__/cloud-run-service-with-volumes.test.ts.snap +3388 -0
  280. package/examples/__snapshots__/cloud-run-storybook.test.ts.snap +2900 -0
  281. package/examples/__snapshots__/cloud-run-with-ngnix.test.ts.snap +3300 -0
  282. package/examples/__snapshots__/cloud-run-with-sql-reuse-db.test.ts.snap +6760 -0
  283. package/examples/__snapshots__/cloud-run-with-sql.test.ts.snap +6030 -0
  284. package/examples/__snapshots__/cloud-run-with-worker.test.ts.snap +3316 -0
  285. package/examples/__snapshots__/custom-build-job-with-tests.test.ts.snap +2983 -0
  286. package/examples/__snapshots__/custom-build-job.test.ts.snap +2572 -0
  287. package/examples/__snapshots__/custom-deploy.test.ts.snap +2824 -0
  288. package/examples/__snapshots__/custom-envs.test.ts.snap +1884 -0
  289. package/examples/__snapshots__/custom-sbom-java.test.ts.snap +2588 -0
  290. package/examples/__snapshots__/git-submodule.test.ts.snap +3304 -0
  291. package/examples/__snapshots__/kubernetes-application-customization.test.ts.snap +4228 -0
  292. package/examples/__snapshots__/kubernetes-with-cloud-sql-legacy.test.ts.snap +4252 -0
  293. package/examples/__snapshots__/kubernetes-with-cloud-sql.test.ts.snap +4268 -0
  294. package/examples/__snapshots__/kubernetes-with-jobs.test.ts.snap +7910 -0
  295. package/examples/__snapshots__/kubernetes-with-mongodb.test.ts.snap +4476 -0
  296. package/examples/__snapshots__/local-dot-env.test.ts.snap +3300 -0
  297. package/examples/__snapshots__/meteor-kubernetes.test.ts.snap +4342 -0
  298. package/examples/__snapshots__/multiline-var.test.ts.snap +7864 -0
  299. package/examples/__snapshots__/native-app.test.ts.snap +5316 -0
  300. package/examples/__snapshots__/node-build-with-custom-image.test.ts.snap +3300 -0
  301. package/examples/__snapshots__/node-build-with-docker-additions.test.ts.snap +3316 -0
  302. package/examples/__snapshots__/rails-k8s-with-worker-dockerfile.test.ts.snap +2011 -0
  303. package/examples/__snapshots__/rails-k8s-with-worker.test.ts.snap +3465 -0
  304. package/examples/__snapshots__/wait-for-other-deploy.test.ts.snap +3380 -0
  305. package/examples/__utils__/helpers.ts +27 -0
  306. package/examples/cloud-run-memory-limit.test.ts +18 -0
  307. package/examples/cloud-run-memory-limit.ts +33 -0
  308. package/examples/cloud-run-meteor-with-worker.test.ts +18 -0
  309. package/examples/cloud-run-meteor-with-worker.ts +37 -0
  310. package/examples/cloud-run-no-cpu-throttling.test.ts +18 -0
  311. package/examples/cloud-run-no-cpu-throttling.ts +35 -0
  312. package/examples/cloud-run-no-service.test.ts +18 -0
  313. package/examples/cloud-run-no-service.ts +33 -0
  314. package/examples/cloud-run-non-public.test.ts +18 -0
  315. package/examples/cloud-run-non-public.ts +28 -0
  316. package/examples/cloud-run-post-stop-job.test.ts +18 -0
  317. package/examples/cloud-run-post-stop-job.ts +42 -0
  318. package/examples/cloud-run-service-gen2.test.ts +18 -0
  319. package/examples/cloud-run-service-gen2.ts +29 -0
  320. package/examples/cloud-run-service-increase-timout.test.ts +18 -0
  321. package/examples/cloud-run-service-increase-timout.ts +29 -0
  322. package/examples/cloud-run-service-with-volumes.test.ts +18 -0
  323. package/examples/cloud-run-service-with-volumes.ts +56 -0
  324. package/examples/cloud-run-storybook.test.ts +18 -0
  325. package/examples/cloud-run-storybook.ts +33 -0
  326. package/examples/cloud-run-with-ngnix.test.ts +18 -0
  327. package/examples/cloud-run-with-ngnix.ts +29 -0
  328. package/examples/cloud-run-with-sql-reuse-db.test.ts +18 -0
  329. package/examples/cloud-run-with-sql-reuse-db.ts +55 -0
  330. package/examples/cloud-run-with-sql.test.ts +18 -0
  331. package/examples/cloud-run-with-sql.ts +71 -0
  332. package/examples/cloud-run-with-worker.test.ts +18 -0
  333. package/examples/cloud-run-with-worker.ts +37 -0
  334. package/examples/custom-build-job-with-tests.test.ts +18 -0
  335. package/examples/custom-build-job-with-tests.ts +56 -0
  336. package/examples/custom-build-job.test.ts +18 -0
  337. package/examples/custom-build-job.ts +29 -0
  338. package/examples/custom-deploy.test.ts +18 -0
  339. package/examples/custom-deploy.ts +36 -0
  340. package/examples/custom-envs.test.ts +18 -0
  341. package/examples/custom-envs.ts +32 -0
  342. package/examples/custom-sbom-java.test.ts +18 -0
  343. package/examples/custom-sbom-java.ts +38 -0
  344. package/examples/git-submodule.test.ts +18 -0
  345. package/examples/git-submodule.ts +30 -0
  346. package/examples/kubernetes-application-customization.test.ts +18 -0
  347. package/examples/kubernetes-application-customization.ts +59 -0
  348. package/examples/kubernetes-with-cloud-sql-legacy.test.ts +18 -0
  349. package/examples/kubernetes-with-cloud-sql-legacy.ts +35 -0
  350. package/examples/kubernetes-with-cloud-sql.test.ts +18 -0
  351. package/examples/kubernetes-with-cloud-sql.ts +37 -0
  352. package/examples/kubernetes-with-jobs.test.ts +18 -0
  353. package/examples/kubernetes-with-jobs.ts +70 -0
  354. package/examples/kubernetes-with-mongodb.test.ts +18 -0
  355. package/examples/kubernetes-with-mongodb.ts +51 -0
  356. package/examples/local-dot-env.test.ts +18 -0
  357. package/examples/local-dot-env.ts +27 -0
  358. package/examples/meteor-kubernetes.test.ts +18 -0
  359. package/examples/meteor-kubernetes.ts +64 -0
  360. package/examples/multiline-var.test.ts +18 -0
  361. package/examples/multiline-var.ts +65 -0
  362. package/examples/native-app.test.ts +18 -0
  363. package/examples/native-app.ts +83 -0
  364. package/examples/node-build-with-custom-image.test.ts +18 -0
  365. package/examples/node-build-with-custom-image.ts +26 -0
  366. package/examples/node-build-with-docker-additions.test.ts +18 -0
  367. package/examples/node-build-with-docker-additions.ts +29 -0
  368. package/examples/rails-k8s-with-worker-dockerfile.test.ts +9 -0
  369. package/examples/rails-k8s-with-worker.test.ts +18 -0
  370. package/examples/rails-k8s-with-worker.ts +95 -0
  371. package/examples/wait-for-other-deploy.test.ts +18 -0
  372. package/examples/wait-for-other-deploy.ts +37 -0
  373. package/package.json +76 -17
  374. package/scripts/bundle +2 -0
  375. package/scripts/generate-examples-test.ts +93 -0
  376. package/scripts/generate-gitlab-ci-types.ts +51 -0
  377. package/scripts/tsconfig.json +7 -0
  378. package/src/bash/BashExpression.ts +81 -0
  379. package/src/bash/bashExpressionPerPipelineType.ts +16 -0
  380. package/src/bash/bashYaml.ts +46 -0
  381. package/src/bash/getInjectVarsScript.ts +12 -0
  382. package/src/bash/replaceAsync.ts +50 -0
  383. package/src/build/artifacts/createBuildJobArtifact.ts +61 -0
  384. package/src/build/base/__tests__/__snapshots__/createArtifactsConfig.test.ts.snap +49 -0
  385. package/src/build/base/__tests__/createArtifactsConfig.test.ts +41 -0
  386. package/src/build/base/constants.ts +2 -2
  387. package/src/build/base/createAppBuildJob.ts +70 -0
  388. package/src/build/base/createArtifactsConfig.ts +34 -0
  389. package/src/build/base/index.ts +62 -0
  390. package/src/build/base/writeBuildInfo.ts +7 -0
  391. package/src/build/base/writeDotEnv.ts +40 -0
  392. package/src/build/custom/__tests__/testJob.test.ts +29 -0
  393. package/src/build/custom/buildJob.ts +41 -0
  394. package/src/build/custom/index.ts +8 -0
  395. package/src/build/custom/testJob.ts +93 -0
  396. package/src/build/docker.ts +173 -63
  397. package/src/build/index.ts +59 -8
  398. package/src/build/node/buildJob.ts +84 -64
  399. package/src/build/node/cache.ts +59 -24
  400. package/src/build/node/constants.ts +2 -3
  401. package/src/build/node/index.ts +9 -5
  402. package/src/build/node/meteor.ts +41 -44
  403. package/src/build/node/testJob.ts +57 -16
  404. package/src/build/node/yarn.ts +81 -25
  405. package/src/build/rails/build.ts +69 -0
  406. package/src/build/rails/index.ts +8 -0
  407. package/src/build/rails/test.ts +103 -0
  408. package/src/build/sbom.ts +48 -0
  409. package/src/build/types.ts +301 -27
  410. package/src/catladder-gitlab.ts +12 -52
  411. package/src/config/__tests__/__snapshots__/getAllEnvs.test.ts.snap +31 -0
  412. package/src/config/__tests__/__snapshots__/getAllEnvsInAllComponents.test.ts.snap +15 -0
  413. package/src/config/{configruedEnvs.test.ts → __tests__/configruedEnvs.test.ts} +3 -3
  414. package/src/config/__tests__/getAllEnvs.test.ts +71 -0
  415. package/src/config/__tests__/getAllEnvsInAllComponents.test.ts +63 -0
  416. package/src/config/configruedEnvs.ts +8 -13
  417. package/src/config/readConfig.ts +17 -23
  418. package/src/constants.ts +5 -2
  419. package/src/context/{resolveReferences.test.ts → __tests__/resolveReferences.test.ts} +34 -44
  420. package/src/context/createAllComponentsContext.ts +31 -0
  421. package/src/context/createComponentContext.ts +135 -0
  422. package/src/context/createWorkspaceContext.ts +56 -0
  423. package/src/context/getBuildInfoVariables.ts +36 -0
  424. package/src/context/getEnvConfig.ts +21 -0
  425. package/src/context/getEnvType.ts +17 -0
  426. package/src/context/getEnvironment.ts +26 -0
  427. package/src/context/getEnvironmentContext.ts +53 -0
  428. package/src/context/getEnvironmentVariables.ts +210 -0
  429. package/src/context/getLabels.ts +21 -0
  430. package/src/context/getReviewSlug.ts +27 -0
  431. package/src/context/index.ts +3 -232
  432. package/src/context/resolveReferences.ts +67 -40
  433. package/src/context/transformJobOnlyVars.ts +45 -0
  434. package/src/context/utils/envVars.ts +27 -0
  435. package/src/defaults/index.ts +1 -1
  436. package/src/deploy/base/deploy.ts +136 -0
  437. package/src/deploy/base/index.ts +22 -0
  438. package/src/deploy/base/rollback.ts +38 -0
  439. package/src/deploy/base/stop.ts +43 -0
  440. package/src/deploy/base/types.ts +3 -0
  441. package/src/deploy/base/variables.ts +5 -0
  442. package/src/deploy/cloudRun/artifactsRegistry.ts +126 -0
  443. package/src/deploy/cloudRun/cleanup.ts +30 -0
  444. package/src/deploy/cloudRun/cloudRunRevisions.ts +65 -0
  445. package/src/deploy/cloudRun/createJobs/cloudRunJobs.ts +198 -0
  446. package/src/deploy/cloudRun/createJobs/cloudRunServices.ts +86 -0
  447. package/src/deploy/cloudRun/createJobs/common.ts +59 -0
  448. package/src/deploy/cloudRun/createJobs/constants.ts +1 -0
  449. package/src/deploy/cloudRun/createJobs/getCloudRunDeployScripts.ts +79 -0
  450. package/src/deploy/cloudRun/createJobs/getCloudRunStopScripts.ts +34 -0
  451. package/src/deploy/cloudRun/createJobs/index.ts +51 -0
  452. package/src/deploy/cloudRun/createJobs/volumes.ts +23 -0
  453. package/src/deploy/cloudRun/index.ts +127 -0
  454. package/src/deploy/cloudRun/utils/createArgsString.ts +34 -0
  455. package/src/deploy/cloudRun/utils/database.ts +77 -0
  456. package/src/deploy/cloudRun/utils/gcloudServiceAccountLoginCommands.ts +12 -0
  457. package/src/deploy/cloudRun/utils/getServiceName.ts +3 -0
  458. package/src/deploy/cloudRun/utils/jobName.ts +7 -0
  459. package/src/deploy/cloudRun/utils/removeFirstLinesFromCommandOutput.ts +12 -0
  460. package/src/deploy/cloudSql/utils.ts +26 -0
  461. package/src/deploy/custom/deployJob.ts +41 -16
  462. package/src/deploy/custom/index.ts +9 -1
  463. package/src/deploy/dockerTag/deployJob.ts +29 -0
  464. package/src/deploy/dockerTag/index.ts +10 -0
  465. package/src/deploy/index.ts +32 -17
  466. package/src/deploy/kubernetes/additionalSecretKeys.ts +25 -0
  467. package/src/deploy/kubernetes/cloudSql/index.ts +76 -0
  468. package/src/deploy/kubernetes/deployJob.ts +61 -115
  469. package/src/deploy/kubernetes/index.ts +50 -1
  470. package/src/deploy/kubernetes/kubeEnv.ts +50 -0
  471. package/src/deploy/kubernetes/kubeValues.ts +100 -0
  472. package/src/deploy/kubernetes/mongodb.ts +106 -8
  473. package/src/deploy/kubernetes/processSecretsAsFiles.ts +6 -5
  474. package/src/deploy/sbom.ts +32 -0
  475. package/src/deploy/types/base.ts +43 -0
  476. package/src/deploy/types/custom.ts +36 -0
  477. package/src/deploy/types/dockerTag.ts +14 -0
  478. package/src/deploy/types/googleCloudRun.ts +282 -0
  479. package/src/deploy/types/index.ts +28 -0
  480. package/src/deploy/types/kubernetes.ts +390 -0
  481. package/src/deploy/utils.ts +10 -6
  482. package/src/index.ts +2 -1
  483. package/src/packageInfos.ts +14 -0
  484. package/src/pipeline/__tests__/__snapshots__/getPipelineStages.test.ts.snap +69 -0
  485. package/src/pipeline/__tests__/getPipelineStages.test.ts +63 -0
  486. package/src/pipeline/createAllJobs.ts +72 -0
  487. package/src/pipeline/createChildPipeline.ts +24 -43
  488. package/src/pipeline/createJobsForComponent.ts +35 -0
  489. package/src/pipeline/createJobsForWorkspace.ts +12 -0
  490. package/src/pipeline/createMainPipeline.ts +111 -0
  491. package/src/pipeline/generatePipelineFiles.ts +76 -0
  492. package/src/pipeline/getPipelineStages.ts +23 -0
  493. package/src/pipeline/gitlab/createGitlabJobs.ts +445 -0
  494. package/src/pipeline/gitlab/createGitlabPipeline.ts +28 -0
  495. package/src/pipeline/gitlab/getPipelineTriggerForGitlabChildPipeline.ts +46 -0
  496. package/src/pipeline/gitlab/gitlabReleaseJobs.ts +25 -0
  497. package/src/pipeline/gitlab/sortGitLabJobDefProps.ts +59 -0
  498. package/src/pipeline/index.ts +3 -1
  499. package/src/pipeline/packageManager.ts +47 -64
  500. package/src/pipeline/yarn/yarnUtils.ts +66 -0
  501. package/src/rules/index.ts +46 -13
  502. package/src/runner/index.ts +2 -1
  503. package/src/types/config.ts +72 -16
  504. package/src/types/context.ts +194 -25
  505. package/src/types/environmentContext.ts +38 -0
  506. package/src/types/gitlab-ci-yml.ts +891 -0
  507. package/src/types/gitlab-types.ts +52 -57
  508. package/src/types/jobs.ts +66 -11
  509. package/src/types/pipeline.ts +5 -1
  510. package/src/types/utils.ts +7 -0
  511. package/src/utils/gitlab.ts +33 -0
  512. package/src/utils/index.ts +3 -3
  513. package/src/utils/jsonParse.ts +7 -0
  514. package/src/utils/removeUndefined.ts +4 -0
  515. package/src/utils/writeFiles.ts +53 -0
  516. package/tsconfig.json +4 -2
  517. package/dist/build/base/createBuildJob.d.ts +0 -7
  518. package/dist/build/base/getBuildInfo.d.ts +0 -2
  519. package/dist/build/base/getBuildInfo.js +0 -12
  520. package/dist/context/resolveReferences.test.js +0 -141
  521. package/dist/deploy/base.d.ts +0 -8
  522. package/dist/deploy/base.js +0 -107
  523. package/dist/deploy/kubernetes/cloudsql.d.ts +0 -6
  524. package/dist/deploy/kubernetes/cloudsql.js +0 -16
  525. package/dist/deploy/types.d.ts +0 -196
  526. package/dist/deploy/types.js +0 -16
  527. package/dist/pipeline/createJobs.d.ts +0 -3
  528. package/dist/pipeline/createJobs.js +0 -383
  529. package/dist/pipeline/gitlab/makeGitlabJob.d.ts +0 -8
  530. package/dist/pipeline/gitlab/makeGitlabJob.js +0 -45
  531. package/src/build/base/createBuildJob.ts +0 -43
  532. package/src/build/base/getBuildInfo.ts +0 -7
  533. package/src/build/tests/storybook.test.ts +0 -54
  534. package/src/deploy/base.ts +0 -120
  535. package/src/deploy/kubernetes/cloudsql.ts +0 -12
  536. package/src/deploy/types.ts +0 -189
  537. package/src/pipeline/createChildPipeline.test.ts +0 -49
  538. package/src/pipeline/createJobs.ts +0 -195
  539. package/src/pipeline/gitlab/makeGitlabJob.ts +0 -16
  540. /package/dist/build/{tests/storybook.test.d.ts → base/__tests__/createArtifactsConfig.test.d.ts} +0 -0
  541. /package/dist/{config/configruedEnvs.test.d.ts → build/custom/__tests__/testJob.test.d.ts} +0 -0
  542. /package/dist/{context/resolveReferences.test.d.ts → config/__tests__/configruedEnvs.test.d.ts} +0 -0
  543. /package/dist/{pipeline/createChildPipeline.test.d.ts → config/__tests__/getAllEnvs.test.d.ts} +0 -0
@@ -1,56 +1,28 @@
1
- import { exec } from "child-process-promise";
2
- import { Config, PackageManagerInfo } from "../types";
3
- import { pathEqual } from "path-equal";
4
- import memoizee from "memoizee";
5
- import { join } from "path";
6
1
  import { existsSync } from "fs";
2
+ import { join } from "path";
3
+ import { pathEqual } from "path-equal";
4
+ import type {
5
+ Config,
6
+ PackageManagerInfoBase,
7
+ PackageManagerInfoComponent,
8
+ } from "../types";
9
+ import {
10
+ getWorkspaces,
11
+ getYarnVersion,
12
+ getWorkspaceDependencies,
13
+ } from "./yarn/yarnUtils";
7
14
 
8
- const execOrFail = async (cmd: string, onFail: string): Promise<string> => {
9
- try {
10
- return await exec(cmd).then((r) => r.stdout);
11
- } catch (e) {
12
- return onFail ?? null;
13
- }
14
- };
15
-
16
- const getYarnVersion = memoizee(
17
- async () => {
18
- return await execOrFail("yarn --version", "");
19
- },
20
- { promise: true }
21
- );
22
-
23
- const getWorkspaces = memoizee(
24
- async (isClassic: boolean): Promise<PackageManagerInfo["workspaces"]> => {
25
- return isClassic
26
- ? Object.values(
27
- JSON.parse(
28
- JSON.parse(await execOrFail("yarn workspaces --json info", "{}"))
29
- ?.data ?? "{}"
30
- )
31
- )
32
- : JSON.parse(
33
- `[${(await execOrFail("yarn workspaces list --json --verbose", ""))
34
- .trim()
35
- .split("\n")
36
- .join(",")}]`
37
- );
38
- },
39
- { promise: true }
40
- );
41
- export const getPackageManagerInfo = async (
15
+ export const getPackageManagerInfoForComponent = async (
42
16
  config: Config,
43
- componentName: string
44
- ): Promise<PackageManagerInfo> => {
17
+ componentName: string,
18
+ ): Promise<PackageManagerInfoComponent> => {
19
+ const baseInfo = await getPackageManagerInfoBase();
20
+ const { workspaces } = baseInfo;
45
21
  // currently only supports yarn
46
- const version = await getYarnVersion();
47
- if (!version) throw new Error("could not get yarn version");
48
- const isClassic = version.startsWith("1");
49
22
 
50
23
  const component = config.components[componentName];
51
- const workspaces = await getWorkspaces(isClassic);
52
24
  const currentWorkspace = workspaces.find((w) =>
53
- pathEqual(component.dir, w.location)
25
+ pathEqual(component.dir, w.location),
54
26
  );
55
27
  const componentIsInWorkspace = Boolean(currentWorkspace);
56
28
  const workspaceRoot = "."; // currently we assume the root folder, later on we might support nested workspaces
@@ -63,37 +35,48 @@ export const getPackageManagerInfo = async (
63
35
  ? join(workspaceRoot, "yarn.lock")
64
36
  : join(component.dir, "yarn.lock");
65
37
  const configFiles = [".yarnrc", ".yarnrc.yml", ".npmrc", ".yarn"]; // ".yarn" is yarn 2 folder
66
- const rcFiles = (
67
- componentIsInWorkspace
68
- ? configFiles
69
- : configFiles.map((f) => join(component.dir, f))
70
- ).filter((f) => existsSync(f));
38
+ // copy all those configFiles from workspace root and/or component folder
39
+
40
+ const configFilePaths = [
41
+ ...configFiles,
42
+ ...configFiles.map((f) => join(component.dir, f)),
43
+ ].filter((f) => existsSync(f));
71
44
 
72
45
  // get all folders that this workspace depend on
73
46
  // we will later copy them into the docker build
74
- const workspaceDependencies = currentWorkspace
75
- ? ([
76
- ...currentWorkspace.workspaceDependencies,
77
- ...currentWorkspace.mismatchedWorkspaceDependencies,
78
- ]
79
- .map((name) => workspaces.find((w) => w.name === name)?.location)
80
- .filter(Boolean) as string[])
47
+ const currentWorkspaceDependencies = currentWorkspace
48
+ ? getWorkspaceDependencies(currentWorkspace, workspaces)
81
49
  : [];
82
50
 
83
51
  const pathsToCopyInDocker = [
84
52
  packageJson,
85
53
  ...(workspacePackageJson ? [workspacePackageJson] : []),
86
54
  lockFile,
87
- ...rcFiles,
88
- ...workspaceDependencies,
55
+ ...configFilePaths,
56
+ ...currentWorkspaceDependencies,
89
57
  ];
90
58
  return {
91
- type: "yarn",
92
- workspaces,
93
- version,
94
- isClassic,
59
+ ...baseInfo,
95
60
  currentWorkspace,
61
+ currentWorkspaceDependencies,
96
62
  componentIsInWorkspace,
97
63
  pathsToCopyInDocker,
98
64
  };
99
65
  };
66
+ // TODO: memoizee
67
+ export const getPackageManagerInfoBase =
68
+ async (): Promise<PackageManagerInfoBase> => {
69
+ // currently only supports yarn
70
+ const version = await getYarnVersion();
71
+ if (!version) throw new Error("could not get yarn version");
72
+ const isClassic = version.startsWith("1");
73
+
74
+ const workspaces = await getWorkspaces(isClassic);
75
+
76
+ return {
77
+ type: "yarn",
78
+ workspaces,
79
+ version,
80
+ isClassic,
81
+ };
82
+ };
@@ -0,0 +1,66 @@
1
+ import { exec } from "child-process-promise";
2
+ import memoizee from "memoizee";
3
+ import type { YarnWorkspace } from "../../types";
4
+ import { jsonParseOrThrow } from "../../utils/jsonParse";
5
+
6
+ const execOrFail = async (cmd: string, onFail: string): Promise<string> => {
7
+ try {
8
+ return await exec(cmd).then((r) => r.stdout);
9
+ } catch (e) {
10
+ return onFail ?? null;
11
+ }
12
+ };
13
+ // export for mocking
14
+ export const getYarnVersion = memoizee(
15
+ async () => {
16
+ return await execOrFail("yarn --version", "");
17
+ },
18
+ { promise: true },
19
+ );
20
+
21
+ // export for mocking
22
+ export const getWorkspaces = memoizee(
23
+ async (isClassic: boolean): Promise<Array<YarnWorkspace>> => {
24
+ return isClassic
25
+ ? Object.values(
26
+ jsonParseOrThrow(
27
+ jsonParseOrThrow(
28
+ await execOrFail("yarn workspaces --json info", "{}"),
29
+ )?.data ?? "{}",
30
+ ),
31
+ )
32
+ : jsonParseOrThrow(
33
+ `[${(await execOrFail("yarn workspaces list --json --verbose", ""))
34
+ .trim()
35
+ .split("\n")
36
+ .join(",")}]`,
37
+ );
38
+ },
39
+ { promise: true },
40
+ );
41
+
42
+ // recursivly get all workspace dependencies
43
+ export const getWorkspaceDependencies = (
44
+ ws: YarnWorkspace,
45
+ allWorkspaces: YarnWorkspace[],
46
+ ): string[] => {
47
+ return ws
48
+ ? ([...ws.workspaceDependencies, ...ws.mismatchedWorkspaceDependencies]
49
+ .flatMap((location) => {
50
+ // we have to do this recursivly
51
+
52
+ const otherWorkspace = allWorkspaces.find(
53
+ (w) => w.location === location,
54
+ );
55
+
56
+ if (otherWorkspace) {
57
+ return [
58
+ ...getWorkspaceDependencies(otherWorkspace, allWorkspaces),
59
+ otherWorkspace.location,
60
+ ];
61
+ }
62
+ return [];
63
+ })
64
+ .filter(Boolean) as string[])
65
+ : [];
66
+ };
@@ -1,37 +1,70 @@
1
- import { GitlabRule } from "../types";
1
+ import type { GitlabRule } from "../types";
2
+ export const RULE_CONDITION_MAIN_BRANCH =
3
+ "$CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH";
2
4
 
3
- const NEVER_ON_RELEASE_COMMIT: GitlabRule = {
5
+ export const RULE_IS_MAIN_BRANCH: GitlabRule = {
6
+ if: RULE_CONDITION_MAIN_BRANCH,
7
+ };
8
+ export const RULE_NEVER_ON_RELEASE_COMMIT: GitlabRule = {
4
9
  if: "$CI_COMMIT_MESSAGE =~ /^chore\\(release\\).*/",
5
10
  when: "never",
6
11
  };
12
+
13
+ export const RULE_NEVER_ON_SCHEDULE: GitlabRule = {
14
+ if: '$CI_PIPELINE_SOURCE == "schedule"',
15
+ when: "never",
16
+ };
17
+
18
+ export const RULE_IS_MERGE_REQUEST: GitlabRule = {
19
+ if: "$CI_MERGE_REQUEST_ID",
20
+ };
21
+
22
+ export const RULE_IS_TAGGED_RELEASE: GitlabRule = {
23
+ if: "$CI_COMMIT_TAG",
24
+ };
25
+
7
26
  export const RULES_ALWAYS: GitlabRule[] = [
8
- {
9
- if: "$CI_COMMIT_TAG",
10
- },
11
- NEVER_ON_RELEASE_COMMIT,
27
+ RULE_IS_TAGGED_RELEASE,
28
+ RULE_NEVER_ON_RELEASE_COMMIT,
29
+ RULE_NEVER_ON_SCHEDULE,
12
30
  {
13
31
  if: "$CI_COMMIT_BRANCH =~ /^[0-9]+.([0-9]+|x).x$/",
14
32
  },
15
33
  {
16
34
  if: "$CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH",
17
35
  },
18
- {
19
- if: "$CI_MERGE_REQUEST_ID",
20
- },
36
+ RULE_IS_MERGE_REQUEST,
21
37
  ];
22
38
 
39
+ export const RULE_CONDITION_HOTFIX_BRANCH =
40
+ "$CI_COMMIT_BRANCH =~ /^[0-9]+.([0-9]+|x).x$/";
41
+
23
42
  export const RULES_RELEASE: GitlabRule[] = [
24
- NEVER_ON_RELEASE_COMMIT,
43
+ RULE_NEVER_ON_RELEASE_COMMIT,
44
+ RULE_NEVER_ON_SCHEDULE,
25
45
  {
26
- if: '$CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH && $AUTO_RELEASE == "true"',
46
+ if: RULE_CONDITION_MAIN_BRANCH + ' && $AUTO_RELEASE == "true"',
27
47
  when: "on_success",
28
48
  },
29
49
  {
30
- if: "$CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH",
50
+ if: RULE_CONDITION_MAIN_BRANCH,
51
+ when: "manual",
52
+ },
53
+ {
54
+ if: RULE_CONDITION_HOTFIX_BRANCH,
55
+ when: "manual",
56
+ },
57
+ ];
58
+
59
+ export const RULES_MANUAL_RELEASE: GitlabRule[] = [
60
+ RULE_NEVER_ON_RELEASE_COMMIT,
61
+ RULE_NEVER_ON_SCHEDULE,
62
+ {
63
+ if: RULE_CONDITION_MAIN_BRANCH,
31
64
  when: "manual",
32
65
  },
33
66
  {
34
- if: "$CI_COMMIT_BRANCH =~ /^[0-9]+.([0-9]+|x).x$/", // hotfix branches
67
+ if: RULE_CONDITION_HOTFIX_BRANCH,
35
68
  when: "manual",
36
69
  },
37
70
  ];
@@ -1,12 +1,13 @@
1
1
  import { PIPELINE_IMAGE_TAG, DOCKER_REGISTRY } from "../constants";
2
2
 
3
- type RunnerImageName =
3
+ export type RunnerImageName =
4
4
  | "jobs-default"
5
5
  | "jobs-meteor"
6
6
  | "jobs-testing-chrome"
7
7
  | "kubernetes"
8
8
  | "base-pipeline"
9
9
  | "docker-build"
10
+ | "gcloud"
10
11
  | "semantic-release";
11
12
  export const getRunnerImage = (imageName: RunnerImageName) =>
12
13
  DOCKER_REGISTRY + "/" + imageName + ":" + PIPELINE_IMAGE_TAG;
@@ -1,9 +1,17 @@
1
- import { BuildConfig } from "../build/types";
2
- import { DeployConfig } from "../deploy/types";
3
- import { PartialDeep } from "type-fest";
4
- import { CatladderJob } from "./jobs";
5
- import { Context } from "./context";
6
- export type PipelineTrigger = "mainBranch" | "mr" | "taggedRelease";
1
+ import type { BuildConfig } from "../build/types";
2
+ import type { DeployConfig } from "../deploy/types";
3
+
4
+ import type { CatladderJob } from "./jobs";
5
+ import type { ComponentContext } from "./context";
6
+ import type { PartialDeep } from "./utils";
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];
7
15
 
8
16
  /**
9
17
  * all env types with their trigger.
@@ -11,7 +19,7 @@ export type PipelineTrigger = "mainBranch" | "mr" | "taggedRelease";
11
19
  */
12
20
  export const ENV_TYPES = {
13
21
  dev: {
14
- triggers: ["mainBranch", "taggedRelease"], // we also trigger dev on tagged release, so that the versions match
22
+ triggers: ["mainBranch"],
15
23
  },
16
24
  review: {
17
25
  triggers: ["mr"],
@@ -35,7 +43,7 @@ export const ENV_TYPES = {
35
43
  export const getEnvTypesByTrigger = (trigger: PipelineTrigger) =>
36
44
  Object.entries(ENV_TYPES)
37
45
  .filter(([, e]) =>
38
- (e.triggers as readonly PipelineTrigger[]).includes(trigger)
46
+ (e.triggers as readonly PipelineTrigger[]).includes(trigger),
39
47
  )
40
48
  .map(([e]) => e as EnvType);
41
49
 
@@ -59,6 +67,7 @@ export type EnvVars = {
59
67
  * You can reuse vars from other components in the same project using ${componentName:variableName}
60
68
  * EXAMPLE: A_VAR: "the other var is ${api:OTHER_VAR}"
61
69
  */
70
+
62
71
  public?: Record<string, any>;
63
72
  /**
64
73
  * secret env vars. These vars can be managed with catladder/cli
@@ -104,7 +113,12 @@ export type EnvConfig<E extends EnvType = EnvType> = {
104
113
  host?: string;
105
114
  } & PartialDeep<DefaultEnvConfig>;
106
115
 
107
- export type Env = {
116
+ export type EnvConfigWithComponent = EnvConfig<EnvType> & ComponentConfig;
117
+
118
+ export type CustomEnv = EnvConfig & {
119
+ type: EnvType;
120
+ };
121
+ export type Env<C extends ConfigProps = never> = {
108
122
  /**
109
123
  * local is a special env that is only used in local development
110
124
  */
@@ -114,13 +128,16 @@ export type Env = {
114
128
  stage?: EnvConfig<"stage"> | false;
115
129
  review?: EnvConfig<"review"> | false;
116
130
  prod?: EnvConfig<"prod"> | false;
117
- } & Record<string, EnvConfig | false>;
118
-
119
- export type ComponentConfig = {
131
+ // unfortunatly, typescript does not properly support objects with a mix of known and unknown properties.
132
+ // for backwards compatiblity we allow unknown props, but we cannot type it (typescript problem)
133
+ // however, we now support providing custom envs through a generic parameter of `Config`
134
+ } & Record<C["CustomEnvs"], CustomEnv> &
135
+ Record<string, any>;
136
+ export type ComponentConfig<C extends ConfigProps = never> = {
120
137
  /**
121
138
  * specify environment configurations
122
139
  */
123
- env?: Env;
140
+ env?: Env<C>;
124
141
  /**
125
142
  * the directory of the component (e.g. where the package.json or similar is located). You can set "." if you only have one app.
126
143
  */
@@ -134,10 +151,41 @@ export type ComponentConfig = {
134
151
  * to let us know about why you need to use custom jobs.
135
152
  * This feedback will help us to generalize use cases
136
153
  */
137
- customJobs?: CatladderJob[] | ((context: Context) => CatladderJob[]);
154
+ customJobs?:
155
+ | CatladderJob[]
156
+ | ((context: Omit<ComponentContext, "customJobs">) => CatladderJob[]);
157
+
158
+ /**
159
+ * whether to create a .env
160
+ *
161
+ * Be careful, this will overwrite any existing .env file!
162
+ *
163
+ * if set to true it will create .env locally and during build.
164
+ * Be careful: the .env file usually ends up in the build artifacts.
165
+ * Use this for apps and clients where env does not contain any secrets
166
+ *
167
+ *
168
+ * if set to "local" it will only create .env file locally.
169
+ * Use this in combination with @dotenvx/dotenvx or node 20 to start apps locally with .env files
170
+ * During build and runtime, it relies on the env vars set in the environment
171
+ *
172
+ */
173
+ dotEnv?: boolean | "local";
174
+ /**
175
+ * whether to create a env.d.ts localy and during build jobs
176
+ *
177
+ * Be careful, this will overwrite any existing env.d.ts file!
178
+ */
179
+ envDTs?: boolean;
138
180
  } & DefaultEnvConfig;
139
181
 
140
- export type Config = {
182
+ export type ConfigProps = {
183
+ CustomEnvs: string;
184
+ };
185
+
186
+ export type Config<C extends ConfigProps = never> = {
187
+ pipelineType?: PipelineType;
188
+
141
189
  /**
142
190
  * name of the customer or group
143
191
  */
@@ -152,10 +200,13 @@ export type Config = {
152
200
  *
153
201
  */
154
202
  domainCanonical?: string;
203
+
204
+ // shared workspace Builds
205
+ builds?: Record<string, WorkspaceBuildConfig>;
155
206
  /**
156
207
  * components (sub apps)
157
208
  */
158
- components: Record<string, ComponentConfig>;
209
+ components: Record<string, ComponentConfig<C>>;
159
210
 
160
211
  /**
161
212
  * additional meta data (only for organisational purposes)
@@ -163,4 +214,9 @@ export type Config = {
163
214
  meta?: {
164
215
  labels?: Record<string, string>;
165
216
  };
217
+
218
+ /**
219
+ * additional vars only for the runner in all jobs.
220
+ */
221
+ runnerVariables?: Record<string, string>;
166
222
  };