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