@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,11 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.DEPLOY_RUNNER_VARIABLES = void 0;
7
+ exports.DEPLOY_RUNNER_VARIABLES = {
8
+ KUBERNETES_CPU_REQUEST: "0.22",
9
+ KUBERNETES_MEMORY_REQUEST: "200Mi",
10
+ KUBERNETES_MEMORY_LIMIT: "400Mi"
11
+ };
@@ -0,0 +1,19 @@
1
+ import type { StringOrBashExpression } from "../../bash/BashExpression";
2
+ import type { ComponentContext } from "../../types/context";
3
+ export declare const getArtifactsRegistryHost: (context: ComponentContext) => string;
4
+ export declare const getArtifactsRegistryDockerUrl: (context: ComponentContext) => string;
5
+ /**
6
+ *
7
+ * lecacyReviewImageName is only temporary. In old versions the images had no reviewslug in review apps, which makes cleanup harder. We delete all those images now, but need the path
8
+ */
9
+ export declare const getArtifactsRegistryImageName: (context: ComponentContext, lecacyReviewImageName?: boolean) => StringOrBashExpression;
10
+ export declare const getArtifactsRegistryBuildCacheImage: (context: ComponentContext) => string;
11
+ export declare const getArtifactsRegistryImage: (context: ComponentContext) => string;
12
+ /**
13
+ * commands to delete unused images.
14
+ *
15
+ * @param context
16
+ * @param keep how many of the newest images to keep
17
+ * @returns
18
+ */
19
+ export declare const getDeleteUnusedImagesCommands: (context: ComponentContext, keep?: number) => string[];
@@ -0,0 +1,125 @@
1
+ "use strict";
2
+
3
+ var __read = this && this.__read || function (o, n) {
4
+ var m = typeof Symbol === "function" && o[Symbol.iterator];
5
+ if (!m) return o;
6
+ var i = m.call(o),
7
+ r,
8
+ ar = [],
9
+ e;
10
+ try {
11
+ while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
12
+ } catch (error) {
13
+ e = {
14
+ error: error
15
+ };
16
+ } finally {
17
+ try {
18
+ if (r && !r.done && (m = i["return"])) m.call(i);
19
+ } finally {
20
+ if (e) throw e.error;
21
+ }
22
+ }
23
+ return ar;
24
+ };
25
+ var __spreadArray = this && this.__spreadArray || function (to, from, pack) {
26
+ if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
27
+ if (ar || !(i in from)) {
28
+ if (!ar) ar = Array.prototype.slice.call(from, 0, i);
29
+ ar[i] = from[i];
30
+ }
31
+ }
32
+ return to.concat(ar || Array.prototype.slice.call(from));
33
+ };
34
+ Object.defineProperty(exports, "__esModule", {
35
+ value: true
36
+ });
37
+ exports.getDeleteUnusedImagesCommands = exports.getArtifactsRegistryImage = exports.getArtifactsRegistryBuildCacheImage = exports.getArtifactsRegistryImageName = exports.getArtifactsRegistryDockerUrl = exports.getArtifactsRegistryHost = void 0;
38
+ var BashExpression_1 = require("../../bash/BashExpression");
39
+ var gitlab_1 = require("../../utils/gitlab");
40
+ var types_1 = require("../types");
41
+ var removeFirstLinesFromCommandOutput_1 = require("./utils/removeFirstLinesFromCommandOutput");
42
+ var getArtifactsRegistryHost = function (context) {
43
+ var _a;
44
+ if (!(0, types_1.isOfDeployType)((_a = context.deploy) === null || _a === void 0 ? void 0 : _a.config, "google-cloudrun")) {
45
+ // should not happen
46
+ throw new Error("deploy config is wrong");
47
+ }
48
+ return "".concat(context.deploy.config.region, "-docker.pkg.dev");
49
+ };
50
+ exports.getArtifactsRegistryHost = getArtifactsRegistryHost;
51
+ var getArtifactsRegistryDockerUrl = function (context) {
52
+ var _a;
53
+ var deployConfig = (_a = context.deploy) === null || _a === void 0 ? void 0 : _a.config;
54
+ if (!(0, types_1.isOfDeployType)(deployConfig, "google-cloudrun")) {
55
+ // should not happen
56
+ throw new Error("deploy config is wrong");
57
+ }
58
+ var fullAppName = "".concat(context.fullConfig.customerName, "-").concat(context.fullConfig.appName);
59
+ return "".concat((0, exports.getArtifactsRegistryHost)(context), "/").concat(deployConfig.projectId, "/catladder-deploy/").concat(fullAppName);
60
+ };
61
+ exports.getArtifactsRegistryDockerUrl = getArtifactsRegistryDockerUrl;
62
+ /**
63
+ *
64
+ * lecacyReviewImageName is only temporary. In old versions the images had no reviewslug in review apps, which makes cleanup harder. We delete all those images now, but need the path
65
+ */
66
+ var getArtifactsRegistryImageName = function (context, lecacyReviewImageName) {
67
+ if (lecacyReviewImageName === void 0) {
68
+ lecacyReviewImageName = false;
69
+ }
70
+ if (lecacyReviewImageName && context.environment.envType !== "review") {
71
+ throw new Error("lecacyReviewImageName is only allowed for review app");
72
+ }
73
+ var dockerUrl = (0, exports.getArtifactsRegistryDockerUrl)(context);
74
+ var gcloudImagePath = __spreadArray([dockerUrl, context.env, context.name], __read(context.environment.reviewSlug && !lecacyReviewImageName ? [context.environment.reviewSlug] : []), false);
75
+ return (0, BashExpression_1.joinBashExpressions)(gcloudImagePath, "/");
76
+ };
77
+ exports.getArtifactsRegistryImageName = getArtifactsRegistryImageName;
78
+ var getArtifactsRegistryBuildCacheImage = function (context) {
79
+ var dockerUrl = (0, exports.getArtifactsRegistryDockerUrl)(context);
80
+ // does not include env, so that after merge, you might get more cache hits (review-->dev)
81
+ var gcloudImagePath = [dockerUrl, "caches", context.name];
82
+ return gcloudImagePath.join("/");
83
+ };
84
+ exports.getArtifactsRegistryBuildCacheImage = getArtifactsRegistryBuildCacheImage;
85
+ var getArtifactsRegistryImage = function (context) {
86
+ return "".concat((0, exports.getArtifactsRegistryImageName)(context), ":$DOCKER_IMAGE_TAG");
87
+ };
88
+ exports.getArtifactsRegistryImage = getArtifactsRegistryImage;
89
+ var getDeleteImageCommands = function (fullImageName, keepNewest) {
90
+ if (keepNewest === void 0) {
91
+ keepNewest = 0;
92
+ }
93
+ if (keepNewest === 0) {
94
+ // no need to list tags, we delete the whole thing
95
+ return ["gcloud artifacts docker images delete ".concat(fullImageName, " --quiet --delete-tags")];
96
+ }
97
+ // delete unused tags
98
+ var listAllImagesCommand = "gcloud artifacts docker images list ".concat(fullImageName, " --sort-by=~CREATE_TIME --format=\"value(version)\"");
99
+ var listImagesToDeletecommand = (0, removeFirstLinesFromCommandOutput_1.removeFirstLinesFromCommandOutput)(listAllImagesCommand, keepNewest);
100
+ var deleteImageCommand = "gcloud artifacts docker images delete ".concat(fullImageName, "@$version --quiet --delete-tags");
101
+ var deleteImagesCommand = "".concat(listImagesToDeletecommand, " | while read -r version; do ").concat(deleteImageCommand, "; done");
102
+ return [deleteImagesCommand];
103
+ };
104
+ /**
105
+ * commands to delete unused images.
106
+ *
107
+ * @param context
108
+ * @param keep how many of the newest images to keep
109
+ * @returns
110
+ */
111
+ var getDeleteUnusedImagesCommands = function (context, keep) {
112
+ var _a;
113
+ if (keep === void 0) {
114
+ keep = 0;
115
+ }
116
+ var deployConfig = (_a = context.deploy) === null || _a === void 0 ? void 0 : _a.config;
117
+ if (!(0, types_1.isOfDeployType)(deployConfig, "google-cloudrun")) {
118
+ // should not happen
119
+ throw new Error("deploy config is wrong");
120
+ }
121
+ var fullImageName = (0, exports.getArtifactsRegistryImageName)(context);
122
+ var buildCacheImageName = (0, exports.getArtifactsRegistryBuildCacheImage)(context);
123
+ return __spreadArray(__spreadArray(__spreadArray([], __read(getDeleteImageCommands(fullImageName, keep)), false), __read(getDeleteImageCommands(buildCacheImageName, 1)), false), __read(context.environment.envType === "review" ? (0, gitlab_1.allowFailureInScripts)(getDeleteImageCommands((0, exports.getArtifactsRegistryImageName)(context, true), 0)) : []), false);
124
+ };
125
+ exports.getDeleteUnusedImagesCommands = getDeleteUnusedImagesCommands;
@@ -0,0 +1,2 @@
1
+ import type { ComponentContext } from "../../types/context";
2
+ export declare const getRemoveOldRevisionsAndImagesCommand: (context: ComponentContext, when: "postDeploy" | "onStop") => string[];
@@ -0,0 +1,53 @@
1
+ "use strict";
2
+
3
+ var __read = this && this.__read || function (o, n) {
4
+ var m = typeof Symbol === "function" && o[Symbol.iterator];
5
+ if (!m) return o;
6
+ var i = m.call(o),
7
+ r,
8
+ ar = [],
9
+ e;
10
+ try {
11
+ while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
12
+ } catch (error) {
13
+ e = {
14
+ error: error
15
+ };
16
+ } finally {
17
+ try {
18
+ if (r && !r.done && (m = i["return"])) m.call(i);
19
+ } finally {
20
+ if (e) throw e.error;
21
+ }
22
+ }
23
+ return ar;
24
+ };
25
+ var __spreadArray = this && this.__spreadArray || function (to, from, pack) {
26
+ if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
27
+ if (ar || !(i in from)) {
28
+ if (!ar) ar = Array.prototype.slice.call(from, 0, i);
29
+ ar[i] = from[i];
30
+ }
31
+ }
32
+ return to.concat(ar || Array.prototype.slice.call(from));
33
+ };
34
+ Object.defineProperty(exports, "__esModule", {
35
+ value: true
36
+ });
37
+ exports.getRemoveOldRevisionsAndImagesCommand = void 0;
38
+ var artifactsRegistry_1 = require("./artifactsRegistry");
39
+ var cloudRunRevisions_1 = require("./cloudRunRevisions");
40
+ var getRemoveOldRevisionsAndImagesCommand = function (context, when) {
41
+ if (when === "onStop") {
42
+ // service is already deleted, so we don't need to delete old revisions, just delete all images
43
+ return (0, artifactsRegistry_1.getDeleteUnusedImagesCommands)(context);
44
+ }
45
+ // this number only targets inactive revisions
46
+ var revisionsToKeep = context.environment.envType === "prod" ? 5 : 0;
47
+ // this number needs to be higher than inactive after deploy, so we add one
48
+ var imagesToKeep = revisionsToKeep + 1;
49
+ var deleteOldRevisionsCommands = (0, cloudRunRevisions_1.getDeleteUnusedRevisionsCommands)(context, revisionsToKeep);
50
+ var deleteOldImagesCommands = (0, artifactsRegistry_1.getDeleteUnusedImagesCommands)(context, imagesToKeep);
51
+ return __spreadArray(__spreadArray([], __read(deleteOldRevisionsCommands), false), __read(deleteOldImagesCommands), false);
52
+ };
53
+ exports.getRemoveOldRevisionsAndImagesCommand = getRemoveOldRevisionsAndImagesCommand;
@@ -0,0 +1,2 @@
1
+ import type { ComponentContext } from "../../types/context";
2
+ export declare const getDeleteUnusedRevisionsCommands: (context: ComponentContext, keep: number) => string[];
@@ -0,0 +1,62 @@
1
+ "use strict";
2
+
3
+ var __assign = this && this.__assign || function () {
4
+ __assign = Object.assign || function (t) {
5
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
6
+ s = arguments[i];
7
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];
8
+ }
9
+ return t;
10
+ };
11
+ return __assign.apply(this, arguments);
12
+ };
13
+ Object.defineProperty(exports, "__esModule", {
14
+ value: true
15
+ });
16
+ exports.getDeleteUnusedRevisionsCommands = void 0;
17
+ var types_1 = require("../types");
18
+ var createArgsString_1 = require("./utils/createArgsString");
19
+ var getServiceName_1 = require("./utils/getServiceName");
20
+ var removeFirstLinesFromCommandOutput_1 = require("./utils/removeFirstLinesFromCommandOutput");
21
+ var getListRevisionsCommand = function (context, args) {
22
+ var _a;
23
+ var serviceName = (0, getServiceName_1.getServiceName)(context);
24
+ var deployConfig = (_a = context.deploy) === null || _a === void 0 ? void 0 : _a.config;
25
+ if (!deployConfig || !(0, types_1.isOfDeployType)(deployConfig, "google-cloudrun")) {
26
+ // should not happen
27
+ throw new Error("deploy config is wrong");
28
+ }
29
+ var filterRevisionArgs = __assign({
30
+ project: deployConfig.projectId,
31
+ region: deployConfig.region,
32
+ // only show inactive revisions
33
+ service: serviceName,
34
+ limit: "unlimited",
35
+ "sort-by": "metadata.creationTimestamp"
36
+ }, args);
37
+ // this prints out all inactive images of the given app
38
+ return "gcloud run revisions list ".concat((0, createArgsString_1.createArgsString)(filterRevisionArgs));
39
+ };
40
+ var getDeleteUnusedRevisionsCommands = function (context, keep) {
41
+ var _a;
42
+ var deployConfig = (_a = context.deploy) === null || _a === void 0 ? void 0 : _a.config;
43
+ if (!(0, types_1.isOfDeployType)(deployConfig, "google-cloudrun")) {
44
+ // should not happen
45
+ throw new Error("deploy config is wrong");
46
+ }
47
+ // this prints out all inactive images of the given app
48
+ var listAllInactiveRevisionsCmd = getListRevisionsCommand(context, {
49
+ format: "\"value(name)\"",
50
+ filter: "'(status.conditions.status=False OR status.conditions.status=Unknown)'"
51
+ });
52
+ // this removes the newest `revisionsToKeep` images
53
+ var listRevisionsToDeleteCmd = (0, removeFirstLinesFromCommandOutput_1.removeFirstLinesFromCommandOutput)(listAllInactiveRevisionsCmd, keep);
54
+ var deleteRevisionCmd = "gcloud run revisions delete ".concat((0, createArgsString_1.createArgsString)({
55
+ project: deployConfig.projectId,
56
+ region: deployConfig.region,
57
+ quiet: true
58
+ }), " $revisionname ");
59
+ var deleteRevisionsCmd = "".concat(listRevisionsToDeleteCmd, " | while read -r revisionname; do ").concat(deleteRevisionCmd, "; done");
60
+ return [deleteRevisionsCmd];
61
+ };
62
+ exports.getDeleteUnusedRevisionsCommands = getDeleteUnusedRevisionsCommands;
@@ -0,0 +1,7 @@
1
+ import type { ComponentContext } from "../../../types/context";
2
+ import type { DeployConfigCloudRunJob } from "../../types/googleCloudRun";
3
+ export declare const getDeleteSchedulesScripts: (context: ComponentContext) => string[];
4
+ export declare const getDeleteJobsScripts: (context: ComponentContext) => string[];
5
+ export declare const getJobRunScripts: (context: ComponentContext, when: DeployConfigCloudRunJob["when"]) => string[];
6
+ export declare const getJobCreateScripts: (context: ComponentContext) => string[];
7
+ export declare const getCreateScheduleScripts: (context: ComponentContext) => string[];
@@ -0,0 +1,187 @@
1
+ "use strict";
2
+
3
+ var __assign = this && this.__assign || function () {
4
+ __assign = Object.assign || function (t) {
5
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
6
+ s = arguments[i];
7
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];
8
+ }
9
+ return t;
10
+ };
11
+ return __assign.apply(this, arguments);
12
+ };
13
+ var __read = this && this.__read || function (o, n) {
14
+ var m = typeof Symbol === "function" && o[Symbol.iterator];
15
+ if (!m) return o;
16
+ var i = m.call(o),
17
+ r,
18
+ ar = [],
19
+ e;
20
+ try {
21
+ while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
22
+ } catch (error) {
23
+ e = {
24
+ error: error
25
+ };
26
+ } finally {
27
+ try {
28
+ if (r && !r.done && (m = i["return"])) m.call(i);
29
+ } finally {
30
+ if (e) throw e.error;
31
+ }
32
+ }
33
+ return ar;
34
+ };
35
+ var __spreadArray = this && this.__spreadArray || function (to, from, pack) {
36
+ if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
37
+ if (ar || !(i in from)) {
38
+ if (!ar) ar = Array.prototype.slice.call(from, 0, i);
39
+ ar[i] = from[i];
40
+ }
41
+ }
42
+ return to.concat(ar || Array.prototype.slice.call(from));
43
+ };
44
+ Object.defineProperty(exports, "__esModule", {
45
+ value: true
46
+ });
47
+ exports.getCreateScheduleScripts = exports.getJobCreateScripts = exports.getJobRunScripts = exports.getDeleteJobsScripts = exports.getDeleteSchedulesScripts = void 0;
48
+ var gitlab_1 = require("../../../utils/gitlab");
49
+ var createArgsString_1 = require("../utils/createArgsString");
50
+ var jobName_1 = require("../utils/jobName");
51
+ var common_1 = require("./common");
52
+ var getLabels_1 = require("../../../context/getLabels");
53
+ var volumes_1 = require("./volumes");
54
+ var constants_1 = require("./constants");
55
+ var getJobRunScriptForJob = function (context, jobName, wait) {
56
+ var commonArgs = (0, common_1.getCommonCloudRunArgs)(context);
57
+ var commonArgsString = (0, createArgsString_1.createArgsString)(commonArgs);
58
+ return "".concat((0, common_1.gcloudRunCmd)(), " jobs execute ").concat(jobName.toString(), " ").concat(commonArgsString).concat(wait ? " --wait" : "");
59
+ };
60
+ var getDeleteSchedulesScripts = function (context) {
61
+ var deployConfig = (0, common_1.getCloudRunDeployConfig)(context);
62
+ var jobsWithSchedule = getCloudRunJobsWithSchedule(context);
63
+ var argsString = (0, createArgsString_1.createArgsString)({
64
+ project: deployConfig.projectId,
65
+ location: deployConfig.region
66
+ });
67
+ return jobsWithSchedule.map(function (_a) {
68
+ var schedulerName = _a.schedulerName;
69
+ return ["".concat((0, common_1.gcloudSchedulerCmd)(), " jobs delete ").concat(schedulerName, " ").concat(argsString)];
70
+ }).flat();
71
+ };
72
+ exports.getDeleteSchedulesScripts = getDeleteSchedulesScripts;
73
+ var getDeleteJobsScripts = function (context) {
74
+ var commonArgs = (0, common_1.getCommonCloudRunArgs)(context);
75
+ var commonArgsString = (0, createArgsString_1.createArgsString)(commonArgs);
76
+ var jobsWithNames = getCloudRunJobsWithNames(context);
77
+ return jobsWithNames.flatMap(function (_a) {
78
+ var jobName = _a.jobName;
79
+ return [
80
+ // first delete all job executions. Otherwise delete might fail if one of those is still running
81
+ "".concat((0, common_1.gcloudRunCmd)(), " jobs executions list ").concat(commonArgsString, " --job ").concat(jobName, " --format=\"value(name)\" | xargs -I {} ").concat((0, common_1.gcloudRunCmd)(), " jobs executions delete {} --quiet ").concat(commonArgsString), "".concat((0, common_1.gcloudRunCmd)(), " jobs delete ").concat(jobName, " ").concat(commonArgsString)];
82
+ });
83
+ };
84
+ exports.getDeleteJobsScripts = getDeleteJobsScripts;
85
+ var getJobRunScripts = function (context, when) {
86
+ var jobsWithNames = getCloudRunJobsWithNames(context);
87
+ return jobsWithNames.filter(function (_a) {
88
+ var job = _a.job;
89
+ return job.when === when;
90
+ }).map(function (_a) {
91
+ var jobName = _a.jobName;
92
+ return getJobRunScriptForJob(context, jobName,
93
+ // wait for completin on stop jobs, since stop will delete the jobs afterwards, so they will fail
94
+ ["preStop", "postStop"].includes(when));
95
+ });
96
+ };
97
+ exports.getJobRunScripts = getJobRunScripts;
98
+ var getJobCreateScripts = function (context) {
99
+ var jobsWithNames = getCloudRunJobsWithNames(context);
100
+ return jobsWithNames.map(function (_a) {
101
+ var job = _a.job,
102
+ jobName = _a.jobName;
103
+ return getJobCreateScriptsForJob(context, jobName, job);
104
+ }).flat();
105
+ };
106
+ exports.getJobCreateScripts = getJobCreateScripts;
107
+ var getJobCreateScriptsForJob = function (context, jobName, job) {
108
+ var commonDeployArgs = (0, common_1.getCommonDeployArgs)(context);
109
+ // due to some oversight from google, jobs create does not yet accept `--add-volume` 🤦
110
+ // lucky, update on the other hand accepts it... so let's just imediatly update it
111
+ // we cannot upsert a job, so we have to create it and catch the error and then update
112
+ var commandArray = Array.isArray(job.command) ? job.command : job.command.split(" ");
113
+ var commonDeployArgsString = (0, createArgsString_1.createArgsString)(__assign(__assign({
114
+ command: '"' + commandArray.join(",") + '"'
115
+ }, commonDeployArgs), {
116
+ labels: (0, common_1.makeLabelString)(__assign(__assign({}, (0, getLabels_1.getLabels)(context)), {
117
+ "cloud-run-job-name": jobName.toString()
118
+ })),
119
+ image: job.image || commonDeployArgs.image,
120
+ cpu: job === null || job === void 0 ? void 0 : job.cpu,
121
+ memory: job.memory || "512Mi",
122
+ "task-timeout": job.timeout || "10m",
123
+ parallelism: job.parallelism || 1,
124
+ "env-vars-file": constants_1.ENV_VARS_FILENAME,
125
+ "max-retries": 0
126
+ }));
127
+ var requiresBeta = (job === null || job === void 0 ? void 0 : job.volumes) && Object.keys(job === null || job === void 0 ? void 0 : job.volumes).length > 0;
128
+ var argsString = "".concat(jobName, " ").concat(commonDeployArgsString);
129
+ return __spreadArray(__spreadArray([], __read((0, gitlab_1.allowFailureInScripts)(["".concat((0, common_1.gcloudRunCmd)(), " jobs create ").concat(argsString)])), false), ["".concat((0, common_1.gcloudRunCmd)(requiresBeta ? "beta" : undefined), " jobs update ").concat(argsString, " ").concat(createArgsString_1.createArgsString.apply(void 0, __spreadArray([], __read((0, volumes_1.createVolumeConfig)(job === null || job === void 0 ? void 0 : job.volumes, "job")), false)))], false);
130
+ };
131
+ var getCreateScheduleScripts = function (context) {
132
+ var jobsWithSchedule = getCloudRunJobsWithSchedule(context);
133
+ var deployConfig = (0, common_1.getCloudRunDeployConfig)(context);
134
+ return jobsWithSchedule.map(function (_a) {
135
+ var _b;
136
+ var job = _a.job,
137
+ jobName = _a.jobName,
138
+ schedulerName = _a.schedulerName;
139
+ var argsString = (0, createArgsString_1.createArgsString)({
140
+ project: deployConfig.projectId,
141
+ location: deployConfig.region,
142
+ schedule: "\"".concat(job.schedule, "\""),
143
+ "max-retry-attempts": (_b = job.maxRetryAttempts) !== null && _b !== void 0 ? _b : 0,
144
+ uri: "\"https://".concat(deployConfig.region, "-run.googleapis.com/apis/run.googleapis.com/v1/namespaces/").concat(deployConfig.projectId, "/jobs/").concat(jobName, ":run\""),
145
+ "http-method": "POST",
146
+ "oauth-service-account-email": "$GCLOUD_PROJECT_NUMBER-compute@developer.gserviceaccount.com"
147
+ });
148
+ var commonArgs = "http ".concat(schedulerName, " ").concat(argsString);
149
+ return __spreadArray(__spreadArray([], __read((0, gitlab_1.allowFailureInScripts)(["".concat((0, common_1.gcloudSchedulerCmd)(), " jobs create ").concat(commonArgs)])), false), ["".concat((0, common_1.gcloudSchedulerCmd)(), " jobs update ").concat(commonArgs)], false);
150
+ }).flat();
151
+ };
152
+ exports.getCreateScheduleScripts = getCreateScheduleScripts;
153
+ var getCloudRunJobsWithSchedule = function (context) {
154
+ var jobsWithNames = getCloudRunJobsWithNames(context);
155
+ return jobsWithNames.filter(function (entry) {
156
+ return entry.job.when === "schedule";
157
+ }).map(function (_a) {
158
+ var job = _a.job,
159
+ jobName = _a.jobName;
160
+ return {
161
+ job: job,
162
+ jobName: jobName,
163
+ schedulerName: jobName.concat("-scheduler")
164
+ };
165
+ });
166
+ };
167
+ var getCloudRunJobsWithNames = function (context) {
168
+ var _a;
169
+ var deployConfig = (0, common_1.getCloudRunDeployConfig)(context);
170
+ var getFullJobName = function (name) {
171
+ return (0, jobName_1.getCloudRunJobName)(context.environment.fullName, name);
172
+ };
173
+ var jobsWithNames = Object.entries((_a = deployConfig.jobs) !== null && _a !== void 0 ? _a : {})
174
+ // filter out disabled jobs
175
+ .filter(function (entry) {
176
+ return Boolean(entry[1]);
177
+ }).map(function (_a) {
178
+ var _b = __read(_a, 2),
179
+ name = _b[0],
180
+ job = _b[1];
181
+ return {
182
+ jobName: getFullJobName(name),
183
+ job: job
184
+ };
185
+ });
186
+ return jobsWithNames;
187
+ };
@@ -0,0 +1,4 @@
1
+ import type { ComponentContext } from "../../../types/context";
2
+ import type { DeployConfigCloudRunService } from "../../types/googleCloudRun";
3
+ export declare const getServiceDeployScript: (context: ComponentContext, service: DeployConfigCloudRunService | true | undefined, nameSuffix?: string) => string;
4
+ export declare const getServiceDeleteScript: (context: ComponentContext, serviceSuffix?: string) => string[];
@@ -0,0 +1,93 @@
1
+ "use strict";
2
+
3
+ var __assign = this && this.__assign || function () {
4
+ __assign = Object.assign || function (t) {
5
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
6
+ s = arguments[i];
7
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];
8
+ }
9
+ return t;
10
+ };
11
+ return __assign.apply(this, arguments);
12
+ };
13
+ var __read = this && this.__read || function (o, n) {
14
+ var m = typeof Symbol === "function" && o[Symbol.iterator];
15
+ if (!m) return o;
16
+ var i = m.call(o),
17
+ r,
18
+ ar = [],
19
+ e;
20
+ try {
21
+ while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
22
+ } catch (error) {
23
+ e = {
24
+ error: error
25
+ };
26
+ } finally {
27
+ try {
28
+ if (r && !r.done && (m = i["return"])) m.call(i);
29
+ } finally {
30
+ if (e) throw e.error;
31
+ }
32
+ }
33
+ return ar;
34
+ };
35
+ var __spreadArray = this && this.__spreadArray || function (to, from, pack) {
36
+ if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
37
+ if (ar || !(i in from)) {
38
+ if (!ar) ar = Array.prototype.slice.call(from, 0, i);
39
+ ar[i] = from[i];
40
+ }
41
+ }
42
+ return to.concat(ar || Array.prototype.slice.call(from));
43
+ };
44
+ Object.defineProperty(exports, "__esModule", {
45
+ value: true
46
+ });
47
+ exports.getServiceDeleteScript = exports.getServiceDeployScript = void 0;
48
+ var getLabels_1 = require("../../../context/getLabels");
49
+ var createArgsString_1 = require("../utils/createArgsString");
50
+ var getServiceName_1 = require("../utils/getServiceName");
51
+ var common_1 = require("./common");
52
+ var constants_1 = require("./constants");
53
+ var volumes_1 = require("./volumes");
54
+ var getServiceDeployScript = function (context, service, nameSuffix) {
55
+ var _a, _b, _c, _d, _e;
56
+ var commonDeployArgs = (0, common_1.getCommonDeployArgs)(context);
57
+ var serviceName = (0, getServiceName_1.getServiceName)(context);
58
+ var customConfig = service !== true ? service : undefined;
59
+ var command = service !== true ? (_a = service === null || service === void 0 ? void 0 : service.command) !== null && _a !== void 0 ? _a : context.build.config.startCommand : undefined;
60
+ var commandArray = command ? Array.isArray(command) ? command : command.split(" ") : undefined;
61
+ var fullServiceName = serviceName.concat(nameSuffix !== null && nameSuffix !== void 0 ? nameSuffix : "");
62
+ var argsString = createArgsString_1.createArgsString.apply(void 0, __spreadArray([__assign(__assign({
63
+ // command as empty string resets it to default (uses the image's entrypoint)
64
+ command: commandArray ? '"' + commandArray.join(",") + '"' : '""'
65
+ }, commonDeployArgs), {
66
+ labels: (0, common_1.makeLabelString)(__assign(__assign({}, (0, getLabels_1.getLabels)(context)), {
67
+ "cloud-run-service-name": fullServiceName
68
+ })),
69
+ "env-vars-file": constants_1.ENV_VARS_FILENAME,
70
+ "min-instances": (_b = customConfig === null || customConfig === void 0 ? void 0 : customConfig.minInstances) !== null && _b !== void 0 ? _b : 0,
71
+ "max-instances": (_c = customConfig === null || customConfig === void 0 ? void 0 : customConfig.maxInstances) !== null && _c !== void 0 ? _c : 100,
72
+ "cpu-throttling": (customConfig === null || customConfig === void 0 ? void 0 : customConfig.noCpuThrottling) !== true,
73
+ cpu: customConfig === null || customConfig === void 0 ? void 0 : customConfig.cpu,
74
+ memory: customConfig === null || customConfig === void 0 ? void 0 : customConfig.memory,
75
+ timeout: customConfig === null || customConfig === void 0 ? void 0 : customConfig.timeout,
76
+ "allow-unauthenticated": (_d = customConfig === null || customConfig === void 0 ? void 0 : customConfig.allowUnauthenticated) !== null && _d !== void 0 ? _d : true,
77
+ ingress: (_e = customConfig === null || customConfig === void 0 ? void 0 : customConfig.ingress) !== null && _e !== void 0 ? _e : "all",
78
+ "cpu-boost": true,
79
+ "execution-environment": customConfig === null || customConfig === void 0 ? void 0 : customConfig.executionEnvironment
80
+ })], __read((0, volumes_1.createVolumeConfig)(customConfig === null || customConfig === void 0 ? void 0 : customConfig.volumes, "service")), false));
81
+ // volumes require beta
82
+ var requiresBeta = (customConfig === null || customConfig === void 0 ? void 0 : customConfig.volumes) && Object.keys(customConfig === null || customConfig === void 0 ? void 0 : customConfig.volumes).length > 0;
83
+ return "".concat((0, common_1.gcloudRunCmd)(requiresBeta ? "beta" : undefined), " deploy ").concat(fullServiceName, " ").concat(argsString);
84
+ };
85
+ exports.getServiceDeployScript = getServiceDeployScript;
86
+ var getServiceDeleteScript = function (context, serviceSuffix) {
87
+ var commonArgs = (0, common_1.getCommonCloudRunArgs)(context);
88
+ var commonArgsString = (0, createArgsString_1.createArgsString)(commonArgs);
89
+ var serviceName = (0, getServiceName_1.getServiceName)(context);
90
+ var fullServiceName = serviceSuffix ? "".concat(serviceName, "-").concat(serviceSuffix) : serviceName;
91
+ return ["".concat((0, common_1.gcloudRunCmd)(), " services delete ").concat(fullServiceName, " ").concat(commonArgsString)];
92
+ };
93
+ exports.getServiceDeleteScript = getServiceDeleteScript;
@@ -0,0 +1,18 @@
1
+ import type { ComponentContext } from "../../../types/context";
2
+ import type { DeployConfigCloudRun } from "../../types/googleCloudRun";
3
+ export declare const gcloudCmd: (version?: "beta") => string;
4
+ export declare const gcloudRunCmd: (version?: "beta") => string;
5
+ export declare const gcloudSchedulerCmd: (version?: "beta") => string;
6
+ export declare const setGoogleProjectNumberScript: (deployConfig: DeployConfigCloudRun) => string[];
7
+ export declare const makeLabelString: (obj: Record<string, unknown>) => string;
8
+ export declare const getCloudRunDeployConfig: (context: ComponentContext) => DeployConfigCloudRun;
9
+ export declare function getCommonCloudRunArgs(context: ComponentContext): {
10
+ project: string;
11
+ region: import("../../types").Gcloudregion;
12
+ };
13
+ export declare function getCommonDeployArgs(context: ComponentContext): {
14
+ "set-cloudsql-instances": string | undefined;
15
+ project: string;
16
+ region: import("../../types").Gcloudregion;
17
+ image: string;
18
+ };