@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
@@ -0,0 +1,282 @@
1
+ import type { DeployConfigBase } from "./base";
2
+
3
+ export type Gcloudregion =
4
+ | "asia-east1"
5
+ | "asia-northeast1"
6
+ | "asia-northeast2"
7
+ | "europe-north1"
8
+ | "europe-southwest1"
9
+ | "europe-west1"
10
+ | "europe-west4"
11
+ | "europe-west8"
12
+ | "europe-west9"
13
+ | "me-west1"
14
+ | "us-central1"
15
+ | "us-east1"
16
+ | "us-east4"
17
+ | "us-east5"
18
+ | "us-south1"
19
+ | "us-west1"
20
+ | "asia-east2"
21
+ | "asia-northeast3"
22
+ | "asia-southeast1"
23
+ | "asia-southeast2"
24
+ | "asia-south1"
25
+ | "asia-south2"
26
+ | "australia-southeast1"
27
+ | "australia-southeast2"
28
+ | "europe-central2"
29
+ | "europe-west2"
30
+ | "europe-west3"
31
+ | "europe-west6"
32
+ | "northamerica-northeast1"
33
+ | "northamerica-northeast2"
34
+ | "southamerica-east1"
35
+ | "southamerica-west1"
36
+ | "us-west2"
37
+ | "us-west3"
38
+ | "us-west4";
39
+
40
+ export type DeployConfigCloudRunCloudSql = {
41
+ type: "unmanaged";
42
+ instanceConnectionName: string;
43
+ /**
44
+ * the database username, defaults to "postgres"
45
+ */
46
+ dbUser?: string;
47
+
48
+ /**
49
+ * the prefix of the database, the full db name is this plus the environment slug prefix plus the componentName
50
+ *
51
+ * defaults to customerName-appName
52
+ */
53
+ dbNamePrefix?: string | false;
54
+
55
+ /**
56
+ * the base name of the db, defaults to the componentName
57
+ */
58
+ dbBaseName?: string;
59
+ /**
60
+ * whether to delete the database if the environment is stopped
61
+ * defaults to true for review envs, to false for every other environment
62
+ */
63
+ deleteDatabaseOnStop?: boolean;
64
+
65
+ /**
66
+ * format of the `DATABASE_URL` environment variable
67
+ *
68
+ * the options are:
69
+ * - prisma: adds [required but ignored hostname](https://www.prisma.io/docs/orm/overview/databases/postgresql#connecting-via-sockets):
70
+ * `postgresql://$DB_USER:$DB_PASSWORD@localhost/$DB_NAME?host=/cloudsql/$CLOUD_SQL_INSTANCE_CONNECTION_NAME`
71
+ * - rails: percent-encodes the socket in the host part
72
+ * `postgresql://$DB_USER:$DB_PASSWORD@%2Fcloudsql%2FprojectId%3Aregion%3Ainstancename/$DB_NAME?`
73
+ * - jdbc: for use with Google Cloud SQL Connector for Java
74
+ * `jdbc:postgresql:///$DB_NAME?cloudSqlInstance=$CLOUD_SQL_INSTANCE_CONNECTION_NAME&socketFactory=com.google.cloud.sql.postgres.SocketFactory&user=$DB_USER&password=$DB_PASSWORD`
75
+ *
76
+ * defaults to prisma
77
+ */
78
+ dbConnectionStringFormat?: "prisma" | "rails" | "jdbc";
79
+
80
+ /**
81
+ * add additional query params to the database connection string
82
+ */
83
+ dbAdditionalQueryParams?: Record<string, string | number> & {
84
+ /**
85
+ * set to 0 for prisma in review or dev apps where you reset the db occasionally without restarting any server
86
+ */
87
+ statement_cache_size?: number;
88
+ };
89
+ };
90
+
91
+ type Memory = `${number}${"M" | "G" | "Mi" | "Gi"}`;
92
+ type Cpu = 1 | 2 | 4 | 6 | 8;
93
+ export type DeployConfigCloudRunService = {
94
+ /**
95
+ * command / entrypoint, fallsback to buildConfig.startcommand
96
+ */
97
+ command?: string | string[];
98
+
99
+ /**
100
+ * how many instances to keep around when there are no requests. defaults to 0.
101
+ * Set to 1 for workers
102
+ */
103
+ minInstances?: number;
104
+
105
+ /**
106
+ * maximum amount of instances. Defaults to 100
107
+ */
108
+ maxInstances?: number;
109
+
110
+ /**
111
+ * set to true to allways allocate cpu, e.g. for workers. Careful that this is expensive, unless you get really regularly requests!
112
+ */
113
+ noCpuThrottling?: true;
114
+
115
+ /**
116
+ * whether to allow public access without authentification (defaults to true)
117
+ */
118
+ allowUnauthenticated?: boolean;
119
+
120
+ /**
121
+ * whether to expose the service to the internet.
122
+ *
123
+ * The options are:
124
+ * - all: expose to the internet and internal traffic
125
+ * - internal: only expose to internal traffic
126
+ * - internal-and-cloud-load-balancing: expose to internal traffic and cloud load balancing
127
+ *
128
+ * Defaults to "all"
129
+ */
130
+ ingress?: "all" | "internal" | "internal-and-cloud-load-balancing";
131
+
132
+ /**
133
+ * CPU limit.
134
+ */
135
+ cpu?: Cpu;
136
+
137
+ /**
138
+ * memory limit. Defaults to 512MB
139
+ */
140
+ memory?: Memory;
141
+
142
+ /**
143
+ * timeout of the service, defaults to 5 minutes.
144
+ *
145
+ * you can specify something like 10m30s. if its just a number, it will be interpreted as seconds
146
+ *
147
+ * max supported is 60min
148
+ */
149
+ timeout?: string;
150
+
151
+ /**
152
+ *
153
+ * set the execution environment.
154
+ *
155
+ * see https://cloud.google.com/run/docs/about-execution-environments
156
+ *
157
+ * defaults to gen1 according to gcloud
158
+ */
159
+ executionEnvironment?: "gen2" | "gen1";
160
+ } & DeployConfigCloudRunWithVolumes;
161
+
162
+ export type DeployConfigCloudRunJobBase = {
163
+ /**
164
+ * command
165
+ */
166
+ command: string | string[];
167
+
168
+ /**
169
+ * custom image to use. Defaults to the image from the build
170
+ */
171
+ image?: string;
172
+
173
+ /**
174
+ * CPU limit of the job.
175
+ */
176
+ cpu?: Cpu;
177
+
178
+ /**
179
+ * memory limit of the job, defaults to 512Mi
180
+ */
181
+ memory?: `${number}${"M" | "G" | "Mi" | "Gi"}`;
182
+
183
+ /**
184
+ * timeout of job, defaults to 10 minutes
185
+ *
186
+ * you can specify something like 10m30s
187
+ */
188
+ timeout?: string;
189
+
190
+ /**
191
+ * number of tasks that may run concurrently, defaults to 1
192
+ */
193
+ parallelism?: number;
194
+ } & DeployConfigCloudRunWithVolumes;
195
+
196
+ type Minute = string;
197
+ type Hour = string;
198
+ type DayOfMonth = string;
199
+ type DayOfWeek = string;
200
+ type Month = string;
201
+ export type DeployConfigCloudRunJobWithSchedule =
202
+ DeployConfigCloudRunJobBase & {
203
+ when: "schedule";
204
+ schedule: `${Minute} ${Hour} ${DayOfMonth} ${Month} ${DayOfWeek}`;
205
+ /**
206
+ * Max number of retries of the cloud scheduler.
207
+ * Note: the task itself is never retried.
208
+ *
209
+ * defaults to 0 (no retries)
210
+ */
211
+ maxRetryAttempts?: 0 | 1 | 2 | 3 | 4 | 5;
212
+ };
213
+
214
+ export type DeployConfigCloudRunJobNormal = DeployConfigCloudRunJobBase & {
215
+ when: "manual" | "preDeploy" | "postDeploy" | "preStop" | "postStop";
216
+ };
217
+
218
+ export type DeployConfigCloudRunWithVolumes = {
219
+ /**
220
+ * adds volumes to the service. This is an experimental feature and requires beta gcloud.
221
+ * sets executionEnvironment to gen2 automatically, since that is required
222
+ */
223
+ volumes?: DeployConfigCloudRunVolumes;
224
+ };
225
+
226
+ export type DeployConfigCloudRunJob =
227
+ | DeployConfigCloudRunJobNormal
228
+ | DeployConfigCloudRunJobWithSchedule;
229
+
230
+ export type DeployConfigCloudRun = {
231
+ /**
232
+ * cloud run deployment.
233
+ *
234
+ * This will deploy a cloud run service. You can optionally define one-time and scheduled jobs running on cloud run
235
+ *
236
+ * Requires that cloud run is enabled on the project, as well as cloud run api and artifacts registry.
237
+ */
238
+ type: "google-cloudrun";
239
+ /**
240
+ * the google cloud porject id
241
+ */
242
+ projectId: string;
243
+ /**
244
+ * the region. Set to europe-west6 for switzerland
245
+ */
246
+ region: Gcloudregion;
247
+
248
+ /**
249
+ * whether to enable the service, defaults to true
250
+ */
251
+ service?: boolean | DeployConfigCloudRunService;
252
+
253
+ /**
254
+ * deploy additional services with different entry points.
255
+ */
256
+ additionalServices?: {
257
+ [name: string]: DeployConfigCloudRunService;
258
+ };
259
+
260
+ jobs?: {
261
+ [name: string]: DeployConfigCloudRunJob | false | null;
262
+ };
263
+
264
+ /**
265
+ * add cloudSql
266
+ */
267
+ cloudSql?: DeployConfigCloudRunCloudSql | false;
268
+
269
+ debug?: boolean;
270
+ } & DeployConfigBase;
271
+
272
+ export type DeployConfigCloudRunVolumes = Record<
273
+ string,
274
+ DeployConfigCloudRunVolume
275
+ >;
276
+
277
+ export type DeployConfigCloudRunVolume = {
278
+ type: "cloud-storage";
279
+ bucket: string;
280
+ mountPath: string;
281
+ readonly?: boolean;
282
+ };
@@ -0,0 +1,28 @@
1
+ import type { DeployConfigCustom } from "./custom";
2
+ import type { DeployConfigDockerTag } from "./dockerTag";
3
+ import type { DeployConfigCloudRun } from "./googleCloudRun";
4
+ import type { DeployConfigKubernetes } from "./kubernetes";
5
+
6
+ export * from "./custom";
7
+ export * from "./googleCloudRun";
8
+ export * from "./kubernetes";
9
+ export * from "./dockerTag";
10
+
11
+ export type DeployConfig =
12
+ | DeployConfigKubernetes
13
+ | DeployConfigCustom
14
+ | DeployConfigCloudRun
15
+ | DeployConfigDockerTag;
16
+
17
+ export type DeployConfigType = DeployConfig["type"];
18
+ export type DeployConfigGeneric<T extends DeployConfigType> = Extract<
19
+ DeployConfig,
20
+ { type: T }
21
+ >;
22
+
23
+ export const isOfDeployType = <T extends Array<DeployConfigType>>(
24
+ t: DeployConfig | false | null | undefined,
25
+ ...types: T
26
+ ): t is Extract<DeployConfig, { type: T[number] }> => {
27
+ return t && types.includes(t.type) ? true : false;
28
+ };
@@ -0,0 +1,390 @@
1
+ import type { AllowUnknownProps, DeployConfigBase } from "./base";
2
+
3
+ export type DeployConfigKubernetesClusterGCloud = {
4
+ type: "gcloud";
5
+ /**
6
+ * gcoud name of the cluster
7
+ */
8
+ name: string;
9
+ /**
10
+ * google cloud project id
11
+ */
12
+ projectId: string;
13
+ /**
14
+ * region
15
+ */
16
+ region: string;
17
+ /**
18
+ * domain of the cluster, for canonical domains without custom host (e.g. review and dev apps)
19
+ */
20
+ domainCanonical?: string;
21
+ };
22
+ export type DeployConfigKubernetesCluster = DeployConfigKubernetesClusterGCloud; // currently only this
23
+
24
+ export type KubernetesAutoscaleMetricResourceTarget =
25
+ | {
26
+ type: "Utilization";
27
+ averageUtilization: number;
28
+ }
29
+ | {
30
+ type: "AverageValue";
31
+ averageValue: number | string;
32
+ };
33
+ export type KubernetesAutoscaleMetric = {
34
+ type: "Resource";
35
+ resource: {
36
+ name: "cpu" | "memory";
37
+ target: KubernetesAutoscaleMetricResourceTarget;
38
+ };
39
+ };
40
+ export type KubernetesAutoscale = {
41
+ minReplicas: number;
42
+ maxReplicas: number;
43
+ /**
44
+ * declare a number of metrics (at least one). Usually you would use cpu as a metric
45
+ */
46
+ metrics: KubernetesAutoscaleMetric[];
47
+ };
48
+ export type KubernetesResourcesDef = {
49
+ limits?: {
50
+ cpu?: string;
51
+ memory?: string;
52
+ };
53
+ requests?: {
54
+ cpu?: string;
55
+ memory?: string;
56
+ };
57
+ };
58
+ type KubernetesHealthDef = {
59
+ httpGet?: {
60
+ path?: string;
61
+ port?: number;
62
+ httpHeaders?: {
63
+ name: string;
64
+ value: string;
65
+ }[];
66
+ failureThreshold?: number;
67
+ timeoutSeconds?: number;
68
+ periodSeconds?: number;
69
+ successThreshold?: number;
70
+ };
71
+ };
72
+ export type KubernetesUpdateStrategy = {
73
+ rollingUpdate: {
74
+ /**
75
+ * how many pods can be created additionally to the target number
76
+ * can be absolute number or percentage.
77
+ * defaults to 1 (kube default is 25%)
78
+ */
79
+ maxSurge: number | string;
80
+ /**
81
+ * how many pods are allowed to be unavailable
82
+ * can be absolute number or percentage
83
+ * defaults to 0 (kube default is 25%)
84
+ */
85
+ maxUnavailable: number | string;
86
+ };
87
+ type: "RollingUpdate";
88
+ };
89
+ export type KubernetesWorkerDef = {
90
+ enabled: boolean;
91
+ /**
92
+ * which command to run. defaults to `yarn start`
93
+ */
94
+ command?: string;
95
+ resources?: KubernetesResourcesDef;
96
+ service?: {
97
+ enabled?: boolean;
98
+ };
99
+ /**
100
+ * if the same livenessProbe as the application should be used, defaults to `true`
101
+ */
102
+ livenessProbe?: boolean;
103
+ };
104
+
105
+ type KubernetesTolerationExists = {
106
+ operator: "Exists";
107
+ };
108
+
109
+ type KubernetesTolerationEqual = {
110
+ operator: "Equal";
111
+ value: string;
112
+ };
113
+
114
+ export type KubernetesToleration = {
115
+ key: string;
116
+ effect: "NoSchedule" | "PreferNoSchedule" | "NoExecute";
117
+ } & (KubernetesTolerationEqual | KubernetesTolerationExists);
118
+ export type DeployConfigMongodbBase = {
119
+ enabled?: boolean;
120
+ dbName?: string;
121
+ persistence?: {
122
+ /**
123
+ * set premium-rwo for ssd
124
+ */
125
+ storageClass?: "standard-rwo" | "premium-rwo";
126
+
127
+ /**
128
+ * size of the volume, defaults to 8Gi
129
+ */
130
+ size?: string;
131
+ };
132
+ resources?: KubernetesResourcesDef;
133
+ tolerations?: KubernetesToleration[];
134
+ };
135
+
136
+ export type KubernetesRedirect = {
137
+ /**
138
+ * the domain to redirect from
139
+ */
140
+ host: string;
141
+ /**
142
+ * optional path to redirect from, defaults to `/`
143
+ */
144
+ path?: string;
145
+ /**
146
+ * optional nginx config snippet, defaults to a 301 redirect to the environment host name name with the request path appended
147
+ *
148
+ * important: to get a literal `$` use `$$` to prevent variable expansion by gitlab
149
+ * see https://docs.gitlab.com/ee/ci/variables/#use-the--character-in-cicd-variables
150
+ */
151
+ rule?: string;
152
+ };
153
+
154
+ export type DeployConfigMongodbStandalone = {
155
+ architecture: "standalone";
156
+ };
157
+ export type DeployConfigMongodbReplicaset = {
158
+ architecture: "replicaset";
159
+ /**
160
+ * defaults to 2
161
+ */
162
+ replicaCount?: number;
163
+ };
164
+ export type DeployConfigMongodb = DeployConfigMongodbBase &
165
+ (DeployConfigMongodbStandalone | DeployConfigMongodbReplicaset);
166
+
167
+ /**
168
+ * @deprecated use config with instanceConnectionName
169
+ */
170
+ type DeployConfigKubernetesValuesCloudSQLLegacy = {
171
+ enabled: boolean;
172
+ /**
173
+ * @deprecated use config with instanceConnectionName
174
+ */
175
+ instanceId?: string;
176
+ /**
177
+ * @deprecated use config with instanceConnectionName
178
+ */
179
+ projectId?: string;
180
+ /**
181
+ * @deprecated use config with instanceConnectionName
182
+ */
183
+ region?: string;
184
+ /**
185
+ * @deprecated use type "unmanaged".
186
+ *
187
+ * Be aware that "unmanaged" is not fully backward compatible with "legacy".
188
+ *
189
+ *
190
+ */
191
+ type?: "legacy";
192
+ };
193
+
194
+ export type DeployConfigKubernetesValuesCloudSQLUnmanaged = {
195
+ enabled: boolean;
196
+ instanceConnectionName: string;
197
+ /**
198
+ * the recommended type for the config.
199
+ *
200
+ * this mode is similar to cloudrun and declares fully-qualified db names including env.
201
+ *
202
+ * This makes it easier to share db instances across envs and dbs
203
+ */
204
+ type: "unmanaged";
205
+ /**
206
+ * the database username, defaults to "postgres"
207
+ */
208
+ dbUser?: string;
209
+
210
+ /**
211
+ * the prefix of the database, the full db name is this plus the environment slug prefix plus the componentName
212
+ *
213
+ * defaults to customerName-appName
214
+ */
215
+ dbNamePrefix?: string | false;
216
+
217
+ /**
218
+ * the base name of the db, defaults to the componentName
219
+ */
220
+ dbBaseName?: string;
221
+ };
222
+ export type DeployConfigKubernetesValuesCloudSQL =
223
+ | DeployConfigKubernetesValuesCloudSQLLegacy
224
+ | DeployConfigKubernetesValuesCloudSQLUnmanaged;
225
+ export type DeployConfigKubernetesValues = AllowUnknownProps<{
226
+ /**
227
+ * enable cloudsql db. Currently you have to manually set it up
228
+ */
229
+ cloudsql?: DeployConfigKubernetesValuesCloudSQL;
230
+ /**
231
+ * enable mongodb. The mongodb is deployed using a helm chart.
232
+ * See https://github.com/bitnami/charts/tree/master/bitnami/mongodb
233
+ */
234
+ mongodb?: DeployConfigMongodb;
235
+ /**
236
+ * enable mailhog. Mailhog is a virtual mail server that catches all outgoing mailsl and show them in a mailbox.
237
+ * This is great for development as it prevents to accidentially send out real emails and helps with debugging outgoing mails.
238
+ *
239
+ * It will automaticaly inject a MAIL_URL env var.
240
+ *
241
+ * Turn it of for production.
242
+ */
243
+ mailhog?: {
244
+ enabled: boolean;
245
+ };
246
+ /**
247
+ * post-install/upgrade jobs. These use the app image and have all env vars available.
248
+ * Typically used for migrations and seeds
249
+ */
250
+ jobs?: Record<
251
+ string,
252
+ | false
253
+ | AllowUnknownProps<{
254
+ /**
255
+ * the command to execute
256
+ */
257
+ command: string;
258
+ /**
259
+ * comma-separated list of helm hooks, see https://helm.sh/docs/topics/charts_hooks/
260
+ *
261
+ * defaults to post-install,post-upgrade
262
+ */
263
+ hook?: string;
264
+ }>
265
+ >;
266
+ /**
267
+ * cronjobs that run periodically. These use the app image have all env vars available.
268
+ */
269
+ cronjobs?: Record<
270
+ string,
271
+ | false
272
+ | AllowUnknownProps<{
273
+ schedule: string;
274
+ command: string;
275
+ concurrencyPolicy?: "Forbid" | "Allow" | "Replace";
276
+ }>
277
+ >;
278
+ /**
279
+ * configuration for the application ("Deployment" in kubernetes)
280
+ */
281
+ application?:
282
+ | false
283
+ | AllowUnknownProps<{
284
+ /**
285
+ * command to start, defaults to build's startCommand
286
+ */
287
+ command?: string;
288
+
289
+ /**
290
+ * enable, disable app deployment, defaults to true
291
+ */
292
+ enabled?: boolean;
293
+ /**
294
+ * redirects
295
+ */
296
+ redirects?: KubernetesRedirect[];
297
+ /**
298
+ * Host aliases
299
+ */
300
+ hostAliases?: string[];
301
+ /**
302
+ * how many pods will be started
303
+ */
304
+ replicas?: number;
305
+
306
+ /**
307
+ * autoscale the pods horizontally
308
+ */
309
+ autoscale?: KubernetesAutoscale;
310
+
311
+ /**
312
+ * the update strategy, see https://kubernetes.io/docs/concepts/workloads/controllers/deployment/#rolling-update-deployment
313
+ */
314
+ updateStrategy?: KubernetesUpdateStrategy;
315
+
316
+ /**
317
+ * kubernetes resources
318
+ */
319
+
320
+ resources?: KubernetesResourcesDef;
321
+ healthRoute?: string;
322
+ startupProbe?: KubernetesHealthDef;
323
+ readinessProbe?: KubernetesHealthDef;
324
+ livenessProbe?: KubernetesHealthDef;
325
+ /**
326
+ * specify a worker. A worker is a separate deployment that runs continously in the background.
327
+ * The worker pod can use the same entry point as the app or a different one (specify command).
328
+ * It has the same environment variables as the application and an additional IS_WORKER="true" variable
329
+ */
330
+ worker?: KubernetesWorkerDef;
331
+
332
+ /**
333
+ * kubernetes resources for jobs and cronjobs
334
+ */
335
+ jobDefaults?: {
336
+ resources: KubernetesResourcesDef;
337
+ };
338
+ }>;
339
+
340
+ /**
341
+ * load secrets from other components.
342
+ * Use this only in cases where the secret is not known on pipeline-time
343
+ * and only if the component is also in the same cluster.
344
+ *
345
+ * a typical case is reusing mongo_url from other component
346
+ *
347
+ * also make sure that the other component deploys first
348
+ *
349
+ * in all other cases use normal env var handling
350
+ */
351
+ secretsFromOtherComponent?: {
352
+ [envVar: string]: string;
353
+ };
354
+
355
+ /**
356
+ * map another services internal endpoint into a env var.
357
+ */
358
+ mapServiceUrlToEnv?: {
359
+ [envVar: string]: string;
360
+ };
361
+ /**
362
+ * Mount secrets as files in the filesystem.
363
+ * These secrets are still available as env vars, but will contain the path of the file instead
364
+ *
365
+ * @deprecated this will be removed in the future, because its very niche and not used
366
+ */
367
+ secretsAsFile?: string[];
368
+ }>;
369
+
370
+ export type DeployConfigKubernetes = {
371
+ type: "kubernetes";
372
+ /**
373
+ * cluster config to use.
374
+ */
375
+ cluster: DeployConfigKubernetesCluster;
376
+ /**
377
+ * prints out debug info (helm --debug)
378
+ */
379
+ debug?: boolean;
380
+ additionalHelmArgs?: string[];
381
+ /**
382
+ * values to configure the app
383
+ */
384
+ values?: DeployConfigKubernetesValues;
385
+ /**
386
+ * Custom Helm chart location.
387
+ * Not recommended to use.
388
+ */
389
+ chartName?: string;
390
+ } & DeployConfigBase;