@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
@@ -28,7 +28,25 @@ exports[`matches snapshot 1`] = `
28
28
  ],
29
29
  },
30
30
  "script": [
31
- "echo '{"id":"some-id","time":"01-01-2023 12:13:14"}' > www/__build_info.json",
31
+ "echo -e "\\e[0Ksection_start:$(date +%s):injectvars[collapsed=true]\\r\\e[0KInjecting variables"",
32
+ "export ENV_SHORT="dev"",
33
+ "export APP_DIR="www"",
34
+ "export ENV_TYPE="dev"",
35
+ "export BUILD_INFO_BUILD_ID="$(git describe --tags 2>/dev/null || git rev-parse HEAD)"",
36
+ "export BUILD_INFO_BUILD_TIME="$CI_JOB_STARTED_AT"",
37
+ "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")"",
38
+ "export HOST="$(printf %s "pan-test-app-dev-www-$CL_dev_www_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')"",
39
+ "export ROOT_URL="https://$(printf %s "pan-test-app-dev-www-$CL_dev_www_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')"",
40
+ "export HOST_INTERNAL="$(printf %s "pan-test-app-dev-www-$CL_dev_www_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')"",
41
+ "export HOST_CANONICAL="$(printf %s "pan-test-app-dev-www-$CL_dev_www_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')"",
42
+ "export ROOT_URL_INTERNAL="https://$(printf %s "pan-test-app-dev-www-$CL_dev_www_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')"",
43
+ "export DEPLOY_CLOUD_RUN_PROJECT_ID="asdf"",
44
+ "export DEPLOY_CLOUD_RUN_REGION="asia-east1"",
45
+ "export GCLOUD_DEPLOY_credentialsKey="$CL_dev_www_GCLOUD_DEPLOY_credentialsKey"",
46
+ "export GCLOUD_RUN_canonicalHostSuffix="$CL_dev_www_GCLOUD_RUN_canonicalHostSuffix"",
47
+ "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\\"]"",
48
+ "echo -e "\\e[0Ksection_end:$(date +%s):injectvars\\r\\e[0K"",
49
+ "echo '{"id":"$(git describe --tags 2>/dev/null || git rev-parse HEAD)","time":"$CI_JOB_STARTED_AT"}' > www/__build_info.json",
32
50
  "echo -e "\\e[0Ksection_start:$(date +%s):nodeinstall[collapsed=true]\\r\\e[0KEnsure node version"",
33
51
  "if [ -f ~/.nvm/nvm.sh ]; then source ~/.nvm/nvm.sh; fi",
34
52
  "if command -v nvm &> /dev/null && [ -f ./.nvmrc ]; then nvm install; fi",
@@ -37,25 +55,9 @@ exports[`matches snapshot 1`] = `
37
55
  ],
38
56
  "stage": "build",
39
57
  "variables": {
40
- "APP_DIR": "www",
41
- "BUILD_INFO_BUILD_TIME": "01-01-2023 12:13:14",
42
- "BUILD_INFO_CURRENT_VERSION": "3.2.1",
43
- "BUILD_INFO_ID": "some-id",
44
- "DEPLOY_CLOUD_RUN_PROJECT_ID": "asdf",
45
- "DEPLOY_CLOUD_RUN_REGION": "asia-east1",
46
- "ENV_SHORT": "dev",
47
- "ENV_TYPE": "dev",
48
- "GCLOUD_DEPLOY_credentialsKey": "$CL_dev_www_GCLOUD_DEPLOY_credentialsKey",
49
- "GCLOUD_RUN_canonicalHostSuffix": "$CL_dev_www_GCLOUD_RUN_canonicalHostSuffix",
50
- "HOST": "pan-test-app-dev-www-unknown-host.example.com",
51
- "HOST_CANONICAL": "pan-test-app-dev-www-unknown-host.example.com",
52
- "HOST_INTERNAL": "pan-test-app-dev-www-unknown-host.example.com",
53
58
  "KUBERNETES_CPU_REQUEST": "0.5",
54
59
  "KUBERNETES_MEMORY_LIMIT": "4Gi",
55
60
  "KUBERNETES_MEMORY_REQUEST": "2Gi",
56
- "ROOT_URL": "https://pan-test-app-dev-www-unknown-host.example.com",
57
- "ROOT_URL_INTERNAL": "https://pan-test-app-dev-www-unknown-host.example.com",
58
- "_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"]",
59
61
  },
60
62
  },
61
63
  "www 🔨 docker | dev ": {
@@ -72,6 +74,14 @@ exports[`matches snapshot 1`] = `
72
74
  ],
73
75
  },
74
76
  "script": [
77
+ "echo -e "\\e[0Ksection_start:$(date +%s):injectvars[collapsed=true]\\r\\e[0KInjecting variables"",
78
+ "export APP_DIR="www"",
79
+ "export DOCKER_DIR="."",
80
+ "export DOCKER_REGISTRY="asia-east1-docker.pkg.dev"",
81
+ "export DOCKER_IMAGE="asia-east1-docker.pkg.dev/asdf/catladder-deploy/pan-test-app/dev/www"",
82
+ "export DOCKER_CACHE_IMAGE="asia-east1-docker.pkg.dev/asdf/catladder-deploy/pan-test-app/caches/www"",
83
+ "export DOCKER_IMAGE_TAG="$CI_COMMIT_SHA"",
84
+ "echo -e "\\e[0Ksection_end:$(date +%s):injectvars\\r\\e[0K"",
75
85
  "ensureNginxDockerfile",
76
86
  "echo -e "\\e[0Ksection_start:$(date +%s):docker-login[collapsed=true]\\r\\e[0KDocker Login"",
77
87
  "gcloud auth activate-service-account --key-file=<(echo "$CL_dev_www_GCLOUD_DEPLOY_credentialsKey")",
@@ -96,17 +106,9 @@ exports[`matches snapshot 1`] = `
96
106
  ],
97
107
  "stage": "build",
98
108
  "variables": {
99
- "APP_DIR": "www",
100
- "DOCKERFILE_ADDITIONS": undefined,
101
- "DOCKERFILE_ADDITIONS_END": undefined,
102
109
  "DOCKER_BUILDKIT": "1",
103
- "DOCKER_CACHE_IMAGE": "asia-east1-docker.pkg.dev/asdf/catladder-deploy/pan-test-app/caches/www",
104
- "DOCKER_DIR": ".",
105
110
  "DOCKER_DRIVER": "overlay2",
106
111
  "DOCKER_HOST": "tcp://0.0.0.0:2375",
107
- "DOCKER_IMAGE": "asia-east1-docker.pkg.dev/asdf/catladder-deploy/pan-test-app/dev/www",
108
- "DOCKER_IMAGE_TAG": "$CI_COMMIT_SHA",
109
- "DOCKER_REGISTRY": "asia-east1-docker.pkg.dev",
110
112
  "DOCKER_TLS_CERTDIR": "",
111
113
  "KUBERNETES_CPU_REQUEST": "0.5",
112
114
  "KUBERNETES_MEMORY_LIMIT": "2Gi",
@@ -116,15 +118,15 @@ exports[`matches snapshot 1`] = `
116
118
  "www 🚀 Deploy | dev ": {
117
119
  "allow_failure": false,
118
120
  "artifacts": {
119
- "paths": [
120
- "____envvars.yaml",
121
- ],
121
+ "reports": {
122
+ "dotenv": "gitlab_environment.env",
123
+ },
122
124
  },
123
125
  "environment": {
124
126
  "auto_stop_in": "4 weeks",
125
127
  "name": "dev/www",
126
128
  "on_stop": "www 🛑 Stop ⚠️ | dev ",
127
- "url": "https://pan-test-app-dev-www-unknown-host.example.com",
129
+ "url": "$CL_GITLAB_ENVIRONMENT_URL",
128
130
  },
129
131
  "image": "path/to/docker/gcloud:the-version",
130
132
  "interruptible": true,
@@ -155,13 +157,71 @@ exports[`matches snapshot 1`] = `
155
157
  },
156
158
  ],
157
159
  "script": [
160
+ "echo -e "\\e[0Ksection_start:$(date +%s):injectvars[collapsed=true]\\r\\e[0KInjecting variables"",
161
+ "export ENV_SHORT="dev"",
162
+ "export APP_DIR="www"",
163
+ "export ENV_TYPE="dev"",
164
+ "export BUILD_INFO_BUILD_ID="$(git describe --tags 2>/dev/null || git rev-parse HEAD)"",
165
+ "export BUILD_INFO_BUILD_TIME="$CI_JOB_STARTED_AT"",
166
+ "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")"",
167
+ "export HOST="$(printf %s "pan-test-app-dev-www-$CL_dev_www_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')"",
168
+ "export ROOT_URL="https://$(printf %s "pan-test-app-dev-www-$CL_dev_www_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')"",
169
+ "export HOST_INTERNAL="$(printf %s "pan-test-app-dev-www-$CL_dev_www_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')"",
170
+ "export HOST_CANONICAL="$(printf %s "pan-test-app-dev-www-$CL_dev_www_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')"",
171
+ "export ROOT_URL_INTERNAL="https://$(printf %s "pan-test-app-dev-www-$CL_dev_www_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')"",
172
+ "export DEPLOY_CLOUD_RUN_PROJECT_ID="asdf"",
173
+ "export DEPLOY_CLOUD_RUN_REGION="asia-east1"",
174
+ "export GCLOUD_DEPLOY_credentialsKey="$CL_dev_www_GCLOUD_DEPLOY_credentialsKey"",
175
+ "export GCLOUD_RUN_canonicalHostSuffix="$CL_dev_www_GCLOUD_RUN_canonicalHostSuffix"",
176
+ "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\\"]"",
177
+ "export DOCKER_REGISTRY="asia-east1-docker.pkg.dev"",
178
+ "export DOCKER_IMAGE="asia-east1-docker.pkg.dev/asdf/catladder-deploy/pan-test-app/dev/www"",
179
+ "export DOCKER_CACHE_IMAGE="asia-east1-docker.pkg.dev/asdf/catladder-deploy/pan-test-app/caches/www"",
180
+ "export DOCKER_IMAGE_TAG="$CI_COMMIT_SHA"",
181
+ "export CLOUDSDK_CORE_DISABLE_PROMPTS="1"",
182
+ "echo -e "\\e[0Ksection_end:$(date +%s):injectvars\\r\\e[0K"",
158
183
  "echo -e "\\e[0Ksection_start:$(date +%s):prepare[collapsed=true]\\r\\e[0KPrepare..."",
159
184
  "gcloud auth activate-service-account --key-file=<(echo "$CL_dev_www_GCLOUD_DEPLOY_credentialsKey")",
160
185
  "export GCLOUD_PROJECT_NUMBER=$(gcloud projects describe asdf --format="value(projectNumber)")",
161
186
  "echo "GCLOUD_PROJECT_NUMBER: $GCLOUD_PROJECT_NUMBER"",
162
187
  "echo -e "\\e[0Ksection_end:$(date +%s):prepare\\r\\e[0K"",
188
+ "echo -e "\\e[0Ksection_start:$(date +%s):writeenvvars[collapsed=true]\\r\\e[0KWrite env vars to file"",
189
+ "cat > ____envvars.yaml <<EOF
190
+ ENV_SHORT: |-
191
+ dev
192
+ APP_DIR: |-
193
+ www
194
+ ENV_TYPE: |-
195
+ dev
196
+ BUILD_INFO_BUILD_ID: |-
197
+ $(printf %s "$(git describe --tags 2>/dev/null || git rev-parse HEAD)" | sed 's/^/ /')
198
+ BUILD_INFO_BUILD_TIME: |-
199
+ $(printf %s "$CI_JOB_STARTED_AT" | sed 's/^/ /')
200
+ BUILD_INFO_CURRENT_VERSION: |-
201
+ $(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/^/ /')
202
+ HOST: |-
203
+ $(printf %s "$(printf %s "pan-test-app-dev-www-$CL_dev_www_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')" | sed 's/^/ /')
204
+ ROOT_URL: |-
205
+ $(printf %s "https://$(printf %s "pan-test-app-dev-www-$CL_dev_www_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')" | sed 's/^/ /')
206
+ HOST_INTERNAL: |-
207
+ $(printf %s "$(printf %s "pan-test-app-dev-www-$CL_dev_www_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')" | sed 's/^/ /')
208
+ HOST_CANONICAL: |-
209
+ $(printf %s "$(printf %s "pan-test-app-dev-www-$CL_dev_www_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')" | sed 's/^/ /')
210
+ ROOT_URL_INTERNAL: |-
211
+ $(printf %s "https://$(printf %s "pan-test-app-dev-www-$CL_dev_www_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')" | sed 's/^/ /')
212
+ DEPLOY_CLOUD_RUN_PROJECT_ID: |-
213
+ asdf
214
+ DEPLOY_CLOUD_RUN_REGION: |-
215
+ asia-east1
216
+ GCLOUD_RUN_canonicalHostSuffix: |-
217
+ $(printf %s "$CL_dev_www_GCLOUD_RUN_canonicalHostSuffix" | sed 's/^/ /')
218
+ _ALL_ENV_VAR_KEYS: |-
219
+ ["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"]
220
+
221
+ EOF
222
+ ",
223
+ "echo -e "\\e[0Ksection_end:$(date +%s):writeenvvars\\r\\e[0K"",
163
224
  "echo -e "\\e[0Ksection_start:$(date +%s):deploy[collapsed=true]\\r\\e[0KDeploy to cloud run"",
164
- "echo "$ENV_VARS" > ____envvars.yaml",
165
225
  "gcloud run deploy pan-test-app-dev-www --command="" --image=asia-east1-docker.pkg.dev/asdf/catladder-deploy/pan-test-app/dev/www:$DOCKER_IMAGE_TAG --project=asdf --region=asia-east1 --labels=customer-name=pan,component-name=www,app-name=test-app,env-type=dev,env-name=dev,build-type=custom,cloud-run-service-name=pan-test-app-dev-www --env-vars-file=____envvars.yaml --min-instances=0 --max-instances=100 --cpu-throttling --allow-unauthenticated --ingress=all --cpu-boost",
166
226
  "echo -e "\\e[0Ksection_end:$(date +%s):deploy\\r\\e[0K"",
167
227
  "echo -e "\\e[0Ksection_start:$(date +%s):cleanup[collapsed=true]\\r\\e[0KCleanup"",
@@ -170,69 +230,27 @@ exports[`matches snapshot 1`] = `
170
230
  "gcloud artifacts docker images list asia-east1-docker.pkg.dev/asdf/catladder-deploy/pan-test-app/caches/www --sort-by=~CREATE_TIME --format="value(version)" | tail -n +2 | while read -r version; do gcloud artifacts docker images delete asia-east1-docker.pkg.dev/asdf/catladder-deploy/pan-test-app/caches/www@$version --quiet --delete-tags; done",
171
231
  "echo -e "\\e[0Ksection_end:$(date +%s):cleanup\\r\\e[0K"",
172
232
  "echo Uploading SBOM to Dependency Track",
173
- "/dtrackuploader https://dep.panter.swiss/ "$DT_KEY_PROD" upload "pan-test-app/www" "https://pan-test-app-dev-www-unknown-host.example.com" "__sbom.json" vex.json || true",
174
- ],
175
- "services": [
176
- {
177
- "command": [
178
- "--tls=false",
179
- ],
180
- "name": "docker:24.0.6-dind",
181
- },
233
+ "/dtrackuploader https://dep.panter.swiss/ "$DT_KEY_PROD" upload "pan-test-app/www" "https://$(printf %s "pan-test-app-dev-www-$CL_dev_www_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')" "__sbom.json" vex.json || true",
234
+ "echo "CL_GITLAB_ENVIRONMENT_URL=https://$(printf %s "pan-test-app-dev-www-$CL_dev_www_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')" >> gitlab_environment.env",
182
235
  ],
183
236
  "stage": "deploy dev",
184
237
  "variables": {
185
- "APP_DIR": "www",
186
- "BUILD_INFO_BUILD_TIME": "01-01-2023 12:13:14",
187
- "BUILD_INFO_CURRENT_VERSION": "3.2.1",
188
- "BUILD_INFO_ID": "some-id",
189
- "CLOUDSDK_CORE_DISABLE_PROMPTS": "1",
190
- "DEPLOY_CLOUD_RUN_PROJECT_ID": "asdf",
191
- "DEPLOY_CLOUD_RUN_REGION": "asia-east1",
192
- "DOCKER_BUILDKIT": "1",
193
- "DOCKER_CACHE_IMAGE": "asia-east1-docker.pkg.dev/asdf/catladder-deploy/pan-test-app/caches/www",
194
- "DOCKER_DRIVER": "overlay2",
195
- "DOCKER_HOST": "tcp://0.0.0.0:2375",
196
- "DOCKER_IMAGE": "asia-east1-docker.pkg.dev/asdf/catladder-deploy/pan-test-app/dev/www",
197
- "DOCKER_IMAGE_TAG": "$CI_COMMIT_SHA",
198
- "DOCKER_REGISTRY": "asia-east1-docker.pkg.dev",
199
- "DOCKER_TLS_CERTDIR": "",
200
- "ENV_SHORT": "dev",
201
- "ENV_TYPE": "dev",
202
- "ENV_VARS": "ENV_SHORT: 'dev'
203
- APP_DIR: 'www'
204
- ENV_TYPE: 'dev'
205
- BUILD_INFO_ID: 'some-id'
206
- BUILD_INFO_BUILD_TIME: '01-01-2023 12:13:14'
207
- BUILD_INFO_CURRENT_VERSION: '3.2.1'
208
- HOST: 'pan-test-app-dev-www-unknown-host.example.com'
209
- ROOT_URL: 'https://pan-test-app-dev-www-unknown-host.example.com'
210
- HOST_CANONICAL: 'pan-test-app-dev-www-unknown-host.example.com'
211
- ROOT_URL_INTERNAL: 'https://pan-test-app-dev-www-unknown-host.example.com'
212
- HOST_INTERNAL: 'pan-test-app-dev-www-unknown-host.example.com'
213
- DEPLOY_CLOUD_RUN_PROJECT_ID: 'asdf'
214
- DEPLOY_CLOUD_RUN_REGION: 'asia-east1'
215
- GCLOUD_RUN_canonicalHostSuffix: '$CL_dev_www_GCLOUD_RUN_canonicalHostSuffix'
216
- _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"]'
217
- ",
218
- "GCLOUD_DEPLOY_credentialsKey": "$CL_dev_www_GCLOUD_DEPLOY_credentialsKey",
219
- "GCLOUD_RUN_canonicalHostSuffix": "$CL_dev_www_GCLOUD_RUN_canonicalHostSuffix",
220
- "HOST": "pan-test-app-dev-www-unknown-host.example.com",
221
- "HOST_CANONICAL": "pan-test-app-dev-www-unknown-host.example.com",
222
- "HOST_INTERNAL": "pan-test-app-dev-www-unknown-host.example.com",
223
238
  "KUBERNETES_CPU_REQUEST": "0.5",
224
239
  "KUBERNETES_MEMORY_LIMIT": "400Mi",
225
240
  "KUBERNETES_MEMORY_REQUEST": "200Mi",
226
- "ROOT_URL": "https://pan-test-app-dev-www-unknown-host.example.com",
227
- "ROOT_URL_INTERNAL": "https://pan-test-app-dev-www-unknown-host.example.com",
228
- "_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"]",
229
241
  },
230
242
  },
231
243
  "www 🛑 Stop ⚠️ | dev ": {
244
+ "allow_failure": true,
245
+ "artifacts": {
246
+ "reports": {
247
+ "dotenv": "gitlab_environment.env",
248
+ },
249
+ },
232
250
  "environment": {
233
251
  "action": "stop",
234
252
  "name": "dev/www",
235
- "url": "https://pan-test-app-dev-www-unknown-host.example.com",
253
+ "url": "$CL_GITLAB_ENVIRONMENT_URL",
236
254
  },
237
255
  "image": "path/to/docker/gcloud:the-version",
238
256
  "interruptible": true,
@@ -246,28 +264,29 @@ _ALL_ENV_VAR_KEYS: '["ENV_SHORT","APP_DIR","ENV_TYPE","BUILD_INFO_ID","BUILD_INF
246
264
  },
247
265
  "rules": [
248
266
  {
249
- "allow_failure": true,
250
267
  "if": "$CI_COMMIT_BRANCH =~ /^[0-9]+\\.([0-9]+|x)\\.x$/",
251
268
  "when": "on_success",
252
269
  },
253
270
  {
254
- "allow_failure": true,
255
271
  "when": "manual",
256
272
  },
257
273
  ],
258
274
  "script": [
275
+ "echo -e "\\e[0Ksection_start:$(date +%s):injectvars[collapsed=true]\\r\\e[0KInjecting variables"",
276
+ "export CLOUDSDK_CORE_DISABLE_PROMPTS="1"",
277
+ "echo -e "\\e[0Ksection_end:$(date +%s):injectvars\\r\\e[0K"",
259
278
  "set +e",
260
279
  "gcloud auth activate-service-account --key-file=<(echo "$CL_dev_www_GCLOUD_DEPLOY_credentialsKey")",
261
280
  "gcloud run services delete pan-test-app-dev-www --project=asdf --region=asia-east1",
262
281
  "gcloud artifacts docker images delete asia-east1-docker.pkg.dev/asdf/catladder-deploy/pan-test-app/dev/www --quiet --delete-tags",
263
282
  "gcloud artifacts docker images list asia-east1-docker.pkg.dev/asdf/catladder-deploy/pan-test-app/caches/www --sort-by=~CREATE_TIME --format="value(version)" | tail -n +2 | while read -r version; do gcloud artifacts docker images delete asia-east1-docker.pkg.dev/asdf/catladder-deploy/pan-test-app/caches/www@$version --quiet --delete-tags; done",
264
283
  "echo Disabling component in Dependency Track",
265
- "/dtrackuploader https://dep.panter.swiss/ "$DT_KEY_PROD" disable "pan-test-app/www" "https://pan-test-app-dev-www-unknown-host.example.com" || true",
284
+ "/dtrackuploader https://dep.panter.swiss/ "$DT_KEY_PROD" disable "pan-test-app/www" "https://$(printf %s "pan-test-app-dev-www-$CL_dev_www_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')" || true",
266
285
  "set -e",
286
+ "echo "CL_GITLAB_ENVIRONMENT_URL=https://$(printf %s "pan-test-app-dev-www-$CL_dev_www_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')" >> gitlab_environment.env",
267
287
  ],
268
288
  "stage": "stop dev",
269
289
  "variables": {
270
- "CLOUDSDK_CORE_DISABLE_PROMPTS": "1",
271
290
  "GIT_STRATEGY": "none",
272
291
  "KUBERNETES_CPU_REQUEST": "0.5",
273
292
  "KUBERNETES_MEMORY_LIMIT": "400Mi",
@@ -292,6 +311,8 @@ _ALL_ENV_VAR_KEYS: '["ENV_SHORT","APP_DIR","ENV_TYPE","BUILD_INFO_ID","BUILD_INF
292
311
  ],
293
312
  },
294
313
  "script": [
314
+ "echo -e "\\e[0Ksection_start:$(date +%s):injectvars[collapsed=true]\\r\\e[0KInjecting variables"",
315
+ "echo -e "\\e[0Ksection_end:$(date +%s):injectvars\\r\\e[0K"",
295
316
  "trivy fs --quiet --format cyclonedx --output "__sbom.json" www",
296
317
  ],
297
318
  "stage": "build",
@@ -344,7 +365,7 @@ _ALL_ENV_VAR_KEYS: '["ENV_SHORT","APP_DIR","ENV_TYPE","BUILD_INFO_ID","BUILD_INF
344
365
  ],
345
366
  "variables": {
346
367
  "FF_USE_FASTZIP": "true",
347
- "GIT_DEPTH": 1,
368
+ "GIT_DEPTH": "1",
348
369
  },
349
370
  "workflow": {
350
371
  "rules": [
@@ -397,7 +418,25 @@ _ALL_ENV_VAR_KEYS: '["ENV_SHORT","APP_DIR","ENV_TYPE","BUILD_INFO_ID","BUILD_INF
397
418
  ],
398
419
  },
399
420
  "script": [
400
- "echo '{"id":"some-id","time":"01-01-2023 12:13:14"}' > www/__build_info.json",
421
+ "echo -e "\\e[0Ksection_start:$(date +%s):injectvars[collapsed=true]\\r\\e[0KInjecting variables"",
422
+ "export ENV_SHORT="review"",
423
+ "export APP_DIR="www"",
424
+ "export ENV_TYPE="review"",
425
+ "export BUILD_INFO_BUILD_ID="$(git describe --tags 2>/dev/null || git rev-parse HEAD)"",
426
+ "export BUILD_INFO_BUILD_TIME="$CI_JOB_STARTED_AT"",
427
+ "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")"",
428
+ "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"; })-www-$CL_review_www_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')"",
429
+ "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"; })-www-$CL_review_www_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')"",
430
+ "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"; })-www-$CL_review_www_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')"",
431
+ "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"; })-www-$CL_review_www_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')"",
432
+ "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"; })-www-$CL_review_www_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')"",
433
+ "export DEPLOY_CLOUD_RUN_PROJECT_ID="asdf"",
434
+ "export DEPLOY_CLOUD_RUN_REGION="asia-east1"",
435
+ "export GCLOUD_DEPLOY_credentialsKey="$CL_review_www_GCLOUD_DEPLOY_credentialsKey"",
436
+ "export GCLOUD_RUN_canonicalHostSuffix="$CL_review_www_GCLOUD_RUN_canonicalHostSuffix"",
437
+ "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\\"]"",
438
+ "echo -e "\\e[0Ksection_end:$(date +%s):injectvars\\r\\e[0K"",
439
+ "echo '{"id":"$(git describe --tags 2>/dev/null || git rev-parse HEAD)","time":"$CI_JOB_STARTED_AT"}' > www/__build_info.json",
401
440
  "echo -e "\\e[0Ksection_start:$(date +%s):nodeinstall[collapsed=true]\\r\\e[0KEnsure node version"",
402
441
  "if [ -f ~/.nvm/nvm.sh ]; then source ~/.nvm/nvm.sh; fi",
403
442
  "if command -v nvm &> /dev/null && [ -f ./.nvmrc ]; then nvm install; fi",
@@ -406,25 +445,9 @@ _ALL_ENV_VAR_KEYS: '["ENV_SHORT","APP_DIR","ENV_TYPE","BUILD_INFO_ID","BUILD_INF
406
445
  ],
407
446
  "stage": "build",
408
447
  "variables": {
409
- "APP_DIR": "www",
410
- "BUILD_INFO_BUILD_TIME": "01-01-2023 12:13:14",
411
- "BUILD_INFO_CURRENT_VERSION": "3.2.1",
412
- "BUILD_INFO_ID": "some-id",
413
- "DEPLOY_CLOUD_RUN_PROJECT_ID": "asdf",
414
- "DEPLOY_CLOUD_RUN_REGION": "asia-east1",
415
- "ENV_SHORT": "review",
416
- "ENV_TYPE": "review",
417
- "GCLOUD_DEPLOY_credentialsKey": "$CL_review_www_GCLOUD_DEPLOY_credentialsKey",
418
- "GCLOUD_RUN_canonicalHostSuffix": "$CL_review_www_GCLOUD_RUN_canonicalHostSuffix",
419
- "HOST": "pan-test-app-review-mr1234-www-unknown-host.example.com",
420
- "HOST_CANONICAL": "pan-test-app-review-mr1234-www-unknown-host.example.com",
421
- "HOST_INTERNAL": "pan-test-app-review-mr1234-www-unknown-host.example.com",
422
448
  "KUBERNETES_CPU_REQUEST": "0.5",
423
449
  "KUBERNETES_MEMORY_LIMIT": "4Gi",
424
450
  "KUBERNETES_MEMORY_REQUEST": "2Gi",
425
- "ROOT_URL": "https://pan-test-app-review-mr1234-www-unknown-host.example.com",
426
- "ROOT_URL_INTERNAL": "https://pan-test-app-review-mr1234-www-unknown-host.example.com",
427
- "_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"]",
428
451
  },
429
452
  },
430
453
  "www 🔨 docker | review ": {
@@ -441,6 +464,14 @@ _ALL_ENV_VAR_KEYS: '["ENV_SHORT","APP_DIR","ENV_TYPE","BUILD_INFO_ID","BUILD_INF
441
464
  ],
442
465
  },
443
466
  "script": [
467
+ "echo -e "\\e[0Ksection_start:$(date +%s):injectvars[collapsed=true]\\r\\e[0KInjecting variables"",
468
+ "export APP_DIR="www"",
469
+ "export DOCKER_DIR="."",
470
+ "export DOCKER_REGISTRY="asia-east1-docker.pkg.dev"",
471
+ "export DOCKER_IMAGE="asia-east1-docker.pkg.dev/asdf/catladder-deploy/pan-test-app/review/www/$([ -n "$CI_MERGE_REQUEST_IID" ] && echo "mr$CI_MERGE_REQUEST_IID" || { [ -n "$CI_COMMIT_REF_SLUG" ] && echo "$CI_COMMIT_REF_SLUG" || echo "unknown"; })"",
472
+ "export DOCKER_CACHE_IMAGE="asia-east1-docker.pkg.dev/asdf/catladder-deploy/pan-test-app/caches/www"",
473
+ "export DOCKER_IMAGE_TAG="$CI_COMMIT_SHA"",
474
+ "echo -e "\\e[0Ksection_end:$(date +%s):injectvars\\r\\e[0K"",
444
475
  "ensureNginxDockerfile",
445
476
  "echo -e "\\e[0Ksection_start:$(date +%s):docker-login[collapsed=true]\\r\\e[0KDocker Login"",
446
477
  "gcloud auth activate-service-account --key-file=<(echo "$CL_review_www_GCLOUD_DEPLOY_credentialsKey")",
@@ -465,17 +496,9 @@ _ALL_ENV_VAR_KEYS: '["ENV_SHORT","APP_DIR","ENV_TYPE","BUILD_INFO_ID","BUILD_INF
465
496
  ],
466
497
  "stage": "build",
467
498
  "variables": {
468
- "APP_DIR": "www",
469
- "DOCKERFILE_ADDITIONS": undefined,
470
- "DOCKERFILE_ADDITIONS_END": undefined,
471
499
  "DOCKER_BUILDKIT": "1",
472
- "DOCKER_CACHE_IMAGE": "asia-east1-docker.pkg.dev/asdf/catladder-deploy/pan-test-app/caches/www",
473
- "DOCKER_DIR": ".",
474
500
  "DOCKER_DRIVER": "overlay2",
475
501
  "DOCKER_HOST": "tcp://0.0.0.0:2375",
476
- "DOCKER_IMAGE": "asia-east1-docker.pkg.dev/asdf/catladder-deploy/pan-test-app/review/www/mr1234",
477
- "DOCKER_IMAGE_TAG": "$CI_COMMIT_SHA",
478
- "DOCKER_REGISTRY": "asia-east1-docker.pkg.dev",
479
502
  "DOCKER_TLS_CERTDIR": "",
480
503
  "KUBERNETES_CPU_REQUEST": "0.5",
481
504
  "KUBERNETES_MEMORY_LIMIT": "2Gi",
@@ -485,15 +508,15 @@ _ALL_ENV_VAR_KEYS: '["ENV_SHORT","APP_DIR","ENV_TYPE","BUILD_INFO_ID","BUILD_INF
485
508
  "www 🚀 Deploy | review ": {
486
509
  "allow_failure": false,
487
510
  "artifacts": {
488
- "paths": [
489
- "____envvars.yaml",
490
- ],
511
+ "reports": {
512
+ "dotenv": "gitlab_environment.env",
513
+ },
491
514
  },
492
515
  "environment": {
493
516
  "auto_stop_in": "1 week",
494
- "name": "review/some-commit/www",
517
+ "name": "review/$CI_COMMIT_REF_NAME/www",
495
518
  "on_stop": "www 🛑 Stop ⚠️ | review ",
496
- "url": "https://pan-test-app-review-mr1234-www-unknown-host.example.com",
519
+ "url": "$CL_GITLAB_ENVIRONMENT_URL",
497
520
  },
498
521
  "image": "path/to/docker/gcloud:the-version",
499
522
  "interruptible": true,
@@ -524,87 +547,103 @@ _ALL_ENV_VAR_KEYS: '["ENV_SHORT","APP_DIR","ENV_TYPE","BUILD_INFO_ID","BUILD_INF
524
547
  },
525
548
  ],
526
549
  "script": [
550
+ "echo -e "\\e[0Ksection_start:$(date +%s):injectvars[collapsed=true]\\r\\e[0KInjecting variables"",
551
+ "export ENV_SHORT="review"",
552
+ "export APP_DIR="www"",
553
+ "export ENV_TYPE="review"",
554
+ "export BUILD_INFO_BUILD_ID="$(git describe --tags 2>/dev/null || git rev-parse HEAD)"",
555
+ "export BUILD_INFO_BUILD_TIME="$CI_JOB_STARTED_AT"",
556
+ "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")"",
557
+ "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"; })-www-$CL_review_www_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')"",
558
+ "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"; })-www-$CL_review_www_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')"",
559
+ "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"; })-www-$CL_review_www_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')"",
560
+ "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"; })-www-$CL_review_www_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')"",
561
+ "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"; })-www-$CL_review_www_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')"",
562
+ "export DEPLOY_CLOUD_RUN_PROJECT_ID="asdf"",
563
+ "export DEPLOY_CLOUD_RUN_REGION="asia-east1"",
564
+ "export GCLOUD_DEPLOY_credentialsKey="$CL_review_www_GCLOUD_DEPLOY_credentialsKey"",
565
+ "export GCLOUD_RUN_canonicalHostSuffix="$CL_review_www_GCLOUD_RUN_canonicalHostSuffix"",
566
+ "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\\"]"",
567
+ "export DOCKER_REGISTRY="asia-east1-docker.pkg.dev"",
568
+ "export DOCKER_IMAGE="asia-east1-docker.pkg.dev/asdf/catladder-deploy/pan-test-app/review/www/$([ -n "$CI_MERGE_REQUEST_IID" ] && echo "mr$CI_MERGE_REQUEST_IID" || { [ -n "$CI_COMMIT_REF_SLUG" ] && echo "$CI_COMMIT_REF_SLUG" || echo "unknown"; })"",
569
+ "export DOCKER_CACHE_IMAGE="asia-east1-docker.pkg.dev/asdf/catladder-deploy/pan-test-app/caches/www"",
570
+ "export DOCKER_IMAGE_TAG="$CI_COMMIT_SHA"",
571
+ "export CLOUDSDK_CORE_DISABLE_PROMPTS="1"",
572
+ "echo -e "\\e[0Ksection_end:$(date +%s):injectvars\\r\\e[0K"",
527
573
  "echo -e "\\e[0Ksection_start:$(date +%s):prepare[collapsed=true]\\r\\e[0KPrepare..."",
528
574
  "gcloud auth activate-service-account --key-file=<(echo "$CL_review_www_GCLOUD_DEPLOY_credentialsKey")",
529
575
  "export GCLOUD_PROJECT_NUMBER=$(gcloud projects describe asdf --format="value(projectNumber)")",
530
576
  "echo "GCLOUD_PROJECT_NUMBER: $GCLOUD_PROJECT_NUMBER"",
531
577
  "echo -e "\\e[0Ksection_end:$(date +%s):prepare\\r\\e[0K"",
578
+ "echo -e "\\e[0Ksection_start:$(date +%s):writeenvvars[collapsed=true]\\r\\e[0KWrite env vars to file"",
579
+ "cat > ____envvars.yaml <<EOF
580
+ ENV_SHORT: |-
581
+ review
582
+ APP_DIR: |-
583
+ www
584
+ ENV_TYPE: |-
585
+ review
586
+ BUILD_INFO_BUILD_ID: |-
587
+ $(printf %s "$(git describe --tags 2>/dev/null || git rev-parse HEAD)" | sed 's/^/ /')
588
+ BUILD_INFO_BUILD_TIME: |-
589
+ $(printf %s "$CI_JOB_STARTED_AT" | sed 's/^/ /')
590
+ BUILD_INFO_CURRENT_VERSION: |-
591
+ $(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/^/ /')
592
+ HOST: |-
593
+ $(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"; })-www-$CL_review_www_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')" | sed 's/^/ /')
594
+ ROOT_URL: |-
595
+ $(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"; })-www-$CL_review_www_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')" | sed 's/^/ /')
596
+ HOST_INTERNAL: |-
597
+ $(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"; })-www-$CL_review_www_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')" | sed 's/^/ /')
598
+ HOST_CANONICAL: |-
599
+ $(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"; })-www-$CL_review_www_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')" | sed 's/^/ /')
600
+ ROOT_URL_INTERNAL: |-
601
+ $(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"; })-www-$CL_review_www_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')" | sed 's/^/ /')
602
+ DEPLOY_CLOUD_RUN_PROJECT_ID: |-
603
+ asdf
604
+ DEPLOY_CLOUD_RUN_REGION: |-
605
+ asia-east1
606
+ GCLOUD_RUN_canonicalHostSuffix: |-
607
+ $(printf %s "$CL_review_www_GCLOUD_RUN_canonicalHostSuffix" | sed 's/^/ /')
608
+ _ALL_ENV_VAR_KEYS: |-
609
+ ["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"]
610
+
611
+ EOF
612
+ ",
613
+ "echo -e "\\e[0Ksection_end:$(date +%s):writeenvvars\\r\\e[0K"",
532
614
  "echo -e "\\e[0Ksection_start:$(date +%s):deploy[collapsed=true]\\r\\e[0KDeploy to cloud run"",
533
- "echo "$ENV_VARS" > ____envvars.yaml",
534
- "gcloud run deploy pan-test-app-review-mr1234-www --command="" --image=asia-east1-docker.pkg.dev/asdf/catladder-deploy/pan-test-app/review/www/mr1234:$DOCKER_IMAGE_TAG --project=asdf --region=asia-east1 --labels=customer-name=pan,component-name=www,app-name=test-app,env-type=review,env-name=review,build-type=custom,cloud-run-service-name=pan-test-app-review-mr1234-www --env-vars-file=____envvars.yaml --min-instances=0 --max-instances=100 --cpu-throttling --allow-unauthenticated --ingress=all --cpu-boost",
615
+ "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"; })-www" | awk '{print tolower($0)}') --command="" --image=asia-east1-docker.pkg.dev/asdf/catladder-deploy/pan-test-app/review/www/$([ -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=asdf --region=asia-east1 --labels=customer-name=pan,component-name=www,app-name=test-app,env-type=review,env-name=review,build-type=custom,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"; })-www" | awk '{print tolower($0)}') --env-vars-file=____envvars.yaml --min-instances=0 --max-instances=100 --cpu-throttling --allow-unauthenticated --ingress=all --cpu-boost",
535
616
  "echo -e "\\e[0Ksection_end:$(date +%s):deploy\\r\\e[0K"",
536
617
  "echo -e "\\e[0Ksection_start:$(date +%s):cleanup[collapsed=true]\\r\\e[0KCleanup"",
537
- "gcloud run revisions list --project=asdf --region=asia-east1 --service=pan-test-app-review-mr1234-www --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=asdf --region=asia-east1 --quiet $revisionname ; done",
538
- "gcloud artifacts docker images list asia-east1-docker.pkg.dev/asdf/catladder-deploy/pan-test-app/review/www/mr1234 --sort-by=~CREATE_TIME --format="value(version)" | tail -n +2 | while read -r version; do gcloud artifacts docker images delete asia-east1-docker.pkg.dev/asdf/catladder-deploy/pan-test-app/review/www/mr1234@$version --quiet --delete-tags; done",
618
+ "gcloud run revisions list --project=asdf --region=asia-east1 --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"; })-www" | 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=asdf --region=asia-east1 --quiet $revisionname ; done",
619
+ "gcloud artifacts docker images list asia-east1-docker.pkg.dev/asdf/catladder-deploy/pan-test-app/review/www/$([ -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 asia-east1-docker.pkg.dev/asdf/catladder-deploy/pan-test-app/review/www/$([ -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",
539
620
  "gcloud artifacts docker images list asia-east1-docker.pkg.dev/asdf/catladder-deploy/pan-test-app/caches/www --sort-by=~CREATE_TIME --format="value(version)" | tail -n +2 | while read -r version; do gcloud artifacts docker images delete asia-east1-docker.pkg.dev/asdf/catladder-deploy/pan-test-app/caches/www@$version --quiet --delete-tags; done",
540
621
  "set +e",
541
622
  "gcloud artifacts docker images delete asia-east1-docker.pkg.dev/asdf/catladder-deploy/pan-test-app/review/www --quiet --delete-tags",
542
623
  "set -e",
543
624
  "echo -e "\\e[0Ksection_end:$(date +%s):cleanup\\r\\e[0K"",
544
625
  "echo Uploading SBOM to Dependency Track",
545
- "/dtrackuploader https://dep.panter.swiss/ "$DT_KEY_PROD" upload "pan-test-app/www" "https://pan-test-app-review-mr1234-www-unknown-host.example.com" "__sbom.json" vex.json || true",
546
- ],
547
- "services": [
548
- {
549
- "command": [
550
- "--tls=false",
551
- ],
552
- "name": "docker:24.0.6-dind",
553
- },
626
+ "/dtrackuploader https://dep.panter.swiss/ "$DT_KEY_PROD" upload "pan-test-app/www" "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"; })-www-$CL_review_www_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')" "__sbom.json" vex.json || true",
627
+ "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"; })-www-$CL_review_www_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')" >> gitlab_environment.env",
554
628
  ],
555
629
  "stage": "deploy review",
556
630
  "variables": {
557
- "APP_DIR": "www",
558
- "BUILD_INFO_BUILD_TIME": "01-01-2023 12:13:14",
559
- "BUILD_INFO_CURRENT_VERSION": "3.2.1",
560
- "BUILD_INFO_ID": "some-id",
561
- "CLOUDSDK_CORE_DISABLE_PROMPTS": "1",
562
- "DEPLOY_CLOUD_RUN_PROJECT_ID": "asdf",
563
- "DEPLOY_CLOUD_RUN_REGION": "asia-east1",
564
- "DOCKER_BUILDKIT": "1",
565
- "DOCKER_CACHE_IMAGE": "asia-east1-docker.pkg.dev/asdf/catladder-deploy/pan-test-app/caches/www",
566
- "DOCKER_DRIVER": "overlay2",
567
- "DOCKER_HOST": "tcp://0.0.0.0:2375",
568
- "DOCKER_IMAGE": "asia-east1-docker.pkg.dev/asdf/catladder-deploy/pan-test-app/review/www/mr1234",
569
- "DOCKER_IMAGE_TAG": "$CI_COMMIT_SHA",
570
- "DOCKER_REGISTRY": "asia-east1-docker.pkg.dev",
571
- "DOCKER_TLS_CERTDIR": "",
572
- "ENV_SHORT": "review",
573
- "ENV_TYPE": "review",
574
- "ENV_VARS": "ENV_SHORT: 'review'
575
- APP_DIR: 'www'
576
- ENV_TYPE: 'review'
577
- BUILD_INFO_ID: 'some-id'
578
- BUILD_INFO_BUILD_TIME: '01-01-2023 12:13:14'
579
- BUILD_INFO_CURRENT_VERSION: '3.2.1'
580
- HOST: 'pan-test-app-review-mr1234-www-unknown-host.example.com'
581
- ROOT_URL: 'https://pan-test-app-review-mr1234-www-unknown-host.example.com'
582
- HOST_CANONICAL: 'pan-test-app-review-mr1234-www-unknown-host.example.com'
583
- ROOT_URL_INTERNAL: 'https://pan-test-app-review-mr1234-www-unknown-host.example.com'
584
- HOST_INTERNAL: 'pan-test-app-review-mr1234-www-unknown-host.example.com'
585
- DEPLOY_CLOUD_RUN_PROJECT_ID: 'asdf'
586
- DEPLOY_CLOUD_RUN_REGION: 'asia-east1'
587
- GCLOUD_RUN_canonicalHostSuffix: '$CL_review_www_GCLOUD_RUN_canonicalHostSuffix'
588
- _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"]'
589
- ",
590
- "GCLOUD_DEPLOY_credentialsKey": "$CL_review_www_GCLOUD_DEPLOY_credentialsKey",
591
- "GCLOUD_RUN_canonicalHostSuffix": "$CL_review_www_GCLOUD_RUN_canonicalHostSuffix",
592
- "HOST": "pan-test-app-review-mr1234-www-unknown-host.example.com",
593
- "HOST_CANONICAL": "pan-test-app-review-mr1234-www-unknown-host.example.com",
594
- "HOST_INTERNAL": "pan-test-app-review-mr1234-www-unknown-host.example.com",
595
631
  "KUBERNETES_CPU_REQUEST": "0.5",
596
632
  "KUBERNETES_MEMORY_LIMIT": "400Mi",
597
633
  "KUBERNETES_MEMORY_REQUEST": "200Mi",
598
- "ROOT_URL": "https://pan-test-app-review-mr1234-www-unknown-host.example.com",
599
- "ROOT_URL_INTERNAL": "https://pan-test-app-review-mr1234-www-unknown-host.example.com",
600
- "_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"]",
601
634
  },
602
635
  },
603
636
  "www 🛑 Stop ⚠️ | review ": {
637
+ "allow_failure": true,
638
+ "artifacts": {
639
+ "reports": {
640
+ "dotenv": "gitlab_environment.env",
641
+ },
642
+ },
604
643
  "environment": {
605
644
  "action": "stop",
606
- "name": "review/some-commit/www",
607
- "url": "https://pan-test-app-review-mr1234-www-unknown-host.example.com",
645
+ "name": "review/$CI_COMMIT_REF_NAME/www",
646
+ "url": "$CL_GITLAB_ENVIRONMENT_URL",
608
647
  },
609
648
  "image": "path/to/docker/gcloud:the-version",
610
649
  "interruptible": true,
@@ -618,31 +657,32 @@ _ALL_ENV_VAR_KEYS: '["ENV_SHORT","APP_DIR","ENV_TYPE","BUILD_INFO_ID","BUILD_INF
618
657
  },
619
658
  "rules": [
620
659
  {
621
- "allow_failure": true,
622
660
  "if": "$CI_COMMIT_BRANCH =~ /^[0-9]+\\.([0-9]+|x)\\.x$/",
623
661
  "when": "on_success",
624
662
  },
625
663
  {
626
- "allow_failure": true,
627
664
  "when": "manual",
628
665
  },
629
666
  ],
630
667
  "script": [
668
+ "echo -e "\\e[0Ksection_start:$(date +%s):injectvars[collapsed=true]\\r\\e[0KInjecting variables"",
669
+ "export CLOUDSDK_CORE_DISABLE_PROMPTS="1"",
670
+ "echo -e "\\e[0Ksection_end:$(date +%s):injectvars\\r\\e[0K"",
631
671
  "set +e",
632
672
  "gcloud auth activate-service-account --key-file=<(echo "$CL_review_www_GCLOUD_DEPLOY_credentialsKey")",
633
- "gcloud run services delete pan-test-app-review-mr1234-www --project=asdf --region=asia-east1",
634
- "gcloud artifacts docker images delete asia-east1-docker.pkg.dev/asdf/catladder-deploy/pan-test-app/review/www/mr1234 --quiet --delete-tags",
673
+ "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"; })-www" | awk '{print tolower($0)}') --project=asdf --region=asia-east1",
674
+ "gcloud artifacts docker images delete asia-east1-docker.pkg.dev/asdf/catladder-deploy/pan-test-app/review/www/$([ -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",
635
675
  "gcloud artifacts docker images list asia-east1-docker.pkg.dev/asdf/catladder-deploy/pan-test-app/caches/www --sort-by=~CREATE_TIME --format="value(version)" | tail -n +2 | while read -r version; do gcloud artifacts docker images delete asia-east1-docker.pkg.dev/asdf/catladder-deploy/pan-test-app/caches/www@$version --quiet --delete-tags; done",
636
676
  "set +e",
637
677
  "gcloud artifacts docker images delete asia-east1-docker.pkg.dev/asdf/catladder-deploy/pan-test-app/review/www --quiet --delete-tags",
638
678
  "set -e",
639
679
  "echo Disabling component in Dependency Track",
640
- "/dtrackuploader https://dep.panter.swiss/ "$DT_KEY_PROD" disable "pan-test-app/www" "https://pan-test-app-review-mr1234-www-unknown-host.example.com" || true",
680
+ "/dtrackuploader https://dep.panter.swiss/ "$DT_KEY_PROD" disable "pan-test-app/www" "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"; })-www-$CL_review_www_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')" || true",
641
681
  "set -e",
682
+ "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"; })-www-$CL_review_www_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')" >> gitlab_environment.env",
642
683
  ],
643
684
  "stage": "stop review",
644
685
  "variables": {
645
- "CLOUDSDK_CORE_DISABLE_PROMPTS": "1",
646
686
  "GIT_STRATEGY": "none",
647
687
  "KUBERNETES_CPU_REQUEST": "0.5",
648
688
  "KUBERNETES_MEMORY_LIMIT": "400Mi",
@@ -667,6 +707,8 @@ _ALL_ENV_VAR_KEYS: '["ENV_SHORT","APP_DIR","ENV_TYPE","BUILD_INFO_ID","BUILD_INF
667
707
  ],
668
708
  },
669
709
  "script": [
710
+ "echo -e "\\e[0Ksection_start:$(date +%s):injectvars[collapsed=true]\\r\\e[0KInjecting variables"",
711
+ "echo -e "\\e[0Ksection_end:$(date +%s):injectvars\\r\\e[0K"",
670
712
  "trivy fs --quiet --format cyclonedx --output "__sbom.json" www",
671
713
  ],
672
714
  "stage": "build",
@@ -719,7 +761,7 @@ _ALL_ENV_VAR_KEYS: '["ENV_SHORT","APP_DIR","ENV_TYPE","BUILD_INFO_ID","BUILD_INF
719
761
  ],
720
762
  "variables": {
721
763
  "FF_USE_FASTZIP": "true",
722
- "GIT_DEPTH": 1,
764
+ "GIT_DEPTH": "1",
723
765
  },
724
766
  "workflow": {
725
767
  "rules": [
@@ -772,7 +814,25 @@ _ALL_ENV_VAR_KEYS: '["ENV_SHORT","APP_DIR","ENV_TYPE","BUILD_INFO_ID","BUILD_INF
772
814
  ],
773
815
  },
774
816
  "script": [
775
- "echo '{"id":"some-id","time":"01-01-2023 12:13:14"}' > www/__build_info.json",
817
+ "echo -e "\\e[0Ksection_start:$(date +%s):injectvars[collapsed=true]\\r\\e[0KInjecting variables"",
818
+ "export ENV_SHORT="prod"",
819
+ "export APP_DIR="www"",
820
+ "export ENV_TYPE="prod"",
821
+ "export BUILD_INFO_BUILD_ID="$(git describe --tags 2>/dev/null || git rev-parse HEAD)"",
822
+ "export BUILD_INFO_BUILD_TIME="$CI_JOB_STARTED_AT"",
823
+ "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")"",
824
+ "export HOST="$(printf %s "pan-test-app-prod-www-$CL_prod_www_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')"",
825
+ "export ROOT_URL="https://$(printf %s "pan-test-app-prod-www-$CL_prod_www_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')"",
826
+ "export HOST_INTERNAL="$(printf %s "pan-test-app-prod-www-$CL_prod_www_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')"",
827
+ "export HOST_CANONICAL="$(printf %s "pan-test-app-prod-www-$CL_prod_www_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')"",
828
+ "export ROOT_URL_INTERNAL="https://$(printf %s "pan-test-app-prod-www-$CL_prod_www_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')"",
829
+ "export DEPLOY_CLOUD_RUN_PROJECT_ID="asdf"",
830
+ "export DEPLOY_CLOUD_RUN_REGION="asia-east1"",
831
+ "export GCLOUD_DEPLOY_credentialsKey="$CL_prod_www_GCLOUD_DEPLOY_credentialsKey"",
832
+ "export GCLOUD_RUN_canonicalHostSuffix="$CL_prod_www_GCLOUD_RUN_canonicalHostSuffix"",
833
+ "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\\"]"",
834
+ "echo -e "\\e[0Ksection_end:$(date +%s):injectvars\\r\\e[0K"",
835
+ "echo '{"id":"$(git describe --tags 2>/dev/null || git rev-parse HEAD)","time":"$CI_JOB_STARTED_AT"}' > www/__build_info.json",
776
836
  "echo -e "\\e[0Ksection_start:$(date +%s):nodeinstall[collapsed=true]\\r\\e[0KEnsure node version"",
777
837
  "if [ -f ~/.nvm/nvm.sh ]; then source ~/.nvm/nvm.sh; fi",
778
838
  "if command -v nvm &> /dev/null && [ -f ./.nvmrc ]; then nvm install; fi",
@@ -781,25 +841,9 @@ _ALL_ENV_VAR_KEYS: '["ENV_SHORT","APP_DIR","ENV_TYPE","BUILD_INFO_ID","BUILD_INF
781
841
  ],
782
842
  "stage": "build",
783
843
  "variables": {
784
- "APP_DIR": "www",
785
- "BUILD_INFO_BUILD_TIME": "01-01-2023 12:13:14",
786
- "BUILD_INFO_CURRENT_VERSION": "3.2.1",
787
- "BUILD_INFO_ID": "some-id",
788
- "DEPLOY_CLOUD_RUN_PROJECT_ID": "asdf",
789
- "DEPLOY_CLOUD_RUN_REGION": "asia-east1",
790
- "ENV_SHORT": "prod",
791
- "ENV_TYPE": "prod",
792
- "GCLOUD_DEPLOY_credentialsKey": "$CL_prod_www_GCLOUD_DEPLOY_credentialsKey",
793
- "GCLOUD_RUN_canonicalHostSuffix": "$CL_prod_www_GCLOUD_RUN_canonicalHostSuffix",
794
- "HOST": "pan-test-app-prod-www-unknown-host.example.com",
795
- "HOST_CANONICAL": "pan-test-app-prod-www-unknown-host.example.com",
796
- "HOST_INTERNAL": "pan-test-app-prod-www-unknown-host.example.com",
797
844
  "KUBERNETES_CPU_REQUEST": "0.5",
798
845
  "KUBERNETES_MEMORY_LIMIT": "4Gi",
799
846
  "KUBERNETES_MEMORY_REQUEST": "2Gi",
800
- "ROOT_URL": "https://pan-test-app-prod-www-unknown-host.example.com",
801
- "ROOT_URL_INTERNAL": "https://pan-test-app-prod-www-unknown-host.example.com",
802
- "_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"]",
803
847
  },
804
848
  },
805
849
  "www 🔨 app | stage ": {
@@ -825,7 +869,25 @@ _ALL_ENV_VAR_KEYS: '["ENV_SHORT","APP_DIR","ENV_TYPE","BUILD_INFO_ID","BUILD_INF
825
869
  ],
826
870
  },
827
871
  "script": [
828
- "echo '{"id":"some-id","time":"01-01-2023 12:13:14"}' > www/__build_info.json",
872
+ "echo -e "\\e[0Ksection_start:$(date +%s):injectvars[collapsed=true]\\r\\e[0KInjecting variables"",
873
+ "export ENV_SHORT="stage"",
874
+ "export APP_DIR="www"",
875
+ "export ENV_TYPE="stage"",
876
+ "export BUILD_INFO_BUILD_ID="$(git describe --tags 2>/dev/null || git rev-parse HEAD)"",
877
+ "export BUILD_INFO_BUILD_TIME="$CI_JOB_STARTED_AT"",
878
+ "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")"",
879
+ "export HOST="$(printf %s "pan-test-app-stage-www-$CL_stage_www_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')"",
880
+ "export ROOT_URL="https://$(printf %s "pan-test-app-stage-www-$CL_stage_www_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')"",
881
+ "export HOST_INTERNAL="$(printf %s "pan-test-app-stage-www-$CL_stage_www_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')"",
882
+ "export HOST_CANONICAL="$(printf %s "pan-test-app-stage-www-$CL_stage_www_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')"",
883
+ "export ROOT_URL_INTERNAL="https://$(printf %s "pan-test-app-stage-www-$CL_stage_www_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')"",
884
+ "export DEPLOY_CLOUD_RUN_PROJECT_ID="asdf"",
885
+ "export DEPLOY_CLOUD_RUN_REGION="asia-east1"",
886
+ "export GCLOUD_DEPLOY_credentialsKey="$CL_stage_www_GCLOUD_DEPLOY_credentialsKey"",
887
+ "export GCLOUD_RUN_canonicalHostSuffix="$CL_stage_www_GCLOUD_RUN_canonicalHostSuffix"",
888
+ "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\\"]"",
889
+ "echo -e "\\e[0Ksection_end:$(date +%s):injectvars\\r\\e[0K"",
890
+ "echo '{"id":"$(git describe --tags 2>/dev/null || git rev-parse HEAD)","time":"$CI_JOB_STARTED_AT"}' > www/__build_info.json",
829
891
  "echo -e "\\e[0Ksection_start:$(date +%s):nodeinstall[collapsed=true]\\r\\e[0KEnsure node version"",
830
892
  "if [ -f ~/.nvm/nvm.sh ]; then source ~/.nvm/nvm.sh; fi",
831
893
  "if command -v nvm &> /dev/null && [ -f ./.nvmrc ]; then nvm install; fi",
@@ -834,25 +896,9 @@ _ALL_ENV_VAR_KEYS: '["ENV_SHORT","APP_DIR","ENV_TYPE","BUILD_INFO_ID","BUILD_INF
834
896
  ],
835
897
  "stage": "build",
836
898
  "variables": {
837
- "APP_DIR": "www",
838
- "BUILD_INFO_BUILD_TIME": "01-01-2023 12:13:14",
839
- "BUILD_INFO_CURRENT_VERSION": "3.2.1",
840
- "BUILD_INFO_ID": "some-id",
841
- "DEPLOY_CLOUD_RUN_PROJECT_ID": "asdf",
842
- "DEPLOY_CLOUD_RUN_REGION": "asia-east1",
843
- "ENV_SHORT": "stage",
844
- "ENV_TYPE": "stage",
845
- "GCLOUD_DEPLOY_credentialsKey": "$CL_stage_www_GCLOUD_DEPLOY_credentialsKey",
846
- "GCLOUD_RUN_canonicalHostSuffix": "$CL_stage_www_GCLOUD_RUN_canonicalHostSuffix",
847
- "HOST": "pan-test-app-stage-www-unknown-host.example.com",
848
- "HOST_CANONICAL": "pan-test-app-stage-www-unknown-host.example.com",
849
- "HOST_INTERNAL": "pan-test-app-stage-www-unknown-host.example.com",
850
899
  "KUBERNETES_CPU_REQUEST": "0.5",
851
900
  "KUBERNETES_MEMORY_LIMIT": "4Gi",
852
901
  "KUBERNETES_MEMORY_REQUEST": "2Gi",
853
- "ROOT_URL": "https://pan-test-app-stage-www-unknown-host.example.com",
854
- "ROOT_URL_INTERNAL": "https://pan-test-app-stage-www-unknown-host.example.com",
855
- "_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"]",
856
902
  },
857
903
  },
858
904
  "www 🔨 docker | prod ": {
@@ -869,6 +915,14 @@ _ALL_ENV_VAR_KEYS: '["ENV_SHORT","APP_DIR","ENV_TYPE","BUILD_INFO_ID","BUILD_INF
869
915
  ],
870
916
  },
871
917
  "script": [
918
+ "echo -e "\\e[0Ksection_start:$(date +%s):injectvars[collapsed=true]\\r\\e[0KInjecting variables"",
919
+ "export APP_DIR="www"",
920
+ "export DOCKER_DIR="."",
921
+ "export DOCKER_REGISTRY="asia-east1-docker.pkg.dev"",
922
+ "export DOCKER_IMAGE="asia-east1-docker.pkg.dev/asdf/catladder-deploy/pan-test-app/prod/www"",
923
+ "export DOCKER_CACHE_IMAGE="asia-east1-docker.pkg.dev/asdf/catladder-deploy/pan-test-app/caches/www"",
924
+ "export DOCKER_IMAGE_TAG="$CI_COMMIT_SHA"",
925
+ "echo -e "\\e[0Ksection_end:$(date +%s):injectvars\\r\\e[0K"",
872
926
  "ensureNginxDockerfile",
873
927
  "echo -e "\\e[0Ksection_start:$(date +%s):docker-login[collapsed=true]\\r\\e[0KDocker Login"",
874
928
  "gcloud auth activate-service-account --key-file=<(echo "$CL_prod_www_GCLOUD_DEPLOY_credentialsKey")",
@@ -893,17 +947,9 @@ _ALL_ENV_VAR_KEYS: '["ENV_SHORT","APP_DIR","ENV_TYPE","BUILD_INFO_ID","BUILD_INF
893
947
  ],
894
948
  "stage": "build",
895
949
  "variables": {
896
- "APP_DIR": "www",
897
- "DOCKERFILE_ADDITIONS": undefined,
898
- "DOCKERFILE_ADDITIONS_END": undefined,
899
950
  "DOCKER_BUILDKIT": "1",
900
- "DOCKER_CACHE_IMAGE": "asia-east1-docker.pkg.dev/asdf/catladder-deploy/pan-test-app/caches/www",
901
- "DOCKER_DIR": ".",
902
951
  "DOCKER_DRIVER": "overlay2",
903
952
  "DOCKER_HOST": "tcp://0.0.0.0:2375",
904
- "DOCKER_IMAGE": "asia-east1-docker.pkg.dev/asdf/catladder-deploy/pan-test-app/prod/www",
905
- "DOCKER_IMAGE_TAG": "$CI_COMMIT_SHA",
906
- "DOCKER_REGISTRY": "asia-east1-docker.pkg.dev",
907
953
  "DOCKER_TLS_CERTDIR": "",
908
954
  "KUBERNETES_CPU_REQUEST": "0.5",
909
955
  "KUBERNETES_MEMORY_LIMIT": "2Gi",
@@ -924,6 +970,14 @@ _ALL_ENV_VAR_KEYS: '["ENV_SHORT","APP_DIR","ENV_TYPE","BUILD_INFO_ID","BUILD_INF
924
970
  ],
925
971
  },
926
972
  "script": [
973
+ "echo -e "\\e[0Ksection_start:$(date +%s):injectvars[collapsed=true]\\r\\e[0KInjecting variables"",
974
+ "export APP_DIR="www"",
975
+ "export DOCKER_DIR="."",
976
+ "export DOCKER_REGISTRY="asia-east1-docker.pkg.dev"",
977
+ "export DOCKER_IMAGE="asia-east1-docker.pkg.dev/asdf/catladder-deploy/pan-test-app/stage/www"",
978
+ "export DOCKER_CACHE_IMAGE="asia-east1-docker.pkg.dev/asdf/catladder-deploy/pan-test-app/caches/www"",
979
+ "export DOCKER_IMAGE_TAG="$CI_COMMIT_SHA"",
980
+ "echo -e "\\e[0Ksection_end:$(date +%s):injectvars\\r\\e[0K"",
927
981
  "ensureNginxDockerfile",
928
982
  "echo -e "\\e[0Ksection_start:$(date +%s):docker-login[collapsed=true]\\r\\e[0KDocker Login"",
929
983
  "gcloud auth activate-service-account --key-file=<(echo "$CL_stage_www_GCLOUD_DEPLOY_credentialsKey")",
@@ -948,17 +1002,9 @@ _ALL_ENV_VAR_KEYS: '["ENV_SHORT","APP_DIR","ENV_TYPE","BUILD_INFO_ID","BUILD_INF
948
1002
  ],
949
1003
  "stage": "build",
950
1004
  "variables": {
951
- "APP_DIR": "www",
952
- "DOCKERFILE_ADDITIONS": undefined,
953
- "DOCKERFILE_ADDITIONS_END": undefined,
954
1005
  "DOCKER_BUILDKIT": "1",
955
- "DOCKER_CACHE_IMAGE": "asia-east1-docker.pkg.dev/asdf/catladder-deploy/pan-test-app/caches/www",
956
- "DOCKER_DIR": ".",
957
1006
  "DOCKER_DRIVER": "overlay2",
958
1007
  "DOCKER_HOST": "tcp://0.0.0.0:2375",
959
- "DOCKER_IMAGE": "asia-east1-docker.pkg.dev/asdf/catladder-deploy/pan-test-app/stage/www",
960
- "DOCKER_IMAGE_TAG": "$CI_COMMIT_SHA",
961
- "DOCKER_REGISTRY": "asia-east1-docker.pkg.dev",
962
1008
  "DOCKER_TLS_CERTDIR": "",
963
1009
  "KUBERNETES_CPU_REQUEST": "0.5",
964
1010
  "KUBERNETES_MEMORY_LIMIT": "2Gi",
@@ -968,15 +1014,15 @@ _ALL_ENV_VAR_KEYS: '["ENV_SHORT","APP_DIR","ENV_TYPE","BUILD_INFO_ID","BUILD_INF
968
1014
  "www 🚀 Deploy | prod ": {
969
1015
  "allow_failure": true,
970
1016
  "artifacts": {
971
- "paths": [
972
- "____envvars.yaml",
973
- ],
1017
+ "reports": {
1018
+ "dotenv": "gitlab_environment.env",
1019
+ },
974
1020
  },
975
1021
  "environment": {
976
1022
  "auto_stop_in": undefined,
977
1023
  "name": "prod/www",
978
1024
  "on_stop": "www 🛑 Stop ⚠️ | prod ",
979
- "url": "https://pan-test-app-prod-www-unknown-host.example.com",
1025
+ "url": "$CL_GITLAB_ENVIRONMENT_URL",
980
1026
  },
981
1027
  "image": "path/to/docker/gcloud:the-version",
982
1028
  "interruptible": true,
@@ -1007,13 +1053,71 @@ _ALL_ENV_VAR_KEYS: '["ENV_SHORT","APP_DIR","ENV_TYPE","BUILD_INFO_ID","BUILD_INF
1007
1053
  },
1008
1054
  ],
1009
1055
  "script": [
1056
+ "echo -e "\\e[0Ksection_start:$(date +%s):injectvars[collapsed=true]\\r\\e[0KInjecting variables"",
1057
+ "export ENV_SHORT="prod"",
1058
+ "export APP_DIR="www"",
1059
+ "export ENV_TYPE="prod"",
1060
+ "export BUILD_INFO_BUILD_ID="$(git describe --tags 2>/dev/null || git rev-parse HEAD)"",
1061
+ "export BUILD_INFO_BUILD_TIME="$CI_JOB_STARTED_AT"",
1062
+ "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")"",
1063
+ "export HOST="$(printf %s "pan-test-app-prod-www-$CL_prod_www_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')"",
1064
+ "export ROOT_URL="https://$(printf %s "pan-test-app-prod-www-$CL_prod_www_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')"",
1065
+ "export HOST_INTERNAL="$(printf %s "pan-test-app-prod-www-$CL_prod_www_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')"",
1066
+ "export HOST_CANONICAL="$(printf %s "pan-test-app-prod-www-$CL_prod_www_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')"",
1067
+ "export ROOT_URL_INTERNAL="https://$(printf %s "pan-test-app-prod-www-$CL_prod_www_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')"",
1068
+ "export DEPLOY_CLOUD_RUN_PROJECT_ID="asdf"",
1069
+ "export DEPLOY_CLOUD_RUN_REGION="asia-east1"",
1070
+ "export GCLOUD_DEPLOY_credentialsKey="$CL_prod_www_GCLOUD_DEPLOY_credentialsKey"",
1071
+ "export GCLOUD_RUN_canonicalHostSuffix="$CL_prod_www_GCLOUD_RUN_canonicalHostSuffix"",
1072
+ "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\\"]"",
1073
+ "export DOCKER_REGISTRY="asia-east1-docker.pkg.dev"",
1074
+ "export DOCKER_IMAGE="asia-east1-docker.pkg.dev/asdf/catladder-deploy/pan-test-app/prod/www"",
1075
+ "export DOCKER_CACHE_IMAGE="asia-east1-docker.pkg.dev/asdf/catladder-deploy/pan-test-app/caches/www"",
1076
+ "export DOCKER_IMAGE_TAG="$CI_COMMIT_SHA"",
1077
+ "export CLOUDSDK_CORE_DISABLE_PROMPTS="1"",
1078
+ "echo -e "\\e[0Ksection_end:$(date +%s):injectvars\\r\\e[0K"",
1010
1079
  "echo -e "\\e[0Ksection_start:$(date +%s):prepare[collapsed=true]\\r\\e[0KPrepare..."",
1011
1080
  "gcloud auth activate-service-account --key-file=<(echo "$CL_prod_www_GCLOUD_DEPLOY_credentialsKey")",
1012
1081
  "export GCLOUD_PROJECT_NUMBER=$(gcloud projects describe asdf --format="value(projectNumber)")",
1013
1082
  "echo "GCLOUD_PROJECT_NUMBER: $GCLOUD_PROJECT_NUMBER"",
1014
1083
  "echo -e "\\e[0Ksection_end:$(date +%s):prepare\\r\\e[0K"",
1084
+ "echo -e "\\e[0Ksection_start:$(date +%s):writeenvvars[collapsed=true]\\r\\e[0KWrite env vars to file"",
1085
+ "cat > ____envvars.yaml <<EOF
1086
+ ENV_SHORT: |-
1087
+ prod
1088
+ APP_DIR: |-
1089
+ www
1090
+ ENV_TYPE: |-
1091
+ prod
1092
+ BUILD_INFO_BUILD_ID: |-
1093
+ $(printf %s "$(git describe --tags 2>/dev/null || git rev-parse HEAD)" | sed 's/^/ /')
1094
+ BUILD_INFO_BUILD_TIME: |-
1095
+ $(printf %s "$CI_JOB_STARTED_AT" | sed 's/^/ /')
1096
+ BUILD_INFO_CURRENT_VERSION: |-
1097
+ $(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/^/ /')
1098
+ HOST: |-
1099
+ $(printf %s "$(printf %s "pan-test-app-prod-www-$CL_prod_www_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')" | sed 's/^/ /')
1100
+ ROOT_URL: |-
1101
+ $(printf %s "https://$(printf %s "pan-test-app-prod-www-$CL_prod_www_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')" | sed 's/^/ /')
1102
+ HOST_INTERNAL: |-
1103
+ $(printf %s "$(printf %s "pan-test-app-prod-www-$CL_prod_www_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')" | sed 's/^/ /')
1104
+ HOST_CANONICAL: |-
1105
+ $(printf %s "$(printf %s "pan-test-app-prod-www-$CL_prod_www_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')" | sed 's/^/ /')
1106
+ ROOT_URL_INTERNAL: |-
1107
+ $(printf %s "https://$(printf %s "pan-test-app-prod-www-$CL_prod_www_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')" | sed 's/^/ /')
1108
+ DEPLOY_CLOUD_RUN_PROJECT_ID: |-
1109
+ asdf
1110
+ DEPLOY_CLOUD_RUN_REGION: |-
1111
+ asia-east1
1112
+ GCLOUD_RUN_canonicalHostSuffix: |-
1113
+ $(printf %s "$CL_prod_www_GCLOUD_RUN_canonicalHostSuffix" | sed 's/^/ /')
1114
+ _ALL_ENV_VAR_KEYS: |-
1115
+ ["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"]
1116
+
1117
+ EOF
1118
+ ",
1119
+ "echo -e "\\e[0Ksection_end:$(date +%s):writeenvvars\\r\\e[0K"",
1015
1120
  "echo -e "\\e[0Ksection_start:$(date +%s):deploy[collapsed=true]\\r\\e[0KDeploy to cloud run"",
1016
- "echo "$ENV_VARS" > ____envvars.yaml",
1017
1121
  "gcloud run deploy pan-test-app-prod-www --command="" --image=asia-east1-docker.pkg.dev/asdf/catladder-deploy/pan-test-app/prod/www:$DOCKER_IMAGE_TAG --project=asdf --region=asia-east1 --labels=customer-name=pan,component-name=www,app-name=test-app,env-type=prod,env-name=prod,build-type=custom,cloud-run-service-name=pan-test-app-prod-www --env-vars-file=____envvars.yaml --min-instances=0 --max-instances=100 --cpu-throttling --allow-unauthenticated --ingress=all --cpu-boost",
1018
1122
  "echo -e "\\e[0Ksection_end:$(date +%s):deploy\\r\\e[0K"",
1019
1123
  "echo -e "\\e[0Ksection_start:$(date +%s):cleanup[collapsed=true]\\r\\e[0KCleanup"",
@@ -1022,76 +1126,28 @@ _ALL_ENV_VAR_KEYS: '["ENV_SHORT","APP_DIR","ENV_TYPE","BUILD_INFO_ID","BUILD_INF
1022
1126
  "gcloud artifacts docker images list asia-east1-docker.pkg.dev/asdf/catladder-deploy/pan-test-app/caches/www --sort-by=~CREATE_TIME --format="value(version)" | tail -n +2 | while read -r version; do gcloud artifacts docker images delete asia-east1-docker.pkg.dev/asdf/catladder-deploy/pan-test-app/caches/www@$version --quiet --delete-tags; done",
1023
1127
  "echo -e "\\e[0Ksection_end:$(date +%s):cleanup\\r\\e[0K"",
1024
1128
  "echo Uploading SBOM to Dependency Track",
1025
- "/dtrackuploader https://dep.panter.swiss/ "$DT_KEY_PROD" upload "pan-test-app/www" "https://pan-test-app-prod-www-unknown-host.example.com" "__sbom.json" vex.json || true",
1026
- ],
1027
- "services": [
1028
- {
1029
- "command": [
1030
- "--tls=false",
1031
- ],
1032
- "name": "docker:24.0.6-dind",
1033
- },
1129
+ "/dtrackuploader https://dep.panter.swiss/ "$DT_KEY_PROD" upload "pan-test-app/www" "https://$(printf %s "pan-test-app-prod-www-$CL_prod_www_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')" "__sbom.json" vex.json || true",
1130
+ "echo "CL_GITLAB_ENVIRONMENT_URL=https://$(printf %s "pan-test-app-prod-www-$CL_prod_www_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')" >> gitlab_environment.env",
1034
1131
  ],
1035
1132
  "stage": "deploy prod",
1036
1133
  "variables": {
1037
- "APP_DIR": "www",
1038
- "BUILD_INFO_BUILD_TIME": "01-01-2023 12:13:14",
1039
- "BUILD_INFO_CURRENT_VERSION": "3.2.1",
1040
- "BUILD_INFO_ID": "some-id",
1041
- "CLOUDSDK_CORE_DISABLE_PROMPTS": "1",
1042
- "DEPLOY_CLOUD_RUN_PROJECT_ID": "asdf",
1043
- "DEPLOY_CLOUD_RUN_REGION": "asia-east1",
1044
- "DOCKER_BUILDKIT": "1",
1045
- "DOCKER_CACHE_IMAGE": "asia-east1-docker.pkg.dev/asdf/catladder-deploy/pan-test-app/caches/www",
1046
- "DOCKER_DRIVER": "overlay2",
1047
- "DOCKER_HOST": "tcp://0.0.0.0:2375",
1048
- "DOCKER_IMAGE": "asia-east1-docker.pkg.dev/asdf/catladder-deploy/pan-test-app/prod/www",
1049
- "DOCKER_IMAGE_TAG": "$CI_COMMIT_SHA",
1050
- "DOCKER_REGISTRY": "asia-east1-docker.pkg.dev",
1051
- "DOCKER_TLS_CERTDIR": "",
1052
- "ENV_SHORT": "prod",
1053
- "ENV_TYPE": "prod",
1054
- "ENV_VARS": "ENV_SHORT: 'prod'
1055
- APP_DIR: 'www'
1056
- ENV_TYPE: 'prod'
1057
- BUILD_INFO_ID: 'some-id'
1058
- BUILD_INFO_BUILD_TIME: '01-01-2023 12:13:14'
1059
- BUILD_INFO_CURRENT_VERSION: '3.2.1'
1060
- HOST: 'pan-test-app-prod-www-unknown-host.example.com'
1061
- ROOT_URL: 'https://pan-test-app-prod-www-unknown-host.example.com'
1062
- HOST_CANONICAL: 'pan-test-app-prod-www-unknown-host.example.com'
1063
- ROOT_URL_INTERNAL: 'https://pan-test-app-prod-www-unknown-host.example.com'
1064
- HOST_INTERNAL: 'pan-test-app-prod-www-unknown-host.example.com'
1065
- DEPLOY_CLOUD_RUN_PROJECT_ID: 'asdf'
1066
- DEPLOY_CLOUD_RUN_REGION: 'asia-east1'
1067
- GCLOUD_RUN_canonicalHostSuffix: '$CL_prod_www_GCLOUD_RUN_canonicalHostSuffix'
1068
- _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"]'
1069
- ",
1070
- "GCLOUD_DEPLOY_credentialsKey": "$CL_prod_www_GCLOUD_DEPLOY_credentialsKey",
1071
- "GCLOUD_RUN_canonicalHostSuffix": "$CL_prod_www_GCLOUD_RUN_canonicalHostSuffix",
1072
- "HOST": "pan-test-app-prod-www-unknown-host.example.com",
1073
- "HOST_CANONICAL": "pan-test-app-prod-www-unknown-host.example.com",
1074
- "HOST_INTERNAL": "pan-test-app-prod-www-unknown-host.example.com",
1075
1134
  "KUBERNETES_CPU_REQUEST": "0.5",
1076
1135
  "KUBERNETES_MEMORY_LIMIT": "400Mi",
1077
1136
  "KUBERNETES_MEMORY_REQUEST": "200Mi",
1078
- "ROOT_URL": "https://pan-test-app-prod-www-unknown-host.example.com",
1079
- "ROOT_URL_INTERNAL": "https://pan-test-app-prod-www-unknown-host.example.com",
1080
- "_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"]",
1081
1137
  },
1082
1138
  },
1083
1139
  "www 🚀 Deploy | stage ": {
1084
1140
  "allow_failure": false,
1085
1141
  "artifacts": {
1086
- "paths": [
1087
- "____envvars.yaml",
1088
- ],
1142
+ "reports": {
1143
+ "dotenv": "gitlab_environment.env",
1144
+ },
1089
1145
  },
1090
1146
  "environment": {
1091
1147
  "auto_stop_in": undefined,
1092
1148
  "name": "stage/www",
1093
1149
  "on_stop": "www 🛑 Stop ⚠️ | stage ",
1094
- "url": "https://pan-test-app-stage-www-unknown-host.example.com",
1150
+ "url": "$CL_GITLAB_ENVIRONMENT_URL",
1095
1151
  },
1096
1152
  "image": "path/to/docker/gcloud:the-version",
1097
1153
  "interruptible": true,
@@ -1122,13 +1178,71 @@ _ALL_ENV_VAR_KEYS: '["ENV_SHORT","APP_DIR","ENV_TYPE","BUILD_INFO_ID","BUILD_INF
1122
1178
  },
1123
1179
  ],
1124
1180
  "script": [
1181
+ "echo -e "\\e[0Ksection_start:$(date +%s):injectvars[collapsed=true]\\r\\e[0KInjecting variables"",
1182
+ "export ENV_SHORT="stage"",
1183
+ "export APP_DIR="www"",
1184
+ "export ENV_TYPE="stage"",
1185
+ "export BUILD_INFO_BUILD_ID="$(git describe --tags 2>/dev/null || git rev-parse HEAD)"",
1186
+ "export BUILD_INFO_BUILD_TIME="$CI_JOB_STARTED_AT"",
1187
+ "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")"",
1188
+ "export HOST="$(printf %s "pan-test-app-stage-www-$CL_stage_www_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')"",
1189
+ "export ROOT_URL="https://$(printf %s "pan-test-app-stage-www-$CL_stage_www_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')"",
1190
+ "export HOST_INTERNAL="$(printf %s "pan-test-app-stage-www-$CL_stage_www_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')"",
1191
+ "export HOST_CANONICAL="$(printf %s "pan-test-app-stage-www-$CL_stage_www_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')"",
1192
+ "export ROOT_URL_INTERNAL="https://$(printf %s "pan-test-app-stage-www-$CL_stage_www_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')"",
1193
+ "export DEPLOY_CLOUD_RUN_PROJECT_ID="asdf"",
1194
+ "export DEPLOY_CLOUD_RUN_REGION="asia-east1"",
1195
+ "export GCLOUD_DEPLOY_credentialsKey="$CL_stage_www_GCLOUD_DEPLOY_credentialsKey"",
1196
+ "export GCLOUD_RUN_canonicalHostSuffix="$CL_stage_www_GCLOUD_RUN_canonicalHostSuffix"",
1197
+ "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\\"]"",
1198
+ "export DOCKER_REGISTRY="asia-east1-docker.pkg.dev"",
1199
+ "export DOCKER_IMAGE="asia-east1-docker.pkg.dev/asdf/catladder-deploy/pan-test-app/stage/www"",
1200
+ "export DOCKER_CACHE_IMAGE="asia-east1-docker.pkg.dev/asdf/catladder-deploy/pan-test-app/caches/www"",
1201
+ "export DOCKER_IMAGE_TAG="$CI_COMMIT_SHA"",
1202
+ "export CLOUDSDK_CORE_DISABLE_PROMPTS="1"",
1203
+ "echo -e "\\e[0Ksection_end:$(date +%s):injectvars\\r\\e[0K"",
1125
1204
  "echo -e "\\e[0Ksection_start:$(date +%s):prepare[collapsed=true]\\r\\e[0KPrepare..."",
1126
1205
  "gcloud auth activate-service-account --key-file=<(echo "$CL_stage_www_GCLOUD_DEPLOY_credentialsKey")",
1127
1206
  "export GCLOUD_PROJECT_NUMBER=$(gcloud projects describe asdf --format="value(projectNumber)")",
1128
1207
  "echo "GCLOUD_PROJECT_NUMBER: $GCLOUD_PROJECT_NUMBER"",
1129
1208
  "echo -e "\\e[0Ksection_end:$(date +%s):prepare\\r\\e[0K"",
1209
+ "echo -e "\\e[0Ksection_start:$(date +%s):writeenvvars[collapsed=true]\\r\\e[0KWrite env vars to file"",
1210
+ "cat > ____envvars.yaml <<EOF
1211
+ ENV_SHORT: |-
1212
+ stage
1213
+ APP_DIR: |-
1214
+ www
1215
+ ENV_TYPE: |-
1216
+ stage
1217
+ BUILD_INFO_BUILD_ID: |-
1218
+ $(printf %s "$(git describe --tags 2>/dev/null || git rev-parse HEAD)" | sed 's/^/ /')
1219
+ BUILD_INFO_BUILD_TIME: |-
1220
+ $(printf %s "$CI_JOB_STARTED_AT" | sed 's/^/ /')
1221
+ BUILD_INFO_CURRENT_VERSION: |-
1222
+ $(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/^/ /')
1223
+ HOST: |-
1224
+ $(printf %s "$(printf %s "pan-test-app-stage-www-$CL_stage_www_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')" | sed 's/^/ /')
1225
+ ROOT_URL: |-
1226
+ $(printf %s "https://$(printf %s "pan-test-app-stage-www-$CL_stage_www_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')" | sed 's/^/ /')
1227
+ HOST_INTERNAL: |-
1228
+ $(printf %s "$(printf %s "pan-test-app-stage-www-$CL_stage_www_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')" | sed 's/^/ /')
1229
+ HOST_CANONICAL: |-
1230
+ $(printf %s "$(printf %s "pan-test-app-stage-www-$CL_stage_www_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')" | sed 's/^/ /')
1231
+ ROOT_URL_INTERNAL: |-
1232
+ $(printf %s "https://$(printf %s "pan-test-app-stage-www-$CL_stage_www_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')" | sed 's/^/ /')
1233
+ DEPLOY_CLOUD_RUN_PROJECT_ID: |-
1234
+ asdf
1235
+ DEPLOY_CLOUD_RUN_REGION: |-
1236
+ asia-east1
1237
+ GCLOUD_RUN_canonicalHostSuffix: |-
1238
+ $(printf %s "$CL_stage_www_GCLOUD_RUN_canonicalHostSuffix" | sed 's/^/ /')
1239
+ _ALL_ENV_VAR_KEYS: |-
1240
+ ["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"]
1241
+
1242
+ EOF
1243
+ ",
1244
+ "echo -e "\\e[0Ksection_end:$(date +%s):writeenvvars\\r\\e[0K"",
1130
1245
  "echo -e "\\e[0Ksection_start:$(date +%s):deploy[collapsed=true]\\r\\e[0KDeploy to cloud run"",
1131
- "echo "$ENV_VARS" > ____envvars.yaml",
1132
1246
  "gcloud run deploy pan-test-app-stage-www --command="" --image=asia-east1-docker.pkg.dev/asdf/catladder-deploy/pan-test-app/stage/www:$DOCKER_IMAGE_TAG --project=asdf --region=asia-east1 --labels=customer-name=pan,component-name=www,app-name=test-app,env-type=stage,env-name=stage,build-type=custom,cloud-run-service-name=pan-test-app-stage-www --env-vars-file=____envvars.yaml --min-instances=0 --max-instances=100 --cpu-throttling --allow-unauthenticated --ingress=all --cpu-boost",
1133
1247
  "echo -e "\\e[0Ksection_end:$(date +%s):deploy\\r\\e[0K"",
1134
1248
  "echo -e "\\e[0Ksection_start:$(date +%s):cleanup[collapsed=true]\\r\\e[0KCleanup"",
@@ -1137,69 +1251,27 @@ _ALL_ENV_VAR_KEYS: '["ENV_SHORT","APP_DIR","ENV_TYPE","BUILD_INFO_ID","BUILD_INF
1137
1251
  "gcloud artifacts docker images list asia-east1-docker.pkg.dev/asdf/catladder-deploy/pan-test-app/caches/www --sort-by=~CREATE_TIME --format="value(version)" | tail -n +2 | while read -r version; do gcloud artifacts docker images delete asia-east1-docker.pkg.dev/asdf/catladder-deploy/pan-test-app/caches/www@$version --quiet --delete-tags; done",
1138
1252
  "echo -e "\\e[0Ksection_end:$(date +%s):cleanup\\r\\e[0K"",
1139
1253
  "echo Uploading SBOM to Dependency Track",
1140
- "/dtrackuploader https://dep.panter.swiss/ "$DT_KEY_PROD" upload "pan-test-app/www" "https://pan-test-app-stage-www-unknown-host.example.com" "__sbom.json" vex.json || true",
1141
- ],
1142
- "services": [
1143
- {
1144
- "command": [
1145
- "--tls=false",
1146
- ],
1147
- "name": "docker:24.0.6-dind",
1148
- },
1254
+ "/dtrackuploader https://dep.panter.swiss/ "$DT_KEY_PROD" upload "pan-test-app/www" "https://$(printf %s "pan-test-app-stage-www-$CL_stage_www_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')" "__sbom.json" vex.json || true",
1255
+ "echo "CL_GITLAB_ENVIRONMENT_URL=https://$(printf %s "pan-test-app-stage-www-$CL_stage_www_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')" >> gitlab_environment.env",
1149
1256
  ],
1150
1257
  "stage": "deploy stage",
1151
1258
  "variables": {
1152
- "APP_DIR": "www",
1153
- "BUILD_INFO_BUILD_TIME": "01-01-2023 12:13:14",
1154
- "BUILD_INFO_CURRENT_VERSION": "3.2.1",
1155
- "BUILD_INFO_ID": "some-id",
1156
- "CLOUDSDK_CORE_DISABLE_PROMPTS": "1",
1157
- "DEPLOY_CLOUD_RUN_PROJECT_ID": "asdf",
1158
- "DEPLOY_CLOUD_RUN_REGION": "asia-east1",
1159
- "DOCKER_BUILDKIT": "1",
1160
- "DOCKER_CACHE_IMAGE": "asia-east1-docker.pkg.dev/asdf/catladder-deploy/pan-test-app/caches/www",
1161
- "DOCKER_DRIVER": "overlay2",
1162
- "DOCKER_HOST": "tcp://0.0.0.0:2375",
1163
- "DOCKER_IMAGE": "asia-east1-docker.pkg.dev/asdf/catladder-deploy/pan-test-app/stage/www",
1164
- "DOCKER_IMAGE_TAG": "$CI_COMMIT_SHA",
1165
- "DOCKER_REGISTRY": "asia-east1-docker.pkg.dev",
1166
- "DOCKER_TLS_CERTDIR": "",
1167
- "ENV_SHORT": "stage",
1168
- "ENV_TYPE": "stage",
1169
- "ENV_VARS": "ENV_SHORT: 'stage'
1170
- APP_DIR: 'www'
1171
- ENV_TYPE: 'stage'
1172
- BUILD_INFO_ID: 'some-id'
1173
- BUILD_INFO_BUILD_TIME: '01-01-2023 12:13:14'
1174
- BUILD_INFO_CURRENT_VERSION: '3.2.1'
1175
- HOST: 'pan-test-app-stage-www-unknown-host.example.com'
1176
- ROOT_URL: 'https://pan-test-app-stage-www-unknown-host.example.com'
1177
- HOST_CANONICAL: 'pan-test-app-stage-www-unknown-host.example.com'
1178
- ROOT_URL_INTERNAL: 'https://pan-test-app-stage-www-unknown-host.example.com'
1179
- HOST_INTERNAL: 'pan-test-app-stage-www-unknown-host.example.com'
1180
- DEPLOY_CLOUD_RUN_PROJECT_ID: 'asdf'
1181
- DEPLOY_CLOUD_RUN_REGION: 'asia-east1'
1182
- GCLOUD_RUN_canonicalHostSuffix: '$CL_stage_www_GCLOUD_RUN_canonicalHostSuffix'
1183
- _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"]'
1184
- ",
1185
- "GCLOUD_DEPLOY_credentialsKey": "$CL_stage_www_GCLOUD_DEPLOY_credentialsKey",
1186
- "GCLOUD_RUN_canonicalHostSuffix": "$CL_stage_www_GCLOUD_RUN_canonicalHostSuffix",
1187
- "HOST": "pan-test-app-stage-www-unknown-host.example.com",
1188
- "HOST_CANONICAL": "pan-test-app-stage-www-unknown-host.example.com",
1189
- "HOST_INTERNAL": "pan-test-app-stage-www-unknown-host.example.com",
1190
1259
  "KUBERNETES_CPU_REQUEST": "0.5",
1191
1260
  "KUBERNETES_MEMORY_LIMIT": "400Mi",
1192
1261
  "KUBERNETES_MEMORY_REQUEST": "200Mi",
1193
- "ROOT_URL": "https://pan-test-app-stage-www-unknown-host.example.com",
1194
- "ROOT_URL_INTERNAL": "https://pan-test-app-stage-www-unknown-host.example.com",
1195
- "_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"]",
1196
1262
  },
1197
1263
  },
1198
1264
  "www 🛑 Stop ⚠️ | prod ": {
1265
+ "allow_failure": true,
1266
+ "artifacts": {
1267
+ "reports": {
1268
+ "dotenv": "gitlab_environment.env",
1269
+ },
1270
+ },
1199
1271
  "environment": {
1200
1272
  "action": "stop",
1201
1273
  "name": "prod/www",
1202
- "url": "https://pan-test-app-prod-www-unknown-host.example.com",
1274
+ "url": "$CL_GITLAB_ENVIRONMENT_URL",
1203
1275
  },
1204
1276
  "image": "path/to/docker/gcloud:the-version",
1205
1277
  "interruptible": true,
@@ -1213,28 +1285,29 @@ _ALL_ENV_VAR_KEYS: '["ENV_SHORT","APP_DIR","ENV_TYPE","BUILD_INFO_ID","BUILD_INF
1213
1285
  },
1214
1286
  "rules": [
1215
1287
  {
1216
- "allow_failure": true,
1217
1288
  "if": "$CI_COMMIT_BRANCH =~ /^[0-9]+\\.([0-9]+|x)\\.x$/",
1218
1289
  "when": "on_success",
1219
1290
  },
1220
1291
  {
1221
- "allow_failure": true,
1222
1292
  "when": "manual",
1223
1293
  },
1224
1294
  ],
1225
1295
  "script": [
1296
+ "echo -e "\\e[0Ksection_start:$(date +%s):injectvars[collapsed=true]\\r\\e[0KInjecting variables"",
1297
+ "export CLOUDSDK_CORE_DISABLE_PROMPTS="1"",
1298
+ "echo -e "\\e[0Ksection_end:$(date +%s):injectvars\\r\\e[0K"",
1226
1299
  "set +e",
1227
1300
  "gcloud auth activate-service-account --key-file=<(echo "$CL_prod_www_GCLOUD_DEPLOY_credentialsKey")",
1228
1301
  "gcloud run services delete pan-test-app-prod-www --project=asdf --region=asia-east1",
1229
1302
  "gcloud artifacts docker images delete asia-east1-docker.pkg.dev/asdf/catladder-deploy/pan-test-app/prod/www --quiet --delete-tags",
1230
1303
  "gcloud artifacts docker images list asia-east1-docker.pkg.dev/asdf/catladder-deploy/pan-test-app/caches/www --sort-by=~CREATE_TIME --format="value(version)" | tail -n +2 | while read -r version; do gcloud artifacts docker images delete asia-east1-docker.pkg.dev/asdf/catladder-deploy/pan-test-app/caches/www@$version --quiet --delete-tags; done",
1231
1304
  "echo Disabling component in Dependency Track",
1232
- "/dtrackuploader https://dep.panter.swiss/ "$DT_KEY_PROD" disable "pan-test-app/www" "https://pan-test-app-prod-www-unknown-host.example.com" || true",
1305
+ "/dtrackuploader https://dep.panter.swiss/ "$DT_KEY_PROD" disable "pan-test-app/www" "https://$(printf %s "pan-test-app-prod-www-$CL_prod_www_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')" || true",
1233
1306
  "set -e",
1307
+ "echo "CL_GITLAB_ENVIRONMENT_URL=https://$(printf %s "pan-test-app-prod-www-$CL_prod_www_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')" >> gitlab_environment.env",
1234
1308
  ],
1235
1309
  "stage": "stop prod",
1236
1310
  "variables": {
1237
- "CLOUDSDK_CORE_DISABLE_PROMPTS": "1",
1238
1311
  "GIT_STRATEGY": "none",
1239
1312
  "KUBERNETES_CPU_REQUEST": "0.5",
1240
1313
  "KUBERNETES_MEMORY_LIMIT": "400Mi",
@@ -1242,10 +1315,16 @@ _ALL_ENV_VAR_KEYS: '["ENV_SHORT","APP_DIR","ENV_TYPE","BUILD_INFO_ID","BUILD_INF
1242
1315
  },
1243
1316
  },
1244
1317
  "www 🛑 Stop ⚠️ | stage ": {
1318
+ "allow_failure": true,
1319
+ "artifacts": {
1320
+ "reports": {
1321
+ "dotenv": "gitlab_environment.env",
1322
+ },
1323
+ },
1245
1324
  "environment": {
1246
1325
  "action": "stop",
1247
1326
  "name": "stage/www",
1248
- "url": "https://pan-test-app-stage-www-unknown-host.example.com",
1327
+ "url": "$CL_GITLAB_ENVIRONMENT_URL",
1249
1328
  },
1250
1329
  "image": "path/to/docker/gcloud:the-version",
1251
1330
  "interruptible": true,
@@ -1259,28 +1338,29 @@ _ALL_ENV_VAR_KEYS: '["ENV_SHORT","APP_DIR","ENV_TYPE","BUILD_INFO_ID","BUILD_INF
1259
1338
  },
1260
1339
  "rules": [
1261
1340
  {
1262
- "allow_failure": true,
1263
1341
  "if": "$CI_COMMIT_BRANCH =~ /^[0-9]+\\.([0-9]+|x)\\.x$/",
1264
1342
  "when": "on_success",
1265
1343
  },
1266
1344
  {
1267
- "allow_failure": true,
1268
1345
  "when": "manual",
1269
1346
  },
1270
1347
  ],
1271
1348
  "script": [
1349
+ "echo -e "\\e[0Ksection_start:$(date +%s):injectvars[collapsed=true]\\r\\e[0KInjecting variables"",
1350
+ "export CLOUDSDK_CORE_DISABLE_PROMPTS="1"",
1351
+ "echo -e "\\e[0Ksection_end:$(date +%s):injectvars\\r\\e[0K"",
1272
1352
  "set +e",
1273
1353
  "gcloud auth activate-service-account --key-file=<(echo "$CL_stage_www_GCLOUD_DEPLOY_credentialsKey")",
1274
1354
  "gcloud run services delete pan-test-app-stage-www --project=asdf --region=asia-east1",
1275
1355
  "gcloud artifacts docker images delete asia-east1-docker.pkg.dev/asdf/catladder-deploy/pan-test-app/stage/www --quiet --delete-tags",
1276
1356
  "gcloud artifacts docker images list asia-east1-docker.pkg.dev/asdf/catladder-deploy/pan-test-app/caches/www --sort-by=~CREATE_TIME --format="value(version)" | tail -n +2 | while read -r version; do gcloud artifacts docker images delete asia-east1-docker.pkg.dev/asdf/catladder-deploy/pan-test-app/caches/www@$version --quiet --delete-tags; done",
1277
1357
  "echo Disabling component in Dependency Track",
1278
- "/dtrackuploader https://dep.panter.swiss/ "$DT_KEY_PROD" disable "pan-test-app/www" "https://pan-test-app-stage-www-unknown-host.example.com" || true",
1358
+ "/dtrackuploader https://dep.panter.swiss/ "$DT_KEY_PROD" disable "pan-test-app/www" "https://$(printf %s "pan-test-app-stage-www-$CL_stage_www_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')" || true",
1279
1359
  "set -e",
1360
+ "echo "CL_GITLAB_ENVIRONMENT_URL=https://$(printf %s "pan-test-app-stage-www-$CL_stage_www_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')" >> gitlab_environment.env",
1280
1361
  ],
1281
1362
  "stage": "stop stage",
1282
1363
  "variables": {
1283
- "CLOUDSDK_CORE_DISABLE_PROMPTS": "1",
1284
1364
  "GIT_STRATEGY": "none",
1285
1365
  "KUBERNETES_CPU_REQUEST": "0.5",
1286
1366
  "KUBERNETES_MEMORY_LIMIT": "400Mi",
@@ -1305,6 +1385,8 @@ _ALL_ENV_VAR_KEYS: '["ENV_SHORT","APP_DIR","ENV_TYPE","BUILD_INFO_ID","BUILD_INF
1305
1385
  ],
1306
1386
  },
1307
1387
  "script": [
1388
+ "echo -e "\\e[0Ksection_start:$(date +%s):injectvars[collapsed=true]\\r\\e[0KInjecting variables"",
1389
+ "echo -e "\\e[0Ksection_end:$(date +%s):injectvars\\r\\e[0K"",
1308
1390
  "trivy fs --quiet --format cyclonedx --output "__sbom.json" www",
1309
1391
  ],
1310
1392
  "stage": "build",
@@ -1328,6 +1410,8 @@ _ALL_ENV_VAR_KEYS: '["ENV_SHORT","APP_DIR","ENV_TYPE","BUILD_INFO_ID","BUILD_INF
1328
1410
  ],
1329
1411
  },
1330
1412
  "script": [
1413
+ "echo -e "\\e[0Ksection_start:$(date +%s):injectvars[collapsed=true]\\r\\e[0KInjecting variables"",
1414
+ "echo -e "\\e[0Ksection_end:$(date +%s):injectvars\\r\\e[0K"",
1331
1415
  "trivy fs --quiet --format cyclonedx --output "__sbom.json" www",
1332
1416
  ],
1333
1417
  "stage": "build",
@@ -1380,7 +1464,7 @@ _ALL_ENV_VAR_KEYS: '["ENV_SHORT","APP_DIR","ENV_TYPE","BUILD_INFO_ID","BUILD_INF
1380
1464
  ],
1381
1465
  "variables": {
1382
1466
  "FF_USE_FASTZIP": "true",
1383
- "GIT_DEPTH": 1,
1467
+ "GIT_DEPTH": "1",
1384
1468
  },
1385
1469
  "workflow": {
1386
1470
  "rules": [