@catladder/pipeline 1.144.1 → 1.146.0

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 (335) hide show
  1. package/dist/bash/BashExpression.d.ts +40 -0
  2. package/dist/bash/BashExpression.js +124 -0
  3. package/dist/bash/bashExpressionPerPipelineType.d.ts +6 -0
  4. package/dist/bash/bashExpressionPerPipelineType.js +11 -0
  5. package/dist/bash/bashYaml.d.ts +10 -0
  6. package/dist/bash/bashYaml.js +46 -0
  7. package/dist/bash/getInjectVarsScript.d.ts +2 -0
  8. package/dist/bash/getInjectVarsScript.js +45 -0
  9. package/dist/bash/replaceAsync.d.ts +2 -0
  10. package/dist/{pipeline/commitInfo/getCommitInfo.js → bash/replaceAsync.js} +49 -21
  11. package/dist/build/base/__tests__/createArtifactsConfig.test.js +3 -1
  12. package/dist/build/base/constants.js +3 -1
  13. package/dist/build/base/createAppBuildJob.d.ts +2 -1
  14. package/dist/build/base/createAppBuildJob.js +10 -6
  15. package/dist/build/base/createArtifactsConfig.d.ts +1 -1
  16. package/dist/build/base/createArtifactsConfig.js +3 -1
  17. package/dist/build/base/index.js +3 -1
  18. package/dist/build/base/writeBuildInfo.js +4 -3
  19. package/dist/build/base/writeDotEnv.js +12 -3
  20. package/dist/build/custom/__tests__/testJob.test.js +3 -1
  21. package/dist/build/custom/buildJob.js +4 -12
  22. package/dist/build/custom/index.js +3 -1
  23. package/dist/build/custom/testJob.d.ts +1 -1
  24. package/dist/build/custom/testJob.js +18 -14
  25. package/dist/build/docker.d.ts +5 -31
  26. package/dist/build/docker.js +16 -9
  27. package/dist/build/index.d.ts +1 -1
  28. package/dist/build/index.js +13 -7
  29. package/dist/build/node/buildJob.js +4 -12
  30. package/dist/build/node/cache.js +6 -3
  31. package/dist/build/node/constants.js +3 -1
  32. package/dist/build/node/index.js +3 -1
  33. package/dist/build/node/meteor.js +5 -2
  34. package/dist/build/node/testJob.js +18 -14
  35. package/dist/build/node/yarn.d.ts +3 -2
  36. package/dist/build/node/yarn.js +6 -3
  37. package/dist/build/rails/build.js +3 -1
  38. package/dist/build/rails/index.js +3 -1
  39. package/dist/build/rails/test.js +15 -11
  40. package/dist/build/sbom.js +3 -1
  41. package/dist/build/types.d.ts +24 -18
  42. package/dist/build/types.js +3 -1
  43. package/dist/bundles/catladder-gitlab/index.js +3 -3
  44. package/dist/catladder-gitlab.js +10 -54
  45. package/dist/config/__tests__/configruedEnvs.test.js +3 -1
  46. package/dist/config/configruedEnvs.js +3 -1
  47. package/dist/config/index.js +13 -7
  48. package/dist/config/readConfig.js +6 -5
  49. package/dist/constants.js +5 -3
  50. package/dist/context/__tests__/resolveReferences.test.js +40 -8
  51. package/dist/context/getBuildInfoVariables.d.ts +7 -0
  52. package/dist/context/getBuildInfoVariables.js +29 -0
  53. package/dist/context/getEnvConfig.js +3 -1
  54. package/dist/context/getEnvType.js +3 -1
  55. package/dist/context/getEnvironment.d.ts +3 -3
  56. package/dist/context/getEnvironment.js +10 -14
  57. package/dist/context/getEnvironmentContext.d.ts +7 -3
  58. package/dist/context/getEnvironmentContext.js +21 -11
  59. package/dist/context/getEnvironmentVariables.d.ts +26 -5
  60. package/dist/context/getEnvironmentVariables.js +40 -25
  61. package/dist/context/getLabels.js +4 -2
  62. package/dist/context/getReviewSlug.d.ts +4 -0
  63. package/dist/context/getReviewSlug.js +22 -0
  64. package/dist/context/index.d.ts +12 -3
  65. package/dist/context/index.js +21 -15
  66. package/dist/context/resolveReferences.d.ts +3 -1
  67. package/dist/context/resolveReferences.js +53 -21
  68. package/dist/context/transformJobOnlyVars.d.ts +5 -2
  69. package/dist/context/transformJobOnlyVars.js +4 -2
  70. package/dist/context/utils/envVars.d.ts +1 -1
  71. package/dist/context/utils/envVars.js +5 -2
  72. package/dist/defaults/index.js +3 -1
  73. package/dist/deploy/base/deploy.d.ts +1 -1
  74. package/dist/deploy/base/deploy.js +12 -11
  75. package/dist/deploy/base/index.js +3 -1
  76. package/dist/deploy/base/rollback.d.ts +1 -1
  77. package/dist/deploy/base/rollback.js +13 -9
  78. package/dist/deploy/base/stop.d.ts +1 -1
  79. package/dist/deploy/base/stop.js +16 -11
  80. package/dist/deploy/base/types.d.ts +1 -1
  81. package/dist/deploy/base/types.js +3 -1
  82. package/dist/deploy/base/variables.js +3 -1
  83. package/dist/deploy/cloudRun/artifactsRegistry.d.ts +2 -1
  84. package/dist/deploy/cloudRun/artifactsRegistry.js +6 -4
  85. package/dist/deploy/cloudRun/cleanup.js +3 -1
  86. package/dist/deploy/cloudRun/cloudRunRevisions.js +3 -1
  87. package/dist/deploy/cloudRun/createJobs/cloudRunJobs.js +8 -5
  88. package/dist/deploy/cloudRun/createJobs/cloudRunServices.d.ts +2 -2
  89. package/dist/deploy/cloudRun/createJobs/cloudRunServices.js +6 -3
  90. package/dist/deploy/cloudRun/createJobs/common.d.ts +3 -3
  91. package/dist/deploy/cloudRun/createJobs/common.js +3 -1
  92. package/dist/deploy/cloudRun/createJobs/constants.d.ts +1 -0
  93. package/dist/deploy/cloudRun/createJobs/constants.js +7 -0
  94. package/dist/deploy/cloudRun/createJobs/getCloudRunDeployScripts.js +10 -4
  95. package/dist/deploy/cloudRun/createJobs/getCloudRunStopScripts.js +3 -1
  96. package/dist/deploy/cloudRun/createJobs/index.js +25 -8
  97. package/dist/deploy/cloudRun/createJobs/volumes.js +3 -1
  98. package/dist/deploy/cloudRun/index.js +5 -3
  99. package/dist/deploy/cloudRun/utils/createArgsString.d.ts +2 -1
  100. package/dist/deploy/cloudRun/utils/createArgsString.js +3 -1
  101. package/dist/deploy/cloudRun/utils/database.js +13 -13
  102. package/dist/deploy/cloudRun/utils/gcloudServiceAccountLoginCommands.js +3 -1
  103. package/dist/deploy/cloudRun/utils/getServiceName.d.ts +1 -1
  104. package/dist/deploy/cloudRun/utils/getServiceName.js +3 -1
  105. package/dist/deploy/cloudRun/utils/jobName.d.ts +2 -1
  106. package/dist/deploy/cloudRun/utils/jobName.js +4 -2
  107. package/dist/deploy/cloudRun/utils/removeFirstLinesFromCommandOutput.js +3 -1
  108. package/dist/deploy/cloudSql/utils.d.ts +2 -1
  109. package/dist/deploy/cloudSql/utils.js +7 -2
  110. package/dist/deploy/custom/deployJob.js +3 -1
  111. package/dist/deploy/custom/index.js +3 -1
  112. package/dist/deploy/dockerTag/deployJob.js +3 -1
  113. package/dist/deploy/dockerTag/index.js +3 -1
  114. package/dist/deploy/index.d.ts +4 -3
  115. package/dist/deploy/index.js +13 -7
  116. package/dist/deploy/kubernetes/additionalSecretKeys.js +3 -1
  117. package/dist/deploy/kubernetes/cloudSql/index.d.ts +3 -2
  118. package/dist/deploy/kubernetes/cloudSql/index.js +6 -4
  119. package/dist/deploy/kubernetes/deployJob.js +22 -15
  120. package/dist/deploy/kubernetes/index.js +51 -14
  121. package/dist/deploy/kubernetes/kubeEnv.d.ts +3 -2
  122. package/dist/deploy/kubernetes/kubeEnv.js +7 -4
  123. package/dist/deploy/kubernetes/kubeValues.d.ts +2 -2
  124. package/dist/deploy/kubernetes/kubeValues.js +4 -5
  125. package/dist/deploy/kubernetes/mongodb.js +3 -1
  126. package/dist/deploy/kubernetes/processSecretsAsFiles.d.ts +2 -1
  127. package/dist/deploy/kubernetes/processSecretsAsFiles.js +3 -1
  128. package/dist/deploy/sbom.js +3 -1
  129. package/dist/deploy/types/base.d.ts +8 -2
  130. package/dist/deploy/types/base.js +3 -1
  131. package/dist/deploy/types/custom.d.ts +1 -1
  132. package/dist/deploy/types/custom.js +3 -1
  133. package/dist/deploy/types/dockerTag.d.ts +1 -1
  134. package/dist/deploy/types/dockerTag.js +3 -1
  135. package/dist/deploy/types/googleCloudRun.d.ts +19 -18
  136. package/dist/deploy/types/googleCloudRun.js +3 -1
  137. package/dist/deploy/types/index.d.ts +6 -6
  138. package/dist/deploy/types/index.js +13 -7
  139. package/dist/deploy/types/kubernetes.d.ts +22 -22
  140. package/dist/deploy/types/kubernetes.js +3 -1
  141. package/dist/deploy/utils.js +3 -1
  142. package/dist/index.d.ts +3 -2
  143. package/dist/index.js +16 -9
  144. package/dist/packageInfos.d.ts +2 -0
  145. package/dist/packageInfos.js +14 -0
  146. package/dist/pipeline/createAllJobs.d.ts +13 -5
  147. package/dist/pipeline/createAllJobs.js +21 -10
  148. package/dist/pipeline/createChildPipeline.d.ts +1 -1
  149. package/dist/pipeline/createChildPipeline.js +24 -7
  150. package/dist/pipeline/createJobsForComponent.d.ts +3 -3
  151. package/dist/pipeline/createJobsForComponent.js +19 -18
  152. package/dist/pipeline/createMainPipeline.d.ts +3 -0
  153. package/dist/pipeline/createMainPipeline.js +248 -0
  154. package/dist/pipeline/generatePipelineFiles.d.ts +2 -0
  155. package/dist/pipeline/generatePipelineFiles.js +178 -0
  156. package/dist/pipeline/getPipelineStages.js +3 -1
  157. package/dist/pipeline/gitlab/createGitlabJobs.d.ts +15 -5
  158. package/dist/pipeline/gitlab/createGitlabJobs.js +98 -25
  159. package/dist/pipeline/gitlab/createGitlabPipeline.d.ts +7 -2
  160. package/dist/pipeline/gitlab/createGitlabPipeline.js +34 -17
  161. package/dist/pipeline/gitlab/getPipelineTriggerForGitlabChildPipeline.d.ts +1 -0
  162. package/dist/pipeline/gitlab/getPipelineTriggerForGitlabChildPipeline.js +29 -0
  163. package/dist/pipeline/gitlab/gitlabReleaseJobs.d.ts +33 -0
  164. package/dist/pipeline/gitlab/gitlabReleaseJobs.js +24 -0
  165. package/dist/pipeline/index.d.ts +3 -1
  166. package/dist/pipeline/index.js +16 -8
  167. package/dist/pipeline/packageManager.js +4 -2
  168. package/dist/pipeline/yarn/yarnUtils.js +6 -4
  169. package/dist/rules/index.d.ts +4 -1
  170. package/dist/rules/index.js +25 -18
  171. package/dist/runner/index.d.ts +1 -1
  172. package/dist/runner/index.js +3 -1
  173. package/dist/tsconfig.tsbuildinfo +1 -1
  174. package/dist/types/config.d.ts +18 -15
  175. package/dist/types/config.js +5 -2
  176. package/dist/types/context.d.ts +37 -32
  177. package/dist/types/context.js +3 -1
  178. package/dist/types/environmentContext.d.ts +11 -7
  179. package/dist/types/environmentContext.js +3 -1
  180. package/dist/types/gitlab-ci-yml.d.ts +30 -30
  181. package/dist/types/gitlab-ci-yml.js +3 -2
  182. package/dist/types/gitlab-types.d.ts +4 -6
  183. package/dist/types/gitlab-types.js +3 -1
  184. package/dist/types/index.js +13 -7
  185. package/dist/types/jobs.d.ts +23 -6
  186. package/dist/types/jobs.js +3 -1
  187. package/dist/types/pipeline.d.ts +4 -3
  188. package/dist/types/pipeline.js +3 -1
  189. package/dist/types/utils.d.ts +1 -1
  190. package/dist/types/utils.js +3 -1
  191. package/dist/utils/gitlab.js +3 -1
  192. package/dist/utils/index.d.ts +1 -1
  193. package/dist/utils/index.js +3 -1
  194. package/dist/utils/writeFiles.d.ts +7 -0
  195. package/dist/{pipeline/commitInfo/getBuildId.js → utils/writeFiles.js} +39 -22
  196. package/examples/__snapshots__/cloud-run-memory-limit.ts.snap +480 -384
  197. package/examples/__snapshots__/cloud-run-meteor-with-worker.ts.snap +462 -366
  198. package/examples/__snapshots__/cloud-run-no-cpu-throttling.ts.snap +480 -384
  199. package/examples/__snapshots__/cloud-run-no-service.ts.snap +501 -393
  200. package/examples/__snapshots__/cloud-run-non-public.ts.snap +480 -384
  201. package/examples/__snapshots__/cloud-run-post-stop-job.ts.snap +489 -392
  202. package/examples/__snapshots__/cloud-run-service-gen2.ts.snap +480 -384
  203. package/examples/__snapshots__/cloud-run-service-with-volumes.ts.snap +501 -401
  204. package/examples/__snapshots__/cloud-run-with-sql-reuse-db.ts.snap +1155 -915
  205. package/examples/__snapshots__/cloud-run-with-sql.ts.snap +1116 -888
  206. package/examples/__snapshots__/cloud-run-with-worker.ts.snap +482 -386
  207. package/examples/__snapshots__/custom-build-job-with-tests.ts.snap +452 -356
  208. package/examples/__snapshots__/custom-build-job.ts.snap +434 -350
  209. package/examples/__snapshots__/custom-deploy.ts.snap +319 -223
  210. package/examples/__snapshots__/custom-envs.ts.snap +123 -81
  211. package/examples/__snapshots__/custom-sbom-java.ts.snap +434 -350
  212. package/examples/__snapshots__/kubernetes-application-customization.ts.snap +846 -969
  213. package/examples/__snapshots__/kubernetes-with-cloud-sql-legacy.ts.snap +886 -957
  214. package/examples/__snapshots__/kubernetes-with-cloud-sql.ts.snap +894 -969
  215. package/examples/__snapshots__/kubernetes-with-jobs.ts.snap +1626 -1728
  216. package/examples/__snapshots__/kubernetes-with-mongodb.ts.snap +974 -1137
  217. package/examples/__snapshots__/local-dot-env.ts.snap +480 -384
  218. package/examples/__snapshots__/meteor-kubernetes.ts.snap +906 -1069
  219. package/examples/__snapshots__/multiline-var.ts.snap +4500 -0
  220. package/examples/__snapshots__/native-app.ts.snap +706 -578
  221. package/examples/__snapshots__/node-build-with-custom-image.ts.snap +480 -384
  222. package/examples/__snapshots__/node-build-with-docker-additions.ts.snap +488 -384
  223. package/examples/__snapshots__/rails-k8s-with-worker.ts.snap +1656 -1942
  224. package/examples/__snapshots__/wait-for-other-deploy.ts.snap +287 -231
  225. package/examples/__utils__/helpers.ts +2 -2
  226. package/examples/custom-deploy.ts +7 -7
  227. package/examples/multiline-var.ts +64 -0
  228. package/package.json +5 -8
  229. package/scripts/generate-gitlab-ci-types.ts +2 -2
  230. package/src/bash/BashExpression.ts +81 -0
  231. package/src/bash/bashExpressionPerPipelineType.ts +16 -0
  232. package/src/bash/bashYaml.ts +46 -0
  233. package/src/bash/getInjectVarsScript.ts +12 -0
  234. package/src/bash/replaceAsync.ts +50 -0
  235. package/src/build/base/__tests__/createArtifactsConfig.test.ts +3 -3
  236. package/src/build/base/createAppBuildJob.ts +8 -4
  237. package/src/build/base/createArtifactsConfig.ts +2 -2
  238. package/src/build/base/index.ts +1 -1
  239. package/src/build/base/writeBuildInfo.ts +1 -1
  240. package/src/build/base/writeDotEnv.ts +6 -1
  241. package/src/build/custom/__tests__/testJob.test.ts +1 -1
  242. package/src/build/custom/buildJob.ts +4 -6
  243. package/src/build/custom/testJob.ts +6 -5
  244. package/src/build/docker.ts +21 -13
  245. package/src/build/index.ts +1 -1
  246. package/src/build/node/buildJob.ts +3 -5
  247. package/src/build/node/cache.ts +4 -4
  248. package/src/build/node/meteor.ts +1 -1
  249. package/src/build/node/testJob.ts +6 -5
  250. package/src/build/node/yarn.ts +14 -9
  251. package/src/build/rails/test.ts +2 -1
  252. package/src/build/types.ts +8 -1
  253. package/src/catladder-gitlab.ts +8 -55
  254. package/src/config/configruedEnvs.ts +6 -6
  255. package/src/config/readConfig.ts +4 -5
  256. package/src/constants.ts +5 -2
  257. package/src/context/__tests__/resolveReferences.test.ts +11 -6
  258. package/src/context/getBuildInfoVariables.ts +40 -0
  259. package/src/context/getEnvConfig.ts +1 -1
  260. package/src/context/getEnvType.ts +1 -1
  261. package/src/context/getEnvironment.ts +7 -30
  262. package/src/context/getEnvironmentContext.ts +25 -29
  263. package/src/context/getEnvironmentVariables.ts +72 -47
  264. package/src/context/getReviewSlug.ts +27 -0
  265. package/src/context/index.ts +26 -25
  266. package/src/context/resolveReferences.ts +40 -17
  267. package/src/context/transformJobOnlyVars.ts +6 -3
  268. package/src/context/utils/envVars.ts +5 -4
  269. package/src/deploy/base/deploy.ts +25 -23
  270. package/src/deploy/base/index.ts +1 -1
  271. package/src/deploy/base/rollback.ts +9 -11
  272. package/src/deploy/base/stop.ts +9 -10
  273. package/src/deploy/cloudRun/artifactsRegistry.ts +13 -8
  274. package/src/deploy/cloudRun/cleanup.ts +3 -3
  275. package/src/deploy/cloudRun/cloudRunRevisions.ts +3 -3
  276. package/src/deploy/cloudRun/createJobs/cloudRunJobs.ts +22 -17
  277. package/src/deploy/cloudRun/createJobs/cloudRunServices.ts +7 -6
  278. package/src/deploy/cloudRun/createJobs/common.ts +1 -1
  279. package/src/deploy/cloudRun/createJobs/constants.ts +1 -0
  280. package/src/deploy/cloudRun/createJobs/getCloudRunDeployScripts.ts +25 -7
  281. package/src/deploy/cloudRun/createJobs/getCloudRunStopScripts.ts +1 -1
  282. package/src/deploy/cloudRun/createJobs/index.ts +18 -9
  283. package/src/deploy/cloudRun/createJobs/volumes.ts +2 -2
  284. package/src/deploy/cloudRun/index.ts +22 -10
  285. package/src/deploy/cloudRun/utils/createArgsString.ts +3 -2
  286. package/src/deploy/cloudRun/utils/database.ts +7 -7
  287. package/src/deploy/cloudRun/utils/gcloudServiceAccountLoginCommands.ts +1 -1
  288. package/src/deploy/cloudRun/utils/jobName.ts +7 -2
  289. package/src/deploy/cloudRun/utils/removeFirstLinesFromCommandOutput.ts +1 -1
  290. package/src/deploy/cloudSql/utils.ts +13 -10
  291. package/src/deploy/index.ts +5 -4
  292. package/src/deploy/kubernetes/cloudSql/index.ts +6 -5
  293. package/src/deploy/kubernetes/deployJob.ts +28 -14
  294. package/src/deploy/kubernetes/index.ts +15 -8
  295. package/src/deploy/kubernetes/kubeEnv.ts +9 -7
  296. package/src/deploy/kubernetes/kubeValues.ts +5 -6
  297. package/src/deploy/kubernetes/mongodb.ts +1 -1
  298. package/src/deploy/kubernetes/processSecretsAsFiles.ts +5 -4
  299. package/src/deploy/types/base.ts +6 -0
  300. package/src/deploy/types/googleCloudRun.ts +2 -0
  301. package/src/deploy/utils.ts +2 -2
  302. package/src/index.ts +2 -1
  303. package/src/packageInfos.ts +10 -0
  304. package/src/pipeline/createAllJobs.ts +28 -14
  305. package/src/pipeline/createChildPipeline.ts +20 -9
  306. package/src/pipeline/createJobsForComponent.ts +15 -23
  307. package/src/pipeline/createMainPipeline.ts +91 -0
  308. package/src/pipeline/generatePipelineFiles.ts +29 -0
  309. package/src/pipeline/getPipelineStages.ts +1 -1
  310. package/src/pipeline/gitlab/createGitlabJobs.ts +182 -59
  311. package/src/pipeline/gitlab/createGitlabPipeline.ts +16 -14
  312. package/src/pipeline/gitlab/getPipelineTriggerForGitlabChildPipeline.ts +46 -0
  313. package/src/pipeline/gitlab/gitlabReleaseJobs.ts +20 -0
  314. package/src/pipeline/index.ts +2 -0
  315. package/src/pipeline/packageManager.ts +2 -2
  316. package/src/pipeline/yarn/yarnUtils.ts +7 -7
  317. package/src/rules/index.ts +15 -9
  318. package/src/types/config.ts +12 -3
  319. package/src/types/context.ts +39 -26
  320. package/src/types/environmentContext.ts +13 -7
  321. package/src/types/gitlab-ci-yml.ts +0 -1
  322. package/src/types/gitlab-types.ts +5 -4
  323. package/src/types/jobs.ts +29 -4
  324. package/src/types/pipeline.ts +4 -0
  325. package/src/types/utils.ts +4 -4
  326. package/src/utils/gitlab.ts +1 -1
  327. package/src/utils/index.ts +2 -2
  328. package/src/utils/writeFiles.ts +40 -0
  329. package/dist/deploy/cloudRun/createJobs/variables.d.ts +0 -5
  330. package/dist/deploy/cloudRun/createJobs/variables.js +0 -19
  331. package/dist/pipeline/commitInfo/getBuildId.d.ts +0 -6
  332. package/dist/pipeline/commitInfo/getCommitInfo.d.ts +0 -2
  333. package/src/deploy/cloudRun/createJobs/variables.ts +0 -21
  334. package/src/pipeline/commitInfo/getBuildId.ts +0 -17
  335. package/src/pipeline/commitInfo/getCommitInfo.ts +0 -15
@@ -15,11 +15,17 @@ export const DEPLOY_JOB_NAME = "🚀 Deploy";
15
15
 
16
16
  export type DeployJobDefinition = Pick<
17
17
  CatladderJob,
18
- "script" | "variables" | "image" | "cache" | "artifacts" | "services"
18
+ | "script"
19
+ | "variables"
20
+ | "image"
21
+ | "cache"
22
+ | "artifacts"
23
+ | "services"
24
+ | "runnerVariables"
19
25
  >;
20
26
  export const createDeployJob = (
21
27
  context: Context,
22
- jobDefinition: DeployJobDefinition
28
+ jobDefinition: DeployJobDefinition,
23
29
  ): CatladderJob => {
24
30
  const hasDocker = requiresDockerBuild(context);
25
31
  const isStoppable = contextIsStoppable(context);
@@ -28,8 +34,8 @@ export const createDeployJob = (
28
34
  context.environment.envType === "review"
29
35
  ? "1 week"
30
36
  : context.environment.envType === "dev"
31
- ? "4 weeks"
32
- : undefined;
37
+ ? "4 weeks"
38
+ : undefined;
33
39
 
34
40
  // if auto or manual is configured explicitly, use that
35
41
  const whenDeployDefined =
@@ -41,8 +47,8 @@ export const createDeployJob = (
41
47
  context.environment.envType !== "prod"
42
48
  ? "auto" // is not stage, auto deploy
43
49
  : context.componentConfig.env?.stage === false
44
- ? "auto" // is prod, but no staging, auto deploy
45
- : "manual"; // manually deploy
50
+ ? "auto" // is prod, but no staging, auto deploy
51
+ : "manual"; // manually deploy
46
52
  const whenDeploy = whenDeployDefined ? whenDeployDefined : whenDeployDefault;
47
53
 
48
54
  return {
@@ -77,19 +83,11 @@ export const createDeployJob = (
77
83
  artifacts: false,
78
84
  },
79
85
  ], // workaround for https://gitlab.com/gitlab-org/gitlab/-/issues/220758
80
- rules: [
81
- whenDeploy === "auto"
82
- ? {
83
- when: "on_success",
84
- }
85
- : {
86
- when: "manual",
87
- },
88
- ],
86
+ when: whenDeploy === "auto" ? "on_success" : "manual",
87
+
89
88
  allow_failure: whenDeploy === "manual" ? true : false,
90
89
  stage: "deploy",
91
90
  variables: {
92
- ...DEPLOY_RUNNER_VARIABLES,
93
91
  ...context.environment.envVars,
94
92
  ...(hasDocker ? getDockerImageVariables(context) : {}),
95
93
  ...context.environment.jobOnlyVars.deploy.envVars,
@@ -98,15 +96,19 @@ export const createDeployJob = (
98
96
  : {}),
99
97
  ...jobDefinition.variables,
100
98
  },
101
- environment: {
102
- ...context.environment.gitlabEnvironment,
103
- ...(isStoppable
104
- ? {
105
- on_stop: STOP_JOB_NAME,
106
- auto_stop_in: autoStop,
107
- }
99
+ runnerVariables: {
100
+ ...DEPLOY_RUNNER_VARIABLES,
101
+ ...(jobDefinition.runnerVariables ?? {}),
102
+ ...(context.componentConfig.deploy
103
+ ? context.componentConfig.deploy.runnerVariables ?? {}
108
104
  : {}),
109
105
  },
106
+ environment: isStoppable
107
+ ? {
108
+ on_stop: STOP_JOB_NAME,
109
+ auto_stop_in: autoStop,
110
+ }
111
+ : undefined,
110
112
  jobTags: context.componentConfig.deploy
111
113
  ? context.componentConfig.deploy.jobTags
112
114
  : undefined,
@@ -10,7 +10,7 @@ export const createDeployementJobs = (
10
10
  deploy: DeployJobDefinition;
11
11
  stop?: StopJobDefinition;
12
12
  rollback?: RollbackJobDefinition;
13
- }
13
+ },
14
14
  ): CatladderJob[] => {
15
15
  return [
16
16
  createDeployJob(context, definitions.deploy),
@@ -6,32 +6,30 @@ export const ROLLBACK_JOB_NAME = "↩️ Rollback ⚠️";
6
6
 
7
7
  export type RollbackJobDefinition = Pick<
8
8
  CatladderJob,
9
- "script" | "variables" | "image"
9
+ "script" | "variables" | "runnerVariables" | "image"
10
10
  >;
11
11
  export const createRollbackJob = (
12
12
  context: Context,
13
- jobDefinition: RollbackJobDefinition
13
+ jobDefinition: RollbackJobDefinition,
14
14
  ): CatladderJob => {
15
15
  return {
16
16
  name: ROLLBACK_JOB_NAME,
17
17
  image: jobDefinition.image,
18
18
  envMode: "stagePerEnv", // makes it easier to run manual tasks er env
19
19
  needs: [], // can be executed even if the deploy job failed
20
- rules: [
21
- {
22
- when: "manual",
23
- allow_failure: true,
24
- },
25
- ],
20
+ allow_failure: true,
21
+ when: "manual",
26
22
  variables: {
27
- ...DEPLOY_RUNNER_VARIABLES,
28
23
  ...context.environment.jobOnlyVars.deploy.envVars,
29
- GIT_STRATEGY: "none",
30
24
  ...jobDefinition.variables,
31
25
  },
26
+ runnerVariables: {
27
+ ...DEPLOY_RUNNER_VARIABLES,
28
+ GIT_STRATEGY: "none",
29
+ ...(jobDefinition.runnerVariables ?? {}),
30
+ },
32
31
  stage: "rollback",
33
32
  environment: {
34
- ...context.environment.gitlabEnvironment,
35
33
  action: "access",
36
34
  },
37
35
 
@@ -6,37 +6,36 @@ export const STOP_JOB_NAME = "🛑 Stop ⚠️";
6
6
 
7
7
  export type StopJobDefinition = Pick<
8
8
  CatladderJob,
9
- "script" | "variables" | "image"
9
+ "script" | "variables" | "image" | "runnerVariables"
10
10
  >;
11
11
  export const createStopJob = (
12
12
  context: Context,
13
- jobDefinition: StopJobDefinition
13
+ jobDefinition: StopJobDefinition,
14
14
  ): CatladderJob => {
15
15
  return {
16
16
  name: STOP_JOB_NAME,
17
17
  image: jobDefinition.image,
18
18
  envMode: "stagePerEnv", // makes it easier to run manual tasks er env
19
19
  needs: [], // can be executed even if the deploy job failed
20
+ allow_failure: true,
21
+ when: "manual", // stop is always manual
20
22
  rules: [
21
23
  {
22
24
  if: "$CI_COMMIT_BRANCH =~ /^[0-9]+\\.([0-9]+|x)\\.x$/", // automatic on hotfix branches
23
25
  when: "on_success",
24
- allow_failure: true,
25
- },
26
- {
27
- when: "manual",
28
- allow_failure: true,
29
26
  },
30
27
  ],
31
28
  variables: {
32
- ...DEPLOY_RUNNER_VARIABLES,
33
29
  ...context.environment.jobOnlyVars.deploy.envVars,
34
- GIT_STRATEGY: "none",
35
30
  ...jobDefinition.variables,
36
31
  },
32
+ runnerVariables: {
33
+ ...DEPLOY_RUNNER_VARIABLES,
34
+ GIT_STRATEGY: "none",
35
+ ...jobDefinition.runnerVariables,
36
+ },
37
37
  stage: "stop",
38
38
  environment: {
39
- ...context.environment.gitlabEnvironment,
40
39
  action: "stop",
41
40
  },
42
41
  script: jobDefinition.script,
@@ -1,3 +1,5 @@
1
+ import type { StringOrBashExpression } from "../../bash/BashExpression";
2
+ import { joinBashExpressions } from "../../bash/BashExpression";
1
3
  import type { Context } from "../../types/context";
2
4
  import { allowFailureInScripts } from "../../utils/gitlab";
3
5
  import { isOfDeployType } from "../types";
@@ -34,7 +36,7 @@ export const getArtifactsRegistryDockerUrl = (context: Context) => {
34
36
  */
35
37
  export const getArtifactsRegistryImageName = (
36
38
  context: Context,
37
- lecacyReviewImageName = false
39
+ lecacyReviewImageName = false,
38
40
  ) => {
39
41
  if (lecacyReviewImageName && context.environment.envType !== "review") {
40
42
  throw new Error("lecacyReviewImageName is only allowed for review app");
@@ -46,11 +48,11 @@ export const getArtifactsRegistryImageName = (
46
48
  context.environment.shortName,
47
49
  context.componentName,
48
50
 
49
- ...(context.environment.envType === "review" && !lecacyReviewImageName
50
- ? [context.commitInfo?.reviewSlug]
51
+ ...(context.environment.reviewSlug && !lecacyReviewImageName
52
+ ? [context.environment.reviewSlug]
51
53
  : []),
52
54
  ];
53
- return gcloudImagePath.join("/");
55
+ return joinBashExpressions(gcloudImagePath, "/");
54
56
  };
55
57
 
56
58
  export const getArtifactsRegistryBuildCacheImage = (context: Context) => {
@@ -63,7 +65,10 @@ export const getArtifactsRegistryBuildCacheImage = (context: Context) => {
63
65
  export const getArtifactsRegistryImage = (context: Context) =>
64
66
  `${getArtifactsRegistryImageName(context)}:$DOCKER_IMAGE_TAG`;
65
67
 
66
- const getDeleteImageCommands = (fullImageName: string, keepNewest = 0) => {
68
+ const getDeleteImageCommands = (
69
+ fullImageName: StringOrBashExpression,
70
+ keepNewest = 0,
71
+ ) => {
67
72
  if (keepNewest === 0) {
68
73
  // no need to list tags, we delete the whole thing
69
74
  return [
@@ -75,7 +80,7 @@ const getDeleteImageCommands = (fullImageName: string, keepNewest = 0) => {
75
80
 
76
81
  const listImagesToDeletecommand = removeFirstLinesFromCommandOutput(
77
82
  listAllImagesCommand,
78
- keepNewest
83
+ keepNewest,
79
84
  );
80
85
  const deleteImageCommand = `gcloud artifacts docker images delete ${fullImageName}@$version --quiet --delete-tags`;
81
86
 
@@ -114,8 +119,8 @@ export const getDeleteUnusedImagesCommands = (context: Context, keep = 0) => {
114
119
  ? allowFailureInScripts(
115
120
  getDeleteImageCommands(
116
121
  getArtifactsRegistryImageName(context, true),
117
- 0
118
- )
122
+ 0,
123
+ ),
119
124
  )
120
125
  : []),
121
126
  ];
@@ -4,7 +4,7 @@ import { getDeleteUnusedRevisionsCommands } from "./cloudRunRevisions";
4
4
 
5
5
  export const getRemoveOldRevisionsAndImagesCommand = (
6
6
  context: Context,
7
- when: "postDeploy" | "onStop"
7
+ when: "postDeploy" | "onStop",
8
8
  ) => {
9
9
  if (when === "onStop") {
10
10
  // service is already deleted, so we don't need to delete old revisions, just delete all images
@@ -19,11 +19,11 @@ export const getRemoveOldRevisionsAndImagesCommand = (
19
19
 
20
20
  const deleteOldRevisionsCommands = getDeleteUnusedRevisionsCommands(
21
21
  context,
22
- revisionsToKeep
22
+ revisionsToKeep,
23
23
  );
24
24
  const deleteOldImagesCommands = getDeleteUnusedImagesCommands(
25
25
  context,
26
- imagesToKeep
26
+ imagesToKeep,
27
27
  );
28
28
 
29
29
  return [...deleteOldRevisionsCommands, ...deleteOldImagesCommands];
@@ -9,7 +9,7 @@ const getListRevisionsCommand = (
9
9
  args: {
10
10
  filter?: string;
11
11
  format: string;
12
- }
12
+ },
13
13
  ) => {
14
14
  const serviceName = getServiceName(context);
15
15
  const deployConfig = context.componentConfig.deploy;
@@ -35,7 +35,7 @@ const getListRevisionsCommand = (
35
35
 
36
36
  export const getDeleteUnusedRevisionsCommands = (
37
37
  context: Context,
38
- keep: number
38
+ keep: number,
39
39
  ) => {
40
40
  const deployConfig = context.componentConfig.deploy;
41
41
  if (deployConfig === false) {
@@ -54,7 +54,7 @@ export const getDeleteUnusedRevisionsCommands = (
54
54
  // this removes the newest `revisionsToKeep` images
55
55
  const listRevisionsToDeleteCmd = removeFirstLinesFromCommandOutput(
56
56
  listAllInactiveRevisionsCmd,
57
- keep
57
+ keep,
58
58
  );
59
59
  const deleteRevisionCmd = `gcloud run revisions delete ${createArgsString({
60
60
  project: deployConfig.projectId,
@@ -17,16 +17,21 @@ import {
17
17
  } from "./common";
18
18
  import { getLabels } from "../../../context/getLabels";
19
19
  import { createVolumeConfig } from "./volumes";
20
+ import type {
21
+ BashExpression,
22
+ StringOrBashExpression,
23
+ } from "../../../bash/BashExpression";
24
+ import { ENV_VARS_FILENAME } from "./constants";
20
25
 
21
26
  const getJobRunScriptForJob = (
22
27
  context: Context,
23
- jobName: string,
24
- wait: boolean
28
+ jobName: StringOrBashExpression,
29
+ wait: boolean,
25
30
  ) => {
26
31
  const commonArgs = getCommonCloudRunArgs(context);
27
32
 
28
33
  const commonArgsString = createArgsString(commonArgs);
29
- return `${gcloudRunCmd()} jobs execute ${jobName} ${commonArgsString}${
34
+ return `${gcloudRunCmd()} jobs execute ${jobName.toString()} ${commonArgsString}${
30
35
  wait ? " --wait" : ""
31
36
  }`;
32
37
  };
@@ -61,7 +66,7 @@ export const getDeleteJobsScripts = (context: Context) => {
61
66
 
62
67
  export const getJobRunScripts = (
63
68
  context: Context,
64
- when: DeployConfigCloudRunJob["when"]
69
+ when: DeployConfigCloudRunJob["when"],
65
70
  ) => {
66
71
  const jobsWithNames = getCloudRunJobsWithNames(context);
67
72
  return jobsWithNames
@@ -71,8 +76,8 @@ export const getJobRunScripts = (
71
76
  context,
72
77
  jobName,
73
78
  // wait for completin on stop jobs, since stop will delete the jobs afterwards, so they will fail
74
- ["preStop", "postStop"].includes(when)
75
- )
79
+ ["preStop", "postStop"].includes(when),
80
+ ),
76
81
  );
77
82
  };
78
83
 
@@ -86,8 +91,8 @@ export const getJobCreateScripts = (context: Context) => {
86
91
 
87
92
  const getJobCreateScriptsForJob = (
88
93
  context: Context,
89
- jobName: string,
90
- job: DeployConfigCloudRunJob
94
+ jobName: StringOrBashExpression,
95
+ job: DeployConfigCloudRunJob,
91
96
  ) => {
92
97
  const commonDeployArgs = getCommonDeployArgs(context);
93
98
 
@@ -103,14 +108,14 @@ const getJobCreateScriptsForJob = (
103
108
  ...commonDeployArgs,
104
109
  labels: makeLabelString({
105
110
  ...getLabels(context),
106
- "cloud-run-job-name": jobName,
111
+ "cloud-run-job-name": jobName.toString(),
107
112
  }),
108
113
  image: job.image || commonDeployArgs.image,
109
114
  cpu: job?.cpu,
110
115
  memory: job.memory || "512Mi",
111
116
  "task-timeout": job.timeout || "10m",
112
117
  parallelism: job.parallelism || 1,
113
- "env-vars-file": "____envvars.yaml",
118
+ "env-vars-file": ENV_VARS_FILENAME,
114
119
  "max-retries": 0,
115
120
  });
116
121
 
@@ -120,9 +125,9 @@ const getJobCreateScriptsForJob = (
120
125
  return [
121
126
  ...allowFailureInScripts([`${gcloudRunCmd()} jobs create ${argsString}`]),
122
127
  `${gcloudRunCmd(
123
- requiresBeta ? "beta" : undefined
128
+ requiresBeta ? "beta" : undefined,
124
129
  )} jobs update ${argsString} ${createArgsString(
125
- ...createVolumeConfig(job?.volumes, "job")
130
+ ...createVolumeConfig(job?.volumes, "job"),
126
131
  )}`,
127
132
  ];
128
133
  };
@@ -161,16 +166,16 @@ const getCloudRunJobsWithSchedule = (context: Context) => {
161
166
  return jobsWithNames
162
167
  .filter(
163
168
  (
164
- entry
169
+ entry,
165
170
  ): entry is {
166
- jobName: string;
171
+ jobName: BashExpression;
167
172
  job: DeployConfigCloudRunJobWithSchedule;
168
- } => entry.job.when === "schedule"
173
+ } => entry.job.when === "schedule",
169
174
  )
170
175
  .map(({ job, jobName }) => ({
171
176
  job,
172
177
  jobName,
173
- schedulerName: jobName + "-scheduler",
178
+ schedulerName: jobName.concat("-scheduler"),
174
179
  }));
175
180
  };
176
181
 
@@ -183,7 +188,7 @@ const getCloudRunJobsWithNames = (context: Context) => {
183
188
  const jobsWithNames = Object.entries(deployConfig.jobs ?? {})
184
189
  // filter out disabled jobs
185
190
  .filter((entry): entry is [string, DeployConfigCloudRunJob] =>
186
- Boolean(entry[1])
191
+ Boolean(entry[1]),
187
192
  )
188
193
  .map(([name, job]) => ({
189
194
  jobName: getFullJobName(name),
@@ -10,12 +10,13 @@ import {
10
10
  getCommonDeployArgs,
11
11
  makeLabelString,
12
12
  } from "./common";
13
+ import { ENV_VARS_FILENAME } from "./constants";
13
14
  import { createVolumeConfig } from "./volumes";
14
15
 
15
16
  export const getServiceDeployScript = (
16
17
  context: Context,
17
18
  service: DeployConfigCloudRunService | true | undefined,
18
- nameSuffix?: string
19
+ nameSuffix?: string,
19
20
  ) => {
20
21
  const commonDeployArgs = getCommonDeployArgs(context);
21
22
 
@@ -32,7 +33,7 @@ export const getServiceDeployScript = (
32
33
  ? command
33
34
  : command.split(" ")
34
35
  : undefined;
35
- const fullServiceName = `${serviceName}${nameSuffix ?? ""}`;
36
+ const fullServiceName = serviceName.concat(nameSuffix ?? "");
36
37
  const argsString = createArgsString(
37
38
  {
38
39
  // command as empty string resets it to default (uses the image's entrypoint)
@@ -42,7 +43,7 @@ export const getServiceDeployScript = (
42
43
  ...getLabels(context),
43
44
  "cloud-run-service-name": fullServiceName,
44
45
  }),
45
- "env-vars-file": "____envvars.yaml",
46
+ "env-vars-file": ENV_VARS_FILENAME,
46
47
  "min-instances": customConfig?.minInstances ?? 0,
47
48
  "max-instances": customConfig?.maxInstances ?? 100,
48
49
  "cpu-throttling": customConfig?.noCpuThrottling !== true,
@@ -53,20 +54,20 @@ export const getServiceDeployScript = (
53
54
  "cpu-boost": true,
54
55
  "execution-environment": customConfig?.executionEnvironment,
55
56
  },
56
- ...createVolumeConfig(customConfig?.volumes, "service")
57
+ ...createVolumeConfig(customConfig?.volumes, "service"),
57
58
  );
58
59
  // volumes require beta
59
60
  const requiresBeta =
60
61
  customConfig?.volumes && Object.keys(customConfig?.volumes).length > 0;
61
62
 
62
63
  return `${gcloudRunCmd(
63
- requiresBeta ? "beta" : undefined
64
+ requiresBeta ? "beta" : undefined,
64
65
  )} deploy ${fullServiceName} ${argsString}`;
65
66
  };
66
67
 
67
68
  export const getServiceDeleteScript = (
68
69
  context: Context,
69
- serviceSuffix?: string
70
+ serviceSuffix?: string,
70
71
  ) => {
71
72
  const commonArgs = getCommonCloudRunArgs(context);
72
73
 
@@ -16,7 +16,7 @@ export const gcloudSchedulerCmd = (version?: "beta") => {
16
16
  };
17
17
 
18
18
  export const setGoogleProjectNumberScript = (
19
- deployConfig: DeployConfigCloudRun
19
+ deployConfig: DeployConfigCloudRun,
20
20
  ) => [
21
21
  `export GCLOUD_PROJECT_NUMBER=$(${gcloudCmd()} projects describe ${
22
22
  deployConfig.projectId
@@ -0,0 +1 @@
1
+ export const ENV_VARS_FILENAME = "____envvars.yaml";
@@ -1,4 +1,5 @@
1
- import type { Context } from "../../../types/context";
1
+ import { isNil, omit } from "lodash";
2
+ import type { Context, UnspecifiedEnvVars } from "../../../types/context";
2
3
  import { collapseableSection } from "../../../utils/gitlab";
3
4
  import { getDependencyTrackUploadScript } from "../../sbom";
4
5
 
@@ -15,22 +16,39 @@ import {
15
16
  getCloudRunDeployConfig,
16
17
  setGoogleProjectNumberScript,
17
18
  } from "./common";
19
+ import { GCLOUD_DEPLOY_CREDENTIALS_KEY } from "..";
20
+ import type { StringOrBashExpression } from "../../../bash/BashExpression";
21
+ import { BashExpression, bashEscape } from "../../../bash/BashExpression";
22
+ import { ENV_VARS_FILENAME } from "./constants";
23
+ import {
24
+ writeBashYamlToFileScript,
25
+ yamlBashString,
26
+ } from "../../../bash/bashYaml";
18
27
 
19
28
  export function getCloudRunDeployScripts(context: Context) {
20
29
  const deployConfig = getCloudRunDeployConfig(context);
30
+ const allEnvVars = omit(
31
+ context.environment.envVars,
32
+ GCLOUD_DEPLOY_CREDENTIALS_KEY,
33
+ );
34
+
21
35
  return [
22
36
  ...collapseableSection(
23
37
  "prepare",
24
- "Prepare..."
38
+ "Prepare...",
25
39
  )([
26
40
  ...gcloudServiceAccountLoginCommands(context),
27
41
  ...setGoogleProjectNumberScript(deployConfig),
28
42
  ]),
43
+ ...collapseableSection(
44
+ "writeenvvars",
45
+ "Write env vars to file",
46
+ )(writeBashYamlToFileScript(allEnvVars, ENV_VARS_FILENAME)),
47
+
29
48
  ...collapseableSection(
30
49
  "deploy",
31
- "Deploy to cloud run"
50
+ "Deploy to cloud run",
32
51
  )([
33
- `echo "$ENV_VARS" > ____envvars.yaml`, // TODO: split secrets out
34
52
  ...(deployConfig.cloudSql
35
53
  ? getDatabaseCreateScript(context, deployConfig) // we create the db, so that we can also delete it afterwards
36
54
  : []),
@@ -43,15 +61,15 @@ export function getCloudRunDeployScripts(context: Context) {
43
61
  : []),
44
62
  ...Object.entries(deployConfig.additionalServices ?? {}).map(
45
63
  ([name, service]) =>
46
- getServiceDeployScript(context, service, "-" + name)
64
+ getServiceDeployScript(context, service, "-" + name),
47
65
  ),
48
66
  ...getJobRunScripts(context, "postDeploy"),
49
67
  ]),
50
68
  ...collapseableSection(
51
69
  "cleanup",
52
- "Cleanup"
70
+ "Cleanup",
53
71
  )(
54
- getRemoveOldRevisionsAndImagesCommand(context, "postDeploy") // we cleanup inactive images both on deploy and stop
72
+ getRemoveOldRevisionsAndImagesCommand(context, "postDeploy"), // we cleanup inactive images both on deploy and stop
55
73
  ),
56
74
  ...getDependencyTrackUploadScript(context),
57
75
  ];
@@ -19,7 +19,7 @@ export function getCloudRunStopScripts(context: Context) {
19
19
  ...getJobRunScripts(context, "preStop"),
20
20
  ...(deployConfig.service !== false ? getServiceDeleteScript(context) : []),
21
21
  ...Object.entries(deployConfig.additionalServices ?? {}).flatMap(([name]) =>
22
- getServiceDeleteScript(context, name)
22
+ getServiceDeleteScript(context, name),
23
23
  ),
24
24
  ...getJobRunScripts(context, "postStop"),
25
25
  ...getDeleteSchedulesScripts(context),
@@ -1,6 +1,3 @@
1
- import { merge } from "lodash";
2
-
3
- import { getDockerJobBaseProps } from "../../../build/docker";
4
1
  import { getRunnerImage } from "../../../runner";
5
2
  import type { Context } from "../../../types/context";
6
3
  import type { CatladderJob } from "../../../types/jobs";
@@ -8,12 +5,12 @@ import { allowFailureInScripts } from "../../../utils/gitlab";
8
5
  import { createDeployementJobs } from "../../base";
9
6
 
10
7
  import { isOfDeployType } from "../../types";
11
- import { getDeployJobVariables } from "./variables";
8
+ import { ENV_VARS_FILENAME } from "./constants";
12
9
  import { getCloudRunDeployScripts } from "./getCloudRunDeployScripts";
13
10
  import { getCloudRunStopScripts } from "./getCloudRunStopScripts";
14
11
 
15
12
  export const createGoogleCloudRunDeployJobs = (
16
- context: Context
13
+ context: Context,
17
14
  ): CatladderJob[] => {
18
15
  const deployConfig = context.componentConfig.deploy;
19
16
  if (deployConfig === false) {
@@ -28,12 +25,24 @@ export const createGoogleCloudRunDeployJobs = (
28
25
  const stopScripts = getCloudRunStopScripts(context);
29
26
 
30
27
  return createDeployementJobs(context, {
31
- deploy: merge(getDockerJobBaseProps(context), {
32
- artifacts: { paths: ["____envvars.yaml"] },
33
- variables: getDeployJobVariables(context),
28
+ deploy: {
29
+ variables: {
30
+ CLOUDSDK_CORE_DISABLE_PROMPTS: "1",
31
+ },
32
+ ...(deployConfig.debug
33
+ ? {
34
+ artifacts: {
35
+ paths: [
36
+ ENV_VARS_FILENAME, // debug
37
+ ],
38
+ when: "always",
39
+ },
40
+ }
41
+ : {}),
42
+
34
43
  image: getRunnerImage("gcloud"),
35
44
  script: deployScripts,
36
- }),
45
+ },
37
46
  stop: {
38
47
  image: getRunnerImage("gcloud"),
39
48
  variables: {
@@ -3,7 +3,7 @@ import type { keyValuesArg } from "../utils/createArgsString";
3
3
 
4
4
  export const createVolumeConfig = (
5
5
  volumes: DeployConfigCloudRunVolumes | undefined,
6
- type: "service" | "job"
6
+ type: "service" | "job",
7
7
  ): keyValuesArg[] => {
8
8
  if (!volumes) {
9
9
  return [];
@@ -16,7 +16,7 @@ export const createVolumeConfig = (
16
16
  readonly ? ",readonly=true" : ""
17
17
  }`,
18
18
  "add-volume-mount": `volume=${volumeName},mount-path=${mountPath}`,
19
- })
19
+ }),
20
20
  ),
21
21
  type === "service" ? { "execution-environment": "gen2" } : {},
22
22
  ];