@catladder/pipeline 0.0.0-refactore-catenv-command-validates-argument-78d05852 → 0.0.0-reference-database-url-1befbbee

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 (639) hide show
  1. package/README.md +15 -1
  2. package/dist/bash/BashExpression.d.ts +36 -0
  3. package/dist/bash/BashExpression.js +114 -0
  4. package/dist/bash/bashEscape.d.ts +37 -0
  5. package/dist/bash/bashEscape.js +119 -0
  6. package/dist/bash/bashExpressionPerPipelineType.d.ts +6 -0
  7. package/dist/bash/bashExpressionPerPipelineType.js +11 -0
  8. package/dist/bash/bashYaml.d.ts +10 -0
  9. package/dist/bash/bashYaml.js +69 -0
  10. package/dist/bash/getInjectVarsScript.d.ts +2 -0
  11. package/dist/bash/getInjectVarsScript.js +47 -0
  12. package/dist/bash/index.d.ts +2 -0
  13. package/dist/bash/index.js +26 -0
  14. package/dist/build/artifacts/createBuildJobArtifact.d.ts +3 -0
  15. package/dist/build/artifacts/createBuildJobArtifact.js +97 -0
  16. package/dist/build/base/__tests__/createArtifactsConfig.test.js +3 -1
  17. package/dist/build/base/constants.js +4 -2
  18. package/dist/build/base/createAppBuildJob.d.ts +5 -3
  19. package/dist/build/base/createAppBuildJob.js +18 -15
  20. package/dist/build/base/createArtifactsConfig.d.ts +1 -1
  21. package/dist/build/base/createArtifactsConfig.js +3 -1
  22. package/dist/build/base/createBuildJobDefinition.d.ts +6 -0
  23. package/dist/build/base/createBuildJobDefinition.js +58 -0
  24. package/dist/build/base/index.d.ts +6 -4
  25. package/dist/build/base/index.js +17 -6
  26. package/dist/build/base/writeBuildInfo.d.ts +2 -2
  27. package/dist/build/base/writeBuildInfo.js +4 -3
  28. package/dist/build/base/writeDotEnv.d.ts +3 -2
  29. package/dist/build/base/writeDotEnv.js +30 -6
  30. package/dist/build/cache/createJobCache.d.ts +7 -0
  31. package/dist/build/cache/createJobCache.js +115 -0
  32. package/dist/build/cache/getAllCacheConfigsFromConfig.d.ts +3 -0
  33. package/dist/build/cache/getAllCacheConfigsFromConfig.js +64 -0
  34. package/dist/build/cache/transformLegacyJobCache.d.ts +3 -0
  35. package/dist/build/cache/transformLegacyJobCache.js +29 -0
  36. package/dist/build/custom/__tests__/testJob.test.js +15 -16
  37. package/dist/build/custom/buildJob.d.ts +2 -2
  38. package/dist/build/custom/buildJob.js +8 -66
  39. package/dist/build/custom/index.d.ts +2 -2
  40. package/dist/build/custom/index.js +3 -1
  41. package/dist/build/custom/testJob.d.ts +4 -4
  42. package/dist/build/custom/testJob.js +25 -20
  43. package/dist/build/docker.d.ts +37 -46
  44. package/dist/build/docker.js +65 -34
  45. package/dist/build/index.d.ts +14 -7
  46. package/dist/build/index.js +44 -17
  47. package/dist/build/node/buildJob.d.ts +8 -2
  48. package/dist/build/node/buildJob.js +39 -52
  49. package/dist/build/node/cache.d.ts +4 -5
  50. package/dist/build/node/cache.js +18 -24
  51. package/dist/build/node/constants.js +5 -3
  52. package/dist/build/node/index.d.ts +4 -4
  53. package/dist/build/node/index.js +3 -1
  54. package/dist/build/node/meteor.d.ts +2 -2
  55. package/dist/build/node/meteor.js +10 -12
  56. package/dist/build/node/testJob.d.ts +3 -2
  57. package/dist/build/node/testJob.js +29 -19
  58. package/dist/build/node/yarn.d.ts +4 -3
  59. package/dist/build/node/yarn.js +11 -12
  60. package/dist/build/rails/build.d.ts +2 -2
  61. package/dist/build/rails/build.js +13 -6
  62. package/dist/build/rails/index.d.ts +2 -2
  63. package/dist/build/rails/index.js +3 -1
  64. package/dist/build/rails/test.d.ts +2 -2
  65. package/dist/build/rails/test.js +30 -11
  66. package/dist/build/sbom.d.ts +2 -2
  67. package/dist/build/sbom.js +13 -7
  68. package/dist/build/types.d.ts +160 -47
  69. package/dist/build/types.js +10 -2
  70. package/dist/catladder-gitlab.js +129 -49
  71. package/dist/config/__tests__/configruedEnvs.test.js +3 -1
  72. package/dist/config/__tests__/getAllEnvs.test.js +79 -0
  73. package/dist/config/__tests__/getAllEnvsInAllComponents.test.d.ts +1 -0
  74. package/dist/config/__tests__/getAllEnvsInAllComponents.test.js +73 -0
  75. package/dist/config/configruedEnvs.js +3 -1
  76. package/dist/config/index.js +13 -7
  77. package/dist/config/readConfig.d.ts +2 -2
  78. package/dist/config/readConfig.js +191 -40
  79. package/dist/constants.js +5 -3
  80. package/dist/context/createAllComponentsContext.d.ts +12 -0
  81. package/dist/{pipeline/commitInfo/getCommitInfo.js → context/createAllComponentsContext.js} +35 -19
  82. package/dist/context/createComponentContext.d.ts +11 -0
  83. package/dist/context/createComponentContext.js +262 -0
  84. package/dist/context/createWorkspaceContext.d.ts +16 -0
  85. package/dist/context/createWorkspaceContext.js +173 -0
  86. package/dist/context/getBuildInfoVariables.d.ts +6 -0
  87. package/dist/context/getBuildInfoVariables.js +55 -0
  88. package/dist/context/getEnvConfig.js +21 -4
  89. package/dist/context/getEnvType.js +3 -1
  90. package/dist/context/getEnvironment.d.ts +3 -3
  91. package/dist/context/getEnvironment.js +11 -12
  92. package/dist/context/getEnvironmentContext.d.ts +7 -3
  93. package/dist/context/getEnvironmentContext.js +21 -11
  94. package/dist/context/getEnvironmentVariables.d.ts +22 -5
  95. package/dist/context/getEnvironmentVariables.js +79 -53
  96. package/dist/context/getLabels.d.ts +2 -2
  97. package/dist/context/getLabels.js +9 -7
  98. package/dist/context/getReviewSlug.d.ts +4 -0
  99. package/dist/context/getReviewSlug.js +21 -0
  100. package/dist/context/index.d.ts +2 -4
  101. package/dist/context/index.js +15 -162
  102. package/dist/context/transformJobOnlyVars.d.ts +5 -2
  103. package/dist/context/transformJobOnlyVars.js +4 -2
  104. package/dist/context/utils/envVars.d.ts +1 -1
  105. package/dist/context/utils/envVars.js +5 -2
  106. package/dist/defaults/index.js +3 -1
  107. package/dist/deploy/base/deploy.d.ts +3 -3
  108. package/dist/deploy/base/deploy.js +37 -21
  109. package/dist/deploy/base/index.d.ts +3 -5
  110. package/dist/deploy/base/index.js +3 -1
  111. package/dist/deploy/base/rollback.d.ts +3 -3
  112. package/dist/deploy/base/rollback.js +13 -9
  113. package/dist/deploy/base/stop.d.ts +3 -3
  114. package/dist/deploy/base/stop.js +16 -11
  115. package/dist/deploy/base/types.d.ts +1 -1
  116. package/dist/deploy/base/types.js +3 -1
  117. package/dist/deploy/base/variables.js +4 -2
  118. package/dist/deploy/cloudRun/artifactsRegistry.d.ts +8 -11
  119. package/dist/deploy/cloudRun/artifactsRegistry.js +15 -14
  120. package/dist/deploy/cloudRun/cleanup.d.ts +2 -2
  121. package/dist/deploy/cloudRun/cleanup.js +3 -1
  122. package/dist/deploy/cloudRun/cloudRunRevisions.d.ts +2 -2
  123. package/dist/deploy/cloudRun/cloudRunRevisions.js +7 -6
  124. package/dist/deploy/cloudRun/createJobs/cloudRunJobs.d.ts +8 -6
  125. package/dist/deploy/cloudRun/createJobs/cloudRunJobs.js +57 -106
  126. package/dist/deploy/cloudRun/createJobs/cloudRunServices.d.ts +3 -3
  127. package/dist/deploy/cloudRun/createJobs/cloudRunServices.js +79 -15
  128. package/dist/deploy/cloudRun/createJobs/common.d.ts +7 -7
  129. package/dist/deploy/cloudRun/createJobs/common.js +6 -3
  130. package/dist/deploy/cloudRun/createJobs/constants.d.ts +1 -0
  131. package/dist/deploy/cloudRun/createJobs/constants.js +7 -0
  132. package/dist/deploy/cloudRun/createJobs/execute/onDeploy.d.ts +3 -0
  133. package/dist/deploy/cloudRun/createJobs/execute/onDeploy.js +115 -0
  134. package/dist/deploy/cloudRun/createJobs/execute/schedules.d.ts +3 -0
  135. package/dist/deploy/cloudRun/createJobs/execute/schedules.js +173 -0
  136. package/dist/deploy/cloudRun/createJobs/getCloudRunDeployScripts.d.ts +2 -2
  137. package/dist/deploy/cloudRun/createJobs/getCloudRunDeployScripts.js +13 -5
  138. package/dist/deploy/cloudRun/createJobs/getCloudRunStopScripts.d.ts +2 -2
  139. package/dist/deploy/cloudRun/createJobs/getCloudRunStopScripts.js +7 -3
  140. package/dist/deploy/cloudRun/createJobs/healthCheck.d.ts +5 -0
  141. package/dist/deploy/cloudRun/createJobs/healthCheck.js +82 -0
  142. package/dist/deploy/cloudRun/createJobs/index.d.ts +2 -2
  143. package/dist/deploy/cloudRun/createJobs/index.js +26 -12
  144. package/dist/deploy/cloudRun/createJobs/volumes.d.ts +3 -0
  145. package/dist/deploy/cloudRun/createJobs/volumes.js +58 -0
  146. package/dist/deploy/cloudRun/index.d.ts +2 -2
  147. package/dist/deploy/cloudRun/index.js +25 -13
  148. package/dist/deploy/cloudRun/utils/cloudRunExecutionUrl.d.ts +10 -0
  149. package/dist/deploy/cloudRun/utils/cloudRunExecutionUrl.js +16 -0
  150. package/dist/deploy/cloudRun/utils/createArgsString.d.ts +2 -2
  151. package/dist/deploy/cloudRun/utils/createArgsString.js +3 -1
  152. package/dist/deploy/cloudRun/utils/database.d.ts +25 -4
  153. package/dist/deploy/cloudRun/utils/database.js +49 -15
  154. package/dist/deploy/cloudRun/utils/gcloudServiceAccountLoginCommands.d.ts +2 -2
  155. package/dist/deploy/cloudRun/utils/gcloudServiceAccountLoginCommands.js +3 -1
  156. package/dist/deploy/cloudRun/utils/getJobOrServiceArgs.d.ts +2 -0
  157. package/dist/deploy/cloudRun/utils/getJobOrServiceArgs.js +12 -0
  158. package/dist/deploy/cloudRun/utils/getServiceName.d.ts +2 -2
  159. package/dist/deploy/cloudRun/utils/getServiceName.js +3 -1
  160. package/dist/deploy/cloudRun/utils/jobName.d.ts +6 -1
  161. package/dist/deploy/cloudRun/utils/jobName.js +18 -4
  162. package/dist/deploy/cloudRun/utils/removeFirstLinesFromCommandOutput.js +3 -1
  163. package/dist/deploy/cloudSql/utils.d.ts +2 -1
  164. package/dist/deploy/cloudSql/utils.js +7 -2
  165. package/dist/deploy/custom/deployJob.d.ts +2 -2
  166. package/dist/deploy/custom/deployJob.js +10 -9
  167. package/dist/deploy/custom/index.d.ts +2 -2
  168. package/dist/deploy/custom/index.js +3 -1
  169. package/dist/deploy/dockerTag/deployJob.d.ts +2 -2
  170. package/dist/deploy/dockerTag/deployJob.js +6 -6
  171. package/dist/deploy/dockerTag/index.d.ts +2 -2
  172. package/dist/deploy/dockerTag/index.js +3 -1
  173. package/dist/deploy/index.d.ts +10 -9
  174. package/dist/deploy/index.js +13 -7
  175. package/dist/deploy/kubernetes/additionalSecretKeys.d.ts +3 -1
  176. package/dist/deploy/kubernetes/additionalSecretKeys.js +3 -1
  177. package/dist/deploy/kubernetes/cloudSql/index.d.ts +6 -5
  178. package/dist/deploy/kubernetes/cloudSql/index.js +14 -21
  179. package/dist/deploy/kubernetes/deployJob.d.ts +2 -2
  180. package/dist/deploy/kubernetes/deployJob.js +23 -22
  181. package/dist/deploy/kubernetes/index.d.ts +2 -2
  182. package/dist/deploy/kubernetes/index.js +52 -15
  183. package/dist/deploy/kubernetes/kubeEnv.d.ts +5 -4
  184. package/dist/deploy/kubernetes/kubeEnv.js +9 -5
  185. package/dist/deploy/kubernetes/kubeValues.d.ts +5 -6
  186. package/dist/deploy/kubernetes/kubeValues.js +17 -19
  187. package/dist/deploy/kubernetes/mongodb.d.ts +2 -2
  188. package/dist/deploy/kubernetes/mongodb.js +14 -12
  189. package/dist/deploy/sbom.d.ts +4 -4
  190. package/dist/deploy/sbom.js +8 -4
  191. package/dist/deploy/types/base.d.ts +5 -5
  192. package/dist/deploy/types/base.js +3 -1
  193. package/dist/deploy/types/custom.d.ts +3 -7
  194. package/dist/deploy/types/custom.js +3 -1
  195. package/dist/deploy/types/dockerTag.d.ts +1 -1
  196. package/dist/deploy/types/dockerTag.js +3 -1
  197. package/dist/deploy/types/googleCloudRun.d.ts +291 -16
  198. package/dist/deploy/types/googleCloudRun.js +28 -1
  199. package/dist/deploy/types/index.d.ts +8 -7
  200. package/dist/deploy/types/index.js +21 -10
  201. package/dist/deploy/types/kubernetes.d.ts +21 -54
  202. package/dist/deploy/types/kubernetes.js +3 -1
  203. package/dist/deploy/utils.d.ts +2 -2
  204. package/dist/deploy/utils.js +5 -2
  205. package/dist/globalScriptFunctions/index.d.ts +14 -0
  206. package/dist/globalScriptFunctions/index.js +37 -0
  207. package/dist/index.d.ts +5 -2
  208. package/dist/index.js +18 -9
  209. package/dist/packageInfos.d.ts +4 -0
  210. package/dist/packageInfos.js +20 -0
  211. package/dist/pipeline/__tests__/getPipelineStages.test.d.ts +1 -0
  212. package/dist/pipeline/__tests__/getPipelineStages.test.js +73 -0
  213. package/dist/pipeline/createAllJobs.d.ts +16 -6
  214. package/dist/pipeline/createAllJobs.js +99 -27
  215. package/dist/pipeline/createJobsForComponent.d.ts +2 -2
  216. package/dist/pipeline/createJobsForComponent.js +9 -149
  217. package/dist/pipeline/createJobsForWorkspace.d.ts +3 -0
  218. package/dist/pipeline/createJobsForWorkspace.js +12 -0
  219. package/dist/pipeline/createMainPipeline.d.ts +3 -0
  220. package/dist/pipeline/createMainPipeline.js +283 -0
  221. package/dist/pipeline/generatePipelineFiles.d.ts +7 -0
  222. package/dist/pipeline/generatePipelineFiles.js +305 -0
  223. package/dist/pipeline/getPipelineStages.d.ts +7 -0
  224. package/dist/pipeline/getPipelineStages.js +56 -0
  225. package/dist/pipeline/gitlab/createGitlabJobs.d.ts +11 -14
  226. package/dist/pipeline/gitlab/createGitlabJobs.js +264 -74
  227. package/dist/pipeline/gitlab/createGitlabPipeline.d.ts +9 -0
  228. package/dist/pipeline/gitlab/createGitlabPipeline.js +77 -0
  229. package/dist/pipeline/gitlab/gitlabReleaseJobs.d.ts +33 -0
  230. package/dist/pipeline/gitlab/gitlabReleaseJobs.js +25 -0
  231. package/dist/pipeline/gitlab/sortGitLabJobDefProps.d.ts +7 -0
  232. package/dist/pipeline/gitlab/sortGitLabJobDefProps.js +27 -0
  233. package/dist/pipeline/index.d.ts +3 -2
  234. package/dist/pipeline/index.js +16 -9
  235. package/dist/pipeline/packageManager.d.ts +4 -2
  236. package/dist/pipeline/packageManager.js +56 -19
  237. package/dist/pipeline/yarn/yarnUtils.d.ts +2 -2
  238. package/dist/pipeline/yarn/yarnUtils.js +18 -15
  239. package/dist/rules/index.d.ts +10 -3
  240. package/dist/rules/index.js +35 -17
  241. package/dist/runner/index.d.ts +1 -1
  242. package/dist/runner/index.js +3 -1
  243. package/dist/tsconfig.tsbuildinfo +1 -1
  244. package/dist/types/config.d.ts +54 -36
  245. package/dist/types/config.js +5 -2
  246. package/dist/types/context.d.ts +123 -38
  247. package/dist/types/context.js +12 -1
  248. package/dist/types/environmentContext.d.ts +15 -12
  249. package/dist/types/environmentContext.js +3 -1
  250. package/dist/types/gitlab-ci-yml.d.ts +30 -30
  251. package/dist/types/gitlab-ci-yml.js +3 -2
  252. package/dist/types/gitlab-types.d.ts +8 -8
  253. package/dist/types/gitlab-types.js +3 -1
  254. package/dist/types/index.d.ts +3 -1
  255. package/dist/types/index.js +16 -8
  256. package/dist/types/jobDefinition.d.ts +11 -0
  257. package/dist/types/jobDefinition.js +5 -0
  258. package/dist/types/jobs.d.ts +30 -15
  259. package/dist/types/jobs.js +3 -1
  260. package/dist/types/pipeline.d.ts +3 -3
  261. package/dist/types/pipeline.js +3 -1
  262. package/dist/types/utils.d.ts +1 -1
  263. package/dist/types/utils.js +3 -1
  264. package/dist/utils/gitlab.js +7 -2
  265. package/dist/utils/index.d.ts +2 -1
  266. package/dist/utils/index.js +10 -3
  267. package/dist/utils/jsonParse.d.ts +1 -0
  268. package/dist/utils/jsonParse.js +14 -0
  269. package/dist/utils/removeUndefined.d.ts +1 -0
  270. package/dist/utils/removeUndefined.js +36 -0
  271. package/dist/utils/writeFiles.d.ts +11 -0
  272. package/dist/{pipeline/commitInfo/getBuildId.js → utils/writeFiles.js} +39 -22
  273. package/dist/variables/VariableValue.d.ts +3 -0
  274. package/dist/variables/VariableValue.js +5 -0
  275. package/dist/variables/VariableValueContainingReferences.d.ts +24 -0
  276. package/dist/variables/VariableValueContainingReferences.js +97 -0
  277. package/dist/variables/__tests__/resolveAllReferences.test.d.ts +1 -0
  278. package/dist/variables/__tests__/resolveAllReferences.test.js +218 -0
  279. package/dist/variables/__tests__/resolveAllReferencesOnce.test.d.ts +1 -0
  280. package/dist/variables/__tests__/resolveAllReferencesOnce.test.js +171 -0
  281. package/dist/variables/__tests__/resolveReferencesOnce.test.d.ts +1 -0
  282. package/dist/variables/__tests__/resolveReferencesOnce.test.js +199 -0
  283. package/dist/variables/__tests__/variableValue.test.d.ts +1 -0
  284. package/dist/variables/__tests__/variableValue.test.js +36 -0
  285. package/dist/variables/resolveAllReferences.d.ts +3 -0
  286. package/dist/{pipeline/createChildPipeline.js → variables/resolveAllReferences.js} +44 -48
  287. package/dist/variables/resolveAllReferencesOnce.d.ts +5 -0
  288. package/dist/variables/resolveAllReferencesOnce.js +191 -0
  289. package/dist/variables/resolveReferencesOnce.d.ts +8 -0
  290. package/dist/variables/resolveReferencesOnce.js +22 -0
  291. package/examples/.test-gen-ignore +1 -0
  292. package/examples/__snapshots__/cloud-run-health-check-defaults.test.ts.snap +1394 -0
  293. package/examples/__snapshots__/cloud-run-health-check-only-startup.test.ts.snap +1394 -0
  294. package/examples/__snapshots__/cloud-run-health-check.test.ts.snap +1394 -0
  295. package/examples/__snapshots__/cloud-run-http2.test.ts.snap +1394 -0
  296. package/examples/__snapshots__/cloud-run-llama.test.ts.snap +624 -0
  297. package/examples/__snapshots__/cloud-run-memory-limit.test.ts.snap +1394 -0
  298. package/examples/__snapshots__/cloud-run-meteor-with-worker.test.ts.snap +1394 -0
  299. package/examples/__snapshots__/cloud-run-nextjs.test.ts.snap +1410 -0
  300. package/examples/__snapshots__/cloud-run-no-cpu-throttling.test.ts.snap +1394 -0
  301. package/examples/__snapshots__/cloud-run-no-service.test.ts.snap +1502 -0
  302. package/examples/__snapshots__/cloud-run-non-public.test.ts.snap +1394 -0
  303. package/examples/__snapshots__/cloud-run-post-stop-job.test.ts.snap +1412 -0
  304. package/examples/__snapshots__/cloud-run-service-custom-vpc-connector.test.ts.snap +1462 -0
  305. package/examples/__snapshots__/cloud-run-service-custom-vpc.test.ts.snap +1462 -0
  306. package/examples/__snapshots__/cloud-run-service-gen2.test.ts.snap +1394 -0
  307. package/examples/__snapshots__/cloud-run-service-increase-timout.test.ts.snap +1394 -0
  308. package/examples/__snapshots__/cloud-run-service-with-volumes.test.ts.snap +1466 -0
  309. package/examples/__snapshots__/cloud-run-storybook.test.ts.snap +1284 -0
  310. package/examples/__snapshots__/cloud-run-with-gpu.test.ts.snap +1394 -0
  311. package/examples/__snapshots__/cloud-run-with-ngnix.test.ts.snap +1394 -0
  312. package/examples/__snapshots__/cloud-run-with-sql-legacy-jobs.test.ts.snap +1709 -0
  313. package/examples/__snapshots__/cloud-run-with-sql-multiple-dbs.test.ts.snap +4515 -0
  314. package/examples/__snapshots__/cloud-run-with-sql-reuse-db.test.ts.snap +2950 -0
  315. package/examples/__snapshots__/cloud-run-with-sql.test.ts.snap +1772 -0
  316. package/examples/__snapshots__/cloud-run-with-worker.test.ts.snap +1402 -0
  317. package/examples/__snapshots__/custom-build-job-with-tests.test.ts.snap +1261 -0
  318. package/examples/__snapshots__/custom-build-job.test.ts.snap +1156 -0
  319. package/examples/__snapshots__/custom-deploy.test.ts.snap +1059 -0
  320. package/examples/__snapshots__/custom-envs.test.ts.snap +786 -0
  321. package/examples/__snapshots__/custom-sbom-java.test.ts.snap +1152 -0
  322. package/examples/__snapshots__/custom-verify-job.test.ts.snap +1606 -0
  323. package/examples/__snapshots__/git-submodule.test.ts.snap +1395 -0
  324. package/examples/__snapshots__/kubernetes-application-customization.test.ts.snap +1713 -0
  325. package/examples/__snapshots__/kubernetes-with-cloud-sql.test.ts.snap +1733 -0
  326. package/examples/__snapshots__/kubernetes-with-jobs.test.ts.snap +3265 -0
  327. package/examples/__snapshots__/kubernetes-with-mongodb.test.ts.snap +1837 -0
  328. package/examples/__snapshots__/local-dot-env.test.ts.snap +1318 -0
  329. package/examples/__snapshots__/meteor-kubernetes.test.ts.snap +1790 -0
  330. package/examples/__snapshots__/multiline-var.test.ts.snap +5585 -0
  331. package/examples/__snapshots__/native-app.test.ts.snap +2210 -0
  332. package/examples/__snapshots__/node-build-with-custom-image.test.ts.snap +1394 -0
  333. package/examples/__snapshots__/node-build-with-docker-additions.test.ts.snap +1402 -0
  334. package/examples/__snapshots__/override-secrets.test.ts.snap +1419 -0
  335. package/examples/__snapshots__/rails-k8s-with-worker-dockerfile.test.ts.snap +1464 -0
  336. package/examples/__snapshots__/rails-k8s-with-worker.test.ts.snap +1444 -0
  337. package/examples/__snapshots__/referencing-other-vars.test.ts.snap +4645 -0
  338. package/examples/__snapshots__/wait-for-other-deploy.test.ts.snap +1424 -0
  339. package/examples/__snapshots__/workspace-api-www-turbo-cache.test.ts.snap +2298 -0
  340. package/examples/__snapshots__/workspace-api-www.test.ts.snap +2290 -0
  341. package/examples/__utils__/helpers.ts +9 -12
  342. package/examples/cloud-run-health-check-defaults.test.ts +11 -0
  343. package/examples/cloud-run-health-check-defaults.ts +28 -0
  344. package/examples/cloud-run-health-check-only-startup.test.ts +11 -0
  345. package/examples/cloud-run-health-check-only-startup.ts +38 -0
  346. package/examples/cloud-run-health-check.test.ts +11 -0
  347. package/examples/cloud-run-health-check.ts +45 -0
  348. package/examples/cloud-run-http2.test.ts +11 -0
  349. package/examples/cloud-run-http2.ts +29 -0
  350. package/examples/cloud-run-llama.test.ts +11 -0
  351. package/examples/cloud-run-llama.ts +40 -0
  352. package/examples/cloud-run-memory-limit.test.ts +11 -0
  353. package/examples/cloud-run-memory-limit.ts +12 -7
  354. package/examples/cloud-run-meteor-with-worker.test.ts +11 -0
  355. package/examples/cloud-run-meteor-with-worker.ts +13 -7
  356. package/examples/cloud-run-nextjs.test.ts +11 -0
  357. package/examples/cloud-run-nextjs.ts +28 -0
  358. package/examples/cloud-run-no-cpu-throttling.test.ts +11 -0
  359. package/examples/cloud-run-no-cpu-throttling.ts +8 -6
  360. package/examples/cloud-run-no-service.test.ts +11 -0
  361. package/examples/cloud-run-no-service.ts +39 -0
  362. package/examples/cloud-run-non-public.test.ts +11 -0
  363. package/examples/cloud-run-non-public.ts +7 -6
  364. package/examples/cloud-run-post-stop-job.test.ts +11 -0
  365. package/examples/cloud-run-post-stop-job.ts +15 -6
  366. package/examples/cloud-run-service-custom-vpc-connector.test.ts +11 -0
  367. package/examples/cloud-run-service-custom-vpc-connector.ts +37 -0
  368. package/examples/cloud-run-service-custom-vpc.test.ts +11 -0
  369. package/examples/cloud-run-service-custom-vpc.ts +39 -0
  370. package/examples/cloud-run-service-gen2.test.ts +11 -0
  371. package/examples/cloud-run-service-gen2.ts +8 -6
  372. package/examples/cloud-run-service-increase-timout.test.ts +11 -0
  373. package/examples/cloud-run-service-increase-timout.ts +29 -0
  374. package/examples/cloud-run-service-with-volumes.test.ts +11 -0
  375. package/examples/cloud-run-service-with-volumes.ts +64 -0
  376. package/examples/cloud-run-storybook.test.ts +11 -0
  377. package/examples/cloud-run-storybook.ts +33 -0
  378. package/examples/cloud-run-with-gpu.test.ts +11 -0
  379. package/examples/cloud-run-with-gpu.ts +30 -0
  380. package/examples/cloud-run-with-ngnix.test.ts +11 -0
  381. package/examples/cloud-run-with-ngnix.ts +29 -0
  382. package/examples/cloud-run-with-sql-legacy-jobs.test.ts +11 -0
  383. package/examples/cloud-run-with-sql-legacy-jobs.ts +49 -0
  384. package/examples/cloud-run-with-sql-multiple-dbs.test.ts +11 -0
  385. package/examples/cloud-run-with-sql-multiple-dbs.ts +87 -0
  386. package/examples/cloud-run-with-sql-reuse-db.test.ts +11 -0
  387. package/examples/cloud-run-with-sql-reuse-db.ts +7 -6
  388. package/examples/cloud-run-with-sql.test.ts +11 -0
  389. package/examples/cloud-run-with-sql.ts +45 -24
  390. package/examples/cloud-run-with-worker.test.ts +11 -0
  391. package/examples/cloud-run-with-worker.ts +8 -6
  392. package/examples/custom-build-job-with-tests.test.ts +11 -0
  393. package/examples/custom-build-job-with-tests.ts +7 -6
  394. package/examples/custom-build-job.test.ts +11 -0
  395. package/examples/custom-build-job.ts +7 -6
  396. package/examples/custom-deploy.test.ts +11 -0
  397. package/examples/custom-deploy.ts +22 -14
  398. package/examples/custom-envs.test.ts +11 -0
  399. package/examples/custom-envs.ts +7 -6
  400. package/examples/custom-sbom-java.test.ts +11 -0
  401. package/examples/custom-sbom-java.ts +12 -8
  402. package/examples/custom-verify-job.test.ts +11 -0
  403. package/examples/custom-verify-job.ts +65 -0
  404. package/examples/git-submodule.test.ts +11 -0
  405. package/examples/git-submodule.ts +30 -0
  406. package/examples/kubernetes-application-customization.test.ts +11 -0
  407. package/examples/kubernetes-application-customization.ts +9 -6
  408. package/examples/kubernetes-with-cloud-sql.test.ts +11 -0
  409. package/examples/kubernetes-with-cloud-sql.ts +9 -6
  410. package/examples/kubernetes-with-jobs.test.ts +11 -0
  411. package/examples/kubernetes-with-jobs.ts +9 -6
  412. package/examples/kubernetes-with-mongodb.test.ts +11 -0
  413. package/examples/kubernetes-with-mongodb.ts +9 -6
  414. package/examples/local-dot-env.test.ts +11 -0
  415. package/examples/local-dot-env.ts +27 -0
  416. package/examples/meteor-kubernetes.test.ts +11 -0
  417. package/examples/meteor-kubernetes.ts +6 -7
  418. package/examples/multiline-var.test.ts +11 -0
  419. package/examples/multiline-var.ts +107 -0
  420. package/examples/native-app.test.ts +11 -0
  421. package/examples/native-app.ts +24 -19
  422. package/examples/node-build-with-custom-image.test.ts +11 -0
  423. package/examples/node-build-with-custom-image.ts +7 -6
  424. package/examples/node-build-with-docker-additions.test.ts +11 -0
  425. package/examples/node-build-with-docker-additions.ts +7 -6
  426. package/examples/override-secrets.test.ts +11 -0
  427. package/examples/override-secrets.ts +44 -0
  428. package/examples/rails-k8s-with-worker-dockerfile.test.ts +33 -0
  429. package/examples/rails-k8s-with-worker.test.ts +11 -0
  430. package/examples/rails-k8s-with-worker.ts +13 -13
  431. package/examples/referencing-other-vars.test.ts +11 -0
  432. package/examples/referencing-other-vars.ts +83 -0
  433. package/examples/wait-for-other-deploy.test.ts +11 -0
  434. package/examples/wait-for-other-deploy.ts +6 -5
  435. package/examples/workspace-api-www-turbo-cache.test.ts +11 -0
  436. package/examples/workspace-api-www-turbo-cache.ts +52 -0
  437. package/examples/workspace-api-www.test.ts +11 -0
  438. package/examples/workspace-api-www.ts +46 -0
  439. package/package.json +23 -26
  440. package/scripts/generate-examples-test.ts +84 -0
  441. package/scripts/generate-gitlab-ci-types.ts +2 -2
  442. package/scripts/tsconfig.json +7 -0
  443. package/src/bash/BashExpression.ts +78 -0
  444. package/src/bash/bashEscape.ts +164 -0
  445. package/src/bash/bashExpressionPerPipelineType.ts +16 -0
  446. package/src/bash/bashYaml.ts +80 -0
  447. package/src/bash/getInjectVarsScript.ts +21 -0
  448. package/src/bash/index.ts +2 -0
  449. package/src/build/artifacts/createBuildJobArtifact.ts +63 -0
  450. package/src/build/base/__tests__/createArtifactsConfig.test.ts +3 -3
  451. package/src/build/base/constants.ts +1 -1
  452. package/src/build/base/createAppBuildJob.ts +40 -24
  453. package/src/build/base/createArtifactsConfig.ts +2 -2
  454. package/src/build/base/createBuildJobDefinition.ts +37 -0
  455. package/src/build/base/index.ts +40 -8
  456. package/src/build/base/writeBuildInfo.ts +3 -3
  457. package/src/build/base/writeDotEnv.ts +25 -6
  458. package/src/build/cache/createJobCache.ts +83 -0
  459. package/src/build/cache/getAllCacheConfigsFromConfig.ts +29 -0
  460. package/src/build/cache/transformLegacyJobCache.ts +14 -0
  461. package/src/build/custom/__tests__/testJob.test.ts +10 -13
  462. package/src/build/custom/buildJob.ts +11 -37
  463. package/src/build/custom/index.ts +4 -2
  464. package/src/build/custom/testJob.ts +24 -21
  465. package/src/build/docker.ts +110 -49
  466. package/src/build/index.ts +45 -11
  467. package/src/build/node/buildJob.ts +68 -69
  468. package/src/build/node/cache.ts +28 -34
  469. package/src/build/node/constants.ts +2 -2
  470. package/src/build/node/index.ts +13 -4
  471. package/src/build/node/meteor.ts +19 -24
  472. package/src/build/node/testJob.ts +44 -25
  473. package/src/build/node/yarn.ts +22 -15
  474. package/src/build/rails/build.ts +15 -9
  475. package/src/build/rails/index.ts +4 -2
  476. package/src/build/rails/test.ts +41 -12
  477. package/src/build/sbom.ts +21 -11
  478. package/src/build/types.ts +198 -47
  479. package/src/catladder-gitlab.ts +7 -56
  480. package/src/config/__tests__/__snapshots__/getAllEnvs.test.ts.snap +31 -0
  481. package/src/config/__tests__/__snapshots__/getAllEnvsInAllComponents.test.ts.snap +15 -0
  482. package/src/config/__tests__/getAllEnvs.test.ts +71 -0
  483. package/src/config/__tests__/getAllEnvsInAllComponents.test.ts +63 -0
  484. package/src/config/configruedEnvs.ts +6 -6
  485. package/src/config/readConfig.ts +15 -22
  486. package/src/constants.ts +5 -2
  487. package/src/context/createAllComponentsContext.ts +31 -0
  488. package/src/context/createComponentContext.ts +148 -0
  489. package/src/context/createWorkspaceContext.ts +56 -0
  490. package/src/context/getBuildInfoVariables.ts +36 -0
  491. package/src/context/getEnvConfig.ts +25 -5
  492. package/src/context/getEnvType.ts +1 -1
  493. package/src/context/getEnvironment.ts +8 -24
  494. package/src/context/getEnvironmentContext.ts +25 -29
  495. package/src/context/getEnvironmentVariables.ts +101 -83
  496. package/src/context/getLabels.ts +8 -5
  497. package/src/context/getReviewSlug.ts +27 -0
  498. package/src/context/index.ts +1 -65
  499. package/src/context/transformJobOnlyVars.ts +6 -3
  500. package/src/context/utils/envVars.ts +5 -4
  501. package/src/deploy/base/deploy.ts +63 -47
  502. package/src/deploy/base/index.ts +11 -6
  503. package/src/deploy/base/rollback.ts +11 -16
  504. package/src/deploy/base/stop.ts +11 -15
  505. package/src/deploy/base/variables.ts +1 -1
  506. package/src/deploy/cloudRun/artifactsRegistry.ts +32 -28
  507. package/src/deploy/cloudRun/cleanup.ts +5 -5
  508. package/src/deploy/cloudRun/cloudRunRevisions.ts +9 -11
  509. package/src/deploy/cloudRun/createJobs/cloudRunJobs.ts +71 -153
  510. package/src/deploy/cloudRun/createJobs/cloudRunServices.ts +65 -26
  511. package/src/deploy/cloudRun/createJobs/common.ts +7 -7
  512. package/src/deploy/cloudRun/createJobs/constants.ts +1 -0
  513. package/src/deploy/cloudRun/createJobs/execute/onDeploy.ts +102 -0
  514. package/src/deploy/cloudRun/createJobs/execute/schedules.ts +186 -0
  515. package/src/deploy/cloudRun/createJobs/getCloudRunDeployScripts.ts +27 -16
  516. package/src/deploy/cloudRun/createJobs/getCloudRunStopScripts.ts +9 -11
  517. package/src/deploy/cloudRun/createJobs/healthCheck.ts +64 -0
  518. package/src/deploy/cloudRun/createJobs/index.ts +20 -14
  519. package/src/deploy/cloudRun/createJobs/volumes.ts +23 -0
  520. package/src/deploy/cloudRun/index.ts +94 -60
  521. package/src/deploy/cloudRun/utils/cloudRunExecutionUrl.ts +20 -0
  522. package/src/deploy/cloudRun/utils/createArgsString.ts +6 -2
  523. package/src/deploy/cloudRun/utils/database.ts +116 -9
  524. package/src/deploy/cloudRun/utils/gcloudServiceAccountLoginCommands.ts +5 -3
  525. package/src/deploy/cloudRun/utils/getJobOrServiceArgs.ts +18 -0
  526. package/src/deploy/cloudRun/utils/getServiceName.ts +2 -2
  527. package/src/deploy/cloudRun/utils/jobName.ts +22 -2
  528. package/src/deploy/cloudRun/utils/removeFirstLinesFromCommandOutput.ts +1 -1
  529. package/src/deploy/cloudSql/utils.ts +13 -10
  530. package/src/deploy/custom/deployJob.ts +15 -10
  531. package/src/deploy/custom/index.ts +2 -2
  532. package/src/deploy/dockerTag/deployJob.ts +6 -7
  533. package/src/deploy/dockerTag/index.ts +8 -7
  534. package/src/deploy/index.ts +15 -12
  535. package/src/deploy/kubernetes/additionalSecretKeys.ts +3 -1
  536. package/src/deploy/kubernetes/cloudSql/index.ts +16 -25
  537. package/src/deploy/kubernetes/deployJob.ts +30 -21
  538. package/src/deploy/kubernetes/index.ts +43 -35
  539. package/src/deploy/kubernetes/kubeEnv.ts +12 -10
  540. package/src/deploy/kubernetes/kubeValues.ts +25 -20
  541. package/src/deploy/kubernetes/mongodb.ts +15 -15
  542. package/src/deploy/sbom.ts +20 -10
  543. package/src/deploy/types/base.ts +3 -3
  544. package/src/deploy/types/custom.ts +3 -7
  545. package/src/deploy/types/googleCloudRun.ts +359 -2
  546. package/src/deploy/types/index.ts +9 -2
  547. package/src/deploy/types/kubernetes.ts +1 -36
  548. package/src/deploy/utils.ts +5 -5
  549. package/src/globalScriptFunctions/index.ts +30 -0
  550. package/src/index.ts +4 -1
  551. package/src/packageInfos.ts +14 -0
  552. package/src/pipeline/__tests__/__snapshots__/getPipelineStages.test.ts.snap +69 -0
  553. package/src/pipeline/__tests__/getPipelineStages.test.ts +63 -0
  554. package/src/pipeline/createAllJobs.ts +67 -33
  555. package/src/pipeline/createJobsForComponent.ts +17 -37
  556. package/src/pipeline/createJobsForWorkspace.ts +12 -0
  557. package/src/pipeline/createMainPipeline.ts +118 -0
  558. package/src/pipeline/generatePipelineFiles.ts +100 -0
  559. package/src/pipeline/getPipelineStages.ts +23 -0
  560. package/src/pipeline/gitlab/createGitlabJobs.ts +398 -108
  561. package/src/pipeline/gitlab/createGitlabPipeline.ts +35 -0
  562. package/src/pipeline/gitlab/gitlabReleaseJobs.ts +23 -0
  563. package/src/pipeline/gitlab/sortGitLabJobDefProps.ts +59 -0
  564. package/src/pipeline/index.ts +2 -1
  565. package/src/pipeline/packageManager.ts +42 -18
  566. package/src/pipeline/yarn/yarnUtils.ts +15 -12
  567. package/src/rules/index.ts +41 -18
  568. package/src/runner/index.ts +0 -1
  569. package/src/types/config.ts +62 -23
  570. package/src/types/context.ts +167 -36
  571. package/src/types/environmentContext.ts +18 -13
  572. package/src/types/gitlab-ci-yml.ts +0 -1
  573. package/src/types/gitlab-types.ts +10 -7
  574. package/src/types/index.ts +2 -0
  575. package/src/types/jobDefinition.ts +34 -0
  576. package/src/types/jobs.ts +31 -15
  577. package/src/types/utils.ts +4 -4
  578. package/src/utils/gitlab.ts +20 -3
  579. package/src/utils/index.ts +6 -3
  580. package/src/utils/jsonParse.ts +7 -0
  581. package/src/utils/removeUndefined.ts +4 -0
  582. package/src/utils/writeFiles.ts +52 -0
  583. package/src/variables/VariableValue.ts +6 -0
  584. package/src/variables/VariableValueContainingReferences.ts +89 -0
  585. package/src/variables/__tests__/resolveAllReferences.test.ts +110 -0
  586. package/src/variables/__tests__/resolveAllReferencesOnce.test.ts +64 -0
  587. package/src/variables/__tests__/resolveReferencesOnce.test.ts +117 -0
  588. package/src/variables/__tests__/variableValue.test.ts +73 -0
  589. package/src/variables/resolveAllReferences.ts +46 -0
  590. package/src/variables/resolveAllReferencesOnce.ts +44 -0
  591. package/src/variables/resolveReferencesOnce.ts +29 -0
  592. package/bin/catladder-gitlab-dev.js +0 -3
  593. package/bin/catladder-gitlab.js +0 -3
  594. package/dist/bundles/catladder-gitlab/index.js +0 -34559
  595. package/dist/context/__tests__/resolveReferences.test.js +0 -336
  596. package/dist/context/resolveReferences.d.ts +0 -4
  597. package/dist/context/resolveReferences.js +0 -254
  598. package/dist/deploy/cloudRun/createJobs/variables.d.ts +0 -5
  599. package/dist/deploy/cloudRun/createJobs/variables.js +0 -19
  600. package/dist/deploy/kubernetes/processSecretsAsFiles.d.ts +0 -84
  601. package/dist/deploy/kubernetes/processSecretsAsFiles.js +0 -31
  602. package/dist/pipeline/commitInfo/getBuildId.d.ts +0 -6
  603. package/dist/pipeline/commitInfo/getCommitInfo.d.ts +0 -2
  604. package/dist/pipeline/createChildPipeline.d.ts +0 -3
  605. package/examples/__snapshots__/cloud-run-memory-limit.ts.snap +0 -1839
  606. package/examples/__snapshots__/cloud-run-meteor-with-worker.ts.snap +0 -1807
  607. package/examples/__snapshots__/cloud-run-no-cpu-throttling.ts.snap +0 -1839
  608. package/examples/__snapshots__/cloud-run-non-public.ts.snap +0 -1839
  609. package/examples/__snapshots__/cloud-run-post-stop-job.ts.snap +0 -1849
  610. package/examples/__snapshots__/cloud-run-service-gen2.ts.snap +0 -1839
  611. package/examples/__snapshots__/cloud-run-with-sql-reuse-db.ts.snap +0 -3647
  612. package/examples/__snapshots__/cloud-run-with-sql.ts.snap +0 -3658
  613. package/examples/__snapshots__/cloud-run-with-worker.ts.snap +0 -1847
  614. package/examples/__snapshots__/custom-build-job-with-tests.ts.snap +0 -1663
  615. package/examples/__snapshots__/custom-build-job.ts.snap +0 -1375
  616. package/examples/__snapshots__/custom-deploy.ts.snap +0 -1625
  617. package/examples/__snapshots__/custom-envs.ts.snap +0 -1127
  618. package/examples/__snapshots__/custom-sbom-java.ts.snap +0 -1383
  619. package/examples/__snapshots__/kubernetes-application-customization.ts.snap +0 -2573
  620. package/examples/__snapshots__/kubernetes-with-cloud-sql-legacy.ts.snap +0 -2533
  621. package/examples/__snapshots__/kubernetes-with-cloud-sql.ts.snap +0 -2545
  622. package/examples/__snapshots__/kubernetes-with-jobs.ts.snap +0 -4660
  623. package/examples/__snapshots__/kubernetes-with-mongodb.ts.snap +0 -2737
  624. package/examples/__snapshots__/meteor-kubernetes.ts.snap +0 -2658
  625. package/examples/__snapshots__/native-app.ts.snap +0 -3007
  626. package/examples/__snapshots__/node-build-with-custom-image.ts.snap +0 -1839
  627. package/examples/__snapshots__/node-build-with-docker-additions.ts.snap +0 -1839
  628. package/examples/__snapshots__/rails-k8s-with-worker.ts.snap +0 -4291
  629. package/examples/__snapshots__/wait-for-other-deploy.ts.snap +0 -2049
  630. package/examples/kubernetes-with-cloud-sql-legacy.ts +0 -33
  631. package/scripts/bundle +0 -2
  632. package/src/context/__tests__/resolveReferences.test.ts +0 -143
  633. package/src/context/resolveReferences.ts +0 -70
  634. package/src/deploy/cloudRun/createJobs/variables.ts +0 -21
  635. package/src/deploy/kubernetes/processSecretsAsFiles.ts +0 -34
  636. package/src/pipeline/commitInfo/getBuildId.ts +0 -17
  637. package/src/pipeline/commitInfo/getCommitInfo.ts +0 -15
  638. package/src/pipeline/createChildPipeline.ts +0 -46
  639. /package/dist/{context/__tests__/resolveReferences.test.d.ts → config/__tests__/getAllEnvs.test.d.ts} +0 -0
@@ -26,11 +26,11 @@ export type DeployConfigBase = {
26
26
  jobVars?: EnvVars;
27
27
 
28
28
  /**
29
- * additional env vars for the deploy job
29
+ * additional vars only for the runner.
30
+ * Also if you use services: that require env vars, you need to set them here.
30
31
  *
31
- * @deprecated use deploy.jobVars for deploy job specific variables
32
32
  */
33
- extraVars?: Record<string, string>;
33
+ runnerVariables?: Record<string, string>;
34
34
  };
35
35
 
36
36
  export type AllowUnknownProps<T extends Record<string, unknown>> = T &
@@ -1,5 +1,5 @@
1
+ import type { WithCacheConfig } from "../../build";
1
2
  import type { GitlabJobImage } from "../../types";
2
- import type { CatladderJob } from "../../types/jobs";
3
3
  import type { DeployConfigBase } from "./base";
4
4
 
5
5
  export type DeployConfigCustom = {
@@ -28,9 +28,5 @@ export type DeployConfigCustom = {
28
28
  * image to use
29
29
  */
30
30
  jobImage?: GitlabJobImage;
31
-
32
- /**
33
- * customize cache for the job
34
- */
35
- jobCache?: CatladderJob["cache"];
36
- } & DeployConfigBase;
31
+ } & DeployConfigBase &
32
+ WithCacheConfig;
@@ -1,3 +1,4 @@
1
+ import type { DBVariablesMode } from "../cloudRun/utils/database";
1
2
  import type { DeployConfigBase } from "./base";
2
3
 
3
4
  export type Gcloudregion =
@@ -62,6 +63,31 @@ export type DeployConfigCloudRunCloudSql = {
62
63
  */
63
64
  deleteDatabaseOnStop?: boolean;
64
65
 
66
+ /**
67
+ * format of the `DATABASE_URL` environment variable
68
+ *
69
+ * the options are:
70
+ * - prisma: adds [required but ignored hostname](https://www.prisma.io/docs/orm/overview/databases/postgresql#connecting-via-sockets):
71
+ * `postgresql://$DB_USER:$DB_PASSWORD@localhost/$DB_NAME?host=/cloudsql/$CLOUD_SQL_INSTANCE_CONNECTION_NAME`
72
+ * - rails: percent-encodes the socket in the host part
73
+ * `postgresql://$DB_USER:$DB_PASSWORD@%2Fcloudsql%2FprojectId%3Aregion%3Ainstancename/$DB_NAME?`
74
+ * - jdbc: for use with Google Cloud SQL Connector for Java
75
+ * `jdbc:postgresql:///$DB_NAME?cloudSqlInstance=$CLOUD_SQL_INSTANCE_CONNECTION_NAME&socketFactory=com.google.cloud.sql.postgres.SocketFactory&user=$DB_USER&password=$DB_PASSWORD`
76
+ *
77
+ * defaults to prisma
78
+ */
79
+ dbConnectionStringFormat?: "prisma" | "rails" | "jdbc";
80
+
81
+ /**
82
+ * controls how variables in the connection string are handled
83
+ *
84
+ * - environment: variables like $DB_USER will be kept as environment variables to be replaced at runtime (default)
85
+ * - embedded: variables will be replaced with their actual values in the connection string
86
+ *
87
+ * @default "environment"
88
+ */
89
+ dbConnectionStringVariablesMode?: DBVariablesMode;
90
+
65
91
  /**
66
92
  * add additional query params to the database connection string
67
93
  */
@@ -74,6 +100,7 @@ export type DeployConfigCloudRunCloudSql = {
74
100
  };
75
101
 
76
102
  type Memory = `${number}${"M" | "G" | "Mi" | "Gi"}`;
103
+ type Cpu = 1 | 2 | 4 | 6 | 8;
77
104
  export type DeployConfigCloudRunService = {
78
105
  /**
79
106
  * command / entrypoint, fallsback to buildConfig.startcommand
@@ -113,11 +140,25 @@ export type DeployConfigCloudRunService = {
113
140
  */
114
141
  ingress?: "all" | "internal" | "internal-and-cloud-load-balancing";
115
142
 
143
+ /**
144
+ * CPU limit.
145
+ */
146
+ cpu?: Cpu;
147
+
116
148
  /**
117
149
  * memory limit. Defaults to 512MB
118
150
  */
119
151
  memory?: Memory;
120
152
 
153
+ /**
154
+ * timeout of the service, defaults to 5 minutes.
155
+ *
156
+ * you can specify something like 10m30s. if its just a number, it will be interpreted as seconds
157
+ *
158
+ * max supported is 60min
159
+ */
160
+ timeout?: string;
161
+
121
162
  /**
122
163
  *
123
164
  * set the execution environment.
@@ -127,6 +168,161 @@ export type DeployConfigCloudRunService = {
127
168
  * defaults to gen1 according to gcloud
128
169
  */
129
170
  executionEnvironment?: "gen2" | "gen1";
171
+
172
+ /**
173
+ * Use http2 end-to-end. See https://cloud.google.com/run/docs/configuring/http2
174
+ *
175
+ * Defaults to false.
176
+ *
177
+ * Your service needs to be able to handle http2 requests.
178
+ * Its recommended to use http2 without tls, since cloud run handles the encryption for you. (so called "h2c" (http2 cleartext))
179
+ *
180
+ */
181
+ http2?: boolean;
182
+
183
+ /**
184
+ * Number of GPUs to use. Defaults to 0
185
+ *
186
+ * This is a preview feature and not all regions support it.
187
+ */
188
+ gpu?: number;
189
+
190
+ /**
191
+ * gpu type to use. Refer to https://cloud.google.com/run/docs/configuring/services/gpu#gcloud for defaults
192
+ */
193
+ gpuType?: string;
194
+
195
+ /**
196
+ * the image to use. Defaults to the image from the build.
197
+ *
198
+ * If you specify an image, you usually want to disable the build by setting build: false
199
+ */
200
+ image?: string;
201
+ /**
202
+ * args to pass to the command
203
+ */
204
+ args?: string[];
205
+
206
+ /**
207
+ * Configuration of the health check.
208
+ *
209
+ * When set to `true`, startup and liveness probes will be
210
+ * configured to `defaultStartupProbe` and `defaultLivenessProbe`.
211
+ *
212
+ * When not set, default Cloud Run's health check
213
+ * configuration is used (startup TCP probe and no liveness probe).
214
+ */
215
+ healthCheck?:
216
+ | true
217
+ | {
218
+ /**
219
+ * Startup probe configuration.
220
+ */
221
+ startupProbe: DeployConfigCloudRunProbe;
222
+
223
+ /**
224
+ * Liveness probe configuration.
225
+ * `false` disables the liveness probe.
226
+ */
227
+ livenessProbe: false | DeployConfigCloudRunProbe;
228
+ };
229
+ } & DeployConfigCloudRunWithVolumes &
230
+ DeployConfigCloudRunNetworkConfig;
231
+
232
+ export const defaultStartupProbe: DeployConfigCloudRunProbe = {
233
+ type: "http1",
234
+ path: "/__health",
235
+
236
+ initialDelaySeconds: 5,
237
+ timeoutSeconds: 1,
238
+ periodSeconds: 30,
239
+ failureThreshold: 3,
240
+ };
241
+
242
+ export const defaultLivenessProbe: DeployConfigCloudRunProbe = {
243
+ ...defaultStartupProbe,
244
+
245
+ initialDelaySeconds: 0,
246
+ timeoutSeconds: 10,
247
+ periodSeconds: 30,
248
+ failureThreshold: 3,
249
+ };
250
+
251
+ export type DeployConfigCloudRunProbe =
252
+ | DeployConfigCloudRunHttp1Probe
253
+ | DeployConfigCloudRunTcpProbe;
254
+
255
+ export type DeployConfigCloudRunProbeShared = {
256
+ /**
257
+ * The period in seconds at which to perform the probe.
258
+ * For example 2 to perform the probe every 2 seconds.
259
+ * Specify a value **from 1 second to 240** seconds.
260
+ */
261
+ periodSeconds: number;
262
+
263
+ /**
264
+ * The number of seconds to wait after the container has started before performing the first probe.
265
+ * Specify a value **from 0 seconds to 240** seconds.
266
+ */
267
+ initialDelaySeconds: number;
268
+
269
+ /**
270
+ * The number of seconds to wait until the probe times out.
271
+ * This value cannot exceed the value specified for `period`.
272
+ * Specify a value **from 1 to 240**.
273
+ */
274
+ timeoutSeconds: number;
275
+
276
+ /**
277
+ * The number of times to retry the probe before shutting down the container.
278
+ */
279
+ failureThreshold: number;
280
+ };
281
+
282
+ export type DeployConfigCloudRunTcpProbe = DeployConfigCloudRunProbeShared & {
283
+ /**
284
+ * Cloud Run makes a TCP connection to open the TCP Socket on the specified port.
285
+ * If Cloud Run is unable to establish a connection, it indicates a failure.
286
+ */
287
+ type: "tcp";
288
+ };
289
+
290
+ export type DeployConfigCloudRunHttp1Probe = DeployConfigCloudRunProbeShared & {
291
+ /**
292
+ * **This will NOT work with http2 enabled services**
293
+ *
294
+ * Cloud Run makes an HTTP GET request to the service health check endpoint (for example, /ready).
295
+ * Any response between 200 and 400 is a success, everything else indicates failure.
296
+ *
297
+ * If a startup probe does not succeed within the specified time (failureThreshold * period), which cannot exceed 240 seconds, the container is shut down.
298
+ *
299
+ * If the HTTP startup probe succeeds within the specified time, and you have enabled liveness probe, the HTTP liveness probe is started.
300
+ */
301
+ type: "http1";
302
+
303
+ /**
304
+ * the route path to check for health status of the service starting with a `/`.
305
+ */
306
+ path: string;
307
+ };
308
+
309
+ export type DeployConfigCloudRunNetworkConfig = {
310
+ /* the vpc network, see https://cloud.google.com/sdk/gcloud/reference/run/deploy#--network */
311
+ network?: string;
312
+
313
+ /**
314
+ * vpc subnet to use, see https://cloud.google.com/sdk/gcloud/reference/run/deploy#--subnet
315
+ */
316
+ subnet?: string;
317
+ /**
318
+ * vpc egress, see https://cloud.google.com/sdk/gcloud/reference/run/deploy#--vpc-egress
319
+ */
320
+ vpcEgress?: "all-traffic" | "private-ranges-only";
321
+
322
+ /**
323
+ * vpc connector
324
+ */
325
+ vpcConnector?: string;
130
326
  };
131
327
 
132
328
  export type DeployConfigCloudRunJobBase = {
@@ -135,11 +331,21 @@ export type DeployConfigCloudRunJobBase = {
135
331
  */
136
332
  command: string | string[];
137
333
 
334
+ /**
335
+ * optional, specify args. Those get overwritten by job executions if specified there
336
+ */
337
+ args?: string[];
338
+
138
339
  /**
139
340
  * custom image to use. Defaults to the image from the build
140
341
  */
141
342
  image?: string;
142
343
 
344
+ /**
345
+ * CPU limit of the job.
346
+ */
347
+ cpu?: Cpu;
348
+
143
349
  /**
144
350
  * memory limit of the job, defaults to 512Mi
145
351
  */
@@ -156,7 +362,13 @@ export type DeployConfigCloudRunJobBase = {
156
362
  * number of tasks that may run concurrently, defaults to 1
157
363
  */
158
364
  parallelism?: number;
159
- };
365
+
366
+ /**
367
+ * max number of retries of the job. Defaults to 0
368
+ */
369
+ maxRetries?: number;
370
+ } & DeployConfigCloudRunWithVolumes &
371
+ DeployConfigCloudRunNetworkConfig;
160
372
 
161
373
  type Minute = string;
162
374
  type Hour = string;
@@ -165,19 +377,47 @@ type DayOfWeek = string;
165
377
  type Month = string;
166
378
  export type DeployConfigCloudRunJobWithSchedule =
167
379
  DeployConfigCloudRunJobBase & {
380
+ /**
381
+ * @deprecated use `execute` instead
382
+ */
168
383
  when: "schedule";
384
+ /**
385
+ * @deprecated use `run` instead
386
+ */
169
387
  schedule: `${Minute} ${Hour} ${DayOfMonth} ${Month} ${DayOfWeek}`;
170
388
  /**
171
389
  * Max number of retries of the cloud scheduler.
172
390
  * Note: the task itself is never retried.
173
391
  *
174
392
  * defaults to 0 (no retries)
393
+ *
394
+ * @deprecated use `run` instead
175
395
  */
176
396
  maxRetryAttempts?: 0 | 1 | 2 | 3 | 4 | 5;
177
397
  };
178
398
 
179
399
  export type DeployConfigCloudRunJobNormal = DeployConfigCloudRunJobBase & {
180
- when: "manual" | "preDeploy" | "postDeploy" | "preStop" | "postStop";
400
+ /**
401
+ * wait for completion of the job on preDeploy and postDeploy
402
+ *
403
+ * has no effect on preStop and postStop (which always wait for completion)
404
+ *
405
+ *
406
+ * @deprecated use `run` instead
407
+ */
408
+ waitForCompletion?: boolean;
409
+ /**
410
+ * @deprecated use `run` instead
411
+ */
412
+ when?: "manual" | "preDeploy" | "postDeploy" | "preStop" | "postStop";
413
+ };
414
+
415
+ export type DeployConfigCloudRunWithVolumes = {
416
+ /**
417
+ * adds volumes to the service. This is an experimental feature and requires beta gcloud.
418
+ * sets executionEnvironment to gen2 automatically, since that is required
419
+ */
420
+ volumes?: DeployConfigCloudRunVolumes;
181
421
  };
182
422
 
183
423
  export type DeployConfigCloudRunJob =
@@ -222,4 +462,121 @@ export type DeployConfigCloudRun = {
222
462
  * add cloudSql
223
463
  */
224
464
  cloudSql?: DeployConfigCloudRunCloudSql | false;
465
+
466
+ /**
467
+ * execute jobs on deploy or execute jobs and http requests on a schedule
468
+ */
469
+ execute?: Record<string, DeployConfigCloudRunExecute | null>;
470
+
471
+ debug?: boolean;
225
472
  } & DeployConfigBase;
473
+
474
+ export type DeployConfigCloudRunVolumes = Record<
475
+ string,
476
+ DeployConfigCloudRunVolume
477
+ >;
478
+
479
+ export type DeployConfigCloudRunVolume = {
480
+ type: "cloud-storage";
481
+ bucket: string;
482
+ mountPath: string;
483
+ readonly?: boolean;
484
+ };
485
+
486
+ export type DeployConfigCloudRunExecuteJobBase = {
487
+ /**
488
+ * set to "job" to run a cloud run job
489
+ */
490
+ type: "job";
491
+ /**
492
+ * the cloud run job to run
493
+ */
494
+ job: string;
495
+
496
+ /**
497
+ * additional args to pass to the job
498
+ */
499
+ args?: string[];
500
+ };
501
+
502
+ type WithSchedule = {
503
+ /**
504
+ * run the job on a schedule
505
+ */
506
+ when: "schedule";
507
+ /**
508
+ * the cron schedule. See https://crontab.guru/
509
+ */
510
+ schedule: `${Minute} ${Hour} ${DayOfMonth} ${Month} ${DayOfWeek}`;
511
+
512
+ /**
513
+ * Max number of retries of the cloud scheduler.
514
+ * Note: the task itself is never retried.
515
+ *
516
+ * defaults to 0 (no retries)
517
+ */
518
+ maxRetryAttempts?: 0 | 1 | 2 | 3 | 4 | 5;
519
+ };
520
+
521
+ export type DeployConfigCloudRunExecuteJobScheduled =
522
+ DeployConfigCloudRunExecuteJobBase & WithSchedule;
523
+
524
+ export type DeployConfigCloudRunExecuteOnDeploy =
525
+ DeployConfigCloudRunExecuteJobBase &
526
+ (
527
+ | {
528
+ /**
529
+ * run the job before or after the deploy
530
+ */
531
+ when: "preDeploy" | "postDeploy";
532
+ /**
533
+ * whether to wait for completion of the job
534
+ */
535
+ waitForCompletion?: boolean;
536
+ }
537
+ | {
538
+ /**
539
+ * run the job before or after the environment is stopped
540
+ */
541
+ when: "preStop" | "postStop";
542
+ }
543
+ );
544
+
545
+ export type DeployConfigCloudRunExecuteJob =
546
+ | DeployConfigCloudRunExecuteJobScheduled
547
+ | DeployConfigCloudRunExecuteOnDeploy;
548
+
549
+ export type DeployConfigCloudRunExecuteHttp = {
550
+ /**
551
+ * set to "http" to run a http request
552
+ */
553
+ type: "http";
554
+ /**
555
+ * the url to call
556
+ */
557
+ url: string;
558
+
559
+ /**
560
+ * the http-method to use. Defaults to "POST" (as specified by google cloud scheduler)
561
+ */
562
+ method?: "GET" | "POST" | "PUT" | "DELETE" | "PATCH";
563
+
564
+ /**
565
+ * the body to send
566
+ */
567
+ body?: string;
568
+
569
+ /**
570
+ * the headers to send
571
+ */
572
+ headers?: Record<string, string>;
573
+ } & WithSchedule;
574
+
575
+ export type DeployConfigCloudRunExecute =
576
+ | DeployConfigCloudRunExecuteJob
577
+ | DeployConfigCloudRunExecuteHttp;
578
+
579
+ export type DeployConfigCloudRunExecuteWithSchedule = Extract<
580
+ DeployConfigCloudRunExecute,
581
+ WithSchedule
582
+ >;
@@ -21,8 +21,15 @@ export type DeployConfigGeneric<T extends DeployConfigType> = Extract<
21
21
  >;
22
22
 
23
23
  export const isOfDeployType = <T extends Array<DeployConfigType>>(
24
- t: DeployConfig | false,
24
+ t: DeployConfig | false | null | undefined,
25
25
  ...types: T
26
26
  ): t is Extract<DeployConfig, { type: T[number] }> => {
27
- return t && types.includes(t.type);
27
+ return t && types.includes(t.type) ? true : false;
28
+ };
29
+
30
+ export const getDeployConfigType = (
31
+ t: DeployConfig | false | null | undefined,
32
+ ) => {
33
+ if (!t) return undefined;
34
+ return t.type;
28
35
  };
@@ -164,33 +164,6 @@ export type DeployConfigMongodbReplicaset = {
164
164
  export type DeployConfigMongodb = DeployConfigMongodbBase &
165
165
  (DeployConfigMongodbStandalone | DeployConfigMongodbReplicaset);
166
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
167
  export type DeployConfigKubernetesValuesCloudSQLUnmanaged = {
195
168
  enabled: boolean;
196
169
  instanceConnectionName: string;
@@ -220,8 +193,7 @@ export type DeployConfigKubernetesValuesCloudSQLUnmanaged = {
220
193
  dbBaseName?: string;
221
194
  };
222
195
  export type DeployConfigKubernetesValuesCloudSQL =
223
- | DeployConfigKubernetesValuesCloudSQLLegacy
224
- | DeployConfigKubernetesValuesCloudSQLUnmanaged;
196
+ DeployConfigKubernetesValuesCloudSQLUnmanaged;
225
197
  export type DeployConfigKubernetesValues = AllowUnknownProps<{
226
198
  /**
227
199
  * enable cloudsql db. Currently you have to manually set it up
@@ -358,13 +330,6 @@ export type DeployConfigKubernetesValues = AllowUnknownProps<{
358
330
  mapServiceUrlToEnv?: {
359
331
  [envVar: string]: string;
360
332
  };
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
333
  }>;
369
334
 
370
335
  export type DeployConfigKubernetes = {
@@ -1,9 +1,9 @@
1
- import type { Config, Context } from "../types";
1
+ import type { Config, ComponentContext } from "../types";
2
2
  import type { DeployConfigKubernetesCluster } from "./types";
3
3
  import { isOfDeployType } from "./types";
4
4
 
5
5
  export const getFullKubernetesClusterName = (
6
- cluster: DeployConfigKubernetesCluster
6
+ cluster: DeployConfigKubernetesCluster,
7
7
  ) => {
8
8
  if (cluster.type === "gcloud") {
9
9
  return `gke_${cluster.projectId}_${cluster.region}_${cluster.name}`;
@@ -12,13 +12,13 @@ export const getFullKubernetesClusterName = (
12
12
 
13
13
  export const getKubernetesNamespace = (
14
14
  config: Pick<Config, "customerName" | "appName">,
15
- env: string
15
+ env: string,
16
16
  ) => {
17
17
  return `${config.customerName}-${config.appName}-${env}`;
18
18
  };
19
19
 
20
- export const contextIsStoppable = (context: Context) => {
21
- const deployConfig = context.componentConfig.deploy;
20
+ export const contextIsStoppable = (context: ComponentContext) => {
21
+ const deployConfig = context.deploy?.config;
22
22
  if (isOfDeployType(deployConfig, "kubernetes")) {
23
23
  return true;
24
24
  }
@@ -0,0 +1,30 @@
1
+ class GlobalScriptFunction {
2
+ constructor(
3
+ public name: string,
4
+ public script: string,
5
+ ) {}
6
+
7
+ toBashFunction() {
8
+ return `function ${this.name} () {
9
+ ${this.script.trim()}
10
+ }`.trim();
11
+ }
12
+ invoke(...args: string[]) {
13
+ return `${this.name} ${args.join(" ")}`;
14
+ }
15
+ }
16
+
17
+ export const globalScriptFunctions = new Map<string, GlobalScriptFunction>();
18
+
19
+ /**
20
+ * registers a global script function
21
+ * only use that in top-level scopes as it will attach the function to the global scope
22
+ */
23
+ export const registerGlobalScriptFunction = (name: string, script: string) => {
24
+ if (globalScriptFunctions.has(name)) {
25
+ throw new Error(`Global script function ${name} already exists`);
26
+ }
27
+ const scriptFunction = new GlobalScriptFunction(name, script);
28
+ globalScriptFunctions.set(name, scriptFunction);
29
+ return scriptFunction;
30
+ };
package/src/index.ts CHANGED
@@ -1,4 +1,4 @@
1
- export * from "./pipeline/";
1
+ export * from "./pipeline";
2
2
  export * from "./types";
3
3
  export * from "./rules";
4
4
  export * from "./runner";
@@ -6,3 +6,6 @@ export * from "./config";
6
6
  export * from "./context";
7
7
  export * from "./build";
8
8
  export * from "./deploy";
9
+ export * from "./utils/writeFiles";
10
+ export * from "./variables/VariableValue";
11
+ export * from "./bash";
@@ -0,0 +1,14 @@
1
+ // we can't import the package.json directly, because the bundling process will inline it
2
+ // but the version is only set during deployement, when its already bundled
3
+ // instead we need to use require.main.path to get the path of the main module, which is actually the file in the bin
4
+ // this will point to the root package.json
5
+ let ownPkg = { version: "0.0.0" };
6
+ try {
7
+ const path = require.main?.path + "/../package.json";
8
+
9
+ ownPkg = require(path);
10
+ } catch (e) {
11
+ // ignore, currently in the gitlab-includes, this doesn't work
12
+ }
13
+
14
+ export default ownPkg;
@@ -0,0 +1,69 @@
1
+ // Jest Snapshot v1, https://goo.gl/fbAQLP
2
+
3
+ exports[`getPipelineStages() should return all envs for SIMPLE_CONFIG1 1`] = `
4
+ [
5
+ "setup",
6
+ "setup dev",
7
+ "setup review",
8
+ "setup stage",
9
+ "setup prod",
10
+ "setup dev2",
11
+ "setup review2",
12
+ "setup stage2",
13
+ "setup prod2",
14
+ "test",
15
+ "test dev",
16
+ "test review",
17
+ "test stage",
18
+ "test prod",
19
+ "test dev2",
20
+ "test review2",
21
+ "test stage2",
22
+ "test prod2",
23
+ "build",
24
+ "build dev",
25
+ "build review",
26
+ "build stage",
27
+ "build prod",
28
+ "build dev2",
29
+ "build review2",
30
+ "build stage2",
31
+ "build prod2",
32
+ "deploy",
33
+ "deploy dev",
34
+ "deploy review",
35
+ "deploy stage",
36
+ "deploy prod",
37
+ "deploy dev2",
38
+ "deploy review2",
39
+ "deploy stage2",
40
+ "deploy prod2",
41
+ "verify",
42
+ "verify dev",
43
+ "verify review",
44
+ "verify stage",
45
+ "verify prod",
46
+ "verify dev2",
47
+ "verify review2",
48
+ "verify stage2",
49
+ "verify prod2",
50
+ "rollback",
51
+ "rollback dev",
52
+ "rollback review",
53
+ "rollback stage",
54
+ "rollback prod",
55
+ "rollback dev2",
56
+ "rollback review2",
57
+ "rollback stage2",
58
+ "rollback prod2",
59
+ "stop",
60
+ "stop dev",
61
+ "stop review",
62
+ "stop stage",
63
+ "stop prod",
64
+ "stop dev2",
65
+ "stop review2",
66
+ "stop stage2",
67
+ "stop prod2",
68
+ ]
69
+ `;