@catladder/pipeline 1.170.1 → 2.0.1

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 (193) hide show
  1. package/dist/bash/BashExpression.d.ts +1 -6
  2. package/dist/bash/BashExpression.js +2 -15
  3. package/dist/bash/bashEscape.d.ts +34 -0
  4. package/dist/bash/bashEscape.js +114 -0
  5. package/dist/bash/bashYaml.js +25 -2
  6. package/dist/bash/getInjectVarsScript.js +4 -2
  7. package/dist/bash/index.d.ts +2 -0
  8. package/dist/bash/index.js +26 -0
  9. package/dist/build/base/createAppBuildJob.js +3 -3
  10. package/dist/build/base/writeDotEnv.js +6 -4
  11. package/dist/build/custom/testJob.js +12 -12
  12. package/dist/build/docker.d.ts +3 -3
  13. package/dist/build/node/buildJob.js +1 -1
  14. package/dist/build/node/cache.d.ts +2 -4
  15. package/dist/build/node/cache.js +3 -24
  16. package/dist/build/node/testJob.js +11 -11
  17. package/dist/build/rails/build.js +1 -1
  18. package/dist/build/rails/test.js +8 -8
  19. package/dist/build/types.d.ts +0 -10
  20. package/dist/constants.js +1 -1
  21. package/dist/context/createComponentContext.js +0 -1
  22. package/dist/context/getEnvConfig.js +2 -1
  23. package/dist/context/getEnvironment.js +1 -2
  24. package/dist/context/getEnvironmentVariables.d.ts +5 -6
  25. package/dist/context/getEnvironmentVariables.js +50 -38
  26. package/dist/deploy/base/deploy.js +3 -3
  27. package/dist/deploy/cloudRun/createJobs/getCloudRunDeployScripts.js +2 -2
  28. package/dist/deploy/cloudRun/index.js +2 -2
  29. package/dist/deploy/cloudRun/utils/getServiceName.d.ts +1 -1
  30. package/dist/deploy/kubernetes/cloudSql/index.d.ts +2 -2
  31. package/dist/deploy/kubernetes/cloudSql/index.js +3 -14
  32. package/dist/deploy/kubernetes/deployJob.js +1 -3
  33. package/dist/deploy/kubernetes/index.js +2 -2
  34. package/dist/deploy/kubernetes/kubeEnv.d.ts +3 -3
  35. package/dist/deploy/kubernetes/kubeValues.d.ts +3 -4
  36. package/dist/deploy/kubernetes/kubeValues.js +2 -3
  37. package/dist/deploy/types/base.d.ts +0 -6
  38. package/dist/deploy/types/kubernetes.d.ts +1 -34
  39. package/dist/globalScriptFunctions/index.d.ts +14 -0
  40. package/dist/globalScriptFunctions/index.js +37 -0
  41. package/dist/index.d.ts +3 -1
  42. package/dist/index.js +3 -1
  43. package/dist/pipeline/gitlab/createGitlabJobs.js +3 -5
  44. package/dist/pipeline/gitlab/createGitlabPipeline.d.ts +1 -0
  45. package/dist/pipeline/gitlab/createGitlabPipeline.js +38 -2
  46. package/dist/pipeline/packageManager.js +1 -1
  47. package/dist/runner/index.d.ts +1 -1
  48. package/dist/tsconfig.tsbuildinfo +1 -1
  49. package/dist/types/config.d.ts +6 -9
  50. package/dist/types/context.d.ts +2 -9
  51. package/dist/types/gitlab-types.d.ts +1 -0
  52. package/dist/types/jobs.d.ts +0 -8
  53. package/dist/utils/gitlab.js +4 -1
  54. package/dist/utils/writeFiles.js +1 -7
  55. package/dist/variables/VariableValue.d.ts +3 -0
  56. package/dist/variables/VariableValue.js +5 -0
  57. package/dist/variables/VariableValueContainingReferences.d.ts +24 -0
  58. package/dist/variables/VariableValueContainingReferences.js +97 -0
  59. package/dist/variables/__tests__/resolveAllReferences.test.js +219 -0
  60. package/dist/variables/__tests__/resolveAllReferencesOnce.test.d.ts +1 -0
  61. package/dist/variables/__tests__/resolveAllReferencesOnce.test.js +171 -0
  62. package/dist/variables/__tests__/resolveReferencesOnce.test.d.ts +1 -0
  63. package/dist/variables/__tests__/resolveReferencesOnce.test.js +202 -0
  64. package/dist/variables/__tests__/variableValue.test.d.ts +1 -0
  65. package/dist/variables/__tests__/variableValue.test.js +36 -0
  66. package/dist/variables/resolveAllReferences.d.ts +3 -0
  67. package/dist/{bash/replaceAsync.js → variables/resolveAllReferences.js} +60 -40
  68. package/dist/variables/resolveAllReferencesOnce.d.ts +5 -0
  69. package/dist/variables/resolveAllReferencesOnce.js +191 -0
  70. package/dist/variables/resolveReferencesOnce.d.ts +8 -0
  71. package/dist/variables/resolveReferencesOnce.js +22 -0
  72. package/examples/__snapshots__/cloud-run-http2.test.ts.snap +312 -238
  73. package/examples/__snapshots__/cloud-run-memory-limit.test.ts.snap +312 -238
  74. package/examples/__snapshots__/cloud-run-meteor-with-worker.test.ts.snap +312 -222
  75. package/examples/__snapshots__/cloud-run-nextjs.test.ts.snap +1436 -0
  76. package/examples/__snapshots__/cloud-run-no-cpu-throttling.test.ts.snap +312 -238
  77. package/examples/__snapshots__/cloud-run-no-service.test.ts.snap +316 -238
  78. package/examples/__snapshots__/cloud-run-non-public.test.ts.snap +312 -238
  79. package/examples/__snapshots__/cloud-run-post-stop-job.test.ts.snap +313 -238
  80. package/examples/__snapshots__/cloud-run-service-custom-vpc-connector.test.ts.snap +312 -238
  81. package/examples/__snapshots__/cloud-run-service-custom-vpc.test.ts.snap +312 -238
  82. package/examples/__snapshots__/cloud-run-service-gen2.test.ts.snap +312 -238
  83. package/examples/__snapshots__/cloud-run-service-increase-timout.test.ts.snap +312 -238
  84. package/examples/__snapshots__/cloud-run-service-with-volumes.test.ts.snap +316 -238
  85. package/examples/__snapshots__/cloud-run-storybook.test.ts.snap +294 -220
  86. package/examples/__snapshots__/cloud-run-with-ngnix.test.ts.snap +312 -238
  87. package/examples/__snapshots__/cloud-run-with-sql-reuse-db.test.ts.snap +652 -486
  88. package/examples/__snapshots__/cloud-run-with-sql.test.ts.snap +282 -288
  89. package/examples/__snapshots__/cloud-run-with-worker.test.ts.snap +312 -238
  90. package/examples/__snapshots__/custom-build-job-with-tests.test.ts.snap +284 -194
  91. package/examples/__snapshots__/custom-build-job.test.ts.snap +278 -188
  92. package/examples/__snapshots__/custom-deploy.test.ts.snap +220 -154
  93. package/examples/__snapshots__/custom-envs.test.ts.snap +216 -126
  94. package/examples/__snapshots__/custom-sbom-java.test.ts.snap +278 -188
  95. package/examples/__snapshots__/git-submodule.test.ts.snap +312 -238
  96. package/examples/__snapshots__/kubernetes-application-customization.test.ts.snap +231 -253
  97. package/examples/__snapshots__/kubernetes-with-cloud-sql.test.ts.snap +240 -262
  98. package/examples/__snapshots__/kubernetes-with-jobs.test.ts.snap +504 -506
  99. package/examples/__snapshots__/kubernetes-with-mongodb.test.ts.snap +239 -261
  100. package/examples/__snapshots__/local-dot-env.test.ts.snap +236 -238
  101. package/examples/__snapshots__/meteor-kubernetes.test.ts.snap +236 -242
  102. package/examples/__snapshots__/multiline-var.test.ts.snap +1355 -973
  103. package/examples/__snapshots__/native-app.test.ts.snap +438 -392
  104. package/examples/__snapshots__/node-build-with-custom-image.test.ts.snap +312 -238
  105. package/examples/__snapshots__/node-build-with-docker-additions.test.ts.snap +312 -238
  106. package/examples/__snapshots__/rails-k8s-with-worker-dockerfile.test.ts.snap +186 -188
  107. package/examples/__snapshots__/rails-k8s-with-worker.test.ts.snap +162 -164
  108. package/examples/__snapshots__/referencing-other-vars.test.ts.snap +971 -765
  109. package/examples/__snapshots__/wait-for-other-deploy.test.ts.snap +330 -228
  110. package/examples/__snapshots__/{workspace-api-www-custom-cache.test.ts.snap → workspace-api-www-turbo-cache.test.ts.snap} +457 -499
  111. package/examples/__snapshots__/workspace-api-www.test.ts.snap +452 -482
  112. package/examples/{workspace-api-www-custom-cache.test.ts → cloud-run-nextjs.test.ts} +2 -2
  113. package/examples/cloud-run-nextjs.ts +28 -0
  114. package/examples/cloud-run-with-sql.ts +0 -1
  115. package/examples/kubernetes-application-customization.ts +1 -0
  116. package/examples/kubernetes-with-cloud-sql.ts +1 -0
  117. package/examples/kubernetes-with-jobs.ts +1 -0
  118. package/examples/kubernetes-with-mongodb.ts +1 -0
  119. package/examples/meteor-kubernetes.ts +1 -1
  120. package/examples/native-app.ts +10 -7
  121. package/examples/rails-k8s-with-worker.ts +7 -1
  122. package/examples/{kubernetes-with-cloud-sql-legacy.test.ts → workspace-api-www-turbo-cache.test.ts} +2 -2
  123. package/examples/{workspace-api-www-custom-cache.ts → workspace-api-www-turbo-cache.ts} +4 -3
  124. package/examples/workspace-api-www.ts +3 -2
  125. package/package.json +2 -6
  126. package/scripts/generate-examples-test.ts +0 -7
  127. package/src/bash/BashExpression.ts +0 -13
  128. package/src/bash/bashEscape.ts +158 -0
  129. package/src/bash/bashYaml.ts +36 -2
  130. package/src/bash/getInjectVarsScript.ts +11 -2
  131. package/src/bash/index.ts +2 -0
  132. package/src/build/base/createAppBuildJob.ts +0 -1
  133. package/src/build/base/writeDotEnv.ts +6 -6
  134. package/src/build/custom/testJob.ts +0 -1
  135. package/src/build/node/buildJob.ts +2 -2
  136. package/src/build/node/cache.ts +0 -29
  137. package/src/build/node/testJob.ts +0 -1
  138. package/src/build/rails/build.ts +0 -1
  139. package/src/build/rails/test.ts +0 -1
  140. package/src/build/types.ts +0 -13
  141. package/src/context/createComponentContext.ts +0 -1
  142. package/src/context/getEnvConfig.ts +2 -2
  143. package/src/context/getEnvironment.ts +1 -1
  144. package/src/context/getEnvironmentContext.ts +1 -1
  145. package/src/context/getEnvironmentVariables.ts +44 -51
  146. package/src/deploy/base/deploy.ts +1 -1
  147. package/src/deploy/cloudRun/createJobs/getCloudRunDeployScripts.ts +4 -12
  148. package/src/deploy/cloudRun/index.ts +2 -2
  149. package/src/deploy/kubernetes/cloudSql/index.ts +3 -16
  150. package/src/deploy/kubernetes/deployJob.ts +0 -2
  151. package/src/deploy/kubernetes/index.ts +2 -2
  152. package/src/deploy/kubernetes/kubeEnv.ts +3 -3
  153. package/src/deploy/kubernetes/kubeValues.ts +5 -8
  154. package/src/deploy/types/base.ts +0 -6
  155. package/src/deploy/types/kubernetes.ts +1 -36
  156. package/src/globalScriptFunctions/index.ts +30 -0
  157. package/src/index.ts +2 -0
  158. package/src/pipeline/gitlab/createGitlabJobs.ts +1 -4
  159. package/src/pipeline/gitlab/createGitlabPipeline.ts +8 -1
  160. package/src/pipeline/packageManager.ts +7 -5
  161. package/src/runner/index.ts +0 -1
  162. package/src/types/config.ts +6 -9
  163. package/src/types/context.ts +3 -9
  164. package/src/types/gitlab-types.ts +1 -0
  165. package/src/types/jobs.ts +0 -8
  166. package/src/utils/gitlab.ts +19 -2
  167. package/src/utils/writeFiles.ts +1 -2
  168. package/src/variables/VariableValue.ts +6 -0
  169. package/src/variables/VariableValueContainingReferences.ts +89 -0
  170. package/src/variables/__tests__/resolveAllReferences.test.ts +110 -0
  171. package/src/variables/__tests__/resolveAllReferencesOnce.test.ts +64 -0
  172. package/src/variables/__tests__/resolveReferencesOnce.test.ts +117 -0
  173. package/src/variables/__tests__/variableValue.test.ts +73 -0
  174. package/src/variables/resolveAllReferences.ts +46 -0
  175. package/src/variables/resolveAllReferencesOnce.ts +44 -0
  176. package/src/variables/resolveReferencesOnce.ts +29 -0
  177. package/bin/catladder-gitlab-dev.js +0 -3
  178. package/bin/catladder-gitlab.js +0 -3
  179. package/dist/bash/replaceAsync.d.ts +0 -2
  180. package/dist/bundles/catladder-gitlab/index.js +0 -15
  181. package/dist/context/__tests__/resolveReferences.test.js +0 -368
  182. package/dist/context/resolveReferences.d.ts +0 -6
  183. package/dist/context/resolveReferences.js +0 -286
  184. package/dist/deploy/kubernetes/processSecretsAsFiles.d.ts +0 -85
  185. package/dist/deploy/kubernetes/processSecretsAsFiles.js +0 -33
  186. package/examples/__snapshots__/kubernetes-with-cloud-sql-legacy.test.ts.snap +0 -1795
  187. package/examples/kubernetes-with-cloud-sql-legacy.ts +0 -35
  188. package/scripts/bundle +0 -2
  189. package/src/bash/replaceAsync.ts +0 -49
  190. package/src/context/__tests__/resolveReferences.test.ts +0 -148
  191. package/src/context/resolveReferences.ts +0 -93
  192. package/src/deploy/kubernetes/processSecretsAsFiles.ts +0 -35
  193. /package/dist/{context/__tests__/resolveReferences.test.d.ts → variables/__tests__/resolveAllReferences.test.d.ts} +0 -0
@@ -45,13 +45,43 @@ variables:
45
45
  CACHE_COMPRESSION_LEVEL: fast
46
46
  TRANSFER_METER_FREQUENCY: 5s
47
47
  GIT_DEPTH: '1'
48
+ before_script:
49
+ - |-
50
+ function escapeForDotEnv () {
51
+ input="\${1:-$(cat)}"
52
+ input="\${input//$'\\n'/\\\\n}"
53
+ if [[ "$input" == *\\\\n* ]]; then
54
+ if [[ "$input" == *\\"* && "$input" == *\\'* && "$input" == *\\\`* ]]; then
55
+ printf "\\"%s\\"\\n" "$input"
56
+ elif [[ "$input" == *\\"* && "$input" == *\\'* ]]; then
57
+ printf "\`%s\`\\n" "$input"
58
+ elif [[ "$input" == *\\"* ]]; then
59
+ printf "'%s'\\n" "$input"
60
+ else
61
+ printf "\\"%s\\"\\n" "$input"
62
+ fi
63
+ else
64
+ printf "%s\\n" "$input"
65
+ fi
66
+ }
67
+ - |-
68
+ function collapseable_section_start () {
69
+ local section_title="\${1}"
70
+ local section_description="\${2:-$section_title}"
71
+ echo -e "section_start:\`date +%s\`:\${section_title}[collapsed=true]\\r\\e[0K\${section_description}"
72
+ }
73
+ - |-
74
+ function collapseable_section_end () {
75
+ local section_title="\${1}"
76
+ echo -e "section_end:\`date +%s\`:\${section_title}\\r\\e[0K"
77
+ }
48
78
  app 🛡 audit:
49
79
  stage: test
50
80
  image: ruby:3.2.1
51
81
  variables: {}
52
82
  script:
53
- - echo -e "\\e[0Ksection_start:$(date +%s):injectvars[collapsed=true]\\r\\e[0KInjecting variables"
54
- - echo -e "\\e[0Ksection_end:$(date +%s):injectvars\\r\\e[0K"
83
+ - collapseable_section_start "injectvars" "Injecting variables"
84
+ - collapseable_section_end "injectvars"
55
85
  - cd .temp-with-dockerfile
56
86
  - gem install bundler-audit
57
87
  - bundle audit check
@@ -73,8 +103,8 @@ app 👮 lint:
73
103
  image: ruby:3.2.1
74
104
  variables: {}
75
105
  script:
76
- - echo -e "\\e[0Ksection_start:$(date +%s):injectvars[collapsed=true]\\r\\e[0KInjecting variables"
77
- - echo -e "\\e[0Ksection_end:$(date +%s):injectvars\\r\\e[0K"
106
+ - collapseable_section_start "injectvars" "Injecting variables"
107
+ - collapseable_section_end "injectvars"
78
108
  - cd .temp-with-dockerfile
79
109
  - bundle config set path 'tmp/cache'
80
110
  - bundle install -j $(nproc)
@@ -99,8 +129,8 @@ app 🧪 test:
99
129
  image: ruby:3.2.1
100
130
  variables: {}
101
131
  script:
102
- - echo -e "\\e[0Ksection_start:$(date +%s):injectvars[collapsed=true]\\r\\e[0KInjecting variables"
103
- - echo -e "\\e[0Ksection_end:$(date +%s):injectvars\\r\\e[0K"
132
+ - collapseable_section_start "injectvars" "Injecting variables"
133
+ - collapseable_section_end "injectvars"
104
134
  - cd .temp-with-dockerfile
105
135
  - bundle config set path 'tmp/cache'
106
136
  - bundle install -j $(nproc)
@@ -131,7 +161,7 @@ app 🧪 test:
131
161
  KUBERNETES_MEMORY_REQUEST: 1Gi
132
162
  KUBERNETES_MEMORY_LIMIT: 2Gi
133
163
  script:
134
- - echo -e "\\e[0Ksection_start:$(date +%s):injectvars[collapsed=true]\\r\\e[0KInjecting variables"
164
+ - collapseable_section_start "injectvars" "Injecting variables"
135
165
  - export APP_DIR=".temp-with-dockerfile"
136
166
  - export DOCKER_BUILD_CONTEXT="."
137
167
  - export DOCKER_REGISTRY="$CI_REGISTRY"
@@ -139,18 +169,18 @@ app 🧪 test:
139
169
  - export DOCKER_IMAGE_NAME="dev/app"
140
170
  - export DOCKER_IMAGE="$CI_REGISTRY_IMAGE/$DOCKER_IMAGE_NAME"
141
171
  - export DOCKER_IMAGE_TAG="$CI_COMMIT_SHA"
142
- - echo -e "\\e[0Ksection_end:$(date +%s):injectvars\\r\\e[0K"
143
- - echo -e "\\e[0Ksection_start:$(date +%s):docker-login[collapsed=true]\\r\\e[0KDocker Login"
172
+ - collapseable_section_end "injectvars"
173
+ - collapseable_section_start "docker-login" "Docker Login"
144
174
  - docker login --username gitlab-ci-token --password $CI_JOB_TOKEN $CI_REGISTRY
145
- - echo -e "\\e[0Ksection_end:$(date +%s):docker-login\\r\\e[0K"
146
- - echo -e "\\e[0Ksection_start:$(date +%s):docker-build[collapsed=true]\\r\\e[0KDocker build"
175
+ - collapseable_section_end "docker-login"
176
+ - collapseable_section_start "docker-build" "Docker build"
147
177
  - docker build --network host --cache-from $DOCKER_CACHE_IMAGE --tag $DOCKER_IMAGE:$DOCKER_IMAGE_TAG -f $APP_DIR/Dockerfile $DOCKER_BUILD_CONTEXT --build-arg BUILDKIT_INLINE_CACHE=1
148
- - echo -e "\\e[0Ksection_end:$(date +%s):docker-build\\r\\e[0K"
149
- - echo -e "\\e[0Ksection_start:$(date +%s):docker-push[collapsed=true]\\r\\e[0KDocker push and tag"
178
+ - collapseable_section_end "docker-build"
179
+ - collapseable_section_start "docker-push" "Docker push and tag"
150
180
  - docker push $DOCKER_IMAGE:$DOCKER_IMAGE_TAG
151
181
  - docker tag $DOCKER_IMAGE:$DOCKER_IMAGE_TAG $DOCKER_CACHE_IMAGE
152
182
  - docker push $DOCKER_CACHE_IMAGE
153
- - echo -e "\\e[0Ksection_end:$(date +%s):docker-push\\r\\e[0K"
183
+ - collapseable_section_end "docker-push"
154
184
  rules:
155
185
  - when: never
156
186
  if: $CI_COMMIT_MESSAGE =~ /^chore\\(release\\).*/
@@ -163,8 +193,8 @@ app 🧪 test:
163
193
  image: aquasec/trivy:0.38.3
164
194
  variables: {}
165
195
  script:
166
- - echo -e "\\e[0Ksection_start:$(date +%s):injectvars[collapsed=true]\\r\\e[0KInjecting variables"
167
- - echo -e "\\e[0Ksection_end:$(date +%s):injectvars\\r\\e[0K"
196
+ - collapseable_section_start "injectvars" "Injecting variables"
197
+ - collapseable_section_end "injectvars"
168
198
  - trivy fs --quiet --format cyclonedx --output "__sbom.json" .temp-with-dockerfile
169
199
  artifacts:
170
200
  paths:
@@ -185,7 +215,7 @@ app 🧪 test:
185
215
  KUBERNETES_MEMORY_REQUEST: 200Mi
186
216
  KUBERNETES_MEMORY_LIMIT: 400Mi
187
217
  script:
188
- - echo -e "\\e[0Ksection_start:$(date +%s):injectvars[collapsed=true]\\r\\e[0KInjecting variables"
218
+ - collapseable_section_start "injectvars" "Injecting variables"
189
219
  - export ENV_SHORT="dev"
190
220
  - export APP_DIR=".temp-with-dockerfile"
191
221
  - export ENV_TYPE="dev"
@@ -193,8 +223,7 @@ app 🧪 test:
193
223
  - export BUILD_INFO_BUILD_TIME="$CI_JOB_STARTED_AT"
194
224
  - 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\\/v//'); [ -z "$tag" ] && echo "0.0.0" || echo "$tag")"
195
225
  - export ROOT_URL="https://app.dev.test-app.pan.panter.cloud"
196
- - export HOST_INTERNAL="app.dev.test-app.pan.panter.cloud"
197
- - export HOST_CANONICAL="app.dev.test-app.pan.panter.cloud"
226
+ - export HOSTNAME_INTERNAL="app.dev.test-app.pan.panter.cloud"
198
227
  - export ROOT_URL_INTERNAL="https://app.dev.test-app.pan.panter.cloud"
199
228
  - export KUBE_NAMESPACE="pan-test-app-dev"
200
229
  - export KUBE_APP_NAME="app"
@@ -203,7 +232,7 @@ app 🧪 test:
203
232
  - export POSTGRESQL_PASSWORD="$CL_dev_app_POSTGRESQL_PASSWORD"
204
233
  - export cloudsqlProxyCredentials="$CL_dev_app_cloudsqlProxyCredentials"
205
234
  - export RAILS_ENV="production"
206
- - export _ALL_ENV_VAR_KEYS="[\\"ENV_SHORT\\",\\"APP_DIR\\",\\"ENV_TYPE\\",\\"BUILD_INFO_BUILD_ID\\",\\"BUILD_INFO_BUILD_TIME\\",\\"BUILD_INFO_CURRENT_VERSION\\",\\"ROOT_URL\\",\\"HOST_INTERNAL\\",\\"HOST_CANONICAL\\",\\"ROOT_URL_INTERNAL\\",\\"KUBE_NAMESPACE\\",\\"KUBE_APP_NAME\\",\\"KUBE_APP_NAME_PREFIX\\",\\"SECRET_KEY_BASE\\",\\"POSTGRESQL_PASSWORD\\",\\"cloudsqlProxyCredentials\\",\\"RAILS_ENV\\"]"
235
+ - export _ALL_ENV_VAR_KEYS="[\\"ENV_SHORT\\",\\"APP_DIR\\",\\"ENV_TYPE\\",\\"BUILD_INFO_BUILD_ID\\",\\"BUILD_INFO_BUILD_TIME\\",\\"BUILD_INFO_CURRENT_VERSION\\",\\"ROOT_URL\\",\\"HOSTNAME_INTERNAL\\",\\"ROOT_URL_INTERNAL\\",\\"KUBE_NAMESPACE\\",\\"KUBE_APP_NAME\\",\\"KUBE_APP_NAME_PREFIX\\",\\"SECRET_KEY_BASE\\",\\"POSTGRESQL_PASSWORD\\",\\"cloudsqlProxyCredentials\\",\\"RAILS_ENV\\"]"
207
236
  - export DOCKER_REGISTRY="$CI_REGISTRY"
208
237
  - export DOCKER_CACHE_IMAGE="$CI_REGISTRY_IMAGE/caches/app"
209
238
  - export DOCKER_IMAGE_NAME="dev/app"
@@ -215,23 +244,22 @@ app 🧪 test:
215
244
  - export HELM_GITLAB_CHART_NAME="/helm-charts/the-panter-chart"
216
245
  - export HELM_ARGS=""
217
246
  - export COMPONENT_NAME="app"
218
- - export BUILD_ID="$(git describe --tags 2>/dev/null || git rev-parse HEAD)"
219
- - echo -e "\\e[0Ksection_end:$(date +%s):injectvars\\r\\e[0K"
247
+ - collapseable_section_end "injectvars"
220
248
  - kubectl config set-cluster "kube-pan-test-app-dev-app" --server="$CL_dev_app_KUBE_URL" --certificate-authority <(echo $CL_dev_app_KUBE_CA_PEM | base64 -d) --embed-certs=true
221
249
  - kubectl config set-credentials "kube-pan-test-app-dev-app" --token="$CL_dev_app_KUBE_TOKEN"
222
250
  - kubectl config set-context "kube-pan-test-app-dev-app" --cluster="kube-pan-test-app-dev-app" --user="kube-pan-test-app-dev-app" --namespace="pan-test-app-dev"
223
251
  - kubectl config use-context "kube-pan-test-app-dev-app"
224
- - echo -e "\\e[0Ksection_start:$(date +%s):writeallvalues[collapsed=true]\\r\\e[0KWrite __all_values.yml for helm deployment"
252
+ - collapseable_section_start "writeallvalues" "Write __all_values.yml for helm deployment"
225
253
  - |
226
254
  cat > __all_values.yml <<EOF
227
255
  env:
228
256
  secret:
229
257
  SECRET_KEY_BASE: |-
230
- $(printf %s "$CL_dev_app_SECRET_KEY_BASE" | sed 's/^/ /')
258
+ $(printf %s "$CL_dev_app_SECRET_KEY_BASE" | sed '1!s/^/ /')
231
259
  POSTGRESQL_PASSWORD: |-
232
- $(printf %s "$CL_dev_app_POSTGRESQL_PASSWORD" | sed 's/^/ /')
260
+ $(printf %s "$CL_dev_app_POSTGRESQL_PASSWORD" | sed '1!s/^/ /')
233
261
  cloudsqlProxyCredentials: |-
234
- $(printf %s "$CL_dev_app_cloudsqlProxyCredentials" | sed 's/^/ /')
262
+ $(printf %s "$CL_dev_app_cloudsqlProxyCredentials" | sed '1!s/^/ /')
235
263
  public:
236
264
  ENV_SHORT: |-
237
265
  dev
@@ -240,16 +268,14 @@ app 🧪 test:
240
268
  ENV_TYPE: |-
241
269
  dev
242
270
  BUILD_INFO_BUILD_ID: |-
243
- $(printf %s "$(git describe --tags 2>/dev/null || git rev-parse HEAD)" | sed 's/^/ /')
271
+ $(printf %s "$(git describe --tags 2>/dev/null || git rev-parse HEAD)" | sed '1!s/^/ /')
244
272
  BUILD_INFO_BUILD_TIME: |-
245
- $(printf %s "$CI_JOB_STARTED_AT" | sed 's/^/ /')
273
+ $(printf %s "$CI_JOB_STARTED_AT" | sed '1!s/^/ /')
246
274
  BUILD_INFO_CURRENT_VERSION: |-
247
- $(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\\/v//'); [ -z "$tag" ] && echo "0.0.0" || echo "$tag")" | sed 's/^/ /')
275
+ $(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\\/v//'); [ -z "$tag" ] && echo "0.0.0" || echo "$tag")" | sed '1!s/^/ /')
248
276
  ROOT_URL: |-
249
277
  https://app.dev.test-app.pan.panter.cloud
250
- HOST_INTERNAL: |-
251
- app.dev.test-app.pan.panter.cloud
252
- HOST_CANONICAL: |-
278
+ HOSTNAME_INTERNAL: |-
253
279
  app.dev.test-app.pan.panter.cloud
254
280
  ROOT_URL_INTERNAL: |-
255
281
  https://app.dev.test-app.pan.panter.cloud
@@ -261,7 +287,7 @@ app 🧪 test:
261
287
  RAILS_ENV: |-
262
288
  production
263
289
  _ALL_ENV_VAR_KEYS: |-
264
- ["ENV_SHORT","APP_DIR","ENV_TYPE","BUILD_INFO_BUILD_ID","BUILD_INFO_BUILD_TIME","BUILD_INFO_CURRENT_VERSION","ROOT_URL","HOST_INTERNAL","HOST_CANONICAL","ROOT_URL_INTERNAL","KUBE_NAMESPACE","KUBE_APP_NAME","KUBE_APP_NAME_PREFIX","SECRET_KEY_BASE","POSTGRESQL_PASSWORD","cloudsqlProxyCredentials","RAILS_ENV"]
290
+ ["ENV_SHORT","APP_DIR","ENV_TYPE","BUILD_INFO_BUILD_ID","BUILD_INFO_BUILD_TIME","BUILD_INFO_CURRENT_VERSION","ROOT_URL","HOSTNAME_INTERNAL","ROOT_URL_INTERNAL","KUBE_NAMESPACE","KUBE_APP_NAME","KUBE_APP_NAME_PREFIX","SECRET_KEY_BASE","POSTGRESQL_PASSWORD","cloudsqlProxyCredentials","RAILS_ENV"]
265
291
  application:
266
292
  host: |-
267
293
  app.dev.test-app.pan.panter.cloud
@@ -289,13 +315,13 @@ app 🧪 test:
289
315
  dbUser: |-
290
316
  postgres
291
317
  instanceConnectionName: |-
292
- some-project-id:europe-west6:pan-test-app-dev
318
+ myproject:europe-west6:instance-name
293
319
  proxyCredentials: |-
294
320
  $CL_dev_app_cloudsqlProxyCredentials
295
321
  fullDbName: |-
296
- app
297
- projectId: |-
298
- some-project-id
322
+ pan-test-app-dev-app
323
+ type: |-
324
+ unmanaged
299
325
  jobs:
300
326
  db-migrate:
301
327
  hook: |-
@@ -304,7 +330,7 @@ app 🧪 test:
304
330
  launcher bundle exec rake db:migrate
305
331
 
306
332
  EOF
307
- - echo -e "\\e[0Ksection_end:$(date +%s):writeallvalues\\r\\e[0K"
333
+ - collapseable_section_end "writeallvalues"
308
334
  - kubernetesCreateSecret
309
335
  - kubernetesDeploy
310
336
  - echo 'Uploading SBOM to Dependency Track'
@@ -347,7 +373,7 @@ app 🧪 test:
347
373
  KUBERNETES_MEMORY_LIMIT: 400Mi
348
374
  GIT_STRATEGY: none
349
375
  script:
350
- - echo -e "\\e[0Ksection_start:$(date +%s):injectvars[collapsed=true]\\r\\e[0KInjecting variables"
376
+ - collapseable_section_start "injectvars" "Injecting variables"
351
377
  - export ENV_SHORT="dev"
352
378
  - export APP_DIR=".temp-with-dockerfile"
353
379
  - export ENV_TYPE="dev"
@@ -355,8 +381,7 @@ app 🧪 test:
355
381
  - export BUILD_INFO_BUILD_TIME="$CI_JOB_STARTED_AT"
356
382
  - 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\\/v//'); [ -z "$tag" ] && echo "0.0.0" || echo "$tag")"
357
383
  - export ROOT_URL="https://app.dev.test-app.pan.panter.cloud"
358
- - export HOST_INTERNAL="app.dev.test-app.pan.panter.cloud"
359
- - export HOST_CANONICAL="app.dev.test-app.pan.panter.cloud"
384
+ - export HOSTNAME_INTERNAL="app.dev.test-app.pan.panter.cloud"
360
385
  - export ROOT_URL_INTERNAL="https://app.dev.test-app.pan.panter.cloud"
361
386
  - export KUBE_NAMESPACE="pan-test-app-dev"
362
387
  - export KUBE_APP_NAME="app"
@@ -365,15 +390,14 @@ app 🧪 test:
365
390
  - export POSTGRESQL_PASSWORD="$CL_dev_app_POSTGRESQL_PASSWORD"
366
391
  - export cloudsqlProxyCredentials="$CL_dev_app_cloudsqlProxyCredentials"
367
392
  - export RAILS_ENV="production"
368
- - export _ALL_ENV_VAR_KEYS="[\\"ENV_SHORT\\",\\"APP_DIR\\",\\"ENV_TYPE\\",\\"BUILD_INFO_BUILD_ID\\",\\"BUILD_INFO_BUILD_TIME\\",\\"BUILD_INFO_CURRENT_VERSION\\",\\"ROOT_URL\\",\\"HOST_INTERNAL\\",\\"HOST_CANONICAL\\",\\"ROOT_URL_INTERNAL\\",\\"KUBE_NAMESPACE\\",\\"KUBE_APP_NAME\\",\\"KUBE_APP_NAME_PREFIX\\",\\"SECRET_KEY_BASE\\",\\"POSTGRESQL_PASSWORD\\",\\"cloudsqlProxyCredentials\\",\\"RAILS_ENV\\"]"
393
+ - export _ALL_ENV_VAR_KEYS="[\\"ENV_SHORT\\",\\"APP_DIR\\",\\"ENV_TYPE\\",\\"BUILD_INFO_BUILD_ID\\",\\"BUILD_INFO_BUILD_TIME\\",\\"BUILD_INFO_CURRENT_VERSION\\",\\"ROOT_URL\\",\\"HOSTNAME_INTERNAL\\",\\"ROOT_URL_INTERNAL\\",\\"KUBE_NAMESPACE\\",\\"KUBE_APP_NAME\\",\\"KUBE_APP_NAME_PREFIX\\",\\"SECRET_KEY_BASE\\",\\"POSTGRESQL_PASSWORD\\",\\"cloudsqlProxyCredentials\\",\\"RAILS_ENV\\"]"
369
394
  - export RELEASE_NAME="pan-test-app-dev-app"
370
395
  - export HELM_EXPERIMENTAL_OCI="1"
371
396
  - export KUBE_DOCKER_IMAGE_PULL_SECRET="gitlab-registry-app"
372
397
  - export HELM_GITLAB_CHART_NAME="/helm-charts/the-panter-chart"
373
398
  - export HELM_ARGS=""
374
399
  - export COMPONENT_NAME="app"
375
- - export BUILD_ID="$(git describe --tags 2>/dev/null || git rev-parse HEAD)"
376
- - echo -e "\\e[0Ksection_end:$(date +%s):injectvars\\r\\e[0K"
400
+ - collapseable_section_end "injectvars"
377
401
  - kubectl config set-cluster "kube-pan-test-app-dev-app" --server="$CL_dev_app_KUBE_URL" --certificate-authority <(echo $CL_dev_app_KUBE_CA_PEM | base64 -d) --embed-certs=true
378
402
  - kubectl config set-credentials "kube-pan-test-app-dev-app" --token="$CL_dev_app_KUBE_TOKEN"
379
403
  - kubectl config set-context "kube-pan-test-app-dev-app" --cluster="kube-pan-test-app-dev-app" --user="kube-pan-test-app-dev-app" --namespace="pan-test-app-dev"
@@ -409,7 +433,7 @@ app 🧪 test:
409
433
  KUBERNETES_MEMORY_LIMIT: 400Mi
410
434
  GIT_STRATEGY: none
411
435
  script:
412
- - echo -e "\\e[0Ksection_start:$(date +%s):injectvars[collapsed=true]\\r\\e[0KInjecting variables"
436
+ - collapseable_section_start "injectvars" "Injecting variables"
413
437
  - export ENV_SHORT="dev"
414
438
  - export APP_DIR=".temp-with-dockerfile"
415
439
  - export ENV_TYPE="dev"
@@ -417,8 +441,7 @@ app 🧪 test:
417
441
  - export BUILD_INFO_BUILD_TIME="$CI_JOB_STARTED_AT"
418
442
  - 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\\/v//'); [ -z "$tag" ] && echo "0.0.0" || echo "$tag")"
419
443
  - export ROOT_URL="https://app.dev.test-app.pan.panter.cloud"
420
- - export HOST_INTERNAL="app.dev.test-app.pan.panter.cloud"
421
- - export HOST_CANONICAL="app.dev.test-app.pan.panter.cloud"
444
+ - export HOSTNAME_INTERNAL="app.dev.test-app.pan.panter.cloud"
422
445
  - export ROOT_URL_INTERNAL="https://app.dev.test-app.pan.panter.cloud"
423
446
  - export KUBE_NAMESPACE="pan-test-app-dev"
424
447
  - export KUBE_APP_NAME="app"
@@ -427,15 +450,14 @@ app 🧪 test:
427
450
  - export POSTGRESQL_PASSWORD="$CL_dev_app_POSTGRESQL_PASSWORD"
428
451
  - export cloudsqlProxyCredentials="$CL_dev_app_cloudsqlProxyCredentials"
429
452
  - export RAILS_ENV="production"
430
- - export _ALL_ENV_VAR_KEYS="[\\"ENV_SHORT\\",\\"APP_DIR\\",\\"ENV_TYPE\\",\\"BUILD_INFO_BUILD_ID\\",\\"BUILD_INFO_BUILD_TIME\\",\\"BUILD_INFO_CURRENT_VERSION\\",\\"ROOT_URL\\",\\"HOST_INTERNAL\\",\\"HOST_CANONICAL\\",\\"ROOT_URL_INTERNAL\\",\\"KUBE_NAMESPACE\\",\\"KUBE_APP_NAME\\",\\"KUBE_APP_NAME_PREFIX\\",\\"SECRET_KEY_BASE\\",\\"POSTGRESQL_PASSWORD\\",\\"cloudsqlProxyCredentials\\",\\"RAILS_ENV\\"]"
453
+ - export _ALL_ENV_VAR_KEYS="[\\"ENV_SHORT\\",\\"APP_DIR\\",\\"ENV_TYPE\\",\\"BUILD_INFO_BUILD_ID\\",\\"BUILD_INFO_BUILD_TIME\\",\\"BUILD_INFO_CURRENT_VERSION\\",\\"ROOT_URL\\",\\"HOSTNAME_INTERNAL\\",\\"ROOT_URL_INTERNAL\\",\\"KUBE_NAMESPACE\\",\\"KUBE_APP_NAME\\",\\"KUBE_APP_NAME_PREFIX\\",\\"SECRET_KEY_BASE\\",\\"POSTGRESQL_PASSWORD\\",\\"cloudsqlProxyCredentials\\",\\"RAILS_ENV\\"]"
431
454
  - export RELEASE_NAME="pan-test-app-dev-app"
432
455
  - export HELM_EXPERIMENTAL_OCI="1"
433
456
  - export KUBE_DOCKER_IMAGE_PULL_SECRET="gitlab-registry-app"
434
457
  - export HELM_GITLAB_CHART_NAME="/helm-charts/the-panter-chart"
435
458
  - export HELM_ARGS=""
436
459
  - export COMPONENT_NAME="app"
437
- - export BUILD_ID="$(git describe --tags 2>/dev/null || git rev-parse HEAD)"
438
- - echo -e "\\e[0Ksection_end:$(date +%s):injectvars\\r\\e[0K"
460
+ - collapseable_section_end "injectvars"
439
461
  - kubectl config set-cluster "kube-pan-test-app-dev-app" --server="$CL_dev_app_KUBE_URL" --certificate-authority <(echo $CL_dev_app_KUBE_CA_PEM | base64 -d) --embed-certs=true
440
462
  - kubectl config set-credentials "kube-pan-test-app-dev-app" --token="$CL_dev_app_KUBE_TOKEN"
441
463
  - kubectl config set-context "kube-pan-test-app-dev-app" --cluster="kube-pan-test-app-dev-app" --user="kube-pan-test-app-dev-app" --namespace="pan-test-app-dev"
@@ -475,7 +497,7 @@ app 🧪 test:
475
497
  KUBERNETES_MEMORY_REQUEST: 1Gi
476
498
  KUBERNETES_MEMORY_LIMIT: 2Gi
477
499
  script:
478
- - echo -e "\\e[0Ksection_start:$(date +%s):injectvars[collapsed=true]\\r\\e[0KInjecting variables"
500
+ - collapseable_section_start "injectvars" "Injecting variables"
479
501
  - export APP_DIR=".temp-with-dockerfile"
480
502
  - export DOCKER_BUILD_CONTEXT="."
481
503
  - export DOCKER_REGISTRY="$CI_REGISTRY"
@@ -483,18 +505,18 @@ app 🧪 test:
483
505
  - export DOCKER_IMAGE_NAME="review/app"
484
506
  - export DOCKER_IMAGE="$CI_REGISTRY_IMAGE/$DOCKER_IMAGE_NAME"
485
507
  - export DOCKER_IMAGE_TAG="$CI_COMMIT_SHA"
486
- - echo -e "\\e[0Ksection_end:$(date +%s):injectvars\\r\\e[0K"
487
- - echo -e "\\e[0Ksection_start:$(date +%s):docker-login[collapsed=true]\\r\\e[0KDocker Login"
508
+ - collapseable_section_end "injectvars"
509
+ - collapseable_section_start "docker-login" "Docker Login"
488
510
  - docker login --username gitlab-ci-token --password $CI_JOB_TOKEN $CI_REGISTRY
489
- - echo -e "\\e[0Ksection_end:$(date +%s):docker-login\\r\\e[0K"
490
- - echo -e "\\e[0Ksection_start:$(date +%s):docker-build[collapsed=true]\\r\\e[0KDocker build"
511
+ - collapseable_section_end "docker-login"
512
+ - collapseable_section_start "docker-build" "Docker build"
491
513
  - docker build --network host --cache-from $DOCKER_CACHE_IMAGE --tag $DOCKER_IMAGE:$DOCKER_IMAGE_TAG -f $APP_DIR/Dockerfile $DOCKER_BUILD_CONTEXT --build-arg BUILDKIT_INLINE_CACHE=1
492
- - echo -e "\\e[0Ksection_end:$(date +%s):docker-build\\r\\e[0K"
493
- - echo -e "\\e[0Ksection_start:$(date +%s):docker-push[collapsed=true]\\r\\e[0KDocker push and tag"
514
+ - collapseable_section_end "docker-build"
515
+ - collapseable_section_start "docker-push" "Docker push and tag"
494
516
  - docker push $DOCKER_IMAGE:$DOCKER_IMAGE_TAG
495
517
  - docker tag $DOCKER_IMAGE:$DOCKER_IMAGE_TAG $DOCKER_CACHE_IMAGE
496
518
  - docker push $DOCKER_CACHE_IMAGE
497
- - echo -e "\\e[0Ksection_end:$(date +%s):docker-push\\r\\e[0K"
519
+ - collapseable_section_end "docker-push"
498
520
  rules:
499
521
  - if: $CI_MERGE_REQUEST_ID
500
522
  needs: []
@@ -505,8 +527,8 @@ app 🧪 test:
505
527
  image: aquasec/trivy:0.38.3
506
528
  variables: {}
507
529
  script:
508
- - echo -e "\\e[0Ksection_start:$(date +%s):injectvars[collapsed=true]\\r\\e[0KInjecting variables"
509
- - echo -e "\\e[0Ksection_end:$(date +%s):injectvars\\r\\e[0K"
530
+ - collapseable_section_start "injectvars" "Injecting variables"
531
+ - collapseable_section_end "injectvars"
510
532
  - trivy fs --quiet --format cyclonedx --output "__sbom.json" .temp-with-dockerfile
511
533
  artifacts:
512
534
  paths:
@@ -525,7 +547,7 @@ app 🧪 test:
525
547
  KUBERNETES_MEMORY_REQUEST: 200Mi
526
548
  KUBERNETES_MEMORY_LIMIT: 400Mi
527
549
  script:
528
- - echo -e "\\e[0Ksection_start:$(date +%s):injectvars[collapsed=true]\\r\\e[0KInjecting variables"
550
+ - collapseable_section_start "injectvars" "Injecting variables"
529
551
  - export ENV_SHORT="review"
530
552
  - export APP_DIR=".temp-with-dockerfile"
531
553
  - export ENV_TYPE="review"
@@ -533,8 +555,7 @@ app 🧪 test:
533
555
  - export BUILD_INFO_BUILD_TIME="$CI_JOB_STARTED_AT"
534
556
  - export BUILD_INFO_CURRENT_VERSION="$(tag=$(git ls-remote origin "refs/tags/v*[0-9]" 2>/dev/null | cut -f 2- | sort -V | tail -1 | sed 's/refs\\/tags\\/v//'); [ -z "$tag" ] && echo "0.0.0" || echo "$tag")"
535
557
  - export ROOT_URL="https://app.$([ -n "$CI_MERGE_REQUEST_IID" ] && echo "mr$CI_MERGE_REQUEST_IID" || { [ -n "$CI_COMMIT_REF_SLUG" ] && echo "$CI_COMMIT_REF_SLUG" || echo "unknown"; }).review.test-app.pan.panter.cloud"
536
- - export HOST_INTERNAL="app.$([ -n "$CI_MERGE_REQUEST_IID" ] && echo "mr$CI_MERGE_REQUEST_IID" || { [ -n "$CI_COMMIT_REF_SLUG" ] && echo "$CI_COMMIT_REF_SLUG" || echo "unknown"; }).review.test-app.pan.panter.cloud"
537
- - export HOST_CANONICAL="app.$([ -n "$CI_MERGE_REQUEST_IID" ] && echo "mr$CI_MERGE_REQUEST_IID" || { [ -n "$CI_COMMIT_REF_SLUG" ] && echo "$CI_COMMIT_REF_SLUG" || echo "unknown"; }).review.test-app.pan.panter.cloud"
558
+ - export HOSTNAME_INTERNAL="app.$([ -n "$CI_MERGE_REQUEST_IID" ] && echo "mr$CI_MERGE_REQUEST_IID" || { [ -n "$CI_COMMIT_REF_SLUG" ] && echo "$CI_COMMIT_REF_SLUG" || echo "unknown"; }).review.test-app.pan.panter.cloud"
538
559
  - export ROOT_URL_INTERNAL="https://app.$([ -n "$CI_MERGE_REQUEST_IID" ] && echo "mr$CI_MERGE_REQUEST_IID" || { [ -n "$CI_COMMIT_REF_SLUG" ] && echo "$CI_COMMIT_REF_SLUG" || echo "unknown"; }).review.test-app.pan.panter.cloud"
539
560
  - export KUBE_NAMESPACE="pan-test-app-review"
540
561
  - export KUBE_APP_NAME="$([ -n "$CI_MERGE_REQUEST_IID" ] && echo "mr$CI_MERGE_REQUEST_IID" || { [ -n "$CI_COMMIT_REF_SLUG" ] && echo "$CI_COMMIT_REF_SLUG" || echo "unknown"; })-app"
@@ -543,7 +564,7 @@ app 🧪 test:
543
564
  - export POSTGRESQL_PASSWORD="$CL_review_app_POSTGRESQL_PASSWORD"
544
565
  - export cloudsqlProxyCredentials="$CL_review_app_cloudsqlProxyCredentials"
545
566
  - export RAILS_ENV="production"
546
- - export _ALL_ENV_VAR_KEYS="[\\"ENV_SHORT\\",\\"APP_DIR\\",\\"ENV_TYPE\\",\\"BUILD_INFO_BUILD_ID\\",\\"BUILD_INFO_BUILD_TIME\\",\\"BUILD_INFO_CURRENT_VERSION\\",\\"ROOT_URL\\",\\"HOST_INTERNAL\\",\\"HOST_CANONICAL\\",\\"ROOT_URL_INTERNAL\\",\\"KUBE_NAMESPACE\\",\\"KUBE_APP_NAME\\",\\"KUBE_APP_NAME_PREFIX\\",\\"SECRET_KEY_BASE\\",\\"POSTGRESQL_PASSWORD\\",\\"cloudsqlProxyCredentials\\",\\"RAILS_ENV\\"]"
567
+ - export _ALL_ENV_VAR_KEYS="[\\"ENV_SHORT\\",\\"APP_DIR\\",\\"ENV_TYPE\\",\\"BUILD_INFO_BUILD_ID\\",\\"BUILD_INFO_BUILD_TIME\\",\\"BUILD_INFO_CURRENT_VERSION\\",\\"ROOT_URL\\",\\"HOSTNAME_INTERNAL\\",\\"ROOT_URL_INTERNAL\\",\\"KUBE_NAMESPACE\\",\\"KUBE_APP_NAME\\",\\"KUBE_APP_NAME_PREFIX\\",\\"SECRET_KEY_BASE\\",\\"POSTGRESQL_PASSWORD\\",\\"cloudsqlProxyCredentials\\",\\"RAILS_ENV\\"]"
547
568
  - export DOCKER_REGISTRY="$CI_REGISTRY"
548
569
  - export DOCKER_CACHE_IMAGE="$CI_REGISTRY_IMAGE/caches/app"
549
570
  - export DOCKER_IMAGE_NAME="review/app"
@@ -555,23 +576,22 @@ app 🧪 test:
555
576
  - export HELM_GITLAB_CHART_NAME="/helm-charts/the-panter-chart"
556
577
  - export HELM_ARGS=""
557
578
  - export COMPONENT_NAME="app"
558
- - export BUILD_ID="$(git describe --tags 2>/dev/null || git rev-parse HEAD)"
559
- - echo -e "\\e[0Ksection_end:$(date +%s):injectvars\\r\\e[0K"
579
+ - collapseable_section_end "injectvars"
560
580
  - kubectl config set-cluster "kube-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" --server="$CL_review_app_KUBE_URL" --certificate-authority <(echo $CL_review_app_KUBE_CA_PEM | base64 -d) --embed-certs=true
561
581
  - kubectl config set-credentials "kube-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" --token="$CL_review_app_KUBE_TOKEN"
562
582
  - kubectl config set-context "kube-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" --cluster="kube-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" --user="kube-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" --namespace="pan-test-app-review"
563
583
  - kubectl config use-context "kube-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"
564
- - echo -e "\\e[0Ksection_start:$(date +%s):writeallvalues[collapsed=true]\\r\\e[0KWrite __all_values.yml for helm deployment"
584
+ - collapseable_section_start "writeallvalues" "Write __all_values.yml for helm deployment"
565
585
  - |
566
586
  cat > __all_values.yml <<EOF
567
587
  env:
568
588
  secret:
569
589
  SECRET_KEY_BASE: |-
570
- $(printf %s "$CL_review_app_SECRET_KEY_BASE" | sed 's/^/ /')
590
+ $(printf %s "$CL_review_app_SECRET_KEY_BASE" | sed '1!s/^/ /')
571
591
  POSTGRESQL_PASSWORD: |-
572
- $(printf %s "$CL_review_app_POSTGRESQL_PASSWORD" | sed 's/^/ /')
592
+ $(printf %s "$CL_review_app_POSTGRESQL_PASSWORD" | sed '1!s/^/ /')
573
593
  cloudsqlProxyCredentials: |-
574
- $(printf %s "$CL_review_app_cloudsqlProxyCredentials" | sed 's/^/ /')
594
+ $(printf %s "$CL_review_app_cloudsqlProxyCredentials" | sed '1!s/^/ /')
575
595
  public:
576
596
  ENV_SHORT: |-
577
597
  review
@@ -580,32 +600,30 @@ app 🧪 test:
580
600
  ENV_TYPE: |-
581
601
  review
582
602
  BUILD_INFO_BUILD_ID: |-
583
- $(printf %s "$(git describe --tags 2>/dev/null || git rev-parse HEAD)" | sed 's/^/ /')
603
+ $(printf %s "$(git describe --tags 2>/dev/null || git rev-parse HEAD)" | sed '1!s/^/ /')
584
604
  BUILD_INFO_BUILD_TIME: |-
585
- $(printf %s "$CI_JOB_STARTED_AT" | sed 's/^/ /')
605
+ $(printf %s "$CI_JOB_STARTED_AT" | sed '1!s/^/ /')
586
606
  BUILD_INFO_CURRENT_VERSION: |-
587
- $(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\\/v//'); [ -z "$tag" ] && echo "0.0.0" || echo "$tag")" | sed 's/^/ /')
607
+ $(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\\/v//'); [ -z "$tag" ] && echo "0.0.0" || echo "$tag")" | sed '1!s/^/ /')
588
608
  ROOT_URL: |-
589
- $(printf %s "https://app.$([ -n "$CI_MERGE_REQUEST_IID" ] && echo "mr$CI_MERGE_REQUEST_IID" || { [ -n "$CI_COMMIT_REF_SLUG" ] && echo "$CI_COMMIT_REF_SLUG" || echo "unknown"; }).review.test-app.pan.panter.cloud" | sed 's/^/ /')
590
- HOST_INTERNAL: |-
591
- $(printf %s "app.$([ -n "$CI_MERGE_REQUEST_IID" ] && echo "mr$CI_MERGE_REQUEST_IID" || { [ -n "$CI_COMMIT_REF_SLUG" ] && echo "$CI_COMMIT_REF_SLUG" || echo "unknown"; }).review.test-app.pan.panter.cloud" | sed 's/^/ /')
592
- HOST_CANONICAL: |-
593
- $(printf %s "app.$([ -n "$CI_MERGE_REQUEST_IID" ] && echo "mr$CI_MERGE_REQUEST_IID" || { [ -n "$CI_COMMIT_REF_SLUG" ] && echo "$CI_COMMIT_REF_SLUG" || echo "unknown"; }).review.test-app.pan.panter.cloud" | sed 's/^/ /')
609
+ $(printf %s "https://app.$([ -n "$CI_MERGE_REQUEST_IID" ] && echo "mr$CI_MERGE_REQUEST_IID" || { [ -n "$CI_COMMIT_REF_SLUG" ] && echo "$CI_COMMIT_REF_SLUG" || echo "unknown"; }).review.test-app.pan.panter.cloud" | sed '1!s/^/ /')
610
+ HOSTNAME_INTERNAL: |-
611
+ $(printf %s "app.$([ -n "$CI_MERGE_REQUEST_IID" ] && echo "mr$CI_MERGE_REQUEST_IID" || { [ -n "$CI_COMMIT_REF_SLUG" ] && echo "$CI_COMMIT_REF_SLUG" || echo "unknown"; }).review.test-app.pan.panter.cloud" | sed '1!s/^/ /')
594
612
  ROOT_URL_INTERNAL: |-
595
- $(printf %s "https://app.$([ -n "$CI_MERGE_REQUEST_IID" ] && echo "mr$CI_MERGE_REQUEST_IID" || { [ -n "$CI_COMMIT_REF_SLUG" ] && echo "$CI_COMMIT_REF_SLUG" || echo "unknown"; }).review.test-app.pan.panter.cloud" | sed 's/^/ /')
613
+ $(printf %s "https://app.$([ -n "$CI_MERGE_REQUEST_IID" ] && echo "mr$CI_MERGE_REQUEST_IID" || { [ -n "$CI_COMMIT_REF_SLUG" ] && echo "$CI_COMMIT_REF_SLUG" || echo "unknown"; }).review.test-app.pan.panter.cloud" | sed '1!s/^/ /')
596
614
  KUBE_NAMESPACE: |-
597
615
  pan-test-app-review
598
616
  KUBE_APP_NAME: |-
599
- $(printf %s "$([ -n "$CI_MERGE_REQUEST_IID" ] && echo "mr$CI_MERGE_REQUEST_IID" || { [ -n "$CI_COMMIT_REF_SLUG" ] && echo "$CI_COMMIT_REF_SLUG" || echo "unknown"; })-app" | sed 's/^/ /')
617
+ $(printf %s "$([ -n "$CI_MERGE_REQUEST_IID" ] && echo "mr$CI_MERGE_REQUEST_IID" || { [ -n "$CI_COMMIT_REF_SLUG" ] && echo "$CI_COMMIT_REF_SLUG" || echo "unknown"; })-app" | sed '1!s/^/ /')
600
618
  KUBE_APP_NAME_PREFIX: |-
601
- $(printf %s "$([ -n "$CI_MERGE_REQUEST_IID" ] && echo "mr$CI_MERGE_REQUEST_IID" || { [ -n "$CI_COMMIT_REF_SLUG" ] && echo "$CI_COMMIT_REF_SLUG" || echo "unknown"; })-" | sed 's/^/ /')
619
+ $(printf %s "$([ -n "$CI_MERGE_REQUEST_IID" ] && echo "mr$CI_MERGE_REQUEST_IID" || { [ -n "$CI_COMMIT_REF_SLUG" ] && echo "$CI_COMMIT_REF_SLUG" || echo "unknown"; })-" | sed '1!s/^/ /')
602
620
  RAILS_ENV: |-
603
621
  production
604
622
  _ALL_ENV_VAR_KEYS: |-
605
- ["ENV_SHORT","APP_DIR","ENV_TYPE","BUILD_INFO_BUILD_ID","BUILD_INFO_BUILD_TIME","BUILD_INFO_CURRENT_VERSION","ROOT_URL","HOST_INTERNAL","HOST_CANONICAL","ROOT_URL_INTERNAL","KUBE_NAMESPACE","KUBE_APP_NAME","KUBE_APP_NAME_PREFIX","SECRET_KEY_BASE","POSTGRESQL_PASSWORD","cloudsqlProxyCredentials","RAILS_ENV"]
623
+ ["ENV_SHORT","APP_DIR","ENV_TYPE","BUILD_INFO_BUILD_ID","BUILD_INFO_BUILD_TIME","BUILD_INFO_CURRENT_VERSION","ROOT_URL","HOSTNAME_INTERNAL","ROOT_URL_INTERNAL","KUBE_NAMESPACE","KUBE_APP_NAME","KUBE_APP_NAME_PREFIX","SECRET_KEY_BASE","POSTGRESQL_PASSWORD","cloudsqlProxyCredentials","RAILS_ENV"]
606
624
  application:
607
625
  host: |-
608
- $(printf %s "app.$([ -n "$CI_MERGE_REQUEST_IID" ] && echo "mr$CI_MERGE_REQUEST_IID" || { [ -n "$CI_COMMIT_REF_SLUG" ] && echo "$CI_COMMIT_REF_SLUG" || echo "unknown"; }).review.test-app.pan.panter.cloud" | sed 's/^/ /')
626
+ $(printf %s "app.$([ -n "$CI_MERGE_REQUEST_IID" ] && echo "mr$CI_MERGE_REQUEST_IID" || { [ -n "$CI_COMMIT_REF_SLUG" ] && echo "$CI_COMMIT_REF_SLUG" || echo "unknown"; }).review.test-app.pan.panter.cloud" | sed '1!s/^/ /')
609
627
  command: |-
610
628
  /cnb/process/web
611
629
  livenessProbe:
@@ -630,13 +648,13 @@ app 🧪 test:
630
648
  dbUser: |-
631
649
  postgres
632
650
  instanceConnectionName: |-
633
- some-project-id:europe-west6:pan-test-app-review
651
+ myproject:europe-west6:instance-name
634
652
  proxyCredentials: |-
635
653
  $CL_review_app_cloudsqlProxyCredentials
636
654
  fullDbName: |-
637
- $(printf %s "$([ -n "$CI_MERGE_REQUEST_IID" ] && echo "mr$CI_MERGE_REQUEST_IID" || { [ -n "$CI_COMMIT_REF_SLUG" ] && echo "$CI_COMMIT_REF_SLUG" || echo "unknown"; })-app" | sed 's/^/ /')
638
- projectId: |-
639
- some-project-id
655
+ $(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" | sed '1!s/^/ /')
656
+ type: |-
657
+ unmanaged
640
658
  jobs:
641
659
  db-migrate:
642
660
  hook: |-
@@ -650,7 +668,7 @@ app 🧪 test:
650
668
  launcher bundle exec rake db:prepare db:seed
651
669
 
652
670
  EOF
653
- - echo -e "\\e[0Ksection_end:$(date +%s):writeallvalues\\r\\e[0K"
671
+ - collapseable_section_end "writeallvalues"
654
672
  - kubernetesCreateSecret
655
673
  - kubernetesDeploy
656
674
  - echo 'Uploading SBOM to Dependency Track'
@@ -691,7 +709,7 @@ app 🧪 test:
691
709
  KUBERNETES_MEMORY_LIMIT: 400Mi
692
710
  GIT_STRATEGY: none
693
711
  script:
694
- - echo -e "\\e[0Ksection_start:$(date +%s):injectvars[collapsed=true]\\r\\e[0KInjecting variables"
712
+ - collapseable_section_start "injectvars" "Injecting variables"
695
713
  - export ENV_SHORT="review"
696
714
  - export APP_DIR=".temp-with-dockerfile"
697
715
  - export ENV_TYPE="review"
@@ -699,8 +717,7 @@ app 🧪 test:
699
717
  - export BUILD_INFO_BUILD_TIME="$CI_JOB_STARTED_AT"
700
718
  - 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\\/v//'); [ -z "$tag" ] && echo "0.0.0" || echo "$tag")"
701
719
  - export ROOT_URL="https://app.$([ -n "$CI_MERGE_REQUEST_IID" ] && echo "mr$CI_MERGE_REQUEST_IID" || { [ -n "$CI_COMMIT_REF_SLUG" ] && echo "$CI_COMMIT_REF_SLUG" || echo "unknown"; }).review.test-app.pan.panter.cloud"
702
- - export HOST_INTERNAL="app.$([ -n "$CI_MERGE_REQUEST_IID" ] && echo "mr$CI_MERGE_REQUEST_IID" || { [ -n "$CI_COMMIT_REF_SLUG" ] && echo "$CI_COMMIT_REF_SLUG" || echo "unknown"; }).review.test-app.pan.panter.cloud"
703
- - export HOST_CANONICAL="app.$([ -n "$CI_MERGE_REQUEST_IID" ] && echo "mr$CI_MERGE_REQUEST_IID" || { [ -n "$CI_COMMIT_REF_SLUG" ] && echo "$CI_COMMIT_REF_SLUG" || echo "unknown"; }).review.test-app.pan.panter.cloud"
720
+ - export HOSTNAME_INTERNAL="app.$([ -n "$CI_MERGE_REQUEST_IID" ] && echo "mr$CI_MERGE_REQUEST_IID" || { [ -n "$CI_COMMIT_REF_SLUG" ] && echo "$CI_COMMIT_REF_SLUG" || echo "unknown"; }).review.test-app.pan.panter.cloud"
704
721
  - export ROOT_URL_INTERNAL="https://app.$([ -n "$CI_MERGE_REQUEST_IID" ] && echo "mr$CI_MERGE_REQUEST_IID" || { [ -n "$CI_COMMIT_REF_SLUG" ] && echo "$CI_COMMIT_REF_SLUG" || echo "unknown"; }).review.test-app.pan.panter.cloud"
705
722
  - export KUBE_NAMESPACE="pan-test-app-review"
706
723
  - export KUBE_APP_NAME="$([ -n "$CI_MERGE_REQUEST_IID" ] && echo "mr$CI_MERGE_REQUEST_IID" || { [ -n "$CI_COMMIT_REF_SLUG" ] && echo "$CI_COMMIT_REF_SLUG" || echo "unknown"; })-app"
@@ -709,15 +726,14 @@ app 🧪 test:
709
726
  - export POSTGRESQL_PASSWORD="$CL_review_app_POSTGRESQL_PASSWORD"
710
727
  - export cloudsqlProxyCredentials="$CL_review_app_cloudsqlProxyCredentials"
711
728
  - export RAILS_ENV="production"
712
- - export _ALL_ENV_VAR_KEYS="[\\"ENV_SHORT\\",\\"APP_DIR\\",\\"ENV_TYPE\\",\\"BUILD_INFO_BUILD_ID\\",\\"BUILD_INFO_BUILD_TIME\\",\\"BUILD_INFO_CURRENT_VERSION\\",\\"ROOT_URL\\",\\"HOST_INTERNAL\\",\\"HOST_CANONICAL\\",\\"ROOT_URL_INTERNAL\\",\\"KUBE_NAMESPACE\\",\\"KUBE_APP_NAME\\",\\"KUBE_APP_NAME_PREFIX\\",\\"SECRET_KEY_BASE\\",\\"POSTGRESQL_PASSWORD\\",\\"cloudsqlProxyCredentials\\",\\"RAILS_ENV\\"]"
729
+ - export _ALL_ENV_VAR_KEYS="[\\"ENV_SHORT\\",\\"APP_DIR\\",\\"ENV_TYPE\\",\\"BUILD_INFO_BUILD_ID\\",\\"BUILD_INFO_BUILD_TIME\\",\\"BUILD_INFO_CURRENT_VERSION\\",\\"ROOT_URL\\",\\"HOSTNAME_INTERNAL\\",\\"ROOT_URL_INTERNAL\\",\\"KUBE_NAMESPACE\\",\\"KUBE_APP_NAME\\",\\"KUBE_APP_NAME_PREFIX\\",\\"SECRET_KEY_BASE\\",\\"POSTGRESQL_PASSWORD\\",\\"cloudsqlProxyCredentials\\",\\"RAILS_ENV\\"]"
713
730
  - export RELEASE_NAME="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"
714
731
  - export HELM_EXPERIMENTAL_OCI="1"
715
732
  - export KUBE_DOCKER_IMAGE_PULL_SECRET="gitlab-registry-app"
716
733
  - export HELM_GITLAB_CHART_NAME="/helm-charts/the-panter-chart"
717
734
  - export HELM_ARGS=""
718
735
  - export COMPONENT_NAME="app"
719
- - export BUILD_ID="$(git describe --tags 2>/dev/null || git rev-parse HEAD)"
720
- - echo -e "\\e[0Ksection_end:$(date +%s):injectvars\\r\\e[0K"
736
+ - collapseable_section_end "injectvars"
721
737
  - kubectl config set-cluster "kube-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" --server="$CL_review_app_KUBE_URL" --certificate-authority <(echo $CL_review_app_KUBE_CA_PEM | base64 -d) --embed-certs=true
722
738
  - kubectl config set-credentials "kube-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" --token="$CL_review_app_KUBE_TOKEN"
723
739
  - kubectl config set-context "kube-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" --cluster="kube-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" --user="kube-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" --namespace="pan-test-app-review"
@@ -751,7 +767,7 @@ app 🧪 test:
751
767
  KUBERNETES_MEMORY_LIMIT: 400Mi
752
768
  GIT_STRATEGY: none
753
769
  script:
754
- - echo -e "\\e[0Ksection_start:$(date +%s):injectvars[collapsed=true]\\r\\e[0KInjecting variables"
770
+ - collapseable_section_start "injectvars" "Injecting variables"
755
771
  - export ENV_SHORT="review"
756
772
  - export APP_DIR=".temp-with-dockerfile"
757
773
  - export ENV_TYPE="review"
@@ -759,8 +775,7 @@ app 🧪 test:
759
775
  - export BUILD_INFO_BUILD_TIME="$CI_JOB_STARTED_AT"
760
776
  - 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\\/v//'); [ -z "$tag" ] && echo "0.0.0" || echo "$tag")"
761
777
  - export ROOT_URL="https://app.$([ -n "$CI_MERGE_REQUEST_IID" ] && echo "mr$CI_MERGE_REQUEST_IID" || { [ -n "$CI_COMMIT_REF_SLUG" ] && echo "$CI_COMMIT_REF_SLUG" || echo "unknown"; }).review.test-app.pan.panter.cloud"
762
- - export HOST_INTERNAL="app.$([ -n "$CI_MERGE_REQUEST_IID" ] && echo "mr$CI_MERGE_REQUEST_IID" || { [ -n "$CI_COMMIT_REF_SLUG" ] && echo "$CI_COMMIT_REF_SLUG" || echo "unknown"; }).review.test-app.pan.panter.cloud"
763
- - export HOST_CANONICAL="app.$([ -n "$CI_MERGE_REQUEST_IID" ] && echo "mr$CI_MERGE_REQUEST_IID" || { [ -n "$CI_COMMIT_REF_SLUG" ] && echo "$CI_COMMIT_REF_SLUG" || echo "unknown"; }).review.test-app.pan.panter.cloud"
778
+ - export HOSTNAME_INTERNAL="app.$([ -n "$CI_MERGE_REQUEST_IID" ] && echo "mr$CI_MERGE_REQUEST_IID" || { [ -n "$CI_COMMIT_REF_SLUG" ] && echo "$CI_COMMIT_REF_SLUG" || echo "unknown"; }).review.test-app.pan.panter.cloud"
764
779
  - export ROOT_URL_INTERNAL="https://app.$([ -n "$CI_MERGE_REQUEST_IID" ] && echo "mr$CI_MERGE_REQUEST_IID" || { [ -n "$CI_COMMIT_REF_SLUG" ] && echo "$CI_COMMIT_REF_SLUG" || echo "unknown"; }).review.test-app.pan.panter.cloud"
765
780
  - export KUBE_NAMESPACE="pan-test-app-review"
766
781
  - export KUBE_APP_NAME="$([ -n "$CI_MERGE_REQUEST_IID" ] && echo "mr$CI_MERGE_REQUEST_IID" || { [ -n "$CI_COMMIT_REF_SLUG" ] && echo "$CI_COMMIT_REF_SLUG" || echo "unknown"; })-app"
@@ -769,15 +784,14 @@ app 🧪 test:
769
784
  - export POSTGRESQL_PASSWORD="$CL_review_app_POSTGRESQL_PASSWORD"
770
785
  - export cloudsqlProxyCredentials="$CL_review_app_cloudsqlProxyCredentials"
771
786
  - export RAILS_ENV="production"
772
- - export _ALL_ENV_VAR_KEYS="[\\"ENV_SHORT\\",\\"APP_DIR\\",\\"ENV_TYPE\\",\\"BUILD_INFO_BUILD_ID\\",\\"BUILD_INFO_BUILD_TIME\\",\\"BUILD_INFO_CURRENT_VERSION\\",\\"ROOT_URL\\",\\"HOST_INTERNAL\\",\\"HOST_CANONICAL\\",\\"ROOT_URL_INTERNAL\\",\\"KUBE_NAMESPACE\\",\\"KUBE_APP_NAME\\",\\"KUBE_APP_NAME_PREFIX\\",\\"SECRET_KEY_BASE\\",\\"POSTGRESQL_PASSWORD\\",\\"cloudsqlProxyCredentials\\",\\"RAILS_ENV\\"]"
787
+ - export _ALL_ENV_VAR_KEYS="[\\"ENV_SHORT\\",\\"APP_DIR\\",\\"ENV_TYPE\\",\\"BUILD_INFO_BUILD_ID\\",\\"BUILD_INFO_BUILD_TIME\\",\\"BUILD_INFO_CURRENT_VERSION\\",\\"ROOT_URL\\",\\"HOSTNAME_INTERNAL\\",\\"ROOT_URL_INTERNAL\\",\\"KUBE_NAMESPACE\\",\\"KUBE_APP_NAME\\",\\"KUBE_APP_NAME_PREFIX\\",\\"SECRET_KEY_BASE\\",\\"POSTGRESQL_PASSWORD\\",\\"cloudsqlProxyCredentials\\",\\"RAILS_ENV\\"]"
773
788
  - export RELEASE_NAME="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"
774
789
  - export HELM_EXPERIMENTAL_OCI="1"
775
790
  - export KUBE_DOCKER_IMAGE_PULL_SECRET="gitlab-registry-app"
776
791
  - export HELM_GITLAB_CHART_NAME="/helm-charts/the-panter-chart"
777
792
  - export HELM_ARGS=""
778
793
  - export COMPONENT_NAME="app"
779
- - export BUILD_ID="$(git describe --tags 2>/dev/null || git rev-parse HEAD)"
780
- - echo -e "\\e[0Ksection_end:$(date +%s):injectvars\\r\\e[0K"
794
+ - collapseable_section_end "injectvars"
781
795
  - kubectl config set-cluster "kube-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" --server="$CL_review_app_KUBE_URL" --certificate-authority <(echo $CL_review_app_KUBE_CA_PEM | base64 -d) --embed-certs=true
782
796
  - kubectl config set-credentials "kube-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" --token="$CL_review_app_KUBE_TOKEN"
783
797
  - kubectl config set-context "kube-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" --cluster="kube-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" --user="kube-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" --namespace="pan-test-app-review"
@@ -815,7 +829,7 @@ app 🧪 test:
815
829
  KUBERNETES_MEMORY_REQUEST: 1Gi
816
830
  KUBERNETES_MEMORY_LIMIT: 2Gi
817
831
  script:
818
- - echo -e "\\e[0Ksection_start:$(date +%s):injectvars[collapsed=true]\\r\\e[0KInjecting variables"
832
+ - collapseable_section_start "injectvars" "Injecting variables"
819
833
  - export APP_DIR=".temp-with-dockerfile"
820
834
  - export DOCKER_BUILD_CONTEXT="."
821
835
  - export DOCKER_REGISTRY="$CI_REGISTRY"
@@ -823,18 +837,18 @@ app 🧪 test:
823
837
  - export DOCKER_IMAGE_NAME="stage/app"
824
838
  - export DOCKER_IMAGE="$CI_REGISTRY_IMAGE/$DOCKER_IMAGE_NAME"
825
839
  - export DOCKER_IMAGE_TAG="$CI_COMMIT_SHA"
826
- - echo -e "\\e[0Ksection_end:$(date +%s):injectvars\\r\\e[0K"
827
- - echo -e "\\e[0Ksection_start:$(date +%s):docker-login[collapsed=true]\\r\\e[0KDocker Login"
840
+ - collapseable_section_end "injectvars"
841
+ - collapseable_section_start "docker-login" "Docker Login"
828
842
  - docker login --username gitlab-ci-token --password $CI_JOB_TOKEN $CI_REGISTRY
829
- - echo -e "\\e[0Ksection_end:$(date +%s):docker-login\\r\\e[0K"
830
- - echo -e "\\e[0Ksection_start:$(date +%s):docker-build[collapsed=true]\\r\\e[0KDocker build"
843
+ - collapseable_section_end "docker-login"
844
+ - collapseable_section_start "docker-build" "Docker build"
831
845
  - docker build --network host --cache-from $DOCKER_CACHE_IMAGE --tag $DOCKER_IMAGE:$DOCKER_IMAGE_TAG -f $APP_DIR/Dockerfile $DOCKER_BUILD_CONTEXT --build-arg BUILDKIT_INLINE_CACHE=1
832
- - echo -e "\\e[0Ksection_end:$(date +%s):docker-build\\r\\e[0K"
833
- - echo -e "\\e[0Ksection_start:$(date +%s):docker-push[collapsed=true]\\r\\e[0KDocker push and tag"
846
+ - collapseable_section_end "docker-build"
847
+ - collapseable_section_start "docker-push" "Docker push and tag"
834
848
  - docker push $DOCKER_IMAGE:$DOCKER_IMAGE_TAG
835
849
  - docker tag $DOCKER_IMAGE:$DOCKER_IMAGE_TAG $DOCKER_CACHE_IMAGE
836
850
  - docker push $DOCKER_CACHE_IMAGE
837
- - echo -e "\\e[0Ksection_end:$(date +%s):docker-push\\r\\e[0K"
851
+ - collapseable_section_end "docker-push"
838
852
  rules:
839
853
  - if: $CI_COMMIT_TAG
840
854
  needs: []
@@ -845,8 +859,8 @@ app 🧪 test:
845
859
  image: aquasec/trivy:0.38.3
846
860
  variables: {}
847
861
  script:
848
- - echo -e "\\e[0Ksection_start:$(date +%s):injectvars[collapsed=true]\\r\\e[0KInjecting variables"
849
- - echo -e "\\e[0Ksection_end:$(date +%s):injectvars\\r\\e[0K"
862
+ - collapseable_section_start "injectvars" "Injecting variables"
863
+ - collapseable_section_end "injectvars"
850
864
  - trivy fs --quiet --format cyclonedx --output "__sbom.json" .temp-with-dockerfile
851
865
  artifacts:
852
866
  paths:
@@ -865,7 +879,7 @@ app 🧪 test:
865
879
  KUBERNETES_MEMORY_REQUEST: 200Mi
866
880
  KUBERNETES_MEMORY_LIMIT: 400Mi
867
881
  script:
868
- - echo -e "\\e[0Ksection_start:$(date +%s):injectvars[collapsed=true]\\r\\e[0KInjecting variables"
882
+ - collapseable_section_start "injectvars" "Injecting variables"
869
883
  - export ENV_SHORT="stage"
870
884
  - export APP_DIR=".temp-with-dockerfile"
871
885
  - export ENV_TYPE="stage"
@@ -873,8 +887,7 @@ app 🧪 test:
873
887
  - export BUILD_INFO_BUILD_TIME="$CI_JOB_STARTED_AT"
874
888
  - 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\\/v//'); [ -z "$tag" ] && echo "0.0.0" || echo "$tag")"
875
889
  - export ROOT_URL="https://app.stage.test-app.pan.panter.cloud"
876
- - export HOST_INTERNAL="app.stage.test-app.pan.panter.cloud"
877
- - export HOST_CANONICAL="app.stage.test-app.pan.panter.cloud"
890
+ - export HOSTNAME_INTERNAL="app.stage.test-app.pan.panter.cloud"
878
891
  - export ROOT_URL_INTERNAL="https://app.stage.test-app.pan.panter.cloud"
879
892
  - export KUBE_NAMESPACE="pan-test-app-stage"
880
893
  - export KUBE_APP_NAME="app"
@@ -883,7 +896,7 @@ app 🧪 test:
883
896
  - export POSTGRESQL_PASSWORD="$CL_stage_app_POSTGRESQL_PASSWORD"
884
897
  - export cloudsqlProxyCredentials="$CL_stage_app_cloudsqlProxyCredentials"
885
898
  - export RAILS_ENV="production"
886
- - export _ALL_ENV_VAR_KEYS="[\\"ENV_SHORT\\",\\"APP_DIR\\",\\"ENV_TYPE\\",\\"BUILD_INFO_BUILD_ID\\",\\"BUILD_INFO_BUILD_TIME\\",\\"BUILD_INFO_CURRENT_VERSION\\",\\"ROOT_URL\\",\\"HOST_INTERNAL\\",\\"HOST_CANONICAL\\",\\"ROOT_URL_INTERNAL\\",\\"KUBE_NAMESPACE\\",\\"KUBE_APP_NAME\\",\\"KUBE_APP_NAME_PREFIX\\",\\"SECRET_KEY_BASE\\",\\"POSTGRESQL_PASSWORD\\",\\"cloudsqlProxyCredentials\\",\\"RAILS_ENV\\"]"
899
+ - export _ALL_ENV_VAR_KEYS="[\\"ENV_SHORT\\",\\"APP_DIR\\",\\"ENV_TYPE\\",\\"BUILD_INFO_BUILD_ID\\",\\"BUILD_INFO_BUILD_TIME\\",\\"BUILD_INFO_CURRENT_VERSION\\",\\"ROOT_URL\\",\\"HOSTNAME_INTERNAL\\",\\"ROOT_URL_INTERNAL\\",\\"KUBE_NAMESPACE\\",\\"KUBE_APP_NAME\\",\\"KUBE_APP_NAME_PREFIX\\",\\"SECRET_KEY_BASE\\",\\"POSTGRESQL_PASSWORD\\",\\"cloudsqlProxyCredentials\\",\\"RAILS_ENV\\"]"
887
900
  - export DOCKER_REGISTRY="$CI_REGISTRY"
888
901
  - export DOCKER_CACHE_IMAGE="$CI_REGISTRY_IMAGE/caches/app"
889
902
  - export DOCKER_IMAGE_NAME="stage/app"
@@ -895,23 +908,22 @@ app 🧪 test:
895
908
  - export HELM_GITLAB_CHART_NAME="/helm-charts/the-panter-chart"
896
909
  - export HELM_ARGS=""
897
910
  - export COMPONENT_NAME="app"
898
- - export BUILD_ID="$(git describe --tags 2>/dev/null || git rev-parse HEAD)"
899
- - echo -e "\\e[0Ksection_end:$(date +%s):injectvars\\r\\e[0K"
911
+ - collapseable_section_end "injectvars"
900
912
  - kubectl config set-cluster "kube-pan-test-app-stage-app" --server="$CL_stage_app_KUBE_URL" --certificate-authority <(echo $CL_stage_app_KUBE_CA_PEM | base64 -d) --embed-certs=true
901
913
  - kubectl config set-credentials "kube-pan-test-app-stage-app" --token="$CL_stage_app_KUBE_TOKEN"
902
914
  - kubectl config set-context "kube-pan-test-app-stage-app" --cluster="kube-pan-test-app-stage-app" --user="kube-pan-test-app-stage-app" --namespace="pan-test-app-stage"
903
915
  - kubectl config use-context "kube-pan-test-app-stage-app"
904
- - echo -e "\\e[0Ksection_start:$(date +%s):writeallvalues[collapsed=true]\\r\\e[0KWrite __all_values.yml for helm deployment"
916
+ - collapseable_section_start "writeallvalues" "Write __all_values.yml for helm deployment"
905
917
  - |
906
918
  cat > __all_values.yml <<EOF
907
919
  env:
908
920
  secret:
909
921
  SECRET_KEY_BASE: |-
910
- $(printf %s "$CL_stage_app_SECRET_KEY_BASE" | sed 's/^/ /')
922
+ $(printf %s "$CL_stage_app_SECRET_KEY_BASE" | sed '1!s/^/ /')
911
923
  POSTGRESQL_PASSWORD: |-
912
- $(printf %s "$CL_stage_app_POSTGRESQL_PASSWORD" | sed 's/^/ /')
924
+ $(printf %s "$CL_stage_app_POSTGRESQL_PASSWORD" | sed '1!s/^/ /')
913
925
  cloudsqlProxyCredentials: |-
914
- $(printf %s "$CL_stage_app_cloudsqlProxyCredentials" | sed 's/^/ /')
926
+ $(printf %s "$CL_stage_app_cloudsqlProxyCredentials" | sed '1!s/^/ /')
915
927
  public:
916
928
  ENV_SHORT: |-
917
929
  stage
@@ -920,16 +932,14 @@ app 🧪 test:
920
932
  ENV_TYPE: |-
921
933
  stage
922
934
  BUILD_INFO_BUILD_ID: |-
923
- $(printf %s "$(git describe --tags 2>/dev/null || git rev-parse HEAD)" | sed 's/^/ /')
935
+ $(printf %s "$(git describe --tags 2>/dev/null || git rev-parse HEAD)" | sed '1!s/^/ /')
924
936
  BUILD_INFO_BUILD_TIME: |-
925
- $(printf %s "$CI_JOB_STARTED_AT" | sed 's/^/ /')
937
+ $(printf %s "$CI_JOB_STARTED_AT" | sed '1!s/^/ /')
926
938
  BUILD_INFO_CURRENT_VERSION: |-
927
- $(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\\/v//'); [ -z "$tag" ] && echo "0.0.0" || echo "$tag")" | sed 's/^/ /')
939
+ $(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\\/v//'); [ -z "$tag" ] && echo "0.0.0" || echo "$tag")" | sed '1!s/^/ /')
928
940
  ROOT_URL: |-
929
941
  https://app.stage.test-app.pan.panter.cloud
930
- HOST_INTERNAL: |-
931
- app.stage.test-app.pan.panter.cloud
932
- HOST_CANONICAL: |-
942
+ HOSTNAME_INTERNAL: |-
933
943
  app.stage.test-app.pan.panter.cloud
934
944
  ROOT_URL_INTERNAL: |-
935
945
  https://app.stage.test-app.pan.panter.cloud
@@ -941,7 +951,7 @@ app 🧪 test:
941
951
  RAILS_ENV: |-
942
952
  production
943
953
  _ALL_ENV_VAR_KEYS: |-
944
- ["ENV_SHORT","APP_DIR","ENV_TYPE","BUILD_INFO_BUILD_ID","BUILD_INFO_BUILD_TIME","BUILD_INFO_CURRENT_VERSION","ROOT_URL","HOST_INTERNAL","HOST_CANONICAL","ROOT_URL_INTERNAL","KUBE_NAMESPACE","KUBE_APP_NAME","KUBE_APP_NAME_PREFIX","SECRET_KEY_BASE","POSTGRESQL_PASSWORD","cloudsqlProxyCredentials","RAILS_ENV"]
954
+ ["ENV_SHORT","APP_DIR","ENV_TYPE","BUILD_INFO_BUILD_ID","BUILD_INFO_BUILD_TIME","BUILD_INFO_CURRENT_VERSION","ROOT_URL","HOSTNAME_INTERNAL","ROOT_URL_INTERNAL","KUBE_NAMESPACE","KUBE_APP_NAME","KUBE_APP_NAME_PREFIX","SECRET_KEY_BASE","POSTGRESQL_PASSWORD","cloudsqlProxyCredentials","RAILS_ENV"]
945
955
  application:
946
956
  host: |-
947
957
  app.stage.test-app.pan.panter.cloud
@@ -969,13 +979,13 @@ app 🧪 test:
969
979
  dbUser: |-
970
980
  postgres
971
981
  instanceConnectionName: |-
972
- some-project-id:europe-west6:pan-test-app-stage
982
+ myproject:europe-west6:instance-name
973
983
  proxyCredentials: |-
974
984
  $CL_stage_app_cloudsqlProxyCredentials
975
985
  fullDbName: |-
976
- app
977
- projectId: |-
978
- some-project-id
986
+ pan-test-app-stage-app
987
+ type: |-
988
+ unmanaged
979
989
  jobs:
980
990
  db-migrate:
981
991
  hook: |-
@@ -984,7 +994,7 @@ app 🧪 test:
984
994
  launcher bundle exec rake db:migrate
985
995
 
986
996
  EOF
987
- - echo -e "\\e[0Ksection_end:$(date +%s):writeallvalues\\r\\e[0K"
997
+ - collapseable_section_end "writeallvalues"
988
998
  - kubernetesCreateSecret
989
999
  - kubernetesDeploy
990
1000
  - echo 'Uploading SBOM to Dependency Track'
@@ -1018,7 +1028,7 @@ app 🧪 test:
1018
1028
  KUBERNETES_MEMORY_LIMIT: 400Mi
1019
1029
  GIT_STRATEGY: none
1020
1030
  script:
1021
- - echo -e "\\e[0Ksection_start:$(date +%s):injectvars[collapsed=true]\\r\\e[0KInjecting variables"
1031
+ - collapseable_section_start "injectvars" "Injecting variables"
1022
1032
  - export ENV_SHORT="stage"
1023
1033
  - export APP_DIR=".temp-with-dockerfile"
1024
1034
  - export ENV_TYPE="stage"
@@ -1026,8 +1036,7 @@ app 🧪 test:
1026
1036
  - export BUILD_INFO_BUILD_TIME="$CI_JOB_STARTED_AT"
1027
1037
  - 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\\/v//'); [ -z "$tag" ] && echo "0.0.0" || echo "$tag")"
1028
1038
  - export ROOT_URL="https://app.stage.test-app.pan.panter.cloud"
1029
- - export HOST_INTERNAL="app.stage.test-app.pan.panter.cloud"
1030
- - export HOST_CANONICAL="app.stage.test-app.pan.panter.cloud"
1039
+ - export HOSTNAME_INTERNAL="app.stage.test-app.pan.panter.cloud"
1031
1040
  - export ROOT_URL_INTERNAL="https://app.stage.test-app.pan.panter.cloud"
1032
1041
  - export KUBE_NAMESPACE="pan-test-app-stage"
1033
1042
  - export KUBE_APP_NAME="app"
@@ -1036,15 +1045,14 @@ app 🧪 test:
1036
1045
  - export POSTGRESQL_PASSWORD="$CL_stage_app_POSTGRESQL_PASSWORD"
1037
1046
  - export cloudsqlProxyCredentials="$CL_stage_app_cloudsqlProxyCredentials"
1038
1047
  - export RAILS_ENV="production"
1039
- - export _ALL_ENV_VAR_KEYS="[\\"ENV_SHORT\\",\\"APP_DIR\\",\\"ENV_TYPE\\",\\"BUILD_INFO_BUILD_ID\\",\\"BUILD_INFO_BUILD_TIME\\",\\"BUILD_INFO_CURRENT_VERSION\\",\\"ROOT_URL\\",\\"HOST_INTERNAL\\",\\"HOST_CANONICAL\\",\\"ROOT_URL_INTERNAL\\",\\"KUBE_NAMESPACE\\",\\"KUBE_APP_NAME\\",\\"KUBE_APP_NAME_PREFIX\\",\\"SECRET_KEY_BASE\\",\\"POSTGRESQL_PASSWORD\\",\\"cloudsqlProxyCredentials\\",\\"RAILS_ENV\\"]"
1048
+ - export _ALL_ENV_VAR_KEYS="[\\"ENV_SHORT\\",\\"APP_DIR\\",\\"ENV_TYPE\\",\\"BUILD_INFO_BUILD_ID\\",\\"BUILD_INFO_BUILD_TIME\\",\\"BUILD_INFO_CURRENT_VERSION\\",\\"ROOT_URL\\",\\"HOSTNAME_INTERNAL\\",\\"ROOT_URL_INTERNAL\\",\\"KUBE_NAMESPACE\\",\\"KUBE_APP_NAME\\",\\"KUBE_APP_NAME_PREFIX\\",\\"SECRET_KEY_BASE\\",\\"POSTGRESQL_PASSWORD\\",\\"cloudsqlProxyCredentials\\",\\"RAILS_ENV\\"]"
1040
1049
  - export RELEASE_NAME="pan-test-app-stage-app"
1041
1050
  - export HELM_EXPERIMENTAL_OCI="1"
1042
1051
  - export KUBE_DOCKER_IMAGE_PULL_SECRET="gitlab-registry-app"
1043
1052
  - export HELM_GITLAB_CHART_NAME="/helm-charts/the-panter-chart"
1044
1053
  - export HELM_ARGS=""
1045
1054
  - export COMPONENT_NAME="app"
1046
- - export BUILD_ID="$(git describe --tags 2>/dev/null || git rev-parse HEAD)"
1047
- - echo -e "\\e[0Ksection_end:$(date +%s):injectvars\\r\\e[0K"
1055
+ - collapseable_section_end "injectvars"
1048
1056
  - kubectl config set-cluster "kube-pan-test-app-stage-app" --server="$CL_stage_app_KUBE_URL" --certificate-authority <(echo $CL_stage_app_KUBE_CA_PEM | base64 -d) --embed-certs=true
1049
1057
  - kubectl config set-credentials "kube-pan-test-app-stage-app" --token="$CL_stage_app_KUBE_TOKEN"
1050
1058
  - kubectl config set-context "kube-pan-test-app-stage-app" --cluster="kube-pan-test-app-stage-app" --user="kube-pan-test-app-stage-app" --namespace="pan-test-app-stage"
@@ -1078,7 +1086,7 @@ app 🧪 test:
1078
1086
  KUBERNETES_MEMORY_LIMIT: 400Mi
1079
1087
  GIT_STRATEGY: none
1080
1088
  script:
1081
- - echo -e "\\e[0Ksection_start:$(date +%s):injectvars[collapsed=true]\\r\\e[0KInjecting variables"
1089
+ - collapseable_section_start "injectvars" "Injecting variables"
1082
1090
  - export ENV_SHORT="stage"
1083
1091
  - export APP_DIR=".temp-with-dockerfile"
1084
1092
  - export ENV_TYPE="stage"
@@ -1086,8 +1094,7 @@ app 🧪 test:
1086
1094
  - export BUILD_INFO_BUILD_TIME="$CI_JOB_STARTED_AT"
1087
1095
  - 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\\/v//'); [ -z "$tag" ] && echo "0.0.0" || echo "$tag")"
1088
1096
  - export ROOT_URL="https://app.stage.test-app.pan.panter.cloud"
1089
- - export HOST_INTERNAL="app.stage.test-app.pan.panter.cloud"
1090
- - export HOST_CANONICAL="app.stage.test-app.pan.panter.cloud"
1097
+ - export HOSTNAME_INTERNAL="app.stage.test-app.pan.panter.cloud"
1091
1098
  - export ROOT_URL_INTERNAL="https://app.stage.test-app.pan.panter.cloud"
1092
1099
  - export KUBE_NAMESPACE="pan-test-app-stage"
1093
1100
  - export KUBE_APP_NAME="app"
@@ -1096,15 +1103,14 @@ app 🧪 test:
1096
1103
  - export POSTGRESQL_PASSWORD="$CL_stage_app_POSTGRESQL_PASSWORD"
1097
1104
  - export cloudsqlProxyCredentials="$CL_stage_app_cloudsqlProxyCredentials"
1098
1105
  - export RAILS_ENV="production"
1099
- - export _ALL_ENV_VAR_KEYS="[\\"ENV_SHORT\\",\\"APP_DIR\\",\\"ENV_TYPE\\",\\"BUILD_INFO_BUILD_ID\\",\\"BUILD_INFO_BUILD_TIME\\",\\"BUILD_INFO_CURRENT_VERSION\\",\\"ROOT_URL\\",\\"HOST_INTERNAL\\",\\"HOST_CANONICAL\\",\\"ROOT_URL_INTERNAL\\",\\"KUBE_NAMESPACE\\",\\"KUBE_APP_NAME\\",\\"KUBE_APP_NAME_PREFIX\\",\\"SECRET_KEY_BASE\\",\\"POSTGRESQL_PASSWORD\\",\\"cloudsqlProxyCredentials\\",\\"RAILS_ENV\\"]"
1106
+ - export _ALL_ENV_VAR_KEYS="[\\"ENV_SHORT\\",\\"APP_DIR\\",\\"ENV_TYPE\\",\\"BUILD_INFO_BUILD_ID\\",\\"BUILD_INFO_BUILD_TIME\\",\\"BUILD_INFO_CURRENT_VERSION\\",\\"ROOT_URL\\",\\"HOSTNAME_INTERNAL\\",\\"ROOT_URL_INTERNAL\\",\\"KUBE_NAMESPACE\\",\\"KUBE_APP_NAME\\",\\"KUBE_APP_NAME_PREFIX\\",\\"SECRET_KEY_BASE\\",\\"POSTGRESQL_PASSWORD\\",\\"cloudsqlProxyCredentials\\",\\"RAILS_ENV\\"]"
1100
1107
  - export RELEASE_NAME="pan-test-app-stage-app"
1101
1108
  - export HELM_EXPERIMENTAL_OCI="1"
1102
1109
  - export KUBE_DOCKER_IMAGE_PULL_SECRET="gitlab-registry-app"
1103
1110
  - export HELM_GITLAB_CHART_NAME="/helm-charts/the-panter-chart"
1104
1111
  - export HELM_ARGS=""
1105
1112
  - export COMPONENT_NAME="app"
1106
- - export BUILD_ID="$(git describe --tags 2>/dev/null || git rev-parse HEAD)"
1107
- - echo -e "\\e[0Ksection_end:$(date +%s):injectvars\\r\\e[0K"
1113
+ - collapseable_section_end "injectvars"
1108
1114
  - kubectl config set-cluster "kube-pan-test-app-stage-app" --server="$CL_stage_app_KUBE_URL" --certificate-authority <(echo $CL_stage_app_KUBE_CA_PEM | base64 -d) --embed-certs=true
1109
1115
  - kubectl config set-credentials "kube-pan-test-app-stage-app" --token="$CL_stage_app_KUBE_TOKEN"
1110
1116
  - kubectl config set-context "kube-pan-test-app-stage-app" --cluster="kube-pan-test-app-stage-app" --user="kube-pan-test-app-stage-app" --namespace="pan-test-app-stage"
@@ -1142,7 +1148,7 @@ app 🧪 test:
1142
1148
  KUBERNETES_MEMORY_REQUEST: 1Gi
1143
1149
  KUBERNETES_MEMORY_LIMIT: 2Gi
1144
1150
  script:
1145
- - echo -e "\\e[0Ksection_start:$(date +%s):injectvars[collapsed=true]\\r\\e[0KInjecting variables"
1151
+ - collapseable_section_start "injectvars" "Injecting variables"
1146
1152
  - export APP_DIR=".temp-with-dockerfile"
1147
1153
  - export DOCKER_BUILD_CONTEXT="."
1148
1154
  - export DOCKER_REGISTRY="$CI_REGISTRY"
@@ -1150,18 +1156,18 @@ app 🧪 test:
1150
1156
  - export DOCKER_IMAGE_NAME="prod/app"
1151
1157
  - export DOCKER_IMAGE="$CI_REGISTRY_IMAGE/$DOCKER_IMAGE_NAME"
1152
1158
  - export DOCKER_IMAGE_TAG="$CI_COMMIT_SHA"
1153
- - echo -e "\\e[0Ksection_end:$(date +%s):injectvars\\r\\e[0K"
1154
- - echo -e "\\e[0Ksection_start:$(date +%s):docker-login[collapsed=true]\\r\\e[0KDocker Login"
1159
+ - collapseable_section_end "injectvars"
1160
+ - collapseable_section_start "docker-login" "Docker Login"
1155
1161
  - docker login --username gitlab-ci-token --password $CI_JOB_TOKEN $CI_REGISTRY
1156
- - echo -e "\\e[0Ksection_end:$(date +%s):docker-login\\r\\e[0K"
1157
- - echo -e "\\e[0Ksection_start:$(date +%s):docker-build[collapsed=true]\\r\\e[0KDocker build"
1162
+ - collapseable_section_end "docker-login"
1163
+ - collapseable_section_start "docker-build" "Docker build"
1158
1164
  - docker build --network host --cache-from $DOCKER_CACHE_IMAGE --tag $DOCKER_IMAGE:$DOCKER_IMAGE_TAG -f $APP_DIR/Dockerfile $DOCKER_BUILD_CONTEXT --build-arg BUILDKIT_INLINE_CACHE=1
1159
- - echo -e "\\e[0Ksection_end:$(date +%s):docker-build\\r\\e[0K"
1160
- - echo -e "\\e[0Ksection_start:$(date +%s):docker-push[collapsed=true]\\r\\e[0KDocker push and tag"
1165
+ - collapseable_section_end "docker-build"
1166
+ - collapseable_section_start "docker-push" "Docker push and tag"
1161
1167
  - docker push $DOCKER_IMAGE:$DOCKER_IMAGE_TAG
1162
1168
  - docker tag $DOCKER_IMAGE:$DOCKER_IMAGE_TAG $DOCKER_CACHE_IMAGE
1163
1169
  - docker push $DOCKER_CACHE_IMAGE
1164
- - echo -e "\\e[0Ksection_end:$(date +%s):docker-push\\r\\e[0K"
1170
+ - collapseable_section_end "docker-push"
1165
1171
  rules:
1166
1172
  - if: $CI_COMMIT_TAG
1167
1173
  needs: []
@@ -1172,8 +1178,8 @@ app 🧪 test:
1172
1178
  image: aquasec/trivy:0.38.3
1173
1179
  variables: {}
1174
1180
  script:
1175
- - echo -e "\\e[0Ksection_start:$(date +%s):injectvars[collapsed=true]\\r\\e[0KInjecting variables"
1176
- - echo -e "\\e[0Ksection_end:$(date +%s):injectvars\\r\\e[0K"
1181
+ - collapseable_section_start "injectvars" "Injecting variables"
1182
+ - collapseable_section_end "injectvars"
1177
1183
  - trivy fs --quiet --format cyclonedx --output "__sbom.json" .temp-with-dockerfile
1178
1184
  artifacts:
1179
1185
  paths:
@@ -1192,7 +1198,7 @@ app 🧪 test:
1192
1198
  KUBERNETES_MEMORY_REQUEST: 200Mi
1193
1199
  KUBERNETES_MEMORY_LIMIT: 400Mi
1194
1200
  script:
1195
- - echo -e "\\e[0Ksection_start:$(date +%s):injectvars[collapsed=true]\\r\\e[0KInjecting variables"
1201
+ - collapseable_section_start "injectvars" "Injecting variables"
1196
1202
  - export ENV_SHORT="prod"
1197
1203
  - export APP_DIR=".temp-with-dockerfile"
1198
1204
  - export ENV_TYPE="prod"
@@ -1200,8 +1206,7 @@ app 🧪 test:
1200
1206
  - export BUILD_INFO_BUILD_TIME="$CI_JOB_STARTED_AT"
1201
1207
  - 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\\/v//'); [ -z "$tag" ] && echo "0.0.0" || echo "$tag")"
1202
1208
  - export ROOT_URL="https://my-fancy-website.com"
1203
- - export HOST_INTERNAL="app.prod.test-app.pan.panter.cloud"
1204
- - export HOST_CANONICAL="app.prod.test-app.pan.panter.cloud"
1209
+ - export HOSTNAME_INTERNAL="app.prod.test-app.pan.panter.cloud"
1205
1210
  - export ROOT_URL_INTERNAL="https://app.prod.test-app.pan.panter.cloud"
1206
1211
  - export KUBE_NAMESPACE="pan-test-app-prod"
1207
1212
  - export KUBE_APP_NAME="app"
@@ -1210,7 +1215,7 @@ app 🧪 test:
1210
1215
  - export POSTGRESQL_PASSWORD="$CL_prod_app_POSTGRESQL_PASSWORD"
1211
1216
  - export cloudsqlProxyCredentials="$CL_prod_app_cloudsqlProxyCredentials"
1212
1217
  - export RAILS_ENV="production"
1213
- - export _ALL_ENV_VAR_KEYS="[\\"ENV_SHORT\\",\\"APP_DIR\\",\\"ENV_TYPE\\",\\"BUILD_INFO_BUILD_ID\\",\\"BUILD_INFO_BUILD_TIME\\",\\"BUILD_INFO_CURRENT_VERSION\\",\\"ROOT_URL\\",\\"HOST_INTERNAL\\",\\"HOST_CANONICAL\\",\\"ROOT_URL_INTERNAL\\",\\"KUBE_NAMESPACE\\",\\"KUBE_APP_NAME\\",\\"KUBE_APP_NAME_PREFIX\\",\\"SECRET_KEY_BASE\\",\\"POSTGRESQL_PASSWORD\\",\\"cloudsqlProxyCredentials\\",\\"RAILS_ENV\\"]"
1218
+ - export _ALL_ENV_VAR_KEYS="[\\"ENV_SHORT\\",\\"APP_DIR\\",\\"ENV_TYPE\\",\\"BUILD_INFO_BUILD_ID\\",\\"BUILD_INFO_BUILD_TIME\\",\\"BUILD_INFO_CURRENT_VERSION\\",\\"ROOT_URL\\",\\"HOSTNAME_INTERNAL\\",\\"ROOT_URL_INTERNAL\\",\\"KUBE_NAMESPACE\\",\\"KUBE_APP_NAME\\",\\"KUBE_APP_NAME_PREFIX\\",\\"SECRET_KEY_BASE\\",\\"POSTGRESQL_PASSWORD\\",\\"cloudsqlProxyCredentials\\",\\"RAILS_ENV\\"]"
1214
1219
  - export DOCKER_REGISTRY="$CI_REGISTRY"
1215
1220
  - export DOCKER_CACHE_IMAGE="$CI_REGISTRY_IMAGE/caches/app"
1216
1221
  - export DOCKER_IMAGE_NAME="prod/app"
@@ -1222,23 +1227,22 @@ app 🧪 test:
1222
1227
  - export HELM_GITLAB_CHART_NAME="/helm-charts/the-panter-chart"
1223
1228
  - export HELM_ARGS=""
1224
1229
  - export COMPONENT_NAME="app"
1225
- - export BUILD_ID="$(git describe --tags 2>/dev/null || git rev-parse HEAD)"
1226
- - echo -e "\\e[0Ksection_end:$(date +%s):injectvars\\r\\e[0K"
1230
+ - collapseable_section_end "injectvars"
1227
1231
  - kubectl config set-cluster "kube-pan-test-app-prod-app" --server="$CL_prod_app_KUBE_URL" --certificate-authority <(echo $CL_prod_app_KUBE_CA_PEM | base64 -d) --embed-certs=true
1228
1232
  - kubectl config set-credentials "kube-pan-test-app-prod-app" --token="$CL_prod_app_KUBE_TOKEN"
1229
1233
  - kubectl config set-context "kube-pan-test-app-prod-app" --cluster="kube-pan-test-app-prod-app" --user="kube-pan-test-app-prod-app" --namespace="pan-test-app-prod"
1230
1234
  - kubectl config use-context "kube-pan-test-app-prod-app"
1231
- - echo -e "\\e[0Ksection_start:$(date +%s):writeallvalues[collapsed=true]\\r\\e[0KWrite __all_values.yml for helm deployment"
1235
+ - collapseable_section_start "writeallvalues" "Write __all_values.yml for helm deployment"
1232
1236
  - |
1233
1237
  cat > __all_values.yml <<EOF
1234
1238
  env:
1235
1239
  secret:
1236
1240
  SECRET_KEY_BASE: |-
1237
- $(printf %s "$CL_prod_app_SECRET_KEY_BASE" | sed 's/^/ /')
1241
+ $(printf %s "$CL_prod_app_SECRET_KEY_BASE" | sed '1!s/^/ /')
1238
1242
  POSTGRESQL_PASSWORD: |-
1239
- $(printf %s "$CL_prod_app_POSTGRESQL_PASSWORD" | sed 's/^/ /')
1243
+ $(printf %s "$CL_prod_app_POSTGRESQL_PASSWORD" | sed '1!s/^/ /')
1240
1244
  cloudsqlProxyCredentials: |-
1241
- $(printf %s "$CL_prod_app_cloudsqlProxyCredentials" | sed 's/^/ /')
1245
+ $(printf %s "$CL_prod_app_cloudsqlProxyCredentials" | sed '1!s/^/ /')
1242
1246
  public:
1243
1247
  ENV_SHORT: |-
1244
1248
  prod
@@ -1247,16 +1251,14 @@ app 🧪 test:
1247
1251
  ENV_TYPE: |-
1248
1252
  prod
1249
1253
  BUILD_INFO_BUILD_ID: |-
1250
- $(printf %s "$(git describe --tags 2>/dev/null || git rev-parse HEAD)" | sed 's/^/ /')
1254
+ $(printf %s "$(git describe --tags 2>/dev/null || git rev-parse HEAD)" | sed '1!s/^/ /')
1251
1255
  BUILD_INFO_BUILD_TIME: |-
1252
- $(printf %s "$CI_JOB_STARTED_AT" | sed 's/^/ /')
1256
+ $(printf %s "$CI_JOB_STARTED_AT" | sed '1!s/^/ /')
1253
1257
  BUILD_INFO_CURRENT_VERSION: |-
1254
- $(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\\/v//'); [ -z "$tag" ] && echo "0.0.0" || echo "$tag")" | sed 's/^/ /')
1258
+ $(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\\/v//'); [ -z "$tag" ] && echo "0.0.0" || echo "$tag")" | sed '1!s/^/ /')
1255
1259
  ROOT_URL: |-
1256
1260
  https://my-fancy-website.com
1257
- HOST_INTERNAL: |-
1258
- app.prod.test-app.pan.panter.cloud
1259
- HOST_CANONICAL: |-
1261
+ HOSTNAME_INTERNAL: |-
1260
1262
  app.prod.test-app.pan.panter.cloud
1261
1263
  ROOT_URL_INTERNAL: |-
1262
1264
  https://app.prod.test-app.pan.panter.cloud
@@ -1268,7 +1270,7 @@ app 🧪 test:
1268
1270
  RAILS_ENV: |-
1269
1271
  production
1270
1272
  _ALL_ENV_VAR_KEYS: |-
1271
- ["ENV_SHORT","APP_DIR","ENV_TYPE","BUILD_INFO_BUILD_ID","BUILD_INFO_BUILD_TIME","BUILD_INFO_CURRENT_VERSION","ROOT_URL","HOST_INTERNAL","HOST_CANONICAL","ROOT_URL_INTERNAL","KUBE_NAMESPACE","KUBE_APP_NAME","KUBE_APP_NAME_PREFIX","SECRET_KEY_BASE","POSTGRESQL_PASSWORD","cloudsqlProxyCredentials","RAILS_ENV"]
1273
+ ["ENV_SHORT","APP_DIR","ENV_TYPE","BUILD_INFO_BUILD_ID","BUILD_INFO_BUILD_TIME","BUILD_INFO_CURRENT_VERSION","ROOT_URL","HOSTNAME_INTERNAL","ROOT_URL_INTERNAL","KUBE_NAMESPACE","KUBE_APP_NAME","KUBE_APP_NAME_PREFIX","SECRET_KEY_BASE","POSTGRESQL_PASSWORD","cloudsqlProxyCredentials","RAILS_ENV"]
1272
1274
  application:
1273
1275
  host: |-
1274
1276
  my-fancy-website.com
@@ -1296,13 +1298,13 @@ app 🧪 test:
1296
1298
  dbUser: |-
1297
1299
  postgres
1298
1300
  instanceConnectionName: |-
1299
- some-project-id:europe-west6:pan-test-app-prod
1301
+ myproject:europe-west6:instance-name
1300
1302
  proxyCredentials: |-
1301
1303
  $CL_prod_app_cloudsqlProxyCredentials
1302
1304
  fullDbName: |-
1303
- app
1304
- projectId: |-
1305
- some-project-id
1305
+ pan-test-app-prod-app
1306
+ type: |-
1307
+ unmanaged
1306
1308
  jobs:
1307
1309
  db-migrate:
1308
1310
  hook: |-
@@ -1311,7 +1313,7 @@ app 🧪 test:
1311
1313
  launcher bundle exec rake db:migrate
1312
1314
 
1313
1315
  EOF
1314
- - echo -e "\\e[0Ksection_end:$(date +%s):writeallvalues\\r\\e[0K"
1316
+ - collapseable_section_end "writeallvalues"
1315
1317
  - kubernetesCreateSecret
1316
1318
  - kubernetesDeploy
1317
1319
  - echo 'Uploading SBOM to Dependency Track'
@@ -1345,7 +1347,7 @@ app 🧪 test:
1345
1347
  KUBERNETES_MEMORY_LIMIT: 400Mi
1346
1348
  GIT_STRATEGY: none
1347
1349
  script:
1348
- - echo -e "\\e[0Ksection_start:$(date +%s):injectvars[collapsed=true]\\r\\e[0KInjecting variables"
1350
+ - collapseable_section_start "injectvars" "Injecting variables"
1349
1351
  - export ENV_SHORT="prod"
1350
1352
  - export APP_DIR=".temp-with-dockerfile"
1351
1353
  - export ENV_TYPE="prod"
@@ -1353,8 +1355,7 @@ app 🧪 test:
1353
1355
  - export BUILD_INFO_BUILD_TIME="$CI_JOB_STARTED_AT"
1354
1356
  - 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\\/v//'); [ -z "$tag" ] && echo "0.0.0" || echo "$tag")"
1355
1357
  - export ROOT_URL="https://my-fancy-website.com"
1356
- - export HOST_INTERNAL="app.prod.test-app.pan.panter.cloud"
1357
- - export HOST_CANONICAL="app.prod.test-app.pan.panter.cloud"
1358
+ - export HOSTNAME_INTERNAL="app.prod.test-app.pan.panter.cloud"
1358
1359
  - export ROOT_URL_INTERNAL="https://app.prod.test-app.pan.panter.cloud"
1359
1360
  - export KUBE_NAMESPACE="pan-test-app-prod"
1360
1361
  - export KUBE_APP_NAME="app"
@@ -1363,15 +1364,14 @@ app 🧪 test:
1363
1364
  - export POSTGRESQL_PASSWORD="$CL_prod_app_POSTGRESQL_PASSWORD"
1364
1365
  - export cloudsqlProxyCredentials="$CL_prod_app_cloudsqlProxyCredentials"
1365
1366
  - export RAILS_ENV="production"
1366
- - export _ALL_ENV_VAR_KEYS="[\\"ENV_SHORT\\",\\"APP_DIR\\",\\"ENV_TYPE\\",\\"BUILD_INFO_BUILD_ID\\",\\"BUILD_INFO_BUILD_TIME\\",\\"BUILD_INFO_CURRENT_VERSION\\",\\"ROOT_URL\\",\\"HOST_INTERNAL\\",\\"HOST_CANONICAL\\",\\"ROOT_URL_INTERNAL\\",\\"KUBE_NAMESPACE\\",\\"KUBE_APP_NAME\\",\\"KUBE_APP_NAME_PREFIX\\",\\"SECRET_KEY_BASE\\",\\"POSTGRESQL_PASSWORD\\",\\"cloudsqlProxyCredentials\\",\\"RAILS_ENV\\"]"
1367
+ - export _ALL_ENV_VAR_KEYS="[\\"ENV_SHORT\\",\\"APP_DIR\\",\\"ENV_TYPE\\",\\"BUILD_INFO_BUILD_ID\\",\\"BUILD_INFO_BUILD_TIME\\",\\"BUILD_INFO_CURRENT_VERSION\\",\\"ROOT_URL\\",\\"HOSTNAME_INTERNAL\\",\\"ROOT_URL_INTERNAL\\",\\"KUBE_NAMESPACE\\",\\"KUBE_APP_NAME\\",\\"KUBE_APP_NAME_PREFIX\\",\\"SECRET_KEY_BASE\\",\\"POSTGRESQL_PASSWORD\\",\\"cloudsqlProxyCredentials\\",\\"RAILS_ENV\\"]"
1367
1368
  - export RELEASE_NAME="pan-test-app-prod-app"
1368
1369
  - export HELM_EXPERIMENTAL_OCI="1"
1369
1370
  - export KUBE_DOCKER_IMAGE_PULL_SECRET="gitlab-registry-app"
1370
1371
  - export HELM_GITLAB_CHART_NAME="/helm-charts/the-panter-chart"
1371
1372
  - export HELM_ARGS=""
1372
1373
  - export COMPONENT_NAME="app"
1373
- - export BUILD_ID="$(git describe --tags 2>/dev/null || git rev-parse HEAD)"
1374
- - echo -e "\\e[0Ksection_end:$(date +%s):injectvars\\r\\e[0K"
1374
+ - collapseable_section_end "injectvars"
1375
1375
  - kubectl config set-cluster "kube-pan-test-app-prod-app" --server="$CL_prod_app_KUBE_URL" --certificate-authority <(echo $CL_prod_app_KUBE_CA_PEM | base64 -d) --embed-certs=true
1376
1376
  - kubectl config set-credentials "kube-pan-test-app-prod-app" --token="$CL_prod_app_KUBE_TOKEN"
1377
1377
  - kubectl config set-context "kube-pan-test-app-prod-app" --cluster="kube-pan-test-app-prod-app" --user="kube-pan-test-app-prod-app" --namespace="pan-test-app-prod"
@@ -1405,7 +1405,7 @@ app 🧪 test:
1405
1405
  KUBERNETES_MEMORY_LIMIT: 400Mi
1406
1406
  GIT_STRATEGY: none
1407
1407
  script:
1408
- - echo -e "\\e[0Ksection_start:$(date +%s):injectvars[collapsed=true]\\r\\e[0KInjecting variables"
1408
+ - collapseable_section_start "injectvars" "Injecting variables"
1409
1409
  - export ENV_SHORT="prod"
1410
1410
  - export APP_DIR=".temp-with-dockerfile"
1411
1411
  - export ENV_TYPE="prod"
@@ -1413,8 +1413,7 @@ app 🧪 test:
1413
1413
  - export BUILD_INFO_BUILD_TIME="$CI_JOB_STARTED_AT"
1414
1414
  - 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\\/v//'); [ -z "$tag" ] && echo "0.0.0" || echo "$tag")"
1415
1415
  - export ROOT_URL="https://my-fancy-website.com"
1416
- - export HOST_INTERNAL="app.prod.test-app.pan.panter.cloud"
1417
- - export HOST_CANONICAL="app.prod.test-app.pan.panter.cloud"
1416
+ - export HOSTNAME_INTERNAL="app.prod.test-app.pan.panter.cloud"
1418
1417
  - export ROOT_URL_INTERNAL="https://app.prod.test-app.pan.panter.cloud"
1419
1418
  - export KUBE_NAMESPACE="pan-test-app-prod"
1420
1419
  - export KUBE_APP_NAME="app"
@@ -1423,15 +1422,14 @@ app 🧪 test:
1423
1422
  - export POSTGRESQL_PASSWORD="$CL_prod_app_POSTGRESQL_PASSWORD"
1424
1423
  - export cloudsqlProxyCredentials="$CL_prod_app_cloudsqlProxyCredentials"
1425
1424
  - export RAILS_ENV="production"
1426
- - export _ALL_ENV_VAR_KEYS="[\\"ENV_SHORT\\",\\"APP_DIR\\",\\"ENV_TYPE\\",\\"BUILD_INFO_BUILD_ID\\",\\"BUILD_INFO_BUILD_TIME\\",\\"BUILD_INFO_CURRENT_VERSION\\",\\"ROOT_URL\\",\\"HOST_INTERNAL\\",\\"HOST_CANONICAL\\",\\"ROOT_URL_INTERNAL\\",\\"KUBE_NAMESPACE\\",\\"KUBE_APP_NAME\\",\\"KUBE_APP_NAME_PREFIX\\",\\"SECRET_KEY_BASE\\",\\"POSTGRESQL_PASSWORD\\",\\"cloudsqlProxyCredentials\\",\\"RAILS_ENV\\"]"
1425
+ - export _ALL_ENV_VAR_KEYS="[\\"ENV_SHORT\\",\\"APP_DIR\\",\\"ENV_TYPE\\",\\"BUILD_INFO_BUILD_ID\\",\\"BUILD_INFO_BUILD_TIME\\",\\"BUILD_INFO_CURRENT_VERSION\\",\\"ROOT_URL\\",\\"HOSTNAME_INTERNAL\\",\\"ROOT_URL_INTERNAL\\",\\"KUBE_NAMESPACE\\",\\"KUBE_APP_NAME\\",\\"KUBE_APP_NAME_PREFIX\\",\\"SECRET_KEY_BASE\\",\\"POSTGRESQL_PASSWORD\\",\\"cloudsqlProxyCredentials\\",\\"RAILS_ENV\\"]"
1427
1426
  - export RELEASE_NAME="pan-test-app-prod-app"
1428
1427
  - export HELM_EXPERIMENTAL_OCI="1"
1429
1428
  - export KUBE_DOCKER_IMAGE_PULL_SECRET="gitlab-registry-app"
1430
1429
  - export HELM_GITLAB_CHART_NAME="/helm-charts/the-panter-chart"
1431
1430
  - export HELM_ARGS=""
1432
1431
  - export COMPONENT_NAME="app"
1433
- - export BUILD_ID="$(git describe --tags 2>/dev/null || git rev-parse HEAD)"
1434
- - echo -e "\\e[0Ksection_end:$(date +%s):injectvars\\r\\e[0K"
1432
+ - collapseable_section_end "injectvars"
1435
1433
  - kubectl config set-cluster "kube-pan-test-app-prod-app" --server="$CL_prod_app_KUBE_URL" --certificate-authority <(echo $CL_prod_app_KUBE_CA_PEM | base64 -d) --embed-certs=true
1436
1434
  - kubectl config set-credentials "kube-pan-test-app-prod-app" --token="$CL_prod_app_KUBE_TOKEN"
1437
1435
  - kubectl config set-context "kube-pan-test-app-prod-app" --cluster="kube-pan-test-app-prod-app" --user="kube-pan-test-app-prod-app" --namespace="pan-test-app-prod"