@catladder/pipeline 1.144.0 → 1.145.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 (307) 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 +41 -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 +9 -2
  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 +3 -2
  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/custom-deploy.ts +7 -7
  226. package/examples/multiline-var.ts +64 -0
  227. package/package.json +5 -8
  228. package/src/bash/BashExpression.ts +81 -0
  229. package/src/bash/bashExpressionPerPipelineType.ts +16 -0
  230. package/src/bash/bashYaml.ts +46 -0
  231. package/src/bash/getInjectVarsScript.ts +12 -0
  232. package/src/bash/replaceAsync.ts +50 -0
  233. package/src/build/base/createAppBuildJob.ts +6 -2
  234. package/src/build/base/writeBuildInfo.ts +1 -1
  235. package/src/build/base/writeDotEnv.ts +6 -1
  236. package/src/build/custom/buildJob.ts +2 -4
  237. package/src/build/custom/testJob.ts +3 -2
  238. package/src/build/docker.ts +15 -7
  239. package/src/build/node/buildJob.ts +1 -3
  240. package/src/build/node/testJob.ts +3 -2
  241. package/src/build/node/yarn.ts +9 -4
  242. package/src/build/rails/test.ts +2 -1
  243. package/src/build/types.ts +8 -1
  244. package/src/catladder-gitlab.ts +8 -55
  245. package/src/config/readConfig.ts +2 -3
  246. package/src/constants.ts +5 -2
  247. package/src/context/__tests__/resolveReferences.test.ts +11 -6
  248. package/src/context/getBuildInfoVariables.ts +40 -0
  249. package/src/context/getEnvironment.ts +7 -30
  250. package/src/context/getEnvironmentContext.ts +25 -29
  251. package/src/context/getEnvironmentVariables.ts +61 -36
  252. package/src/context/getReviewSlug.ts +27 -0
  253. package/src/context/index.ts +24 -23
  254. package/src/context/resolveReferences.ts +28 -8
  255. package/src/context/transformJobOnlyVars.ts +5 -2
  256. package/src/context/utils/envVars.ts +2 -1
  257. package/src/deploy/base/deploy.ts +20 -18
  258. package/src/deploy/base/rollback.ts +8 -10
  259. package/src/deploy/base/stop.ts +8 -9
  260. package/src/deploy/cloudRun/artifactsRegistry.ts +9 -4
  261. package/src/deploy/cloudRun/createJobs/cloudRunJobs.ts +12 -7
  262. package/src/deploy/cloudRun/createJobs/cloudRunServices.ts +3 -2
  263. package/src/deploy/cloudRun/createJobs/constants.ts +1 -0
  264. package/src/deploy/cloudRun/createJobs/getCloudRunDeployScripts.ts +20 -2
  265. package/src/deploy/cloudRun/createJobs/index.ts +17 -8
  266. package/src/deploy/cloudRun/index.ts +14 -6
  267. package/src/deploy/cloudRun/utils/createArgsString.ts +2 -1
  268. package/src/deploy/cloudRun/utils/database.ts +2 -2
  269. package/src/deploy/cloudRun/utils/jobName.ts +7 -2
  270. package/src/deploy/cloudSql/utils.ts +12 -9
  271. package/src/deploy/index.ts +2 -1
  272. package/src/deploy/kubernetes/cloudSql/index.ts +3 -2
  273. package/src/deploy/kubernetes/deployJob.ts +24 -10
  274. package/src/deploy/kubernetes/index.ts +15 -8
  275. package/src/deploy/kubernetes/kubeEnv.ts +8 -6
  276. package/src/deploy/kubernetes/kubeValues.ts +0 -1
  277. package/src/deploy/kubernetes/processSecretsAsFiles.ts +2 -1
  278. package/src/deploy/types/base.ts +6 -0
  279. package/src/deploy/types/googleCloudRun.ts +2 -0
  280. package/src/index.ts +2 -1
  281. package/src/packageInfos.ts +10 -0
  282. package/src/pipeline/createAllJobs.ts +24 -10
  283. package/src/pipeline/createChildPipeline.ts +19 -8
  284. package/src/pipeline/createJobsForComponent.ts +14 -22
  285. package/src/pipeline/createMainPipeline.ts +88 -0
  286. package/src/pipeline/generatePipelineFiles.ts +29 -0
  287. package/src/pipeline/gitlab/createGitlabJobs.ts +174 -51
  288. package/src/pipeline/gitlab/createGitlabPipeline.ts +16 -14
  289. package/src/pipeline/gitlab/getPipelineTriggerForGitlabChildPipeline.ts +46 -0
  290. package/src/pipeline/gitlab/gitlabReleaseJobs.ts +20 -0
  291. package/src/pipeline/index.ts +2 -0
  292. package/src/rules/index.ts +15 -9
  293. package/src/types/config.ts +11 -2
  294. package/src/types/context.ts +39 -26
  295. package/src/types/environmentContext.ts +12 -6
  296. package/src/types/gitlab-ci-yml.ts +0 -1
  297. package/src/types/gitlab-types.ts +5 -4
  298. package/src/types/jobs.ts +28 -3
  299. package/src/types/pipeline.ts +4 -0
  300. package/src/utils/writeFiles.ts +40 -0
  301. package/dist/deploy/cloudRun/createJobs/variables.d.ts +0 -5
  302. package/dist/deploy/cloudRun/createJobs/variables.js +0 -19
  303. package/dist/pipeline/commitInfo/getBuildId.d.ts +0 -6
  304. package/dist/pipeline/commitInfo/getCommitInfo.d.ts +0 -2
  305. package/src/deploy/cloudRun/createJobs/variables.ts +0 -21
  306. package/src/pipeline/commitInfo/getBuildId.ts +0 -17
  307. package/src/pipeline/commitInfo/getCommitInfo.ts +0 -15
@@ -33,6 +33,9 @@ exports[`matches snapshot 1`] = `
33
33
  ],
34
34
  },
35
35
  "script": [
36
+ "echo -e "\\e[0Ksection_start:$(date +%s):injectvars[collapsed=true]\\r\\e[0KInjecting variables"",
37
+ "export APP_PATH="web"",
38
+ "echo -e "\\e[0Ksection_end:$(date +%s):injectvars\\r\\e[0K"",
36
39
  "echo -e "\\e[0Ksection_start:$(date +%s):nodeinstall[collapsed=true]\\r\\e[0KEnsure node version"",
37
40
  "if [ -f ~/.nvm/nvm.sh ]; then source ~/.nvm/nvm.sh; fi",
38
41
  "if command -v nvm &> /dev/null && [ -f ./.nvmrc ]; then nvm install; fi",
@@ -49,7 +52,6 @@ exports[`matches snapshot 1`] = `
49
52
  ],
50
53
  "stage": "test",
51
54
  "variables": {
52
- "APP_PATH": "web",
53
55
  "KUBERNETES_CPU_REQUEST": "0.5",
54
56
  "KUBERNETES_MEMORY_LIMIT": "4Gi",
55
57
  "KUBERNETES_MEMORY_REQUEST": "2Gi",
@@ -102,7 +104,26 @@ exports[`matches snapshot 1`] = `
102
104
  ],
103
105
  },
104
106
  "script": [
105
- "echo '{"id":"some-id","time":"01-01-2023 12:13:14"}' > web/__build_info.json",
107
+ "echo -e "\\e[0Ksection_start:$(date +%s):injectvars[collapsed=true]\\r\\e[0KInjecting variables"",
108
+ "export METEOR_DISABLE_OPTIMISTIC_CACHING="1"",
109
+ "export ENV_SHORT="dev"",
110
+ "export APP_DIR="web"",
111
+ "export ENV_TYPE="dev"",
112
+ "export BUILD_INFO_BUILD_ID="$(git describe --tags 2>/dev/null || git rev-parse HEAD)"",
113
+ "export BUILD_INFO_BUILD_TIME="$CI_JOB_STARTED_AT"",
114
+ "export BUILD_INFO_CURRENT_VERSION="$(tag=$(git ls-remote origin "refs/tags/v*[0-9]" 2>/dev/null | cut -f 2- | sort -V | tail -1 | sed 's/refs\\/tags\\///'); [ -z "$tag" ] && echo "v0.0.0" || echo "$tag")"",
115
+ "export HOST="$(printf %s "pan-test-app-dev-web-$CL_dev_web_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')"",
116
+ "export ROOT_URL="https://$(printf %s "pan-test-app-dev-web-$CL_dev_web_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')"",
117
+ "export HOST_INTERNAL="$(printf %s "pan-test-app-dev-web-$CL_dev_web_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')"",
118
+ "export HOST_CANONICAL="$(printf %s "pan-test-app-dev-web-$CL_dev_web_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')"",
119
+ "export ROOT_URL_INTERNAL="https://$(printf %s "pan-test-app-dev-web-$CL_dev_web_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')"",
120
+ "export DEPLOY_CLOUD_RUN_PROJECT_ID="google-project-id"",
121
+ "export DEPLOY_CLOUD_RUN_REGION="europe-west6"",
122
+ "export GCLOUD_DEPLOY_credentialsKey="$CL_dev_web_GCLOUD_DEPLOY_credentialsKey"",
123
+ "export GCLOUD_RUN_canonicalHostSuffix="$CL_dev_web_GCLOUD_RUN_canonicalHostSuffix"",
124
+ "export _ALL_ENV_VAR_KEYS="[\\"ENV_SHORT\\",\\"APP_DIR\\",\\"ENV_TYPE\\",\\"BUILD_INFO_BUILD_ID\\",\\"BUILD_INFO_BUILD_TIME\\",\\"BUILD_INFO_CURRENT_VERSION\\",\\"HOST\\",\\"ROOT_URL\\",\\"HOST_INTERNAL\\",\\"HOST_CANONICAL\\",\\"ROOT_URL_INTERNAL\\",\\"DEPLOY_CLOUD_RUN_PROJECT_ID\\",\\"DEPLOY_CLOUD_RUN_REGION\\",\\"GCLOUD_DEPLOY_credentialsKey\\",\\"GCLOUD_RUN_canonicalHostSuffix\\"]"",
125
+ "echo -e "\\e[0Ksection_end:$(date +%s):injectvars\\r\\e[0K"",
126
+ "echo '{"id":"$(git describe --tags 2>/dev/null || git rev-parse HEAD)","time":"$CI_JOB_STARTED_AT"}' > web/__build_info.json",
106
127
  "echo -e "\\e[0Ksection_start:$(date +%s):nodeinstall[collapsed=true]\\r\\e[0KEnsure node version"",
107
128
  "if [ -f ~/.nvm/nvm.sh ]; then source ~/.nvm/nvm.sh; fi",
108
129
  "if command -v nvm &> /dev/null && [ -f ./.nvmrc ]; then nvm install; fi",
@@ -123,26 +144,9 @@ exports[`matches snapshot 1`] = `
123
144
  ],
124
145
  "stage": "build",
125
146
  "variables": {
126
- "APP_DIR": "web",
127
- "BUILD_INFO_BUILD_TIME": "01-01-2023 12:13:14",
128
- "BUILD_INFO_CURRENT_VERSION": "3.2.1",
129
- "BUILD_INFO_ID": "some-id",
130
- "DEPLOY_CLOUD_RUN_PROJECT_ID": "google-project-id",
131
- "DEPLOY_CLOUD_RUN_REGION": "europe-west6",
132
- "ENV_SHORT": "dev",
133
- "ENV_TYPE": "dev",
134
- "GCLOUD_DEPLOY_credentialsKey": "$CL_dev_web_GCLOUD_DEPLOY_credentialsKey",
135
- "GCLOUD_RUN_canonicalHostSuffix": "$CL_dev_web_GCLOUD_RUN_canonicalHostSuffix",
136
- "HOST": "pan-test-app-dev-web-unknown-host.example.com",
137
- "HOST_CANONICAL": "pan-test-app-dev-web-unknown-host.example.com",
138
- "HOST_INTERNAL": "pan-test-app-dev-web-unknown-host.example.com",
139
147
  "KUBERNETES_CPU_REQUEST": "0.5",
140
148
  "KUBERNETES_MEMORY_LIMIT": "4Gi",
141
149
  "KUBERNETES_MEMORY_REQUEST": "1Gi",
142
- "METEOR_DISABLE_OPTIMISTIC_CACHING": "1",
143
- "ROOT_URL": "https://pan-test-app-dev-web-unknown-host.example.com",
144
- "ROOT_URL_INTERNAL": "https://pan-test-app-dev-web-unknown-host.example.com",
145
- "_ALL_ENV_VAR_KEYS": "["ENV_SHORT","APP_DIR","ENV_TYPE","BUILD_INFO_ID","BUILD_INFO_BUILD_TIME","BUILD_INFO_CURRENT_VERSION","HOST","ROOT_URL","HOST_CANONICAL","ROOT_URL_INTERNAL","HOST_INTERNAL","DEPLOY_CLOUD_RUN_PROJECT_ID","DEPLOY_CLOUD_RUN_REGION","GCLOUD_DEPLOY_credentialsKey","GCLOUD_RUN_canonicalHostSuffix"]",
146
150
  },
147
151
  },
148
152
  "web 🔨 docker | dev ": {
@@ -159,6 +163,15 @@ exports[`matches snapshot 1`] = `
159
163
  ],
160
164
  },
161
165
  "script": [
166
+ "echo -e "\\e[0Ksection_start:$(date +%s):injectvars[collapsed=true]\\r\\e[0KInjecting variables"",
167
+ "export APP_DIR="web"",
168
+ "export DOCKER_DIR="."",
169
+ "export DOCKER_REGISTRY="europe-west6-docker.pkg.dev"",
170
+ "export DOCKER_IMAGE="europe-west6-docker.pkg.dev/google-project-id/catladder-deploy/pan-test-app/dev/web"",
171
+ "export DOCKER_CACHE_IMAGE="europe-west6-docker.pkg.dev/google-project-id/catladder-deploy/pan-test-app/caches/web"",
172
+ "export DOCKER_IMAGE_TAG="$CI_COMMIT_SHA"",
173
+ "export METEOR_INSTALL_SCRIPTS=""",
174
+ "echo -e "\\e[0Ksection_end:$(date +%s):injectvars\\r\\e[0K"",
162
175
  "ensureMeteorDockerfile",
163
176
  "echo -e "\\e[0Ksection_start:$(date +%s):docker-login[collapsed=true]\\r\\e[0KDocker Login"",
164
177
  "gcloud auth activate-service-account --key-file=<(echo "$CL_dev_web_GCLOUD_DEPLOY_credentialsKey")",
@@ -183,36 +196,27 @@ exports[`matches snapshot 1`] = `
183
196
  ],
184
197
  "stage": "build",
185
198
  "variables": {
186
- "APP_DIR": "web",
187
- "DOCKERFILE_ADDITIONS": undefined,
188
- "DOCKERFILE_ADDITIONS_END": undefined,
189
199
  "DOCKER_BUILDKIT": "1",
190
- "DOCKER_CACHE_IMAGE": "europe-west6-docker.pkg.dev/google-project-id/catladder-deploy/pan-test-app/caches/web",
191
- "DOCKER_DIR": ".",
192
200
  "DOCKER_DRIVER": "overlay2",
193
201
  "DOCKER_HOST": "tcp://0.0.0.0:2375",
194
- "DOCKER_IMAGE": "europe-west6-docker.pkg.dev/google-project-id/catladder-deploy/pan-test-app/dev/web",
195
- "DOCKER_IMAGE_TAG": "$CI_COMMIT_SHA",
196
- "DOCKER_REGISTRY": "europe-west6-docker.pkg.dev",
197
202
  "DOCKER_TLS_CERTDIR": "",
198
203
  "KUBERNETES_CPU_REQUEST": "0.5",
199
204
  "KUBERNETES_MEMORY_LIMIT": "2Gi",
200
205
  "KUBERNETES_MEMORY_REQUEST": "1Gi",
201
- "METEOR_INSTALL_SCRIPTS": "",
202
206
  },
203
207
  },
204
208
  "web 🚀 Deploy | dev ": {
205
209
  "allow_failure": false,
206
210
  "artifacts": {
207
- "paths": [
208
- "____envvars.yaml",
209
- ],
211
+ "reports": {
212
+ "dotenv": "gitlab_environment.env",
213
+ },
210
214
  },
211
215
  "environment": {
212
216
  "auto_stop_in": "4 weeks",
213
217
  "name": "dev/web",
214
218
  "on_stop": "web 🛑 Stop ⚠️ | dev ",
215
- "url": "https://pan-test-app-dev-web-unknown-host.example.com",
219
+ "url": "$CL_GITLAB_ENVIRONMENT_URL",
216
220
  },
217
221
  "image": "path/to/docker/gcloud:the-version",
218
222
  "interruptible": true,
@@ -255,13 +259,71 @@ exports[`matches snapshot 1`] = `
255
259
  },
256
260
  ],
257
261
  "script": [
262
+ "echo -e "\\e[0Ksection_start:$(date +%s):injectvars[collapsed=true]\\r\\e[0KInjecting variables"",
263
+ "export ENV_SHORT="dev"",
264
+ "export APP_DIR="web"",
265
+ "export ENV_TYPE="dev"",
266
+ "export BUILD_INFO_BUILD_ID="$(git describe --tags 2>/dev/null || git rev-parse HEAD)"",
267
+ "export BUILD_INFO_BUILD_TIME="$CI_JOB_STARTED_AT"",
268
+ "export BUILD_INFO_CURRENT_VERSION="$(tag=$(git ls-remote origin "refs/tags/v*[0-9]" 2>/dev/null | cut -f 2- | sort -V | tail -1 | sed 's/refs\\/tags\\///'); [ -z "$tag" ] && echo "v0.0.0" || echo "$tag")"",
269
+ "export HOST="$(printf %s "pan-test-app-dev-web-$CL_dev_web_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')"",
270
+ "export ROOT_URL="https://$(printf %s "pan-test-app-dev-web-$CL_dev_web_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')"",
271
+ "export HOST_INTERNAL="$(printf %s "pan-test-app-dev-web-$CL_dev_web_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')"",
272
+ "export HOST_CANONICAL="$(printf %s "pan-test-app-dev-web-$CL_dev_web_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')"",
273
+ "export ROOT_URL_INTERNAL="https://$(printf %s "pan-test-app-dev-web-$CL_dev_web_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')"",
274
+ "export DEPLOY_CLOUD_RUN_PROJECT_ID="google-project-id"",
275
+ "export DEPLOY_CLOUD_RUN_REGION="europe-west6"",
276
+ "export GCLOUD_DEPLOY_credentialsKey="$CL_dev_web_GCLOUD_DEPLOY_credentialsKey"",
277
+ "export GCLOUD_RUN_canonicalHostSuffix="$CL_dev_web_GCLOUD_RUN_canonicalHostSuffix"",
278
+ "export _ALL_ENV_VAR_KEYS="[\\"ENV_SHORT\\",\\"APP_DIR\\",\\"ENV_TYPE\\",\\"BUILD_INFO_BUILD_ID\\",\\"BUILD_INFO_BUILD_TIME\\",\\"BUILD_INFO_CURRENT_VERSION\\",\\"HOST\\",\\"ROOT_URL\\",\\"HOST_INTERNAL\\",\\"HOST_CANONICAL\\",\\"ROOT_URL_INTERNAL\\",\\"DEPLOY_CLOUD_RUN_PROJECT_ID\\",\\"DEPLOY_CLOUD_RUN_REGION\\",\\"GCLOUD_DEPLOY_credentialsKey\\",\\"GCLOUD_RUN_canonicalHostSuffix\\"]"",
279
+ "export DOCKER_REGISTRY="europe-west6-docker.pkg.dev"",
280
+ "export DOCKER_IMAGE="europe-west6-docker.pkg.dev/google-project-id/catladder-deploy/pan-test-app/dev/web"",
281
+ "export DOCKER_CACHE_IMAGE="europe-west6-docker.pkg.dev/google-project-id/catladder-deploy/pan-test-app/caches/web"",
282
+ "export DOCKER_IMAGE_TAG="$CI_COMMIT_SHA"",
283
+ "export CLOUDSDK_CORE_DISABLE_PROMPTS="1"",
284
+ "echo -e "\\e[0Ksection_end:$(date +%s):injectvars\\r\\e[0K"",
258
285
  "echo -e "\\e[0Ksection_start:$(date +%s):prepare[collapsed=true]\\r\\e[0KPrepare..."",
259
286
  "gcloud auth activate-service-account --key-file=<(echo "$CL_dev_web_GCLOUD_DEPLOY_credentialsKey")",
260
287
  "export GCLOUD_PROJECT_NUMBER=$(gcloud projects describe google-project-id --format="value(projectNumber)")",
261
288
  "echo "GCLOUD_PROJECT_NUMBER: $GCLOUD_PROJECT_NUMBER"",
262
289
  "echo -e "\\e[0Ksection_end:$(date +%s):prepare\\r\\e[0K"",
290
+ "echo -e "\\e[0Ksection_start:$(date +%s):writeenvvars[collapsed=true]\\r\\e[0KWrite env vars to file"",
291
+ "cat > ____envvars.yaml <<EOF
292
+ ENV_SHORT: |-
293
+ dev
294
+ APP_DIR: |-
295
+ web
296
+ ENV_TYPE: |-
297
+ dev
298
+ BUILD_INFO_BUILD_ID: |-
299
+ $(printf %s "$(git describe --tags 2>/dev/null || git rev-parse HEAD)" | sed 's/^/ /')
300
+ BUILD_INFO_BUILD_TIME: |-
301
+ $(printf %s "$CI_JOB_STARTED_AT" | sed 's/^/ /')
302
+ BUILD_INFO_CURRENT_VERSION: |-
303
+ $(printf %s "$(tag=$(git ls-remote origin "refs/tags/v*[0-9]" 2>/dev/null | cut -f 2- | sort -V | tail -1 | sed 's/refs\\/tags\\///'); [ -z "$tag" ] && echo "v0.0.0" || echo "$tag")" | sed 's/^/ /')
304
+ HOST: |-
305
+ $(printf %s "$(printf %s "pan-test-app-dev-web-$CL_dev_web_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')" | sed 's/^/ /')
306
+ ROOT_URL: |-
307
+ $(printf %s "https://$(printf %s "pan-test-app-dev-web-$CL_dev_web_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')" | sed 's/^/ /')
308
+ HOST_INTERNAL: |-
309
+ $(printf %s "$(printf %s "pan-test-app-dev-web-$CL_dev_web_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')" | sed 's/^/ /')
310
+ HOST_CANONICAL: |-
311
+ $(printf %s "$(printf %s "pan-test-app-dev-web-$CL_dev_web_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')" | sed 's/^/ /')
312
+ ROOT_URL_INTERNAL: |-
313
+ $(printf %s "https://$(printf %s "pan-test-app-dev-web-$CL_dev_web_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')" | sed 's/^/ /')
314
+ DEPLOY_CLOUD_RUN_PROJECT_ID: |-
315
+ google-project-id
316
+ DEPLOY_CLOUD_RUN_REGION: |-
317
+ europe-west6
318
+ GCLOUD_RUN_canonicalHostSuffix: |-
319
+ $(printf %s "$CL_dev_web_GCLOUD_RUN_canonicalHostSuffix" | sed 's/^/ /')
320
+ _ALL_ENV_VAR_KEYS: |-
321
+ ["ENV_SHORT","APP_DIR","ENV_TYPE","BUILD_INFO_BUILD_ID","BUILD_INFO_BUILD_TIME","BUILD_INFO_CURRENT_VERSION","HOST","ROOT_URL","HOST_INTERNAL","HOST_CANONICAL","ROOT_URL_INTERNAL","DEPLOY_CLOUD_RUN_PROJECT_ID","DEPLOY_CLOUD_RUN_REGION","GCLOUD_DEPLOY_credentialsKey","GCLOUD_RUN_canonicalHostSuffix"]
322
+
323
+ EOF
324
+ ",
325
+ "echo -e "\\e[0Ksection_end:$(date +%s):writeenvvars\\r\\e[0K"",
263
326
  "echo -e "\\e[0Ksection_start:$(date +%s):deploy[collapsed=true]\\r\\e[0KDeploy to cloud run"",
264
- "echo "$ENV_VARS" > ____envvars.yaml",
265
327
  "gcloud run deploy pan-test-app-dev-web --command="node,main.js" --image=europe-west6-docker.pkg.dev/google-project-id/catladder-deploy/pan-test-app/dev/web:$DOCKER_IMAGE_TAG --project=google-project-id --region=europe-west6 --labels=customer-name=pan,component-name=web,app-name=test-app,env-type=dev,env-name=dev,build-type=meteor,cloud-run-service-name=pan-test-app-dev-web --env-vars-file=____envvars.yaml --min-instances=0 --max-instances=100 --cpu-throttling --allow-unauthenticated --ingress=all --cpu-boost",
266
328
  "gcloud run deploy pan-test-app-dev-web-worker --command="/bin/sh -c,BACKGROUND_JOBS_ENABLED=1 node main.js" --image=europe-west6-docker.pkg.dev/google-project-id/catladder-deploy/pan-test-app/dev/web:$DOCKER_IMAGE_TAG --project=google-project-id --region=europe-west6 --labels=customer-name=pan,component-name=web,app-name=test-app,env-type=dev,env-name=dev,build-type=meteor,cloud-run-service-name=pan-test-app-dev-web-worker --env-vars-file=____envvars.yaml --min-instances=1 --max-instances=1 --no-cpu-throttling --allow-unauthenticated --ingress=all --cpu-boost",
267
329
  "echo -e "\\e[0Ksection_end:$(date +%s):deploy\\r\\e[0K"",
@@ -271,69 +333,27 @@ exports[`matches snapshot 1`] = `
271
333
  "gcloud artifacts docker images list europe-west6-docker.pkg.dev/google-project-id/catladder-deploy/pan-test-app/caches/web --sort-by=~CREATE_TIME --format="value(version)" | tail -n +2 | while read -r version; do gcloud artifacts docker images delete europe-west6-docker.pkg.dev/google-project-id/catladder-deploy/pan-test-app/caches/web@$version --quiet --delete-tags; done",
272
334
  "echo -e "\\e[0Ksection_end:$(date +%s):cleanup\\r\\e[0K"",
273
335
  "echo Uploading SBOM to Dependency Track",
274
- "/dtrackuploader https://dep.panter.swiss/ "$DT_KEY_PROD" upload "pan-test-app/web" "https://pan-test-app-dev-web-unknown-host.example.com" "__sbom.json" vex.json || true",
275
- ],
276
- "services": [
277
- {
278
- "command": [
279
- "--tls=false",
280
- ],
281
- "name": "docker:24.0.6-dind",
282
- },
336
+ "/dtrackuploader https://dep.panter.swiss/ "$DT_KEY_PROD" upload "pan-test-app/web" "https://$(printf %s "pan-test-app-dev-web-$CL_dev_web_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')" "__sbom.json" vex.json || true",
337
+ "echo "CL_GITLAB_ENVIRONMENT_URL=https://$(printf %s "pan-test-app-dev-web-$CL_dev_web_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')" >> gitlab_environment.env",
283
338
  ],
284
339
  "stage": "deploy dev",
285
340
  "variables": {
286
- "APP_DIR": "web",
287
- "BUILD_INFO_BUILD_TIME": "01-01-2023 12:13:14",
288
- "BUILD_INFO_CURRENT_VERSION": "3.2.1",
289
- "BUILD_INFO_ID": "some-id",
290
- "CLOUDSDK_CORE_DISABLE_PROMPTS": "1",
291
- "DEPLOY_CLOUD_RUN_PROJECT_ID": "google-project-id",
292
- "DEPLOY_CLOUD_RUN_REGION": "europe-west6",
293
- "DOCKER_BUILDKIT": "1",
294
- "DOCKER_CACHE_IMAGE": "europe-west6-docker.pkg.dev/google-project-id/catladder-deploy/pan-test-app/caches/web",
295
- "DOCKER_DRIVER": "overlay2",
296
- "DOCKER_HOST": "tcp://0.0.0.0:2375",
297
- "DOCKER_IMAGE": "europe-west6-docker.pkg.dev/google-project-id/catladder-deploy/pan-test-app/dev/web",
298
- "DOCKER_IMAGE_TAG": "$CI_COMMIT_SHA",
299
- "DOCKER_REGISTRY": "europe-west6-docker.pkg.dev",
300
- "DOCKER_TLS_CERTDIR": "",
301
- "ENV_SHORT": "dev",
302
- "ENV_TYPE": "dev",
303
- "ENV_VARS": "ENV_SHORT: 'dev'
304
- APP_DIR: 'web'
305
- ENV_TYPE: 'dev'
306
- BUILD_INFO_ID: 'some-id'
307
- BUILD_INFO_BUILD_TIME: '01-01-2023 12:13:14'
308
- BUILD_INFO_CURRENT_VERSION: '3.2.1'
309
- HOST: 'pan-test-app-dev-web-unknown-host.example.com'
310
- ROOT_URL: 'https://pan-test-app-dev-web-unknown-host.example.com'
311
- HOST_CANONICAL: 'pan-test-app-dev-web-unknown-host.example.com'
312
- ROOT_URL_INTERNAL: 'https://pan-test-app-dev-web-unknown-host.example.com'
313
- HOST_INTERNAL: 'pan-test-app-dev-web-unknown-host.example.com'
314
- DEPLOY_CLOUD_RUN_PROJECT_ID: 'google-project-id'
315
- DEPLOY_CLOUD_RUN_REGION: 'europe-west6'
316
- GCLOUD_RUN_canonicalHostSuffix: '$CL_dev_web_GCLOUD_RUN_canonicalHostSuffix'
317
- _ALL_ENV_VAR_KEYS: '["ENV_SHORT","APP_DIR","ENV_TYPE","BUILD_INFO_ID","BUILD_INFO_BUILD_TIME","BUILD_INFO_CURRENT_VERSION","HOST","ROOT_URL","HOST_CANONICAL","ROOT_URL_INTERNAL","HOST_INTERNAL","DEPLOY_CLOUD_RUN_PROJECT_ID","DEPLOY_CLOUD_RUN_REGION","GCLOUD_DEPLOY_credentialsKey","GCLOUD_RUN_canonicalHostSuffix"]'
318
- ",
319
- "GCLOUD_DEPLOY_credentialsKey": "$CL_dev_web_GCLOUD_DEPLOY_credentialsKey",
320
- "GCLOUD_RUN_canonicalHostSuffix": "$CL_dev_web_GCLOUD_RUN_canonicalHostSuffix",
321
- "HOST": "pan-test-app-dev-web-unknown-host.example.com",
322
- "HOST_CANONICAL": "pan-test-app-dev-web-unknown-host.example.com",
323
- "HOST_INTERNAL": "pan-test-app-dev-web-unknown-host.example.com",
324
341
  "KUBERNETES_CPU_REQUEST": "0.5",
325
342
  "KUBERNETES_MEMORY_LIMIT": "400Mi",
326
343
  "KUBERNETES_MEMORY_REQUEST": "200Mi",
327
- "ROOT_URL": "https://pan-test-app-dev-web-unknown-host.example.com",
328
- "ROOT_URL_INTERNAL": "https://pan-test-app-dev-web-unknown-host.example.com",
329
- "_ALL_ENV_VAR_KEYS": "["ENV_SHORT","APP_DIR","ENV_TYPE","BUILD_INFO_ID","BUILD_INFO_BUILD_TIME","BUILD_INFO_CURRENT_VERSION","HOST","ROOT_URL","HOST_CANONICAL","ROOT_URL_INTERNAL","HOST_INTERNAL","DEPLOY_CLOUD_RUN_PROJECT_ID","DEPLOY_CLOUD_RUN_REGION","GCLOUD_DEPLOY_credentialsKey","GCLOUD_RUN_canonicalHostSuffix"]",
330
344
  },
331
345
  },
332
346
  "web 🛑 Stop ⚠️ | dev ": {
347
+ "allow_failure": true,
348
+ "artifacts": {
349
+ "reports": {
350
+ "dotenv": "gitlab_environment.env",
351
+ },
352
+ },
333
353
  "environment": {
334
354
  "action": "stop",
335
355
  "name": "dev/web",
336
- "url": "https://pan-test-app-dev-web-unknown-host.example.com",
356
+ "url": "$CL_GITLAB_ENVIRONMENT_URL",
337
357
  },
338
358
  "image": "path/to/docker/gcloud:the-version",
339
359
  "interruptible": true,
@@ -347,16 +367,17 @@ _ALL_ENV_VAR_KEYS: '["ENV_SHORT","APP_DIR","ENV_TYPE","BUILD_INFO_ID","BUILD_INF
347
367
  },
348
368
  "rules": [
349
369
  {
350
- "allow_failure": true,
351
370
  "if": "$CI_COMMIT_BRANCH =~ /^[0-9]+\\.([0-9]+|x)\\.x$/",
352
371
  "when": "on_success",
353
372
  },
354
373
  {
355
- "allow_failure": true,
356
374
  "when": "manual",
357
375
  },
358
376
  ],
359
377
  "script": [
378
+ "echo -e "\\e[0Ksection_start:$(date +%s):injectvars[collapsed=true]\\r\\e[0KInjecting variables"",
379
+ "export CLOUDSDK_CORE_DISABLE_PROMPTS="1"",
380
+ "echo -e "\\e[0Ksection_end:$(date +%s):injectvars\\r\\e[0K"",
360
381
  "set +e",
361
382
  "gcloud auth activate-service-account --key-file=<(echo "$CL_dev_web_GCLOUD_DEPLOY_credentialsKey")",
362
383
  "gcloud run services delete pan-test-app-dev-web --project=google-project-id --region=europe-west6",
@@ -364,12 +385,12 @@ _ALL_ENV_VAR_KEYS: '["ENV_SHORT","APP_DIR","ENV_TYPE","BUILD_INFO_ID","BUILD_INF
364
385
  "gcloud artifacts docker images delete europe-west6-docker.pkg.dev/google-project-id/catladder-deploy/pan-test-app/dev/web --quiet --delete-tags",
365
386
  "gcloud artifacts docker images list europe-west6-docker.pkg.dev/google-project-id/catladder-deploy/pan-test-app/caches/web --sort-by=~CREATE_TIME --format="value(version)" | tail -n +2 | while read -r version; do gcloud artifacts docker images delete europe-west6-docker.pkg.dev/google-project-id/catladder-deploy/pan-test-app/caches/web@$version --quiet --delete-tags; done",
366
387
  "echo Disabling component in Dependency Track",
367
- "/dtrackuploader https://dep.panter.swiss/ "$DT_KEY_PROD" disable "pan-test-app/web" "https://pan-test-app-dev-web-unknown-host.example.com" || true",
388
+ "/dtrackuploader https://dep.panter.swiss/ "$DT_KEY_PROD" disable "pan-test-app/web" "https://$(printf %s "pan-test-app-dev-web-$CL_dev_web_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')" || true",
368
389
  "set -e",
390
+ "echo "CL_GITLAB_ENVIRONMENT_URL=https://$(printf %s "pan-test-app-dev-web-$CL_dev_web_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')" >> gitlab_environment.env",
369
391
  ],
370
392
  "stage": "stop dev",
371
393
  "variables": {
372
- "CLOUDSDK_CORE_DISABLE_PROMPTS": "1",
373
394
  "GIT_STRATEGY": "none",
374
395
  "KUBERNETES_CPU_REQUEST": "0.5",
375
396
  "KUBERNETES_MEMORY_LIMIT": "400Mi",
@@ -389,12 +410,14 @@ _ALL_ENV_VAR_KEYS: '["ENV_SHORT","APP_DIR","ENV_TYPE","BUILD_INFO_ID","BUILD_INF
389
410
  ],
390
411
  },
391
412
  "script": [
413
+ "echo -e "\\e[0Ksection_start:$(date +%s):injectvars[collapsed=true]\\r\\e[0KInjecting variables"",
414
+ "export APP_PATH="web"",
415
+ "echo -e "\\e[0Ksection_end:$(date +%s):injectvars\\r\\e[0K"",
392
416
  "cd web",
393
417
  "yarn npm audit --environment production",
394
418
  ],
395
419
  "stage": "test",
396
420
  "variables": {
397
- "APP_PATH": "web",
398
421
  "KUBERNETES_CPU_REQUEST": "0.5",
399
422
  "KUBERNETES_MEMORY_LIMIT": "4Gi",
400
423
  "KUBERNETES_MEMORY_REQUEST": "2Gi",
@@ -428,6 +451,9 @@ _ALL_ENV_VAR_KEYS: '["ENV_SHORT","APP_DIR","ENV_TYPE","BUILD_INFO_ID","BUILD_INF
428
451
  ],
429
452
  },
430
453
  "script": [
454
+ "echo -e "\\e[0Ksection_start:$(date +%s):injectvars[collapsed=true]\\r\\e[0KInjecting variables"",
455
+ "export APP_PATH="web"",
456
+ "echo -e "\\e[0Ksection_end:$(date +%s):injectvars\\r\\e[0K"",
431
457
  "echo -e "\\e[0Ksection_start:$(date +%s):nodeinstall[collapsed=true]\\r\\e[0KEnsure node version"",
432
458
  "if [ -f ~/.nvm/nvm.sh ]; then source ~/.nvm/nvm.sh; fi",
433
459
  "if command -v nvm &> /dev/null && [ -f ./.nvmrc ]; then nvm install; fi",
@@ -444,7 +470,6 @@ _ALL_ENV_VAR_KEYS: '["ENV_SHORT","APP_DIR","ENV_TYPE","BUILD_INFO_ID","BUILD_INF
444
470
  ],
445
471
  "stage": "test",
446
472
  "variables": {
447
- "APP_PATH": "web",
448
473
  "KUBERNETES_CPU_REQUEST": "0.5",
449
474
  "KUBERNETES_MEMORY_LIMIT": "4Gi",
450
475
  "KUBERNETES_MEMORY_REQUEST": "2Gi",
@@ -468,6 +493,8 @@ _ALL_ENV_VAR_KEYS: '["ENV_SHORT","APP_DIR","ENV_TYPE","BUILD_INFO_ID","BUILD_INF
468
493
  ],
469
494
  },
470
495
  "script": [
496
+ "echo -e "\\e[0Ksection_start:$(date +%s):injectvars[collapsed=true]\\r\\e[0KInjecting variables"",
497
+ "echo -e "\\e[0Ksection_end:$(date +%s):injectvars\\r\\e[0K"",
471
498
  "trivy fs --quiet --format cyclonedx --output "__sbom.json" web",
472
499
  ],
473
500
  "stage": "build",
@@ -520,7 +547,7 @@ _ALL_ENV_VAR_KEYS: '["ENV_SHORT","APP_DIR","ENV_TYPE","BUILD_INFO_ID","BUILD_INF
520
547
  ],
521
548
  "variables": {
522
549
  "FF_USE_FASTZIP": "true",
523
- "GIT_DEPTH": 1,
550
+ "GIT_DEPTH": "1",
524
551
  },
525
552
  "workflow": {
526
553
  "rules": [
@@ -578,6 +605,9 @@ _ALL_ENV_VAR_KEYS: '["ENV_SHORT","APP_DIR","ENV_TYPE","BUILD_INFO_ID","BUILD_INF
578
605
  ],
579
606
  },
580
607
  "script": [
608
+ "echo -e "\\e[0Ksection_start:$(date +%s):injectvars[collapsed=true]\\r\\e[0KInjecting variables"",
609
+ "export APP_PATH="web"",
610
+ "echo -e "\\e[0Ksection_end:$(date +%s):injectvars\\r\\e[0K"",
581
611
  "echo -e "\\e[0Ksection_start:$(date +%s):nodeinstall[collapsed=true]\\r\\e[0KEnsure node version"",
582
612
  "if [ -f ~/.nvm/nvm.sh ]; then source ~/.nvm/nvm.sh; fi",
583
613
  "if command -v nvm &> /dev/null && [ -f ./.nvmrc ]; then nvm install; fi",
@@ -594,7 +624,6 @@ _ALL_ENV_VAR_KEYS: '["ENV_SHORT","APP_DIR","ENV_TYPE","BUILD_INFO_ID","BUILD_INF
594
624
  ],
595
625
  "stage": "test",
596
626
  "variables": {
597
- "APP_PATH": "web",
598
627
  "KUBERNETES_CPU_REQUEST": "0.5",
599
628
  "KUBERNETES_MEMORY_LIMIT": "4Gi",
600
629
  "KUBERNETES_MEMORY_REQUEST": "2Gi",
@@ -647,7 +676,26 @@ _ALL_ENV_VAR_KEYS: '["ENV_SHORT","APP_DIR","ENV_TYPE","BUILD_INFO_ID","BUILD_INF
647
676
  ],
648
677
  },
649
678
  "script": [
650
- "echo '{"id":"some-id","time":"01-01-2023 12:13:14"}' > web/__build_info.json",
679
+ "echo -e "\\e[0Ksection_start:$(date +%s):injectvars[collapsed=true]\\r\\e[0KInjecting variables"",
680
+ "export METEOR_DISABLE_OPTIMISTIC_CACHING="1"",
681
+ "export ENV_SHORT="review"",
682
+ "export APP_DIR="web"",
683
+ "export ENV_TYPE="review"",
684
+ "export BUILD_INFO_BUILD_ID="$(git describe --tags 2>/dev/null || git rev-parse HEAD)"",
685
+ "export BUILD_INFO_BUILD_TIME="$CI_JOB_STARTED_AT"",
686
+ "export BUILD_INFO_CURRENT_VERSION="$(tag=$(git ls-remote origin "refs/tags/v*[0-9]" 2>/dev/null | cut -f 2- | sort -V | tail -1 | sed 's/refs\\/tags\\///'); [ -z "$tag" ] && echo "v0.0.0" || echo "$tag")"",
687
+ "export HOST="$(printf %s "pan-test-app-review-$([ -n "$CI_MERGE_REQUEST_IID" ] && echo "mr$CI_MERGE_REQUEST_IID" || { [ -n "$CI_COMMIT_REF_SLUG" ] && echo "$CI_COMMIT_REF_SLUG" || echo "unknown"; })-web-$CL_review_web_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')"",
688
+ "export ROOT_URL="https://$(printf %s "pan-test-app-review-$([ -n "$CI_MERGE_REQUEST_IID" ] && echo "mr$CI_MERGE_REQUEST_IID" || { [ -n "$CI_COMMIT_REF_SLUG" ] && echo "$CI_COMMIT_REF_SLUG" || echo "unknown"; })-web-$CL_review_web_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')"",
689
+ "export HOST_INTERNAL="$(printf %s "pan-test-app-review-$([ -n "$CI_MERGE_REQUEST_IID" ] && echo "mr$CI_MERGE_REQUEST_IID" || { [ -n "$CI_COMMIT_REF_SLUG" ] && echo "$CI_COMMIT_REF_SLUG" || echo "unknown"; })-web-$CL_review_web_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')"",
690
+ "export HOST_CANONICAL="$(printf %s "pan-test-app-review-$([ -n "$CI_MERGE_REQUEST_IID" ] && echo "mr$CI_MERGE_REQUEST_IID" || { [ -n "$CI_COMMIT_REF_SLUG" ] && echo "$CI_COMMIT_REF_SLUG" || echo "unknown"; })-web-$CL_review_web_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')"",
691
+ "export ROOT_URL_INTERNAL="https://$(printf %s "pan-test-app-review-$([ -n "$CI_MERGE_REQUEST_IID" ] && echo "mr$CI_MERGE_REQUEST_IID" || { [ -n "$CI_COMMIT_REF_SLUG" ] && echo "$CI_COMMIT_REF_SLUG" || echo "unknown"; })-web-$CL_review_web_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')"",
692
+ "export DEPLOY_CLOUD_RUN_PROJECT_ID="google-project-id"",
693
+ "export DEPLOY_CLOUD_RUN_REGION="europe-west6"",
694
+ "export GCLOUD_DEPLOY_credentialsKey="$CL_review_web_GCLOUD_DEPLOY_credentialsKey"",
695
+ "export GCLOUD_RUN_canonicalHostSuffix="$CL_review_web_GCLOUD_RUN_canonicalHostSuffix"",
696
+ "export _ALL_ENV_VAR_KEYS="[\\"ENV_SHORT\\",\\"APP_DIR\\",\\"ENV_TYPE\\",\\"BUILD_INFO_BUILD_ID\\",\\"BUILD_INFO_BUILD_TIME\\",\\"BUILD_INFO_CURRENT_VERSION\\",\\"HOST\\",\\"ROOT_URL\\",\\"HOST_INTERNAL\\",\\"HOST_CANONICAL\\",\\"ROOT_URL_INTERNAL\\",\\"DEPLOY_CLOUD_RUN_PROJECT_ID\\",\\"DEPLOY_CLOUD_RUN_REGION\\",\\"GCLOUD_DEPLOY_credentialsKey\\",\\"GCLOUD_RUN_canonicalHostSuffix\\"]"",
697
+ "echo -e "\\e[0Ksection_end:$(date +%s):injectvars\\r\\e[0K"",
698
+ "echo '{"id":"$(git describe --tags 2>/dev/null || git rev-parse HEAD)","time":"$CI_JOB_STARTED_AT"}' > web/__build_info.json",
651
699
  "echo -e "\\e[0Ksection_start:$(date +%s):nodeinstall[collapsed=true]\\r\\e[0KEnsure node version"",
652
700
  "if [ -f ~/.nvm/nvm.sh ]; then source ~/.nvm/nvm.sh; fi",
653
701
  "if command -v nvm &> /dev/null && [ -f ./.nvmrc ]; then nvm install; fi",
@@ -668,26 +716,9 @@ _ALL_ENV_VAR_KEYS: '["ENV_SHORT","APP_DIR","ENV_TYPE","BUILD_INFO_ID","BUILD_INF
668
716
  ],
669
717
  "stage": "build",
670
718
  "variables": {
671
- "APP_DIR": "web",
672
- "BUILD_INFO_BUILD_TIME": "01-01-2023 12:13:14",
673
- "BUILD_INFO_CURRENT_VERSION": "3.2.1",
674
- "BUILD_INFO_ID": "some-id",
675
- "DEPLOY_CLOUD_RUN_PROJECT_ID": "google-project-id",
676
- "DEPLOY_CLOUD_RUN_REGION": "europe-west6",
677
- "ENV_SHORT": "review",
678
- "ENV_TYPE": "review",
679
- "GCLOUD_DEPLOY_credentialsKey": "$CL_review_web_GCLOUD_DEPLOY_credentialsKey",
680
- "GCLOUD_RUN_canonicalHostSuffix": "$CL_review_web_GCLOUD_RUN_canonicalHostSuffix",
681
- "HOST": "pan-test-app-review-mr1234-web-unknown-host.example.com",
682
- "HOST_CANONICAL": "pan-test-app-review-mr1234-web-unknown-host.example.com",
683
- "HOST_INTERNAL": "pan-test-app-review-mr1234-web-unknown-host.example.com",
684
719
  "KUBERNETES_CPU_REQUEST": "0.5",
685
720
  "KUBERNETES_MEMORY_LIMIT": "4Gi",
686
721
  "KUBERNETES_MEMORY_REQUEST": "1Gi",
687
- "METEOR_DISABLE_OPTIMISTIC_CACHING": "1",
688
- "ROOT_URL": "https://pan-test-app-review-mr1234-web-unknown-host.example.com",
689
- "ROOT_URL_INTERNAL": "https://pan-test-app-review-mr1234-web-unknown-host.example.com",
690
- "_ALL_ENV_VAR_KEYS": "["ENV_SHORT","APP_DIR","ENV_TYPE","BUILD_INFO_ID","BUILD_INFO_BUILD_TIME","BUILD_INFO_CURRENT_VERSION","HOST","ROOT_URL","HOST_CANONICAL","ROOT_URL_INTERNAL","HOST_INTERNAL","DEPLOY_CLOUD_RUN_PROJECT_ID","DEPLOY_CLOUD_RUN_REGION","GCLOUD_DEPLOY_credentialsKey","GCLOUD_RUN_canonicalHostSuffix"]",
691
722
  },
692
723
  },
693
724
  "web 🔨 docker | review ": {
@@ -704,6 +735,15 @@ _ALL_ENV_VAR_KEYS: '["ENV_SHORT","APP_DIR","ENV_TYPE","BUILD_INFO_ID","BUILD_INF
704
735
  ],
705
736
  },
706
737
  "script": [
738
+ "echo -e "\\e[0Ksection_start:$(date +%s):injectvars[collapsed=true]\\r\\e[0KInjecting variables"",
739
+ "export APP_DIR="web"",
740
+ "export DOCKER_DIR="."",
741
+ "export DOCKER_REGISTRY="europe-west6-docker.pkg.dev"",
742
+ "export DOCKER_IMAGE="europe-west6-docker.pkg.dev/google-project-id/catladder-deploy/pan-test-app/review/web/$([ -n "$CI_MERGE_REQUEST_IID" ] && echo "mr$CI_MERGE_REQUEST_IID" || { [ -n "$CI_COMMIT_REF_SLUG" ] && echo "$CI_COMMIT_REF_SLUG" || echo "unknown"; })"",
743
+ "export DOCKER_CACHE_IMAGE="europe-west6-docker.pkg.dev/google-project-id/catladder-deploy/pan-test-app/caches/web"",
744
+ "export DOCKER_IMAGE_TAG="$CI_COMMIT_SHA"",
745
+ "export METEOR_INSTALL_SCRIPTS=""",
746
+ "echo -e "\\e[0Ksection_end:$(date +%s):injectvars\\r\\e[0K"",
707
747
  "ensureMeteorDockerfile",
708
748
  "echo -e "\\e[0Ksection_start:$(date +%s):docker-login[collapsed=true]\\r\\e[0KDocker Login"",
709
749
  "gcloud auth activate-service-account --key-file=<(echo "$CL_review_web_GCLOUD_DEPLOY_credentialsKey")",
@@ -728,36 +768,27 @@ _ALL_ENV_VAR_KEYS: '["ENV_SHORT","APP_DIR","ENV_TYPE","BUILD_INFO_ID","BUILD_INF
728
768
  ],
729
769
  "stage": "build",
730
770
  "variables": {
731
- "APP_DIR": "web",
732
- "DOCKERFILE_ADDITIONS": undefined,
733
- "DOCKERFILE_ADDITIONS_END": undefined,
734
771
  "DOCKER_BUILDKIT": "1",
735
- "DOCKER_CACHE_IMAGE": "europe-west6-docker.pkg.dev/google-project-id/catladder-deploy/pan-test-app/caches/web",
736
- "DOCKER_DIR": ".",
737
772
  "DOCKER_DRIVER": "overlay2",
738
773
  "DOCKER_HOST": "tcp://0.0.0.0:2375",
739
- "DOCKER_IMAGE": "europe-west6-docker.pkg.dev/google-project-id/catladder-deploy/pan-test-app/review/web/mr1234",
740
- "DOCKER_IMAGE_TAG": "$CI_COMMIT_SHA",
741
- "DOCKER_REGISTRY": "europe-west6-docker.pkg.dev",
742
774
  "DOCKER_TLS_CERTDIR": "",
743
775
  "KUBERNETES_CPU_REQUEST": "0.5",
744
776
  "KUBERNETES_MEMORY_LIMIT": "2Gi",
745
777
  "KUBERNETES_MEMORY_REQUEST": "1Gi",
746
- "METEOR_INSTALL_SCRIPTS": "",
747
778
  },
748
779
  },
749
780
  "web 🚀 Deploy | review ": {
750
781
  "allow_failure": false,
751
782
  "artifacts": {
752
- "paths": [
753
- "____envvars.yaml",
754
- ],
783
+ "reports": {
784
+ "dotenv": "gitlab_environment.env",
785
+ },
755
786
  },
756
787
  "environment": {
757
788
  "auto_stop_in": "1 week",
758
- "name": "review/some-commit/web",
789
+ "name": "review/$CI_COMMIT_REF_NAME/web",
759
790
  "on_stop": "web 🛑 Stop ⚠️ | review ",
760
- "url": "https://pan-test-app-review-mr1234-web-unknown-host.example.com",
791
+ "url": "$CL_GITLAB_ENVIRONMENT_URL",
761
792
  },
762
793
  "image": "path/to/docker/gcloud:the-version",
763
794
  "interruptible": true,
@@ -800,88 +831,104 @@ _ALL_ENV_VAR_KEYS: '["ENV_SHORT","APP_DIR","ENV_TYPE","BUILD_INFO_ID","BUILD_INF
800
831
  },
801
832
  ],
802
833
  "script": [
834
+ "echo -e "\\e[0Ksection_start:$(date +%s):injectvars[collapsed=true]\\r\\e[0KInjecting variables"",
835
+ "export ENV_SHORT="review"",
836
+ "export APP_DIR="web"",
837
+ "export ENV_TYPE="review"",
838
+ "export BUILD_INFO_BUILD_ID="$(git describe --tags 2>/dev/null || git rev-parse HEAD)"",
839
+ "export BUILD_INFO_BUILD_TIME="$CI_JOB_STARTED_AT"",
840
+ "export BUILD_INFO_CURRENT_VERSION="$(tag=$(git ls-remote origin "refs/tags/v*[0-9]" 2>/dev/null | cut -f 2- | sort -V | tail -1 | sed 's/refs\\/tags\\///'); [ -z "$tag" ] && echo "v0.0.0" || echo "$tag")"",
841
+ "export HOST="$(printf %s "pan-test-app-review-$([ -n "$CI_MERGE_REQUEST_IID" ] && echo "mr$CI_MERGE_REQUEST_IID" || { [ -n "$CI_COMMIT_REF_SLUG" ] && echo "$CI_COMMIT_REF_SLUG" || echo "unknown"; })-web-$CL_review_web_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')"",
842
+ "export ROOT_URL="https://$(printf %s "pan-test-app-review-$([ -n "$CI_MERGE_REQUEST_IID" ] && echo "mr$CI_MERGE_REQUEST_IID" || { [ -n "$CI_COMMIT_REF_SLUG" ] && echo "$CI_COMMIT_REF_SLUG" || echo "unknown"; })-web-$CL_review_web_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')"",
843
+ "export HOST_INTERNAL="$(printf %s "pan-test-app-review-$([ -n "$CI_MERGE_REQUEST_IID" ] && echo "mr$CI_MERGE_REQUEST_IID" || { [ -n "$CI_COMMIT_REF_SLUG" ] && echo "$CI_COMMIT_REF_SLUG" || echo "unknown"; })-web-$CL_review_web_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')"",
844
+ "export HOST_CANONICAL="$(printf %s "pan-test-app-review-$([ -n "$CI_MERGE_REQUEST_IID" ] && echo "mr$CI_MERGE_REQUEST_IID" || { [ -n "$CI_COMMIT_REF_SLUG" ] && echo "$CI_COMMIT_REF_SLUG" || echo "unknown"; })-web-$CL_review_web_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')"",
845
+ "export ROOT_URL_INTERNAL="https://$(printf %s "pan-test-app-review-$([ -n "$CI_MERGE_REQUEST_IID" ] && echo "mr$CI_MERGE_REQUEST_IID" || { [ -n "$CI_COMMIT_REF_SLUG" ] && echo "$CI_COMMIT_REF_SLUG" || echo "unknown"; })-web-$CL_review_web_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')"",
846
+ "export DEPLOY_CLOUD_RUN_PROJECT_ID="google-project-id"",
847
+ "export DEPLOY_CLOUD_RUN_REGION="europe-west6"",
848
+ "export GCLOUD_DEPLOY_credentialsKey="$CL_review_web_GCLOUD_DEPLOY_credentialsKey"",
849
+ "export GCLOUD_RUN_canonicalHostSuffix="$CL_review_web_GCLOUD_RUN_canonicalHostSuffix"",
850
+ "export _ALL_ENV_VAR_KEYS="[\\"ENV_SHORT\\",\\"APP_DIR\\",\\"ENV_TYPE\\",\\"BUILD_INFO_BUILD_ID\\",\\"BUILD_INFO_BUILD_TIME\\",\\"BUILD_INFO_CURRENT_VERSION\\",\\"HOST\\",\\"ROOT_URL\\",\\"HOST_INTERNAL\\",\\"HOST_CANONICAL\\",\\"ROOT_URL_INTERNAL\\",\\"DEPLOY_CLOUD_RUN_PROJECT_ID\\",\\"DEPLOY_CLOUD_RUN_REGION\\",\\"GCLOUD_DEPLOY_credentialsKey\\",\\"GCLOUD_RUN_canonicalHostSuffix\\"]"",
851
+ "export DOCKER_REGISTRY="europe-west6-docker.pkg.dev"",
852
+ "export DOCKER_IMAGE="europe-west6-docker.pkg.dev/google-project-id/catladder-deploy/pan-test-app/review/web/$([ -n "$CI_MERGE_REQUEST_IID" ] && echo "mr$CI_MERGE_REQUEST_IID" || { [ -n "$CI_COMMIT_REF_SLUG" ] && echo "$CI_COMMIT_REF_SLUG" || echo "unknown"; })"",
853
+ "export DOCKER_CACHE_IMAGE="europe-west6-docker.pkg.dev/google-project-id/catladder-deploy/pan-test-app/caches/web"",
854
+ "export DOCKER_IMAGE_TAG="$CI_COMMIT_SHA"",
855
+ "export CLOUDSDK_CORE_DISABLE_PROMPTS="1"",
856
+ "echo -e "\\e[0Ksection_end:$(date +%s):injectvars\\r\\e[0K"",
803
857
  "echo -e "\\e[0Ksection_start:$(date +%s):prepare[collapsed=true]\\r\\e[0KPrepare..."",
804
858
  "gcloud auth activate-service-account --key-file=<(echo "$CL_review_web_GCLOUD_DEPLOY_credentialsKey")",
805
859
  "export GCLOUD_PROJECT_NUMBER=$(gcloud projects describe google-project-id --format="value(projectNumber)")",
806
860
  "echo "GCLOUD_PROJECT_NUMBER: $GCLOUD_PROJECT_NUMBER"",
807
861
  "echo -e "\\e[0Ksection_end:$(date +%s):prepare\\r\\e[0K"",
862
+ "echo -e "\\e[0Ksection_start:$(date +%s):writeenvvars[collapsed=true]\\r\\e[0KWrite env vars to file"",
863
+ "cat > ____envvars.yaml <<EOF
864
+ ENV_SHORT: |-
865
+ review
866
+ APP_DIR: |-
867
+ web
868
+ ENV_TYPE: |-
869
+ review
870
+ BUILD_INFO_BUILD_ID: |-
871
+ $(printf %s "$(git describe --tags 2>/dev/null || git rev-parse HEAD)" | sed 's/^/ /')
872
+ BUILD_INFO_BUILD_TIME: |-
873
+ $(printf %s "$CI_JOB_STARTED_AT" | sed 's/^/ /')
874
+ BUILD_INFO_CURRENT_VERSION: |-
875
+ $(printf %s "$(tag=$(git ls-remote origin "refs/tags/v*[0-9]" 2>/dev/null | cut -f 2- | sort -V | tail -1 | sed 's/refs\\/tags\\///'); [ -z "$tag" ] && echo "v0.0.0" || echo "$tag")" | sed 's/^/ /')
876
+ HOST: |-
877
+ $(printf %s "$(printf %s "pan-test-app-review-$([ -n "$CI_MERGE_REQUEST_IID" ] && echo "mr$CI_MERGE_REQUEST_IID" || { [ -n "$CI_COMMIT_REF_SLUG" ] && echo "$CI_COMMIT_REF_SLUG" || echo "unknown"; })-web-$CL_review_web_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')" | sed 's/^/ /')
878
+ ROOT_URL: |-
879
+ $(printf %s "https://$(printf %s "pan-test-app-review-$([ -n "$CI_MERGE_REQUEST_IID" ] && echo "mr$CI_MERGE_REQUEST_IID" || { [ -n "$CI_COMMIT_REF_SLUG" ] && echo "$CI_COMMIT_REF_SLUG" || echo "unknown"; })-web-$CL_review_web_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')" | sed 's/^/ /')
880
+ HOST_INTERNAL: |-
881
+ $(printf %s "$(printf %s "pan-test-app-review-$([ -n "$CI_MERGE_REQUEST_IID" ] && echo "mr$CI_MERGE_REQUEST_IID" || { [ -n "$CI_COMMIT_REF_SLUG" ] && echo "$CI_COMMIT_REF_SLUG" || echo "unknown"; })-web-$CL_review_web_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')" | sed 's/^/ /')
882
+ HOST_CANONICAL: |-
883
+ $(printf %s "$(printf %s "pan-test-app-review-$([ -n "$CI_MERGE_REQUEST_IID" ] && echo "mr$CI_MERGE_REQUEST_IID" || { [ -n "$CI_COMMIT_REF_SLUG" ] && echo "$CI_COMMIT_REF_SLUG" || echo "unknown"; })-web-$CL_review_web_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')" | sed 's/^/ /')
884
+ ROOT_URL_INTERNAL: |-
885
+ $(printf %s "https://$(printf %s "pan-test-app-review-$([ -n "$CI_MERGE_REQUEST_IID" ] && echo "mr$CI_MERGE_REQUEST_IID" || { [ -n "$CI_COMMIT_REF_SLUG" ] && echo "$CI_COMMIT_REF_SLUG" || echo "unknown"; })-web-$CL_review_web_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')" | sed 's/^/ /')
886
+ DEPLOY_CLOUD_RUN_PROJECT_ID: |-
887
+ google-project-id
888
+ DEPLOY_CLOUD_RUN_REGION: |-
889
+ europe-west6
890
+ GCLOUD_RUN_canonicalHostSuffix: |-
891
+ $(printf %s "$CL_review_web_GCLOUD_RUN_canonicalHostSuffix" | sed 's/^/ /')
892
+ _ALL_ENV_VAR_KEYS: |-
893
+ ["ENV_SHORT","APP_DIR","ENV_TYPE","BUILD_INFO_BUILD_ID","BUILD_INFO_BUILD_TIME","BUILD_INFO_CURRENT_VERSION","HOST","ROOT_URL","HOST_INTERNAL","HOST_CANONICAL","ROOT_URL_INTERNAL","DEPLOY_CLOUD_RUN_PROJECT_ID","DEPLOY_CLOUD_RUN_REGION","GCLOUD_DEPLOY_credentialsKey","GCLOUD_RUN_canonicalHostSuffix"]
894
+
895
+ EOF
896
+ ",
897
+ "echo -e "\\e[0Ksection_end:$(date +%s):writeenvvars\\r\\e[0K"",
808
898
  "echo -e "\\e[0Ksection_start:$(date +%s):deploy[collapsed=true]\\r\\e[0KDeploy to cloud run"",
809
- "echo "$ENV_VARS" > ____envvars.yaml",
810
- "gcloud run deploy pan-test-app-review-mr1234-web --command="node,main.js" --image=europe-west6-docker.pkg.dev/google-project-id/catladder-deploy/pan-test-app/review/web/mr1234:$DOCKER_IMAGE_TAG --project=google-project-id --region=europe-west6 --labels=customer-name=pan,component-name=web,app-name=test-app,env-type=review,env-name=review,build-type=meteor,cloud-run-service-name=pan-test-app-review-mr1234-web --env-vars-file=____envvars.yaml --min-instances=0 --max-instances=100 --cpu-throttling --allow-unauthenticated --ingress=all --cpu-boost",
811
- "gcloud run deploy pan-test-app-review-mr1234-web-worker --command="/bin/sh -c,BACKGROUND_JOBS_ENABLED=1 node main.js" --image=europe-west6-docker.pkg.dev/google-project-id/catladder-deploy/pan-test-app/review/web/mr1234:$DOCKER_IMAGE_TAG --project=google-project-id --region=europe-west6 --labels=customer-name=pan,component-name=web,app-name=test-app,env-type=review,env-name=review,build-type=meteor,cloud-run-service-name=pan-test-app-review-mr1234-web-worker --env-vars-file=____envvars.yaml --min-instances=1 --max-instances=1 --no-cpu-throttling --allow-unauthenticated --ingress=all --cpu-boost",
899
+ "gcloud run deploy $(printf %s "pan-test-app-review-$([ -n "$CI_MERGE_REQUEST_IID" ] && echo "mr$CI_MERGE_REQUEST_IID" || { [ -n "$CI_COMMIT_REF_SLUG" ] && echo "$CI_COMMIT_REF_SLUG" || echo "unknown"; })-web" | awk '{print tolower($0)}') --command="node,main.js" --image=europe-west6-docker.pkg.dev/google-project-id/catladder-deploy/pan-test-app/review/web/$([ -n "$CI_MERGE_REQUEST_IID" ] && echo "mr$CI_MERGE_REQUEST_IID" || { [ -n "$CI_COMMIT_REF_SLUG" ] && echo "$CI_COMMIT_REF_SLUG" || echo "unknown"; }):$DOCKER_IMAGE_TAG --project=google-project-id --region=europe-west6 --labels=customer-name=pan,component-name=web,app-name=test-app,env-type=review,env-name=review,build-type=meteor,cloud-run-service-name=$(printf %s "pan-test-app-review-$([ -n "$CI_MERGE_REQUEST_IID" ] && echo "mr$CI_MERGE_REQUEST_IID" || { [ -n "$CI_COMMIT_REF_SLUG" ] && echo "$CI_COMMIT_REF_SLUG" || echo "unknown"; })-web" | awk '{print tolower($0)}') --env-vars-file=____envvars.yaml --min-instances=0 --max-instances=100 --cpu-throttling --allow-unauthenticated --ingress=all --cpu-boost",
900
+ "gcloud run deploy $(printf %s "pan-test-app-review-$([ -n "$CI_MERGE_REQUEST_IID" ] && echo "mr$CI_MERGE_REQUEST_IID" || { [ -n "$CI_COMMIT_REF_SLUG" ] && echo "$CI_COMMIT_REF_SLUG" || echo "unknown"; })-web" | awk '{print tolower($0)}')-worker --command="/bin/sh -c,BACKGROUND_JOBS_ENABLED=1 node main.js" --image=europe-west6-docker.pkg.dev/google-project-id/catladder-deploy/pan-test-app/review/web/$([ -n "$CI_MERGE_REQUEST_IID" ] && echo "mr$CI_MERGE_REQUEST_IID" || { [ -n "$CI_COMMIT_REF_SLUG" ] && echo "$CI_COMMIT_REF_SLUG" || echo "unknown"; }):$DOCKER_IMAGE_TAG --project=google-project-id --region=europe-west6 --labels=customer-name=pan,component-name=web,app-name=test-app,env-type=review,env-name=review,build-type=meteor,cloud-run-service-name=$(printf %s "pan-test-app-review-$([ -n "$CI_MERGE_REQUEST_IID" ] && echo "mr$CI_MERGE_REQUEST_IID" || { [ -n "$CI_COMMIT_REF_SLUG" ] && echo "$CI_COMMIT_REF_SLUG" || echo "unknown"; })-web" | awk '{print tolower($0)}')-worker --env-vars-file=____envvars.yaml --min-instances=1 --max-instances=1 --no-cpu-throttling --allow-unauthenticated --ingress=all --cpu-boost",
812
901
  "echo -e "\\e[0Ksection_end:$(date +%s):deploy\\r\\e[0K"",
813
902
  "echo -e "\\e[0Ksection_start:$(date +%s):cleanup[collapsed=true]\\r\\e[0KCleanup"",
814
- "gcloud run revisions list --project=google-project-id --region=europe-west6 --service=pan-test-app-review-mr1234-web --limit=unlimited --sort-by=metadata.creationTimestamp --format="value(name)" --filter='(status.conditions.status=False OR status.conditions.status=Unknown)' | while read -r revisionname; do gcloud run revisions delete --project=google-project-id --region=europe-west6 --quiet $revisionname ; done",
815
- "gcloud artifacts docker images list europe-west6-docker.pkg.dev/google-project-id/catladder-deploy/pan-test-app/review/web/mr1234 --sort-by=~CREATE_TIME --format="value(version)" | tail -n +2 | while read -r version; do gcloud artifacts docker images delete europe-west6-docker.pkg.dev/google-project-id/catladder-deploy/pan-test-app/review/web/mr1234@$version --quiet --delete-tags; done",
903
+ "gcloud run revisions list --project=google-project-id --region=europe-west6 --service=$(printf %s "pan-test-app-review-$([ -n "$CI_MERGE_REQUEST_IID" ] && echo "mr$CI_MERGE_REQUEST_IID" || { [ -n "$CI_COMMIT_REF_SLUG" ] && echo "$CI_COMMIT_REF_SLUG" || echo "unknown"; })-web" | awk '{print tolower($0)}') --limit=unlimited --sort-by=metadata.creationTimestamp --format="value(name)" --filter='(status.conditions.status=False OR status.conditions.status=Unknown)' | while read -r revisionname; do gcloud run revisions delete --project=google-project-id --region=europe-west6 --quiet $revisionname ; done",
904
+ "gcloud artifacts docker images list europe-west6-docker.pkg.dev/google-project-id/catladder-deploy/pan-test-app/review/web/$([ -n "$CI_MERGE_REQUEST_IID" ] && echo "mr$CI_MERGE_REQUEST_IID" || { [ -n "$CI_COMMIT_REF_SLUG" ] && echo "$CI_COMMIT_REF_SLUG" || echo "unknown"; }) --sort-by=~CREATE_TIME --format="value(version)" | tail -n +2 | while read -r version; do gcloud artifacts docker images delete europe-west6-docker.pkg.dev/google-project-id/catladder-deploy/pan-test-app/review/web/$([ -n "$CI_MERGE_REQUEST_IID" ] && echo "mr$CI_MERGE_REQUEST_IID" || { [ -n "$CI_COMMIT_REF_SLUG" ] && echo "$CI_COMMIT_REF_SLUG" || echo "unknown"; })@$version --quiet --delete-tags; done",
816
905
  "gcloud artifacts docker images list europe-west6-docker.pkg.dev/google-project-id/catladder-deploy/pan-test-app/caches/web --sort-by=~CREATE_TIME --format="value(version)" | tail -n +2 | while read -r version; do gcloud artifacts docker images delete europe-west6-docker.pkg.dev/google-project-id/catladder-deploy/pan-test-app/caches/web@$version --quiet --delete-tags; done",
817
906
  "set +e",
818
907
  "gcloud artifacts docker images delete europe-west6-docker.pkg.dev/google-project-id/catladder-deploy/pan-test-app/review/web --quiet --delete-tags",
819
908
  "set -e",
820
909
  "echo -e "\\e[0Ksection_end:$(date +%s):cleanup\\r\\e[0K"",
821
910
  "echo Uploading SBOM to Dependency Track",
822
- "/dtrackuploader https://dep.panter.swiss/ "$DT_KEY_PROD" upload "pan-test-app/web" "https://pan-test-app-review-mr1234-web-unknown-host.example.com" "__sbom.json" vex.json || true",
823
- ],
824
- "services": [
825
- {
826
- "command": [
827
- "--tls=false",
828
- ],
829
- "name": "docker:24.0.6-dind",
830
- },
911
+ "/dtrackuploader https://dep.panter.swiss/ "$DT_KEY_PROD" upload "pan-test-app/web" "https://$(printf %s "pan-test-app-review-$([ -n "$CI_MERGE_REQUEST_IID" ] && echo "mr$CI_MERGE_REQUEST_IID" || { [ -n "$CI_COMMIT_REF_SLUG" ] && echo "$CI_COMMIT_REF_SLUG" || echo "unknown"; })-web-$CL_review_web_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')" "__sbom.json" vex.json || true",
912
+ "echo "CL_GITLAB_ENVIRONMENT_URL=https://$(printf %s "pan-test-app-review-$([ -n "$CI_MERGE_REQUEST_IID" ] && echo "mr$CI_MERGE_REQUEST_IID" || { [ -n "$CI_COMMIT_REF_SLUG" ] && echo "$CI_COMMIT_REF_SLUG" || echo "unknown"; })-web-$CL_review_web_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')" >> gitlab_environment.env",
831
913
  ],
832
914
  "stage": "deploy review",
833
915
  "variables": {
834
- "APP_DIR": "web",
835
- "BUILD_INFO_BUILD_TIME": "01-01-2023 12:13:14",
836
- "BUILD_INFO_CURRENT_VERSION": "3.2.1",
837
- "BUILD_INFO_ID": "some-id",
838
- "CLOUDSDK_CORE_DISABLE_PROMPTS": "1",
839
- "DEPLOY_CLOUD_RUN_PROJECT_ID": "google-project-id",
840
- "DEPLOY_CLOUD_RUN_REGION": "europe-west6",
841
- "DOCKER_BUILDKIT": "1",
842
- "DOCKER_CACHE_IMAGE": "europe-west6-docker.pkg.dev/google-project-id/catladder-deploy/pan-test-app/caches/web",
843
- "DOCKER_DRIVER": "overlay2",
844
- "DOCKER_HOST": "tcp://0.0.0.0:2375",
845
- "DOCKER_IMAGE": "europe-west6-docker.pkg.dev/google-project-id/catladder-deploy/pan-test-app/review/web/mr1234",
846
- "DOCKER_IMAGE_TAG": "$CI_COMMIT_SHA",
847
- "DOCKER_REGISTRY": "europe-west6-docker.pkg.dev",
848
- "DOCKER_TLS_CERTDIR": "",
849
- "ENV_SHORT": "review",
850
- "ENV_TYPE": "review",
851
- "ENV_VARS": "ENV_SHORT: 'review'
852
- APP_DIR: 'web'
853
- ENV_TYPE: 'review'
854
- BUILD_INFO_ID: 'some-id'
855
- BUILD_INFO_BUILD_TIME: '01-01-2023 12:13:14'
856
- BUILD_INFO_CURRENT_VERSION: '3.2.1'
857
- HOST: 'pan-test-app-review-mr1234-web-unknown-host.example.com'
858
- ROOT_URL: 'https://pan-test-app-review-mr1234-web-unknown-host.example.com'
859
- HOST_CANONICAL: 'pan-test-app-review-mr1234-web-unknown-host.example.com'
860
- ROOT_URL_INTERNAL: 'https://pan-test-app-review-mr1234-web-unknown-host.example.com'
861
- HOST_INTERNAL: 'pan-test-app-review-mr1234-web-unknown-host.example.com'
862
- DEPLOY_CLOUD_RUN_PROJECT_ID: 'google-project-id'
863
- DEPLOY_CLOUD_RUN_REGION: 'europe-west6'
864
- GCLOUD_RUN_canonicalHostSuffix: '$CL_review_web_GCLOUD_RUN_canonicalHostSuffix'
865
- _ALL_ENV_VAR_KEYS: '["ENV_SHORT","APP_DIR","ENV_TYPE","BUILD_INFO_ID","BUILD_INFO_BUILD_TIME","BUILD_INFO_CURRENT_VERSION","HOST","ROOT_URL","HOST_CANONICAL","ROOT_URL_INTERNAL","HOST_INTERNAL","DEPLOY_CLOUD_RUN_PROJECT_ID","DEPLOY_CLOUD_RUN_REGION","GCLOUD_DEPLOY_credentialsKey","GCLOUD_RUN_canonicalHostSuffix"]'
866
- ",
867
- "GCLOUD_DEPLOY_credentialsKey": "$CL_review_web_GCLOUD_DEPLOY_credentialsKey",
868
- "GCLOUD_RUN_canonicalHostSuffix": "$CL_review_web_GCLOUD_RUN_canonicalHostSuffix",
869
- "HOST": "pan-test-app-review-mr1234-web-unknown-host.example.com",
870
- "HOST_CANONICAL": "pan-test-app-review-mr1234-web-unknown-host.example.com",
871
- "HOST_INTERNAL": "pan-test-app-review-mr1234-web-unknown-host.example.com",
872
916
  "KUBERNETES_CPU_REQUEST": "0.5",
873
917
  "KUBERNETES_MEMORY_LIMIT": "400Mi",
874
918
  "KUBERNETES_MEMORY_REQUEST": "200Mi",
875
- "ROOT_URL": "https://pan-test-app-review-mr1234-web-unknown-host.example.com",
876
- "ROOT_URL_INTERNAL": "https://pan-test-app-review-mr1234-web-unknown-host.example.com",
877
- "_ALL_ENV_VAR_KEYS": "["ENV_SHORT","APP_DIR","ENV_TYPE","BUILD_INFO_ID","BUILD_INFO_BUILD_TIME","BUILD_INFO_CURRENT_VERSION","HOST","ROOT_URL","HOST_CANONICAL","ROOT_URL_INTERNAL","HOST_INTERNAL","DEPLOY_CLOUD_RUN_PROJECT_ID","DEPLOY_CLOUD_RUN_REGION","GCLOUD_DEPLOY_credentialsKey","GCLOUD_RUN_canonicalHostSuffix"]",
878
919
  },
879
920
  },
880
921
  "web 🛑 Stop ⚠️ | review ": {
922
+ "allow_failure": true,
923
+ "artifacts": {
924
+ "reports": {
925
+ "dotenv": "gitlab_environment.env",
926
+ },
927
+ },
881
928
  "environment": {
882
929
  "action": "stop",
883
- "name": "review/some-commit/web",
884
- "url": "https://pan-test-app-review-mr1234-web-unknown-host.example.com",
930
+ "name": "review/$CI_COMMIT_REF_NAME/web",
931
+ "url": "$CL_GITLAB_ENVIRONMENT_URL",
885
932
  },
886
933
  "image": "path/to/docker/gcloud:the-version",
887
934
  "interruptible": true,
@@ -895,32 +942,33 @@ _ALL_ENV_VAR_KEYS: '["ENV_SHORT","APP_DIR","ENV_TYPE","BUILD_INFO_ID","BUILD_INF
895
942
  },
896
943
  "rules": [
897
944
  {
898
- "allow_failure": true,
899
945
  "if": "$CI_COMMIT_BRANCH =~ /^[0-9]+\\.([0-9]+|x)\\.x$/",
900
946
  "when": "on_success",
901
947
  },
902
948
  {
903
- "allow_failure": true,
904
949
  "when": "manual",
905
950
  },
906
951
  ],
907
952
  "script": [
953
+ "echo -e "\\e[0Ksection_start:$(date +%s):injectvars[collapsed=true]\\r\\e[0KInjecting variables"",
954
+ "export CLOUDSDK_CORE_DISABLE_PROMPTS="1"",
955
+ "echo -e "\\e[0Ksection_end:$(date +%s):injectvars\\r\\e[0K"",
908
956
  "set +e",
909
957
  "gcloud auth activate-service-account --key-file=<(echo "$CL_review_web_GCLOUD_DEPLOY_credentialsKey")",
910
- "gcloud run services delete pan-test-app-review-mr1234-web --project=google-project-id --region=europe-west6",
911
- "gcloud run services delete pan-test-app-review-mr1234-web-worker --project=google-project-id --region=europe-west6",
912
- "gcloud artifacts docker images delete europe-west6-docker.pkg.dev/google-project-id/catladder-deploy/pan-test-app/review/web/mr1234 --quiet --delete-tags",
958
+ "gcloud run services delete $(printf %s "pan-test-app-review-$([ -n "$CI_MERGE_REQUEST_IID" ] && echo "mr$CI_MERGE_REQUEST_IID" || { [ -n "$CI_COMMIT_REF_SLUG" ] && echo "$CI_COMMIT_REF_SLUG" || echo "unknown"; })-web" | awk '{print tolower($0)}') --project=google-project-id --region=europe-west6",
959
+ "gcloud run services delete $(printf %s "pan-test-app-review-$([ -n "$CI_MERGE_REQUEST_IID" ] && echo "mr$CI_MERGE_REQUEST_IID" || { [ -n "$CI_COMMIT_REF_SLUG" ] && echo "$CI_COMMIT_REF_SLUG" || echo "unknown"; })-web" | awk '{print tolower($0)}')-worker --project=google-project-id --region=europe-west6",
960
+ "gcloud artifacts docker images delete europe-west6-docker.pkg.dev/google-project-id/catladder-deploy/pan-test-app/review/web/$([ -n "$CI_MERGE_REQUEST_IID" ] && echo "mr$CI_MERGE_REQUEST_IID" || { [ -n "$CI_COMMIT_REF_SLUG" ] && echo "$CI_COMMIT_REF_SLUG" || echo "unknown"; }) --quiet --delete-tags",
913
961
  "gcloud artifacts docker images list europe-west6-docker.pkg.dev/google-project-id/catladder-deploy/pan-test-app/caches/web --sort-by=~CREATE_TIME --format="value(version)" | tail -n +2 | while read -r version; do gcloud artifacts docker images delete europe-west6-docker.pkg.dev/google-project-id/catladder-deploy/pan-test-app/caches/web@$version --quiet --delete-tags; done",
914
962
  "set +e",
915
963
  "gcloud artifacts docker images delete europe-west6-docker.pkg.dev/google-project-id/catladder-deploy/pan-test-app/review/web --quiet --delete-tags",
916
964
  "set -e",
917
965
  "echo Disabling component in Dependency Track",
918
- "/dtrackuploader https://dep.panter.swiss/ "$DT_KEY_PROD" disable "pan-test-app/web" "https://pan-test-app-review-mr1234-web-unknown-host.example.com" || true",
966
+ "/dtrackuploader https://dep.panter.swiss/ "$DT_KEY_PROD" disable "pan-test-app/web" "https://$(printf %s "pan-test-app-review-$([ -n "$CI_MERGE_REQUEST_IID" ] && echo "mr$CI_MERGE_REQUEST_IID" || { [ -n "$CI_COMMIT_REF_SLUG" ] && echo "$CI_COMMIT_REF_SLUG" || echo "unknown"; })-web-$CL_review_web_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')" || true",
919
967
  "set -e",
968
+ "echo "CL_GITLAB_ENVIRONMENT_URL=https://$(printf %s "pan-test-app-review-$([ -n "$CI_MERGE_REQUEST_IID" ] && echo "mr$CI_MERGE_REQUEST_IID" || { [ -n "$CI_COMMIT_REF_SLUG" ] && echo "$CI_COMMIT_REF_SLUG" || echo "unknown"; })-web-$CL_review_web_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')" >> gitlab_environment.env",
920
969
  ],
921
970
  "stage": "stop review",
922
971
  "variables": {
923
- "CLOUDSDK_CORE_DISABLE_PROMPTS": "1",
924
972
  "GIT_STRATEGY": "none",
925
973
  "KUBERNETES_CPU_REQUEST": "0.5",
926
974
  "KUBERNETES_MEMORY_LIMIT": "400Mi",
@@ -940,12 +988,14 @@ _ALL_ENV_VAR_KEYS: '["ENV_SHORT","APP_DIR","ENV_TYPE","BUILD_INFO_ID","BUILD_INF
940
988
  ],
941
989
  },
942
990
  "script": [
991
+ "echo -e "\\e[0Ksection_start:$(date +%s):injectvars[collapsed=true]\\r\\e[0KInjecting variables"",
992
+ "export APP_PATH="web"",
993
+ "echo -e "\\e[0Ksection_end:$(date +%s):injectvars\\r\\e[0K"",
943
994
  "cd web",
944
995
  "yarn npm audit --environment production",
945
996
  ],
946
997
  "stage": "test",
947
998
  "variables": {
948
- "APP_PATH": "web",
949
999
  "KUBERNETES_CPU_REQUEST": "0.5",
950
1000
  "KUBERNETES_MEMORY_LIMIT": "4Gi",
951
1001
  "KUBERNETES_MEMORY_REQUEST": "2Gi",
@@ -979,6 +1029,9 @@ _ALL_ENV_VAR_KEYS: '["ENV_SHORT","APP_DIR","ENV_TYPE","BUILD_INFO_ID","BUILD_INF
979
1029
  ],
980
1030
  },
981
1031
  "script": [
1032
+ "echo -e "\\e[0Ksection_start:$(date +%s):injectvars[collapsed=true]\\r\\e[0KInjecting variables"",
1033
+ "export APP_PATH="web"",
1034
+ "echo -e "\\e[0Ksection_end:$(date +%s):injectvars\\r\\e[0K"",
982
1035
  "echo -e "\\e[0Ksection_start:$(date +%s):nodeinstall[collapsed=true]\\r\\e[0KEnsure node version"",
983
1036
  "if [ -f ~/.nvm/nvm.sh ]; then source ~/.nvm/nvm.sh; fi",
984
1037
  "if command -v nvm &> /dev/null && [ -f ./.nvmrc ]; then nvm install; fi",
@@ -995,7 +1048,6 @@ _ALL_ENV_VAR_KEYS: '["ENV_SHORT","APP_DIR","ENV_TYPE","BUILD_INFO_ID","BUILD_INF
995
1048
  ],
996
1049
  "stage": "test",
997
1050
  "variables": {
998
- "APP_PATH": "web",
999
1051
  "KUBERNETES_CPU_REQUEST": "0.5",
1000
1052
  "KUBERNETES_MEMORY_LIMIT": "4Gi",
1001
1053
  "KUBERNETES_MEMORY_REQUEST": "2Gi",
@@ -1019,6 +1071,8 @@ _ALL_ENV_VAR_KEYS: '["ENV_SHORT","APP_DIR","ENV_TYPE","BUILD_INFO_ID","BUILD_INF
1019
1071
  ],
1020
1072
  },
1021
1073
  "script": [
1074
+ "echo -e "\\e[0Ksection_start:$(date +%s):injectvars[collapsed=true]\\r\\e[0KInjecting variables"",
1075
+ "echo -e "\\e[0Ksection_end:$(date +%s):injectvars\\r\\e[0K"",
1022
1076
  "trivy fs --quiet --format cyclonedx --output "__sbom.json" web",
1023
1077
  ],
1024
1078
  "stage": "build",
@@ -1071,7 +1125,7 @@ _ALL_ENV_VAR_KEYS: '["ENV_SHORT","APP_DIR","ENV_TYPE","BUILD_INFO_ID","BUILD_INF
1071
1125
  ],
1072
1126
  "variables": {
1073
1127
  "FF_USE_FASTZIP": "true",
1074
- "GIT_DEPTH": 1,
1128
+ "GIT_DEPTH": "1",
1075
1129
  },
1076
1130
  "workflow": {
1077
1131
  "rules": [
@@ -1148,7 +1202,26 @@ _ALL_ENV_VAR_KEYS: '["ENV_SHORT","APP_DIR","ENV_TYPE","BUILD_INFO_ID","BUILD_INF
1148
1202
  ],
1149
1203
  },
1150
1204
  "script": [
1151
- "echo '{"id":"some-id","time":"01-01-2023 12:13:14"}' > web/__build_info.json",
1205
+ "echo -e "\\e[0Ksection_start:$(date +%s):injectvars[collapsed=true]\\r\\e[0KInjecting variables"",
1206
+ "export METEOR_DISABLE_OPTIMISTIC_CACHING="1"",
1207
+ "export ENV_SHORT="prod"",
1208
+ "export APP_DIR="web"",
1209
+ "export ENV_TYPE="prod"",
1210
+ "export BUILD_INFO_BUILD_ID="$(git describe --tags 2>/dev/null || git rev-parse HEAD)"",
1211
+ "export BUILD_INFO_BUILD_TIME="$CI_JOB_STARTED_AT"",
1212
+ "export BUILD_INFO_CURRENT_VERSION="$(tag=$(git ls-remote origin "refs/tags/v*[0-9]" 2>/dev/null | cut -f 2- | sort -V | tail -1 | sed 's/refs\\/tags\\///'); [ -z "$tag" ] && echo "v0.0.0" || echo "$tag")"",
1213
+ "export HOST="$(printf %s "pan-test-app-prod-web-$CL_prod_web_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')"",
1214
+ "export ROOT_URL="https://$(printf %s "pan-test-app-prod-web-$CL_prod_web_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')"",
1215
+ "export HOST_INTERNAL="$(printf %s "pan-test-app-prod-web-$CL_prod_web_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')"",
1216
+ "export HOST_CANONICAL="$(printf %s "pan-test-app-prod-web-$CL_prod_web_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')"",
1217
+ "export ROOT_URL_INTERNAL="https://$(printf %s "pan-test-app-prod-web-$CL_prod_web_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')"",
1218
+ "export DEPLOY_CLOUD_RUN_PROJECT_ID="google-project-id"",
1219
+ "export DEPLOY_CLOUD_RUN_REGION="europe-west6"",
1220
+ "export GCLOUD_DEPLOY_credentialsKey="$CL_prod_web_GCLOUD_DEPLOY_credentialsKey"",
1221
+ "export GCLOUD_RUN_canonicalHostSuffix="$CL_prod_web_GCLOUD_RUN_canonicalHostSuffix"",
1222
+ "export _ALL_ENV_VAR_KEYS="[\\"ENV_SHORT\\",\\"APP_DIR\\",\\"ENV_TYPE\\",\\"BUILD_INFO_BUILD_ID\\",\\"BUILD_INFO_BUILD_TIME\\",\\"BUILD_INFO_CURRENT_VERSION\\",\\"HOST\\",\\"ROOT_URL\\",\\"HOST_INTERNAL\\",\\"HOST_CANONICAL\\",\\"ROOT_URL_INTERNAL\\",\\"DEPLOY_CLOUD_RUN_PROJECT_ID\\",\\"DEPLOY_CLOUD_RUN_REGION\\",\\"GCLOUD_DEPLOY_credentialsKey\\",\\"GCLOUD_RUN_canonicalHostSuffix\\"]"",
1223
+ "echo -e "\\e[0Ksection_end:$(date +%s):injectvars\\r\\e[0K"",
1224
+ "echo '{"id":"$(git describe --tags 2>/dev/null || git rev-parse HEAD)","time":"$CI_JOB_STARTED_AT"}' > web/__build_info.json",
1152
1225
  "echo -e "\\e[0Ksection_start:$(date +%s):nodeinstall[collapsed=true]\\r\\e[0KEnsure node version"",
1153
1226
  "if [ -f ~/.nvm/nvm.sh ]; then source ~/.nvm/nvm.sh; fi",
1154
1227
  "if command -v nvm &> /dev/null && [ -f ./.nvmrc ]; then nvm install; fi",
@@ -1169,26 +1242,9 @@ _ALL_ENV_VAR_KEYS: '["ENV_SHORT","APP_DIR","ENV_TYPE","BUILD_INFO_ID","BUILD_INF
1169
1242
  ],
1170
1243
  "stage": "build",
1171
1244
  "variables": {
1172
- "APP_DIR": "web",
1173
- "BUILD_INFO_BUILD_TIME": "01-01-2023 12:13:14",
1174
- "BUILD_INFO_CURRENT_VERSION": "3.2.1",
1175
- "BUILD_INFO_ID": "some-id",
1176
- "DEPLOY_CLOUD_RUN_PROJECT_ID": "google-project-id",
1177
- "DEPLOY_CLOUD_RUN_REGION": "europe-west6",
1178
- "ENV_SHORT": "prod",
1179
- "ENV_TYPE": "prod",
1180
- "GCLOUD_DEPLOY_credentialsKey": "$CL_prod_web_GCLOUD_DEPLOY_credentialsKey",
1181
- "GCLOUD_RUN_canonicalHostSuffix": "$CL_prod_web_GCLOUD_RUN_canonicalHostSuffix",
1182
- "HOST": "pan-test-app-prod-web-unknown-host.example.com",
1183
- "HOST_CANONICAL": "pan-test-app-prod-web-unknown-host.example.com",
1184
- "HOST_INTERNAL": "pan-test-app-prod-web-unknown-host.example.com",
1185
1245
  "KUBERNETES_CPU_REQUEST": "0.5",
1186
1246
  "KUBERNETES_MEMORY_LIMIT": "4Gi",
1187
1247
  "KUBERNETES_MEMORY_REQUEST": "1Gi",
1188
- "METEOR_DISABLE_OPTIMISTIC_CACHING": "1",
1189
- "ROOT_URL": "https://pan-test-app-prod-web-unknown-host.example.com",
1190
- "ROOT_URL_INTERNAL": "https://pan-test-app-prod-web-unknown-host.example.com",
1191
- "_ALL_ENV_VAR_KEYS": "["ENV_SHORT","APP_DIR","ENV_TYPE","BUILD_INFO_ID","BUILD_INFO_BUILD_TIME","BUILD_INFO_CURRENT_VERSION","HOST","ROOT_URL","HOST_CANONICAL","ROOT_URL_INTERNAL","HOST_INTERNAL","DEPLOY_CLOUD_RUN_PROJECT_ID","DEPLOY_CLOUD_RUN_REGION","GCLOUD_DEPLOY_credentialsKey","GCLOUD_RUN_canonicalHostSuffix"]",
1192
1248
  },
1193
1249
  },
1194
1250
  "web 🔨 app | stage ": {
@@ -1238,7 +1294,26 @@ _ALL_ENV_VAR_KEYS: '["ENV_SHORT","APP_DIR","ENV_TYPE","BUILD_INFO_ID","BUILD_INF
1238
1294
  ],
1239
1295
  },
1240
1296
  "script": [
1241
- "echo '{"id":"some-id","time":"01-01-2023 12:13:14"}' > web/__build_info.json",
1297
+ "echo -e "\\e[0Ksection_start:$(date +%s):injectvars[collapsed=true]\\r\\e[0KInjecting variables"",
1298
+ "export METEOR_DISABLE_OPTIMISTIC_CACHING="1"",
1299
+ "export ENV_SHORT="stage"",
1300
+ "export APP_DIR="web"",
1301
+ "export ENV_TYPE="stage"",
1302
+ "export BUILD_INFO_BUILD_ID="$(git describe --tags 2>/dev/null || git rev-parse HEAD)"",
1303
+ "export BUILD_INFO_BUILD_TIME="$CI_JOB_STARTED_AT"",
1304
+ "export BUILD_INFO_CURRENT_VERSION="$(tag=$(git ls-remote origin "refs/tags/v*[0-9]" 2>/dev/null | cut -f 2- | sort -V | tail -1 | sed 's/refs\\/tags\\///'); [ -z "$tag" ] && echo "v0.0.0" || echo "$tag")"",
1305
+ "export HOST="$(printf %s "pan-test-app-stage-web-$CL_stage_web_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')"",
1306
+ "export ROOT_URL="https://$(printf %s "pan-test-app-stage-web-$CL_stage_web_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')"",
1307
+ "export HOST_INTERNAL="$(printf %s "pan-test-app-stage-web-$CL_stage_web_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')"",
1308
+ "export HOST_CANONICAL="$(printf %s "pan-test-app-stage-web-$CL_stage_web_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')"",
1309
+ "export ROOT_URL_INTERNAL="https://$(printf %s "pan-test-app-stage-web-$CL_stage_web_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')"",
1310
+ "export DEPLOY_CLOUD_RUN_PROJECT_ID="google-project-id"",
1311
+ "export DEPLOY_CLOUD_RUN_REGION="europe-west6"",
1312
+ "export GCLOUD_DEPLOY_credentialsKey="$CL_stage_web_GCLOUD_DEPLOY_credentialsKey"",
1313
+ "export GCLOUD_RUN_canonicalHostSuffix="$CL_stage_web_GCLOUD_RUN_canonicalHostSuffix"",
1314
+ "export _ALL_ENV_VAR_KEYS="[\\"ENV_SHORT\\",\\"APP_DIR\\",\\"ENV_TYPE\\",\\"BUILD_INFO_BUILD_ID\\",\\"BUILD_INFO_BUILD_TIME\\",\\"BUILD_INFO_CURRENT_VERSION\\",\\"HOST\\",\\"ROOT_URL\\",\\"HOST_INTERNAL\\",\\"HOST_CANONICAL\\",\\"ROOT_URL_INTERNAL\\",\\"DEPLOY_CLOUD_RUN_PROJECT_ID\\",\\"DEPLOY_CLOUD_RUN_REGION\\",\\"GCLOUD_DEPLOY_credentialsKey\\",\\"GCLOUD_RUN_canonicalHostSuffix\\"]"",
1315
+ "echo -e "\\e[0Ksection_end:$(date +%s):injectvars\\r\\e[0K"",
1316
+ "echo '{"id":"$(git describe --tags 2>/dev/null || git rev-parse HEAD)","time":"$CI_JOB_STARTED_AT"}' > web/__build_info.json",
1242
1317
  "echo -e "\\e[0Ksection_start:$(date +%s):nodeinstall[collapsed=true]\\r\\e[0KEnsure node version"",
1243
1318
  "if [ -f ~/.nvm/nvm.sh ]; then source ~/.nvm/nvm.sh; fi",
1244
1319
  "if command -v nvm &> /dev/null && [ -f ./.nvmrc ]; then nvm install; fi",
@@ -1259,26 +1334,9 @@ _ALL_ENV_VAR_KEYS: '["ENV_SHORT","APP_DIR","ENV_TYPE","BUILD_INFO_ID","BUILD_INF
1259
1334
  ],
1260
1335
  "stage": "build",
1261
1336
  "variables": {
1262
- "APP_DIR": "web",
1263
- "BUILD_INFO_BUILD_TIME": "01-01-2023 12:13:14",
1264
- "BUILD_INFO_CURRENT_VERSION": "3.2.1",
1265
- "BUILD_INFO_ID": "some-id",
1266
- "DEPLOY_CLOUD_RUN_PROJECT_ID": "google-project-id",
1267
- "DEPLOY_CLOUD_RUN_REGION": "europe-west6",
1268
- "ENV_SHORT": "stage",
1269
- "ENV_TYPE": "stage",
1270
- "GCLOUD_DEPLOY_credentialsKey": "$CL_stage_web_GCLOUD_DEPLOY_credentialsKey",
1271
- "GCLOUD_RUN_canonicalHostSuffix": "$CL_stage_web_GCLOUD_RUN_canonicalHostSuffix",
1272
- "HOST": "pan-test-app-stage-web-unknown-host.example.com",
1273
- "HOST_CANONICAL": "pan-test-app-stage-web-unknown-host.example.com",
1274
- "HOST_INTERNAL": "pan-test-app-stage-web-unknown-host.example.com",
1275
1337
  "KUBERNETES_CPU_REQUEST": "0.5",
1276
1338
  "KUBERNETES_MEMORY_LIMIT": "4Gi",
1277
1339
  "KUBERNETES_MEMORY_REQUEST": "1Gi",
1278
- "METEOR_DISABLE_OPTIMISTIC_CACHING": "1",
1279
- "ROOT_URL": "https://pan-test-app-stage-web-unknown-host.example.com",
1280
- "ROOT_URL_INTERNAL": "https://pan-test-app-stage-web-unknown-host.example.com",
1281
- "_ALL_ENV_VAR_KEYS": "["ENV_SHORT","APP_DIR","ENV_TYPE","BUILD_INFO_ID","BUILD_INFO_BUILD_TIME","BUILD_INFO_CURRENT_VERSION","HOST","ROOT_URL","HOST_CANONICAL","ROOT_URL_INTERNAL","HOST_INTERNAL","DEPLOY_CLOUD_RUN_PROJECT_ID","DEPLOY_CLOUD_RUN_REGION","GCLOUD_DEPLOY_credentialsKey","GCLOUD_RUN_canonicalHostSuffix"]",
1282
1340
  },
1283
1341
  },
1284
1342
  "web 🔨 docker | prod ": {
@@ -1295,6 +1353,15 @@ _ALL_ENV_VAR_KEYS: '["ENV_SHORT","APP_DIR","ENV_TYPE","BUILD_INFO_ID","BUILD_INF
1295
1353
  ],
1296
1354
  },
1297
1355
  "script": [
1356
+ "echo -e "\\e[0Ksection_start:$(date +%s):injectvars[collapsed=true]\\r\\e[0KInjecting variables"",
1357
+ "export APP_DIR="web"",
1358
+ "export DOCKER_DIR="."",
1359
+ "export DOCKER_REGISTRY="europe-west6-docker.pkg.dev"",
1360
+ "export DOCKER_IMAGE="europe-west6-docker.pkg.dev/google-project-id/catladder-deploy/pan-test-app/prod/web"",
1361
+ "export DOCKER_CACHE_IMAGE="europe-west6-docker.pkg.dev/google-project-id/catladder-deploy/pan-test-app/caches/web"",
1362
+ "export DOCKER_IMAGE_TAG="$CI_COMMIT_SHA"",
1363
+ "export METEOR_INSTALL_SCRIPTS=""",
1364
+ "echo -e "\\e[0Ksection_end:$(date +%s):injectvars\\r\\e[0K"",
1298
1365
  "ensureMeteorDockerfile",
1299
1366
  "echo -e "\\e[0Ksection_start:$(date +%s):docker-login[collapsed=true]\\r\\e[0KDocker Login"",
1300
1367
  "gcloud auth activate-service-account --key-file=<(echo "$CL_prod_web_GCLOUD_DEPLOY_credentialsKey")",
@@ -1319,22 +1386,13 @@ _ALL_ENV_VAR_KEYS: '["ENV_SHORT","APP_DIR","ENV_TYPE","BUILD_INFO_ID","BUILD_INF
1319
1386
  ],
1320
1387
  "stage": "build",
1321
1388
  "variables": {
1322
- "APP_DIR": "web",
1323
- "DOCKERFILE_ADDITIONS": undefined,
1324
- "DOCKERFILE_ADDITIONS_END": undefined,
1325
1389
  "DOCKER_BUILDKIT": "1",
1326
- "DOCKER_CACHE_IMAGE": "europe-west6-docker.pkg.dev/google-project-id/catladder-deploy/pan-test-app/caches/web",
1327
- "DOCKER_DIR": ".",
1328
1390
  "DOCKER_DRIVER": "overlay2",
1329
1391
  "DOCKER_HOST": "tcp://0.0.0.0:2375",
1330
- "DOCKER_IMAGE": "europe-west6-docker.pkg.dev/google-project-id/catladder-deploy/pan-test-app/prod/web",
1331
- "DOCKER_IMAGE_TAG": "$CI_COMMIT_SHA",
1332
- "DOCKER_REGISTRY": "europe-west6-docker.pkg.dev",
1333
1392
  "DOCKER_TLS_CERTDIR": "",
1334
1393
  "KUBERNETES_CPU_REQUEST": "0.5",
1335
1394
  "KUBERNETES_MEMORY_LIMIT": "2Gi",
1336
1395
  "KUBERNETES_MEMORY_REQUEST": "1Gi",
1337
- "METEOR_INSTALL_SCRIPTS": "",
1338
1396
  },
1339
1397
  },
1340
1398
  "web 🔨 docker | stage ": {
@@ -1351,6 +1409,15 @@ _ALL_ENV_VAR_KEYS: '["ENV_SHORT","APP_DIR","ENV_TYPE","BUILD_INFO_ID","BUILD_INF
1351
1409
  ],
1352
1410
  },
1353
1411
  "script": [
1412
+ "echo -e "\\e[0Ksection_start:$(date +%s):injectvars[collapsed=true]\\r\\e[0KInjecting variables"",
1413
+ "export APP_DIR="web"",
1414
+ "export DOCKER_DIR="."",
1415
+ "export DOCKER_REGISTRY="europe-west6-docker.pkg.dev"",
1416
+ "export DOCKER_IMAGE="europe-west6-docker.pkg.dev/google-project-id/catladder-deploy/pan-test-app/stage/web"",
1417
+ "export DOCKER_CACHE_IMAGE="europe-west6-docker.pkg.dev/google-project-id/catladder-deploy/pan-test-app/caches/web"",
1418
+ "export DOCKER_IMAGE_TAG="$CI_COMMIT_SHA"",
1419
+ "export METEOR_INSTALL_SCRIPTS=""",
1420
+ "echo -e "\\e[0Ksection_end:$(date +%s):injectvars\\r\\e[0K"",
1354
1421
  "ensureMeteorDockerfile",
1355
1422
  "echo -e "\\e[0Ksection_start:$(date +%s):docker-login[collapsed=true]\\r\\e[0KDocker Login"",
1356
1423
  "gcloud auth activate-service-account --key-file=<(echo "$CL_stage_web_GCLOUD_DEPLOY_credentialsKey")",
@@ -1375,36 +1442,27 @@ _ALL_ENV_VAR_KEYS: '["ENV_SHORT","APP_DIR","ENV_TYPE","BUILD_INFO_ID","BUILD_INF
1375
1442
  ],
1376
1443
  "stage": "build",
1377
1444
  "variables": {
1378
- "APP_DIR": "web",
1379
- "DOCKERFILE_ADDITIONS": undefined,
1380
- "DOCKERFILE_ADDITIONS_END": undefined,
1381
1445
  "DOCKER_BUILDKIT": "1",
1382
- "DOCKER_CACHE_IMAGE": "europe-west6-docker.pkg.dev/google-project-id/catladder-deploy/pan-test-app/caches/web",
1383
- "DOCKER_DIR": ".",
1384
1446
  "DOCKER_DRIVER": "overlay2",
1385
1447
  "DOCKER_HOST": "tcp://0.0.0.0:2375",
1386
- "DOCKER_IMAGE": "europe-west6-docker.pkg.dev/google-project-id/catladder-deploy/pan-test-app/stage/web",
1387
- "DOCKER_IMAGE_TAG": "$CI_COMMIT_SHA",
1388
- "DOCKER_REGISTRY": "europe-west6-docker.pkg.dev",
1389
1448
  "DOCKER_TLS_CERTDIR": "",
1390
1449
  "KUBERNETES_CPU_REQUEST": "0.5",
1391
1450
  "KUBERNETES_MEMORY_LIMIT": "2Gi",
1392
1451
  "KUBERNETES_MEMORY_REQUEST": "1Gi",
1393
- "METEOR_INSTALL_SCRIPTS": "",
1394
1452
  },
1395
1453
  },
1396
1454
  "web 🚀 Deploy | prod ": {
1397
1455
  "allow_failure": true,
1398
1456
  "artifacts": {
1399
- "paths": [
1400
- "____envvars.yaml",
1401
- ],
1457
+ "reports": {
1458
+ "dotenv": "gitlab_environment.env",
1459
+ },
1402
1460
  },
1403
1461
  "environment": {
1404
1462
  "auto_stop_in": undefined,
1405
1463
  "name": "prod/web",
1406
1464
  "on_stop": "web 🛑 Stop ⚠️ | prod ",
1407
- "url": "https://pan-test-app-prod-web-unknown-host.example.com",
1465
+ "url": "$CL_GITLAB_ENVIRONMENT_URL",
1408
1466
  },
1409
1467
  "image": "path/to/docker/gcloud:the-version",
1410
1468
  "interruptible": true,
@@ -1435,13 +1493,71 @@ _ALL_ENV_VAR_KEYS: '["ENV_SHORT","APP_DIR","ENV_TYPE","BUILD_INFO_ID","BUILD_INF
1435
1493
  },
1436
1494
  ],
1437
1495
  "script": [
1496
+ "echo -e "\\e[0Ksection_start:$(date +%s):injectvars[collapsed=true]\\r\\e[0KInjecting variables"",
1497
+ "export ENV_SHORT="prod"",
1498
+ "export APP_DIR="web"",
1499
+ "export ENV_TYPE="prod"",
1500
+ "export BUILD_INFO_BUILD_ID="$(git describe --tags 2>/dev/null || git rev-parse HEAD)"",
1501
+ "export BUILD_INFO_BUILD_TIME="$CI_JOB_STARTED_AT"",
1502
+ "export BUILD_INFO_CURRENT_VERSION="$(tag=$(git ls-remote origin "refs/tags/v*[0-9]" 2>/dev/null | cut -f 2- | sort -V | tail -1 | sed 's/refs\\/tags\\///'); [ -z "$tag" ] && echo "v0.0.0" || echo "$tag")"",
1503
+ "export HOST="$(printf %s "pan-test-app-prod-web-$CL_prod_web_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')"",
1504
+ "export ROOT_URL="https://$(printf %s "pan-test-app-prod-web-$CL_prod_web_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')"",
1505
+ "export HOST_INTERNAL="$(printf %s "pan-test-app-prod-web-$CL_prod_web_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')"",
1506
+ "export HOST_CANONICAL="$(printf %s "pan-test-app-prod-web-$CL_prod_web_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')"",
1507
+ "export ROOT_URL_INTERNAL="https://$(printf %s "pan-test-app-prod-web-$CL_prod_web_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')"",
1508
+ "export DEPLOY_CLOUD_RUN_PROJECT_ID="google-project-id"",
1509
+ "export DEPLOY_CLOUD_RUN_REGION="europe-west6"",
1510
+ "export GCLOUD_DEPLOY_credentialsKey="$CL_prod_web_GCLOUD_DEPLOY_credentialsKey"",
1511
+ "export GCLOUD_RUN_canonicalHostSuffix="$CL_prod_web_GCLOUD_RUN_canonicalHostSuffix"",
1512
+ "export _ALL_ENV_VAR_KEYS="[\\"ENV_SHORT\\",\\"APP_DIR\\",\\"ENV_TYPE\\",\\"BUILD_INFO_BUILD_ID\\",\\"BUILD_INFO_BUILD_TIME\\",\\"BUILD_INFO_CURRENT_VERSION\\",\\"HOST\\",\\"ROOT_URL\\",\\"HOST_INTERNAL\\",\\"HOST_CANONICAL\\",\\"ROOT_URL_INTERNAL\\",\\"DEPLOY_CLOUD_RUN_PROJECT_ID\\",\\"DEPLOY_CLOUD_RUN_REGION\\",\\"GCLOUD_DEPLOY_credentialsKey\\",\\"GCLOUD_RUN_canonicalHostSuffix\\"]"",
1513
+ "export DOCKER_REGISTRY="europe-west6-docker.pkg.dev"",
1514
+ "export DOCKER_IMAGE="europe-west6-docker.pkg.dev/google-project-id/catladder-deploy/pan-test-app/prod/web"",
1515
+ "export DOCKER_CACHE_IMAGE="europe-west6-docker.pkg.dev/google-project-id/catladder-deploy/pan-test-app/caches/web"",
1516
+ "export DOCKER_IMAGE_TAG="$CI_COMMIT_SHA"",
1517
+ "export CLOUDSDK_CORE_DISABLE_PROMPTS="1"",
1518
+ "echo -e "\\e[0Ksection_end:$(date +%s):injectvars\\r\\e[0K"",
1438
1519
  "echo -e "\\e[0Ksection_start:$(date +%s):prepare[collapsed=true]\\r\\e[0KPrepare..."",
1439
1520
  "gcloud auth activate-service-account --key-file=<(echo "$CL_prod_web_GCLOUD_DEPLOY_credentialsKey")",
1440
1521
  "export GCLOUD_PROJECT_NUMBER=$(gcloud projects describe google-project-id --format="value(projectNumber)")",
1441
1522
  "echo "GCLOUD_PROJECT_NUMBER: $GCLOUD_PROJECT_NUMBER"",
1442
1523
  "echo -e "\\e[0Ksection_end:$(date +%s):prepare\\r\\e[0K"",
1524
+ "echo -e "\\e[0Ksection_start:$(date +%s):writeenvvars[collapsed=true]\\r\\e[0KWrite env vars to file"",
1525
+ "cat > ____envvars.yaml <<EOF
1526
+ ENV_SHORT: |-
1527
+ prod
1528
+ APP_DIR: |-
1529
+ web
1530
+ ENV_TYPE: |-
1531
+ prod
1532
+ BUILD_INFO_BUILD_ID: |-
1533
+ $(printf %s "$(git describe --tags 2>/dev/null || git rev-parse HEAD)" | sed 's/^/ /')
1534
+ BUILD_INFO_BUILD_TIME: |-
1535
+ $(printf %s "$CI_JOB_STARTED_AT" | sed 's/^/ /')
1536
+ BUILD_INFO_CURRENT_VERSION: |-
1537
+ $(printf %s "$(tag=$(git ls-remote origin "refs/tags/v*[0-9]" 2>/dev/null | cut -f 2- | sort -V | tail -1 | sed 's/refs\\/tags\\///'); [ -z "$tag" ] && echo "v0.0.0" || echo "$tag")" | sed 's/^/ /')
1538
+ HOST: |-
1539
+ $(printf %s "$(printf %s "pan-test-app-prod-web-$CL_prod_web_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')" | sed 's/^/ /')
1540
+ ROOT_URL: |-
1541
+ $(printf %s "https://$(printf %s "pan-test-app-prod-web-$CL_prod_web_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')" | sed 's/^/ /')
1542
+ HOST_INTERNAL: |-
1543
+ $(printf %s "$(printf %s "pan-test-app-prod-web-$CL_prod_web_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')" | sed 's/^/ /')
1544
+ HOST_CANONICAL: |-
1545
+ $(printf %s "$(printf %s "pan-test-app-prod-web-$CL_prod_web_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')" | sed 's/^/ /')
1546
+ ROOT_URL_INTERNAL: |-
1547
+ $(printf %s "https://$(printf %s "pan-test-app-prod-web-$CL_prod_web_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')" | sed 's/^/ /')
1548
+ DEPLOY_CLOUD_RUN_PROJECT_ID: |-
1549
+ google-project-id
1550
+ DEPLOY_CLOUD_RUN_REGION: |-
1551
+ europe-west6
1552
+ GCLOUD_RUN_canonicalHostSuffix: |-
1553
+ $(printf %s "$CL_prod_web_GCLOUD_RUN_canonicalHostSuffix" | sed 's/^/ /')
1554
+ _ALL_ENV_VAR_KEYS: |-
1555
+ ["ENV_SHORT","APP_DIR","ENV_TYPE","BUILD_INFO_BUILD_ID","BUILD_INFO_BUILD_TIME","BUILD_INFO_CURRENT_VERSION","HOST","ROOT_URL","HOST_INTERNAL","HOST_CANONICAL","ROOT_URL_INTERNAL","DEPLOY_CLOUD_RUN_PROJECT_ID","DEPLOY_CLOUD_RUN_REGION","GCLOUD_DEPLOY_credentialsKey","GCLOUD_RUN_canonicalHostSuffix"]
1556
+
1557
+ EOF
1558
+ ",
1559
+ "echo -e "\\e[0Ksection_end:$(date +%s):writeenvvars\\r\\e[0K"",
1443
1560
  "echo -e "\\e[0Ksection_start:$(date +%s):deploy[collapsed=true]\\r\\e[0KDeploy to cloud run"",
1444
- "echo "$ENV_VARS" > ____envvars.yaml",
1445
1561
  "gcloud run deploy pan-test-app-prod-web --command="node,main.js" --image=europe-west6-docker.pkg.dev/google-project-id/catladder-deploy/pan-test-app/prod/web:$DOCKER_IMAGE_TAG --project=google-project-id --region=europe-west6 --labels=customer-name=pan,component-name=web,app-name=test-app,env-type=prod,env-name=prod,build-type=meteor,cloud-run-service-name=pan-test-app-prod-web --env-vars-file=____envvars.yaml --min-instances=0 --max-instances=100 --cpu-throttling --allow-unauthenticated --ingress=all --cpu-boost",
1446
1562
  "gcloud run deploy pan-test-app-prod-web-worker --command="/bin/sh -c,BACKGROUND_JOBS_ENABLED=1 node main.js" --image=europe-west6-docker.pkg.dev/google-project-id/catladder-deploy/pan-test-app/prod/web:$DOCKER_IMAGE_TAG --project=google-project-id --region=europe-west6 --labels=customer-name=pan,component-name=web,app-name=test-app,env-type=prod,env-name=prod,build-type=meteor,cloud-run-service-name=pan-test-app-prod-web-worker --env-vars-file=____envvars.yaml --min-instances=1 --max-instances=1 --no-cpu-throttling --allow-unauthenticated --ingress=all --cpu-boost",
1447
1563
  "echo -e "\\e[0Ksection_end:$(date +%s):deploy\\r\\e[0K"",
@@ -1451,76 +1567,28 @@ _ALL_ENV_VAR_KEYS: '["ENV_SHORT","APP_DIR","ENV_TYPE","BUILD_INFO_ID","BUILD_INF
1451
1567
  "gcloud artifacts docker images list europe-west6-docker.pkg.dev/google-project-id/catladder-deploy/pan-test-app/caches/web --sort-by=~CREATE_TIME --format="value(version)" | tail -n +2 | while read -r version; do gcloud artifacts docker images delete europe-west6-docker.pkg.dev/google-project-id/catladder-deploy/pan-test-app/caches/web@$version --quiet --delete-tags; done",
1452
1568
  "echo -e "\\e[0Ksection_end:$(date +%s):cleanup\\r\\e[0K"",
1453
1569
  "echo Uploading SBOM to Dependency Track",
1454
- "/dtrackuploader https://dep.panter.swiss/ "$DT_KEY_PROD" upload "pan-test-app/web" "https://pan-test-app-prod-web-unknown-host.example.com" "__sbom.json" vex.json || true",
1455
- ],
1456
- "services": [
1457
- {
1458
- "command": [
1459
- "--tls=false",
1460
- ],
1461
- "name": "docker:24.0.6-dind",
1462
- },
1570
+ "/dtrackuploader https://dep.panter.swiss/ "$DT_KEY_PROD" upload "pan-test-app/web" "https://$(printf %s "pan-test-app-prod-web-$CL_prod_web_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')" "__sbom.json" vex.json || true",
1571
+ "echo "CL_GITLAB_ENVIRONMENT_URL=https://$(printf %s "pan-test-app-prod-web-$CL_prod_web_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')" >> gitlab_environment.env",
1463
1572
  ],
1464
1573
  "stage": "deploy prod",
1465
1574
  "variables": {
1466
- "APP_DIR": "web",
1467
- "BUILD_INFO_BUILD_TIME": "01-01-2023 12:13:14",
1468
- "BUILD_INFO_CURRENT_VERSION": "3.2.1",
1469
- "BUILD_INFO_ID": "some-id",
1470
- "CLOUDSDK_CORE_DISABLE_PROMPTS": "1",
1471
- "DEPLOY_CLOUD_RUN_PROJECT_ID": "google-project-id",
1472
- "DEPLOY_CLOUD_RUN_REGION": "europe-west6",
1473
- "DOCKER_BUILDKIT": "1",
1474
- "DOCKER_CACHE_IMAGE": "europe-west6-docker.pkg.dev/google-project-id/catladder-deploy/pan-test-app/caches/web",
1475
- "DOCKER_DRIVER": "overlay2",
1476
- "DOCKER_HOST": "tcp://0.0.0.0:2375",
1477
- "DOCKER_IMAGE": "europe-west6-docker.pkg.dev/google-project-id/catladder-deploy/pan-test-app/prod/web",
1478
- "DOCKER_IMAGE_TAG": "$CI_COMMIT_SHA",
1479
- "DOCKER_REGISTRY": "europe-west6-docker.pkg.dev",
1480
- "DOCKER_TLS_CERTDIR": "",
1481
- "ENV_SHORT": "prod",
1482
- "ENV_TYPE": "prod",
1483
- "ENV_VARS": "ENV_SHORT: 'prod'
1484
- APP_DIR: 'web'
1485
- ENV_TYPE: 'prod'
1486
- BUILD_INFO_ID: 'some-id'
1487
- BUILD_INFO_BUILD_TIME: '01-01-2023 12:13:14'
1488
- BUILD_INFO_CURRENT_VERSION: '3.2.1'
1489
- HOST: 'pan-test-app-prod-web-unknown-host.example.com'
1490
- ROOT_URL: 'https://pan-test-app-prod-web-unknown-host.example.com'
1491
- HOST_CANONICAL: 'pan-test-app-prod-web-unknown-host.example.com'
1492
- ROOT_URL_INTERNAL: 'https://pan-test-app-prod-web-unknown-host.example.com'
1493
- HOST_INTERNAL: 'pan-test-app-prod-web-unknown-host.example.com'
1494
- DEPLOY_CLOUD_RUN_PROJECT_ID: 'google-project-id'
1495
- DEPLOY_CLOUD_RUN_REGION: 'europe-west6'
1496
- GCLOUD_RUN_canonicalHostSuffix: '$CL_prod_web_GCLOUD_RUN_canonicalHostSuffix'
1497
- _ALL_ENV_VAR_KEYS: '["ENV_SHORT","APP_DIR","ENV_TYPE","BUILD_INFO_ID","BUILD_INFO_BUILD_TIME","BUILD_INFO_CURRENT_VERSION","HOST","ROOT_URL","HOST_CANONICAL","ROOT_URL_INTERNAL","HOST_INTERNAL","DEPLOY_CLOUD_RUN_PROJECT_ID","DEPLOY_CLOUD_RUN_REGION","GCLOUD_DEPLOY_credentialsKey","GCLOUD_RUN_canonicalHostSuffix"]'
1498
- ",
1499
- "GCLOUD_DEPLOY_credentialsKey": "$CL_prod_web_GCLOUD_DEPLOY_credentialsKey",
1500
- "GCLOUD_RUN_canonicalHostSuffix": "$CL_prod_web_GCLOUD_RUN_canonicalHostSuffix",
1501
- "HOST": "pan-test-app-prod-web-unknown-host.example.com",
1502
- "HOST_CANONICAL": "pan-test-app-prod-web-unknown-host.example.com",
1503
- "HOST_INTERNAL": "pan-test-app-prod-web-unknown-host.example.com",
1504
1575
  "KUBERNETES_CPU_REQUEST": "0.5",
1505
1576
  "KUBERNETES_MEMORY_LIMIT": "400Mi",
1506
1577
  "KUBERNETES_MEMORY_REQUEST": "200Mi",
1507
- "ROOT_URL": "https://pan-test-app-prod-web-unknown-host.example.com",
1508
- "ROOT_URL_INTERNAL": "https://pan-test-app-prod-web-unknown-host.example.com",
1509
- "_ALL_ENV_VAR_KEYS": "["ENV_SHORT","APP_DIR","ENV_TYPE","BUILD_INFO_ID","BUILD_INFO_BUILD_TIME","BUILD_INFO_CURRENT_VERSION","HOST","ROOT_URL","HOST_CANONICAL","ROOT_URL_INTERNAL","HOST_INTERNAL","DEPLOY_CLOUD_RUN_PROJECT_ID","DEPLOY_CLOUD_RUN_REGION","GCLOUD_DEPLOY_credentialsKey","GCLOUD_RUN_canonicalHostSuffix"]",
1510
1578
  },
1511
1579
  },
1512
1580
  "web 🚀 Deploy | stage ": {
1513
1581
  "allow_failure": false,
1514
1582
  "artifacts": {
1515
- "paths": [
1516
- "____envvars.yaml",
1517
- ],
1583
+ "reports": {
1584
+ "dotenv": "gitlab_environment.env",
1585
+ },
1518
1586
  },
1519
1587
  "environment": {
1520
1588
  "auto_stop_in": undefined,
1521
1589
  "name": "stage/web",
1522
1590
  "on_stop": "web 🛑 Stop ⚠️ | stage ",
1523
- "url": "https://pan-test-app-stage-web-unknown-host.example.com",
1591
+ "url": "$CL_GITLAB_ENVIRONMENT_URL",
1524
1592
  },
1525
1593
  "image": "path/to/docker/gcloud:the-version",
1526
1594
  "interruptible": true,
@@ -1551,13 +1619,71 @@ _ALL_ENV_VAR_KEYS: '["ENV_SHORT","APP_DIR","ENV_TYPE","BUILD_INFO_ID","BUILD_INF
1551
1619
  },
1552
1620
  ],
1553
1621
  "script": [
1622
+ "echo -e "\\e[0Ksection_start:$(date +%s):injectvars[collapsed=true]\\r\\e[0KInjecting variables"",
1623
+ "export ENV_SHORT="stage"",
1624
+ "export APP_DIR="web"",
1625
+ "export ENV_TYPE="stage"",
1626
+ "export BUILD_INFO_BUILD_ID="$(git describe --tags 2>/dev/null || git rev-parse HEAD)"",
1627
+ "export BUILD_INFO_BUILD_TIME="$CI_JOB_STARTED_AT"",
1628
+ "export BUILD_INFO_CURRENT_VERSION="$(tag=$(git ls-remote origin "refs/tags/v*[0-9]" 2>/dev/null | cut -f 2- | sort -V | tail -1 | sed 's/refs\\/tags\\///'); [ -z "$tag" ] && echo "v0.0.0" || echo "$tag")"",
1629
+ "export HOST="$(printf %s "pan-test-app-stage-web-$CL_stage_web_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')"",
1630
+ "export ROOT_URL="https://$(printf %s "pan-test-app-stage-web-$CL_stage_web_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')"",
1631
+ "export HOST_INTERNAL="$(printf %s "pan-test-app-stage-web-$CL_stage_web_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')"",
1632
+ "export HOST_CANONICAL="$(printf %s "pan-test-app-stage-web-$CL_stage_web_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')"",
1633
+ "export ROOT_URL_INTERNAL="https://$(printf %s "pan-test-app-stage-web-$CL_stage_web_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')"",
1634
+ "export DEPLOY_CLOUD_RUN_PROJECT_ID="google-project-id"",
1635
+ "export DEPLOY_CLOUD_RUN_REGION="europe-west6"",
1636
+ "export GCLOUD_DEPLOY_credentialsKey="$CL_stage_web_GCLOUD_DEPLOY_credentialsKey"",
1637
+ "export GCLOUD_RUN_canonicalHostSuffix="$CL_stage_web_GCLOUD_RUN_canonicalHostSuffix"",
1638
+ "export _ALL_ENV_VAR_KEYS="[\\"ENV_SHORT\\",\\"APP_DIR\\",\\"ENV_TYPE\\",\\"BUILD_INFO_BUILD_ID\\",\\"BUILD_INFO_BUILD_TIME\\",\\"BUILD_INFO_CURRENT_VERSION\\",\\"HOST\\",\\"ROOT_URL\\",\\"HOST_INTERNAL\\",\\"HOST_CANONICAL\\",\\"ROOT_URL_INTERNAL\\",\\"DEPLOY_CLOUD_RUN_PROJECT_ID\\",\\"DEPLOY_CLOUD_RUN_REGION\\",\\"GCLOUD_DEPLOY_credentialsKey\\",\\"GCLOUD_RUN_canonicalHostSuffix\\"]"",
1639
+ "export DOCKER_REGISTRY="europe-west6-docker.pkg.dev"",
1640
+ "export DOCKER_IMAGE="europe-west6-docker.pkg.dev/google-project-id/catladder-deploy/pan-test-app/stage/web"",
1641
+ "export DOCKER_CACHE_IMAGE="europe-west6-docker.pkg.dev/google-project-id/catladder-deploy/pan-test-app/caches/web"",
1642
+ "export DOCKER_IMAGE_TAG="$CI_COMMIT_SHA"",
1643
+ "export CLOUDSDK_CORE_DISABLE_PROMPTS="1"",
1644
+ "echo -e "\\e[0Ksection_end:$(date +%s):injectvars\\r\\e[0K"",
1554
1645
  "echo -e "\\e[0Ksection_start:$(date +%s):prepare[collapsed=true]\\r\\e[0KPrepare..."",
1555
1646
  "gcloud auth activate-service-account --key-file=<(echo "$CL_stage_web_GCLOUD_DEPLOY_credentialsKey")",
1556
1647
  "export GCLOUD_PROJECT_NUMBER=$(gcloud projects describe google-project-id --format="value(projectNumber)")",
1557
1648
  "echo "GCLOUD_PROJECT_NUMBER: $GCLOUD_PROJECT_NUMBER"",
1558
1649
  "echo -e "\\e[0Ksection_end:$(date +%s):prepare\\r\\e[0K"",
1650
+ "echo -e "\\e[0Ksection_start:$(date +%s):writeenvvars[collapsed=true]\\r\\e[0KWrite env vars to file"",
1651
+ "cat > ____envvars.yaml <<EOF
1652
+ ENV_SHORT: |-
1653
+ stage
1654
+ APP_DIR: |-
1655
+ web
1656
+ ENV_TYPE: |-
1657
+ stage
1658
+ BUILD_INFO_BUILD_ID: |-
1659
+ $(printf %s "$(git describe --tags 2>/dev/null || git rev-parse HEAD)" | sed 's/^/ /')
1660
+ BUILD_INFO_BUILD_TIME: |-
1661
+ $(printf %s "$CI_JOB_STARTED_AT" | sed 's/^/ /')
1662
+ BUILD_INFO_CURRENT_VERSION: |-
1663
+ $(printf %s "$(tag=$(git ls-remote origin "refs/tags/v*[0-9]" 2>/dev/null | cut -f 2- | sort -V | tail -1 | sed 's/refs\\/tags\\///'); [ -z "$tag" ] && echo "v0.0.0" || echo "$tag")" | sed 's/^/ /')
1664
+ HOST: |-
1665
+ $(printf %s "$(printf %s "pan-test-app-stage-web-$CL_stage_web_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')" | sed 's/^/ /')
1666
+ ROOT_URL: |-
1667
+ $(printf %s "https://$(printf %s "pan-test-app-stage-web-$CL_stage_web_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')" | sed 's/^/ /')
1668
+ HOST_INTERNAL: |-
1669
+ $(printf %s "$(printf %s "pan-test-app-stage-web-$CL_stage_web_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')" | sed 's/^/ /')
1670
+ HOST_CANONICAL: |-
1671
+ $(printf %s "$(printf %s "pan-test-app-stage-web-$CL_stage_web_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')" | sed 's/^/ /')
1672
+ ROOT_URL_INTERNAL: |-
1673
+ $(printf %s "https://$(printf %s "pan-test-app-stage-web-$CL_stage_web_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')" | sed 's/^/ /')
1674
+ DEPLOY_CLOUD_RUN_PROJECT_ID: |-
1675
+ google-project-id
1676
+ DEPLOY_CLOUD_RUN_REGION: |-
1677
+ europe-west6
1678
+ GCLOUD_RUN_canonicalHostSuffix: |-
1679
+ $(printf %s "$CL_stage_web_GCLOUD_RUN_canonicalHostSuffix" | sed 's/^/ /')
1680
+ _ALL_ENV_VAR_KEYS: |-
1681
+ ["ENV_SHORT","APP_DIR","ENV_TYPE","BUILD_INFO_BUILD_ID","BUILD_INFO_BUILD_TIME","BUILD_INFO_CURRENT_VERSION","HOST","ROOT_URL","HOST_INTERNAL","HOST_CANONICAL","ROOT_URL_INTERNAL","DEPLOY_CLOUD_RUN_PROJECT_ID","DEPLOY_CLOUD_RUN_REGION","GCLOUD_DEPLOY_credentialsKey","GCLOUD_RUN_canonicalHostSuffix"]
1682
+
1683
+ EOF
1684
+ ",
1685
+ "echo -e "\\e[0Ksection_end:$(date +%s):writeenvvars\\r\\e[0K"",
1559
1686
  "echo -e "\\e[0Ksection_start:$(date +%s):deploy[collapsed=true]\\r\\e[0KDeploy to cloud run"",
1560
- "echo "$ENV_VARS" > ____envvars.yaml",
1561
1687
  "gcloud run deploy pan-test-app-stage-web --command="node,main.js" --image=europe-west6-docker.pkg.dev/google-project-id/catladder-deploy/pan-test-app/stage/web:$DOCKER_IMAGE_TAG --project=google-project-id --region=europe-west6 --labels=customer-name=pan,component-name=web,app-name=test-app,env-type=stage,env-name=stage,build-type=meteor,cloud-run-service-name=pan-test-app-stage-web --env-vars-file=____envvars.yaml --min-instances=0 --max-instances=100 --cpu-throttling --allow-unauthenticated --ingress=all --cpu-boost",
1562
1688
  "gcloud run deploy pan-test-app-stage-web-worker --command="/bin/sh -c,BACKGROUND_JOBS_ENABLED=1 node main.js" --image=europe-west6-docker.pkg.dev/google-project-id/catladder-deploy/pan-test-app/stage/web:$DOCKER_IMAGE_TAG --project=google-project-id --region=europe-west6 --labels=customer-name=pan,component-name=web,app-name=test-app,env-type=stage,env-name=stage,build-type=meteor,cloud-run-service-name=pan-test-app-stage-web-worker --env-vars-file=____envvars.yaml --min-instances=1 --max-instances=1 --no-cpu-throttling --allow-unauthenticated --ingress=all --cpu-boost",
1563
1689
  "echo -e "\\e[0Ksection_end:$(date +%s):deploy\\r\\e[0K"",
@@ -1567,69 +1693,27 @@ _ALL_ENV_VAR_KEYS: '["ENV_SHORT","APP_DIR","ENV_TYPE","BUILD_INFO_ID","BUILD_INF
1567
1693
  "gcloud artifacts docker images list europe-west6-docker.pkg.dev/google-project-id/catladder-deploy/pan-test-app/caches/web --sort-by=~CREATE_TIME --format="value(version)" | tail -n +2 | while read -r version; do gcloud artifacts docker images delete europe-west6-docker.pkg.dev/google-project-id/catladder-deploy/pan-test-app/caches/web@$version --quiet --delete-tags; done",
1568
1694
  "echo -e "\\e[0Ksection_end:$(date +%s):cleanup\\r\\e[0K"",
1569
1695
  "echo Uploading SBOM to Dependency Track",
1570
- "/dtrackuploader https://dep.panter.swiss/ "$DT_KEY_PROD" upload "pan-test-app/web" "https://pan-test-app-stage-web-unknown-host.example.com" "__sbom.json" vex.json || true",
1571
- ],
1572
- "services": [
1573
- {
1574
- "command": [
1575
- "--tls=false",
1576
- ],
1577
- "name": "docker:24.0.6-dind",
1578
- },
1696
+ "/dtrackuploader https://dep.panter.swiss/ "$DT_KEY_PROD" upload "pan-test-app/web" "https://$(printf %s "pan-test-app-stage-web-$CL_stage_web_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')" "__sbom.json" vex.json || true",
1697
+ "echo "CL_GITLAB_ENVIRONMENT_URL=https://$(printf %s "pan-test-app-stage-web-$CL_stage_web_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')" >> gitlab_environment.env",
1579
1698
  ],
1580
1699
  "stage": "deploy stage",
1581
1700
  "variables": {
1582
- "APP_DIR": "web",
1583
- "BUILD_INFO_BUILD_TIME": "01-01-2023 12:13:14",
1584
- "BUILD_INFO_CURRENT_VERSION": "3.2.1",
1585
- "BUILD_INFO_ID": "some-id",
1586
- "CLOUDSDK_CORE_DISABLE_PROMPTS": "1",
1587
- "DEPLOY_CLOUD_RUN_PROJECT_ID": "google-project-id",
1588
- "DEPLOY_CLOUD_RUN_REGION": "europe-west6",
1589
- "DOCKER_BUILDKIT": "1",
1590
- "DOCKER_CACHE_IMAGE": "europe-west6-docker.pkg.dev/google-project-id/catladder-deploy/pan-test-app/caches/web",
1591
- "DOCKER_DRIVER": "overlay2",
1592
- "DOCKER_HOST": "tcp://0.0.0.0:2375",
1593
- "DOCKER_IMAGE": "europe-west6-docker.pkg.dev/google-project-id/catladder-deploy/pan-test-app/stage/web",
1594
- "DOCKER_IMAGE_TAG": "$CI_COMMIT_SHA",
1595
- "DOCKER_REGISTRY": "europe-west6-docker.pkg.dev",
1596
- "DOCKER_TLS_CERTDIR": "",
1597
- "ENV_SHORT": "stage",
1598
- "ENV_TYPE": "stage",
1599
- "ENV_VARS": "ENV_SHORT: 'stage'
1600
- APP_DIR: 'web'
1601
- ENV_TYPE: 'stage'
1602
- BUILD_INFO_ID: 'some-id'
1603
- BUILD_INFO_BUILD_TIME: '01-01-2023 12:13:14'
1604
- BUILD_INFO_CURRENT_VERSION: '3.2.1'
1605
- HOST: 'pan-test-app-stage-web-unknown-host.example.com'
1606
- ROOT_URL: 'https://pan-test-app-stage-web-unknown-host.example.com'
1607
- HOST_CANONICAL: 'pan-test-app-stage-web-unknown-host.example.com'
1608
- ROOT_URL_INTERNAL: 'https://pan-test-app-stage-web-unknown-host.example.com'
1609
- HOST_INTERNAL: 'pan-test-app-stage-web-unknown-host.example.com'
1610
- DEPLOY_CLOUD_RUN_PROJECT_ID: 'google-project-id'
1611
- DEPLOY_CLOUD_RUN_REGION: 'europe-west6'
1612
- GCLOUD_RUN_canonicalHostSuffix: '$CL_stage_web_GCLOUD_RUN_canonicalHostSuffix'
1613
- _ALL_ENV_VAR_KEYS: '["ENV_SHORT","APP_DIR","ENV_TYPE","BUILD_INFO_ID","BUILD_INFO_BUILD_TIME","BUILD_INFO_CURRENT_VERSION","HOST","ROOT_URL","HOST_CANONICAL","ROOT_URL_INTERNAL","HOST_INTERNAL","DEPLOY_CLOUD_RUN_PROJECT_ID","DEPLOY_CLOUD_RUN_REGION","GCLOUD_DEPLOY_credentialsKey","GCLOUD_RUN_canonicalHostSuffix"]'
1614
- ",
1615
- "GCLOUD_DEPLOY_credentialsKey": "$CL_stage_web_GCLOUD_DEPLOY_credentialsKey",
1616
- "GCLOUD_RUN_canonicalHostSuffix": "$CL_stage_web_GCLOUD_RUN_canonicalHostSuffix",
1617
- "HOST": "pan-test-app-stage-web-unknown-host.example.com",
1618
- "HOST_CANONICAL": "pan-test-app-stage-web-unknown-host.example.com",
1619
- "HOST_INTERNAL": "pan-test-app-stage-web-unknown-host.example.com",
1620
1701
  "KUBERNETES_CPU_REQUEST": "0.5",
1621
1702
  "KUBERNETES_MEMORY_LIMIT": "400Mi",
1622
1703
  "KUBERNETES_MEMORY_REQUEST": "200Mi",
1623
- "ROOT_URL": "https://pan-test-app-stage-web-unknown-host.example.com",
1624
- "ROOT_URL_INTERNAL": "https://pan-test-app-stage-web-unknown-host.example.com",
1625
- "_ALL_ENV_VAR_KEYS": "["ENV_SHORT","APP_DIR","ENV_TYPE","BUILD_INFO_ID","BUILD_INFO_BUILD_TIME","BUILD_INFO_CURRENT_VERSION","HOST","ROOT_URL","HOST_CANONICAL","ROOT_URL_INTERNAL","HOST_INTERNAL","DEPLOY_CLOUD_RUN_PROJECT_ID","DEPLOY_CLOUD_RUN_REGION","GCLOUD_DEPLOY_credentialsKey","GCLOUD_RUN_canonicalHostSuffix"]",
1626
1704
  },
1627
1705
  },
1628
1706
  "web 🛑 Stop ⚠️ | prod ": {
1707
+ "allow_failure": true,
1708
+ "artifacts": {
1709
+ "reports": {
1710
+ "dotenv": "gitlab_environment.env",
1711
+ },
1712
+ },
1629
1713
  "environment": {
1630
1714
  "action": "stop",
1631
1715
  "name": "prod/web",
1632
- "url": "https://pan-test-app-prod-web-unknown-host.example.com",
1716
+ "url": "$CL_GITLAB_ENVIRONMENT_URL",
1633
1717
  },
1634
1718
  "image": "path/to/docker/gcloud:the-version",
1635
1719
  "interruptible": true,
@@ -1643,16 +1727,17 @@ _ALL_ENV_VAR_KEYS: '["ENV_SHORT","APP_DIR","ENV_TYPE","BUILD_INFO_ID","BUILD_INF
1643
1727
  },
1644
1728
  "rules": [
1645
1729
  {
1646
- "allow_failure": true,
1647
1730
  "if": "$CI_COMMIT_BRANCH =~ /^[0-9]+\\.([0-9]+|x)\\.x$/",
1648
1731
  "when": "on_success",
1649
1732
  },
1650
1733
  {
1651
- "allow_failure": true,
1652
1734
  "when": "manual",
1653
1735
  },
1654
1736
  ],
1655
1737
  "script": [
1738
+ "echo -e "\\e[0Ksection_start:$(date +%s):injectvars[collapsed=true]\\r\\e[0KInjecting variables"",
1739
+ "export CLOUDSDK_CORE_DISABLE_PROMPTS="1"",
1740
+ "echo -e "\\e[0Ksection_end:$(date +%s):injectvars\\r\\e[0K"",
1656
1741
  "set +e",
1657
1742
  "gcloud auth activate-service-account --key-file=<(echo "$CL_prod_web_GCLOUD_DEPLOY_credentialsKey")",
1658
1743
  "gcloud run services delete pan-test-app-prod-web --project=google-project-id --region=europe-west6",
@@ -1660,12 +1745,12 @@ _ALL_ENV_VAR_KEYS: '["ENV_SHORT","APP_DIR","ENV_TYPE","BUILD_INFO_ID","BUILD_INF
1660
1745
  "gcloud artifacts docker images delete europe-west6-docker.pkg.dev/google-project-id/catladder-deploy/pan-test-app/prod/web --quiet --delete-tags",
1661
1746
  "gcloud artifacts docker images list europe-west6-docker.pkg.dev/google-project-id/catladder-deploy/pan-test-app/caches/web --sort-by=~CREATE_TIME --format="value(version)" | tail -n +2 | while read -r version; do gcloud artifacts docker images delete europe-west6-docker.pkg.dev/google-project-id/catladder-deploy/pan-test-app/caches/web@$version --quiet --delete-tags; done",
1662
1747
  "echo Disabling component in Dependency Track",
1663
- "/dtrackuploader https://dep.panter.swiss/ "$DT_KEY_PROD" disable "pan-test-app/web" "https://pan-test-app-prod-web-unknown-host.example.com" || true",
1748
+ "/dtrackuploader https://dep.panter.swiss/ "$DT_KEY_PROD" disable "pan-test-app/web" "https://$(printf %s "pan-test-app-prod-web-$CL_prod_web_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')" || true",
1664
1749
  "set -e",
1750
+ "echo "CL_GITLAB_ENVIRONMENT_URL=https://$(printf %s "pan-test-app-prod-web-$CL_prod_web_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')" >> gitlab_environment.env",
1665
1751
  ],
1666
1752
  "stage": "stop prod",
1667
1753
  "variables": {
1668
- "CLOUDSDK_CORE_DISABLE_PROMPTS": "1",
1669
1754
  "GIT_STRATEGY": "none",
1670
1755
  "KUBERNETES_CPU_REQUEST": "0.5",
1671
1756
  "KUBERNETES_MEMORY_LIMIT": "400Mi",
@@ -1673,10 +1758,16 @@ _ALL_ENV_VAR_KEYS: '["ENV_SHORT","APP_DIR","ENV_TYPE","BUILD_INFO_ID","BUILD_INF
1673
1758
  },
1674
1759
  },
1675
1760
  "web 🛑 Stop ⚠️ | stage ": {
1761
+ "allow_failure": true,
1762
+ "artifacts": {
1763
+ "reports": {
1764
+ "dotenv": "gitlab_environment.env",
1765
+ },
1766
+ },
1676
1767
  "environment": {
1677
1768
  "action": "stop",
1678
1769
  "name": "stage/web",
1679
- "url": "https://pan-test-app-stage-web-unknown-host.example.com",
1770
+ "url": "$CL_GITLAB_ENVIRONMENT_URL",
1680
1771
  },
1681
1772
  "image": "path/to/docker/gcloud:the-version",
1682
1773
  "interruptible": true,
@@ -1690,16 +1781,17 @@ _ALL_ENV_VAR_KEYS: '["ENV_SHORT","APP_DIR","ENV_TYPE","BUILD_INFO_ID","BUILD_INF
1690
1781
  },
1691
1782
  "rules": [
1692
1783
  {
1693
- "allow_failure": true,
1694
1784
  "if": "$CI_COMMIT_BRANCH =~ /^[0-9]+\\.([0-9]+|x)\\.x$/",
1695
1785
  "when": "on_success",
1696
1786
  },
1697
1787
  {
1698
- "allow_failure": true,
1699
1788
  "when": "manual",
1700
1789
  },
1701
1790
  ],
1702
1791
  "script": [
1792
+ "echo -e "\\e[0Ksection_start:$(date +%s):injectvars[collapsed=true]\\r\\e[0KInjecting variables"",
1793
+ "export CLOUDSDK_CORE_DISABLE_PROMPTS="1"",
1794
+ "echo -e "\\e[0Ksection_end:$(date +%s):injectvars\\r\\e[0K"",
1703
1795
  "set +e",
1704
1796
  "gcloud auth activate-service-account --key-file=<(echo "$CL_stage_web_GCLOUD_DEPLOY_credentialsKey")",
1705
1797
  "gcloud run services delete pan-test-app-stage-web --project=google-project-id --region=europe-west6",
@@ -1707,12 +1799,12 @@ _ALL_ENV_VAR_KEYS: '["ENV_SHORT","APP_DIR","ENV_TYPE","BUILD_INFO_ID","BUILD_INF
1707
1799
  "gcloud artifacts docker images delete europe-west6-docker.pkg.dev/google-project-id/catladder-deploy/pan-test-app/stage/web --quiet --delete-tags",
1708
1800
  "gcloud artifacts docker images list europe-west6-docker.pkg.dev/google-project-id/catladder-deploy/pan-test-app/caches/web --sort-by=~CREATE_TIME --format="value(version)" | tail -n +2 | while read -r version; do gcloud artifacts docker images delete europe-west6-docker.pkg.dev/google-project-id/catladder-deploy/pan-test-app/caches/web@$version --quiet --delete-tags; done",
1709
1801
  "echo Disabling component in Dependency Track",
1710
- "/dtrackuploader https://dep.panter.swiss/ "$DT_KEY_PROD" disable "pan-test-app/web" "https://pan-test-app-stage-web-unknown-host.example.com" || true",
1802
+ "/dtrackuploader https://dep.panter.swiss/ "$DT_KEY_PROD" disable "pan-test-app/web" "https://$(printf %s "pan-test-app-stage-web-$CL_stage_web_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')" || true",
1711
1803
  "set -e",
1804
+ "echo "CL_GITLAB_ENVIRONMENT_URL=https://$(printf %s "pan-test-app-stage-web-$CL_stage_web_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')" >> gitlab_environment.env",
1712
1805
  ],
1713
1806
  "stage": "stop stage",
1714
1807
  "variables": {
1715
- "CLOUDSDK_CORE_DISABLE_PROMPTS": "1",
1716
1808
  "GIT_STRATEGY": "none",
1717
1809
  "KUBERNETES_CPU_REQUEST": "0.5",
1718
1810
  "KUBERNETES_MEMORY_LIMIT": "400Mi",
@@ -1737,6 +1829,8 @@ _ALL_ENV_VAR_KEYS: '["ENV_SHORT","APP_DIR","ENV_TYPE","BUILD_INFO_ID","BUILD_INF
1737
1829
  ],
1738
1830
  },
1739
1831
  "script": [
1832
+ "echo -e "\\e[0Ksection_start:$(date +%s):injectvars[collapsed=true]\\r\\e[0KInjecting variables"",
1833
+ "echo -e "\\e[0Ksection_end:$(date +%s):injectvars\\r\\e[0K"",
1740
1834
  "trivy fs --quiet --format cyclonedx --output "__sbom.json" web",
1741
1835
  ],
1742
1836
  "stage": "build",
@@ -1760,6 +1854,8 @@ _ALL_ENV_VAR_KEYS: '["ENV_SHORT","APP_DIR","ENV_TYPE","BUILD_INFO_ID","BUILD_INF
1760
1854
  ],
1761
1855
  },
1762
1856
  "script": [
1857
+ "echo -e "\\e[0Ksection_start:$(date +%s):injectvars[collapsed=true]\\r\\e[0KInjecting variables"",
1858
+ "echo -e "\\e[0Ksection_end:$(date +%s):injectvars\\r\\e[0K"",
1763
1859
  "trivy fs --quiet --format cyclonedx --output "__sbom.json" web",
1764
1860
  ],
1765
1861
  "stage": "build",
@@ -1812,7 +1908,7 @@ _ALL_ENV_VAR_KEYS: '["ENV_SHORT","APP_DIR","ENV_TYPE","BUILD_INFO_ID","BUILD_INF
1812
1908
  ],
1813
1909
  "variables": {
1814
1910
  "FF_USE_FASTZIP": "true",
1815
- "GIT_DEPTH": 1,
1911
+ "GIT_DEPTH": "1",
1816
1912
  },
1817
1913
  "workflow": {
1818
1914
  "rules": [