@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,74 +1,69 @@
1
- export type Artifacts = {
2
- paths: string[];
3
- };
4
- export type GitlabJobCache = {
5
- key: string;
6
- policy?: string;
7
- paths: string[];
8
- };
9
- export type GitlabRule = {
10
- if?: string;
11
- when?: "always" | "on_success" | "manual" | "never"; // todo
12
- allow_failure?: boolean;
13
- };
14
- export type Retry = {
15
- max: number;
16
- when: string[];
17
- };
1
+ import type {
2
+ Artifacts as GitlabCiArtifacts,
3
+ JobTemplate,
4
+ Cache,
5
+ Rules,
6
+ } from "./gitlab-ci-yml";
18
7
 
19
- export type Service = {
20
- name: string;
21
- command: string[];
22
- };
8
+ export { Retry, Image as GitlabJobImage } from "./gitlab-ci-yml";
23
9
 
24
- export type GitlabEnvironment = {
25
- url: string;
26
- name: string;
27
- kubernetes?: {
28
- namespace?: string;
29
- };
30
- action?: "stop" | "start" | "prepare"; // defaults to start
31
- on_stop?: string; // other job to run on stop
32
- auto_stop_in?: string;
33
- };
34
- export type GitlabJobDef = {
35
- stage: string;
36
- before_script?: string[];
37
- script: (string | undefined)[];
38
- interruptible?: boolean;
39
- needs?: Array<string | { job: string; artifacts: boolean }>;
10
+ // Reports won't show up on MRs until https://gitlab.com/groups/gitlab-org/-/epics/8205
11
+ export type Artifacts = GitlabCiArtifacts;
12
+ export type GitlabJobCache = Cache;
13
+ export type GitlabRule = Exclude<
14
+ Exclude<Rules, null>[number],
15
+ string | string[] // we only use the object version
16
+ >;
17
+ export type GitlabEnvironment = Omit<
18
+ Exclude<JobTemplate["environment"], undefined | string>,
19
+ "deployment_tier"
20
+ >;
21
+
22
+ export interface GitlabJobDef
23
+ extends Pick<
24
+ JobTemplate,
25
+ | "after_script"
26
+ | "allow_failure"
27
+ | "artifacts"
28
+ | "before_script"
29
+ | "coverage"
30
+ | "dependencies"
31
+ | "environment"
32
+ | "except"
33
+ | "hooks"
34
+ | "image"
35
+ | "interruptible"
36
+ | "needs"
37
+ | "only"
38
+ | "parallel"
39
+ | "release"
40
+ | "resource_group"
41
+ | "retry"
42
+ | "rules"
43
+ | "script"
44
+ | "services"
45
+ | "stage"
46
+ | "tags"
47
+ | "trigger"
48
+ | "variables"
49
+ > {
50
+ stage: JobTemplate["stage"];
40
51
  rules?: GitlabRule[];
41
52
  cache?: GitlabJobCache | GitlabJobCache[];
42
53
  artifacts?: Artifacts;
43
- retry?: Retry;
44
- services?: Service[];
45
- image?: string;
46
- variables?: GitlabVariables;
47
- dependencies?: string[];
48
- environment?: GitlabEnvironment;
49
- allow_failure?: boolean;
50
- trigger?: {
51
- strategy: "depend";
52
- include: Array<{
53
- artifact: string;
54
- job: string;
55
- }>;
56
- };
57
- };
58
-
59
- export type GitlabVariables = Record<string, string | undefined>;
54
+ tags?: string[];
55
+ }
60
56
 
61
57
  /**
62
58
  * this is not precicily the type of a gitlab-pipeline
63
59
  * the jobs nee to be merge into the object.
64
60
  * Problem is, that this type cannot be represented properly with typescript, see https://github.com/microsoft/TypeScript/issues/17867
65
61
  */
66
- export type GitlabPipeline = {
62
+ export interface GitlabPipeline extends Pick<JobTemplate, "variables"> {
67
63
  image: string;
68
- variables: GitlabVariables;
69
64
  workflow?: {
70
65
  rules: GitlabRule[];
71
66
  };
72
67
  stages: string[];
73
68
  jobs: Record<string, GitlabJobDef>;
74
- };
69
+ }
package/src/types/jobs.ts CHANGED
@@ -1,10 +1,15 @@
1
- import {
1
+ import type { UnspecifiedEnvVars } from "..";
2
+ import type {
3
+ BashExpression,
4
+ StringOrBashExpression,
5
+ } from "../bash/BashExpression";
6
+ import type {
2
7
  Artifacts,
3
- GitlabEnvironment,
4
8
  GitlabJobCache,
5
9
  GitlabRule,
6
- GitlabVariables,
7
- Service,
10
+ GitlabJobImage,
11
+ GitlabJobDef,
12
+ GitlabEnvironment,
8
13
  } from "./gitlab-types";
9
14
 
10
15
  export const BASE_STAGES = [
@@ -13,10 +18,21 @@ export const BASE_STAGES = [
13
18
  "build",
14
19
  "deploy",
15
20
  "verify",
21
+ "rollback",
16
22
  "stop",
17
23
  ] as const;
18
- export type BaseStage = typeof BASE_STAGES[number];
24
+ export type BaseStage = (typeof BASE_STAGES)[number];
25
+
26
+ export type CatladderJobNeed =
27
+ | string
28
+ | { job: string; artifacts: boolean; componentName?: string }
29
+ | { job: string; artifacts: boolean; workspaceName: string };
19
30
 
31
+ export type CatladderJobEnvironmentConfig = {
32
+ action?: GitlabEnvironment["action"];
33
+ on_stop?: GitlabEnvironment["on_stop"];
34
+ auto_stop_in?: string;
35
+ };
20
36
  export type CatladderJob<S = BaseStage> = {
21
37
  /**
22
38
  * the name of the job (without any env or app prefix and suffix)
@@ -46,12 +62,25 @@ export type CatladderJob<S = BaseStage> = {
46
62
  needsStages?: {
47
63
  stage: S;
48
64
  artifacts?: boolean;
65
+ workspaceName?: string;
49
66
  }[];
50
67
 
51
68
  /**
52
- * does this require another job?
69
+ * does this require another job (from the same component)?
70
+ *
71
+ * You can also require a job from another component if you set `componentName`
72
+ *
73
+ */
74
+ needs?: Array<CatladderJobNeed>;
75
+
76
+ /**
77
+ * @deprecated set `componentName` to `needs` if you want to wait for a job from another component
53
78
  */
54
- needs?: Array<string | { job: string; artifacts: boolean }>;
79
+ needsOtherComponent?: Array<{
80
+ componentName: string;
81
+ job: string;
82
+ artifacts: boolean;
83
+ }>;
55
84
  /**
56
85
  * cache config, we use here the same shape as gitlab itself
57
86
  */
@@ -65,24 +94,50 @@ export type CatladderJob<S = BaseStage> = {
65
94
  /**
66
95
  * additional services, mainly used for docker
67
96
  */
68
- services?: Service[];
97
+ services?: GitlabJobDef["services"];
69
98
 
70
99
  /**
71
100
  * image to use
72
101
  */
73
- image?: string;
102
+ image?: GitlabJobImage;
74
103
 
75
104
  /**
76
105
  * variables to pass
77
106
  */
78
- variables: GitlabVariables;
107
+ variables: UnspecifiedEnvVars | undefined;
108
+
109
+ /**
110
+ * additional vars only for the runner.
111
+ * Also if you use services: that require env vars, you need to set them here.
112
+ *
113
+ */
114
+ runnerVariables?: Record<string, string>;
79
115
 
80
116
  /**
81
117
  * whether failures are allowed
82
118
  */
83
119
  allow_failure?: boolean;
84
120
 
85
- environment?: GitlabEnvironment;
121
+ /**
122
+ * gitlab environment config, subject to change
123
+ */
124
+ environment?: CatladderJobEnvironmentConfig;
125
+
126
+ /** */
127
+
128
+ when?: GitlabRule["when"];
86
129
 
87
130
  rules?: GitlabRule[];
131
+
132
+ /**
133
+ * How many instances of a job should be run in parallel.
134
+ * Useful for big test suites that can be split into multiple pipeline jobs.
135
+ * We use the same shape as GitLab itself.
136
+ */
137
+ parallel?: number;
138
+
139
+ /**
140
+ * tags for the underlying job runner (e.g gitlab)
141
+ */
142
+ jobTags?: string[];
88
143
  };
@@ -1,7 +1,11 @@
1
- import { GitlabJobDef, GitlabPipeline } from "./gitlab-types";
1
+ import type { GitlabJobDef, GitlabPipeline } from "./gitlab-types";
2
2
 
3
3
  export type PipelineType = "gitlab";
4
4
 
5
+ export type PipelineMode<T extends PipelineType> = T extends "gitlab"
6
+ ? "childpipeline" | "local"
7
+ : "local";
8
+
5
9
  export type PipelineJob<T extends PipelineType> = T extends "gitlab"
6
10
  ? GitlabJobDef
7
11
  : never;
@@ -0,0 +1,7 @@
1
+ export type PartialDeep<T> = T extends any[]
2
+ ? T
3
+ : T extends Record<string, any>
4
+ ? {
5
+ [P in keyof T]?: PartialDeep<T[P]>;
6
+ }
7
+ : T;
@@ -0,0 +1,33 @@
1
+ export const allowFailureInScripts = (script: string[]): string[] => [
2
+ "set +e", // disable fail job on error
3
+ ...script,
4
+ "set -e", // reenable
5
+ ];
6
+
7
+ export const sanitizeForBashVariable = (name: string) =>
8
+ name.replace(/-/g, "_");
9
+
10
+ export const repeatOnFailure = (
11
+ command: string,
12
+ options: {
13
+ pauseInSeconds: number;
14
+ },
15
+ ): string => {
16
+ return `
17
+ until ${command}
18
+ do
19
+ echo "Trying again."
20
+ sleep ${options.pauseInSeconds}
21
+ done
22
+ `;
23
+ };
24
+
25
+ export const collapseableSection =
26
+ (name: string, header: string) =>
27
+ (commands: string[]): string[] => {
28
+ return [
29
+ `echo -e "\\e[0Ksection_start:$(date +%s):${name}[collapsed=true]\\r\\e[0K${header}"`,
30
+ ...commands,
31
+ `echo -e "\\e[0Ksection_end:$(date +%s):${name}\\r\\e[0K"`,
32
+ ];
33
+ };
@@ -1,12 +1,12 @@
1
1
  import { isNil, mergeWith } from "lodash";
2
2
 
3
3
  export function notNil<TValue>(
4
- value: TValue | null | undefined
4
+ value: TValue | null | undefined,
5
5
  ): value is TValue {
6
6
  return value !== null && value !== undefined;
7
7
  }
8
8
 
9
- export const ensureArray = <T>(s: T | T[]): T[] | null =>
9
+ export const ensureArray = <T>(s: undefined | T | T[]): T[] | null =>
10
10
  isNil(s) ? null : Array.isArray(s) ? s : [s];
11
11
 
12
12
  // see https://github.com/lodash/lodash/issues/5384
@@ -14,6 +14,6 @@ export const mergeWithMergingArrays = <A, B>(obj1: A, obj2: B): A & B => {
14
14
  return mergeWith({}, obj1, obj2, (prop1, prop2) =>
15
15
  Array.isArray(prop1) && Array.isArray(prop2)
16
16
  ? [...prop1, ...prop2]
17
- : undefined
17
+ : undefined,
18
18
  );
19
19
  };
@@ -0,0 +1,7 @@
1
+ export const jsonParseOrThrow = (str: string): any => {
2
+ try {
3
+ return JSON.parse(str);
4
+ } catch (e) {
5
+ throw new Error(`could not parse json: ${str}`);
6
+ }
7
+ };
@@ -0,0 +1,4 @@
1
+ export const removeUndefined = <T extends object>(obj: T): T =>
2
+ Object.fromEntries(
3
+ Object.entries(obj).filter(([, value]) => value !== undefined),
4
+ ) as T;
@@ -0,0 +1,53 @@
1
+ import { writeFile } from "fs/promises";
2
+ import { stringify } from "yaml";
3
+ import packageInfos from "../packageInfos";
4
+
5
+ export const getAutoGeneratedHeader = (commentChar: string) => {
6
+ return [
7
+ "-------------------------------------------------",
8
+ `🐱 🔨 This file is generated by catladder v${packageInfos.version}`,
9
+ `🚨 Do not edit this file manually 🚨`,
10
+ "-------------------------------------------------",
11
+ ]
12
+ .map((line) => `${commentChar} ${line}`)
13
+ .join("\n")
14
+ .concat("\n");
15
+ };
16
+
17
+ export const writeGeneratedFile = async (
18
+ path: string,
19
+ content: string,
20
+ {
21
+ commentChar,
22
+ }: {
23
+ commentChar: string;
24
+ },
25
+ ) => {
26
+ await writeFile(
27
+ path,
28
+ // need to spread out the jobs, forgot why
29
+ [getAutoGeneratedHeader(commentChar), content].join("\n"),
30
+ {
31
+ encoding: "utf-8",
32
+ },
33
+ );
34
+ };
35
+
36
+ type StringifyOptions = Exclude<
37
+ Parameters<typeof stringify>[2],
38
+ null | undefined | string | number
39
+ >;
40
+ export const yamlStringifyOptions: StringifyOptions = {
41
+ // prevents colapsing long command statements into multiple lines
42
+ lineWidth: 0,
43
+ // represent multi line commands as single line json strings
44
+ doubleQuotedAsJSON: true,
45
+ // Better readability when bash commands most often use double quotes
46
+ singleQuote: true,
47
+ };
48
+
49
+ export const writeYamlfile = async (path: string, data: any) => {
50
+ await writeGeneratedFile(path, stringify(data, yamlStringifyOptions), {
51
+ commentChar: "#",
52
+ });
53
+ };
package/tsconfig.json CHANGED
@@ -1,12 +1,14 @@
1
1
  {
2
2
  "compilerOptions": {
3
- "lib": ["es2020", "DOM"],
3
+ "lib": ["es2021", "DOM"],
4
4
  "strict": true,
5
+ "module": "CommonJS",
5
6
  "downlevelIteration": true,
6
7
  "declaration": true,
7
8
  "outDir": "dist",
9
+ "moduleResolution": "node",
8
10
  "esModuleInterop": true,
9
11
  "incremental": true
10
12
  },
11
- "include": ["./src"]
13
+ "include": ["./src", "tests"]
12
14
  }
@@ -1,7 +0,0 @@
1
- import { Context } from "../..";
2
- import { CatladderJob } from "../../types/jobs";
3
- export declare const createBuildJob: (context: Context, {
4
- script,
5
- variables,
6
- ...def
7
- }: Partial<CatladderJob>) => CatladderJob;
@@ -1,2 +0,0 @@
1
- import { Context } from "../../types";
2
- export declare const getBuildInfo: (context: Context) => string[];
@@ -1,12 +0,0 @@
1
- "use strict";
2
-
3
- exports.__esModule = true;
4
- exports.getBuildInfo = void 0;
5
-
6
- var getBuildInfo = function (context) {
7
- var _a, _b;
8
-
9
- return ["echo '{\"id\":\"".concat((_a = context.commitInfo) === null || _a === void 0 ? void 0 : _a.buildId, "\",\"time\":\"").concat((_b = context.commitInfo) === null || _b === void 0 ? void 0 : _b.buildTime, "\"}' > ").concat(context.componentConfig.dir, "/__build_info.json")];
10
- };
11
-
12
- exports.getBuildInfo = getBuildInfo;
@@ -1,141 +0,0 @@
1
- "use strict";
2
-
3
- exports.__esModule = true;
4
-
5
- var resolveReferences_1 = require("./resolveReferences");
6
-
7
- describe("resolveReferences", function () {
8
- it("replaces occurences of ${componentName:VARIABLE_NAME}", function () {
9
- var variables = {
10
- a: "hello world",
11
- b: "a replaced value looks like this: '${api:FOO}', nice!"
12
- };
13
- var otherVariables = {
14
- api: {
15
- FOO: "foo from api"
16
- },
17
- frontend: {
18
- FOO: "foo from frontend"
19
- }
20
- };
21
- var result = (0, resolveReferences_1.resolveReferences)(variables, function (componentName, variableName) {
22
- var _a;
23
-
24
- return (_a = otherVariables[componentName]) === null || _a === void 0 ? void 0 : _a[variableName];
25
- });
26
- expect(result).toEqual({
27
- a: "hello world",
28
- b: "a replaced value looks like this: 'foo from api', nice!"
29
- });
30
- });
31
- it("replaces self references with structure ${VARIABLE_NAME}", function () {
32
- var variables = {
33
- FOO: "hello world",
34
- BAR: "this: ${FOO}!"
35
- };
36
- var result = (0, resolveReferences_1.resolveReferences)(variables);
37
- expect(result).toEqual({
38
- FOO: "hello world",
39
- BAR: "this: hello world!"
40
- });
41
- });
42
- it("replaces self references mixed with other vars", function () {
43
- var variables = {
44
- FOO: "hello from ${api:FOO}",
45
- BAR: "this: ${FOO}!"
46
- };
47
- var otherVariables = {
48
- api: {
49
- FOO: "foo from api"
50
- }
51
- };
52
- var result = (0, resolveReferences_1.resolveReferences)(variables, function (componentName, variableName) {
53
- var _a;
54
-
55
- return (_a = otherVariables[componentName]) === null || _a === void 0 ? void 0 : _a[variableName];
56
- });
57
- expect(result).toEqual({
58
- FOO: "hello from foo from api",
59
- BAR: "this: hello from foo from api!"
60
- });
61
- });
62
- it("keeps variables as is if not found (when null is returned)", function () {
63
- var variables = {
64
- a: "hello world",
65
- b: "a not found value looks like this: '${api:FOO}'"
66
- };
67
- var otherVariables = {};
68
- var result = (0, resolveReferences_1.resolveReferences)(variables, function (componentName, variableName) {
69
- var _a;
70
-
71
- return (_a = otherVariables[componentName]) === null || _a === void 0 ? void 0 : _a[variableName];
72
- });
73
- expect(result).toEqual({
74
- a: "hello world",
75
- b: "a not found value looks like this: '${api:FOO}'"
76
- });
77
- });
78
- it("replaces mulitple levels deep", function () {
79
- var variables = {
80
- a: "value is ${frontend:FOO}!"
81
- };
82
- var otherVariables = {
83
- api: {
84
- FOO: "foo from api"
85
- },
86
- frontend: {
87
- FOO: "hi, ${api:FOO}"
88
- }
89
- };
90
- var result = (0, resolveReferences_1.resolveReferences)(variables, function (componentName, variableName) {
91
- var _a, _b;
92
-
93
- return (_b = (_a = otherVariables[componentName]) === null || _a === void 0 ? void 0 : _a[variableName]) !== null && _b !== void 0 ? _b : "";
94
- });
95
- expect(result).toEqual({
96
- a: "value is hi, foo from api!"
97
- });
98
- });
99
- it("prevents endless loops", function () {
100
- var variables = {
101
- a: "value is ${frontend:FOO}!"
102
- };
103
- var otherVariables = {
104
- api: {
105
- FOO: "api ${frontend:FOO}"
106
- },
107
- frontend: {
108
- FOO: "frontend ${api:FOO}"
109
- }
110
- };
111
- var result = (0, resolveReferences_1.resolveReferences)(variables, function (componentName, variableName) {
112
- var _a, _b;
113
-
114
- return (_b = (_a = otherVariables[componentName]) === null || _a === void 0 ? void 0 : _a[variableName]) !== null && _b !== void 0 ? _b : "";
115
- });
116
- expect(result).toEqual({
117
- a: "value is frontend api ${frontend:FOO}!"
118
- });
119
- });
120
- });
121
- describe("translateLegacyFromComponents", function () {
122
- it("translatetes the old `fromComponents` approach to ${componentName:variableName}", function () {
123
- var fromComponents = {
124
- api: {
125
- API_FOO: "FOO",
126
- API_BAR: "BAR"
127
- },
128
- www: {
129
- WWW_X: "X",
130
- WWW_Y: "Y"
131
- }
132
- };
133
- var result = (0, resolveReferences_1.translateLegacyFromComponents)(fromComponents);
134
- expect(result).toEqual({
135
- API_FOO: "${api:FOO}",
136
- API_BAR: "${api:BAR}",
137
- WWW_X: "${www:X}",
138
- WWW_Y: "${www:Y}"
139
- });
140
- });
141
- });
@@ -1,8 +0,0 @@
1
- import { Context } from "../types";
2
- import { CatladderJob } from "../types/jobs";
3
- export declare const DEPLOY_JOB_NAME = "\uD83D\uDE80 Deploy";
4
- export declare const STOP_JOB_NAME = "\uD83D\uDED1 Stop \u26A0\uFE0F";
5
- declare type JobWithoutScript = Omit<CatladderJob, "script">;
6
- export declare const getBaseDeploymentJob: (context: Context) => JobWithoutScript;
7
- export declare const getBaseDeploymentStopJob: (context: Context) => JobWithoutScript;
8
- export {};