@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 .
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 .
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 .
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="."
136
166
  - export DOCKER_BUILD_CONTEXT="."
137
167
  - export DOCKER_REGISTRY="$CI_REGISTRY"
@@ -139,7 +169,7 @@ 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"
172
+ - collapseable_section_end "injectvars"
143
173
  - docker login --username gitlab-ci-token --password $CI_JOB_TOKEN $CI_REGISTRY
144
174
  - cd .
145
175
  - docker pull $DOCKER_CACHE_IMAGE || true
@@ -159,8 +189,8 @@ app 🧪 test:
159
189
  image: aquasec/trivy:0.38.3
160
190
  variables: {}
161
191
  script:
162
- - echo -e "\\e[0Ksection_start:$(date +%s):injectvars[collapsed=true]\\r\\e[0KInjecting variables"
163
- - echo -e "\\e[0Ksection_end:$(date +%s):injectvars\\r\\e[0K"
192
+ - collapseable_section_start "injectvars" "Injecting variables"
193
+ - collapseable_section_end "injectvars"
164
194
  - trivy fs --quiet --format cyclonedx --output "__sbom.json" .
165
195
  artifacts:
166
196
  paths:
@@ -181,7 +211,7 @@ app 🧪 test:
181
211
  KUBERNETES_MEMORY_REQUEST: 200Mi
182
212
  KUBERNETES_MEMORY_LIMIT: 400Mi
183
213
  script:
184
- - echo -e "\\e[0Ksection_start:$(date +%s):injectvars[collapsed=true]\\r\\e[0KInjecting variables"
214
+ - collapseable_section_start "injectvars" "Injecting variables"
185
215
  - export ENV_SHORT="dev"
186
216
  - export APP_DIR="."
187
217
  - export ENV_TYPE="dev"
@@ -189,8 +219,7 @@ app 🧪 test:
189
219
  - export BUILD_INFO_BUILD_TIME="$CI_JOB_STARTED_AT"
190
220
  - 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")"
191
221
  - export ROOT_URL="https://app.dev.test-app.pan.panter.cloud"
192
- - export HOST_INTERNAL="app.dev.test-app.pan.panter.cloud"
193
- - export HOST_CANONICAL="app.dev.test-app.pan.panter.cloud"
222
+ - export HOSTNAME_INTERNAL="app.dev.test-app.pan.panter.cloud"
194
223
  - export ROOT_URL_INTERNAL="https://app.dev.test-app.pan.panter.cloud"
195
224
  - export KUBE_NAMESPACE="pan-test-app-dev"
196
225
  - export KUBE_APP_NAME="app"
@@ -199,7 +228,7 @@ app 🧪 test:
199
228
  - export POSTGRESQL_PASSWORD="$CL_dev_app_POSTGRESQL_PASSWORD"
200
229
  - export cloudsqlProxyCredentials="$CL_dev_app_cloudsqlProxyCredentials"
201
230
  - export RAILS_ENV="production"
202
- - 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\\"]"
231
+ - 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\\"]"
203
232
  - export DOCKER_REGISTRY="$CI_REGISTRY"
204
233
  - export DOCKER_CACHE_IMAGE="$CI_REGISTRY_IMAGE/caches/app"
205
234
  - export DOCKER_IMAGE_NAME="dev/app"
@@ -211,23 +240,22 @@ app 🧪 test:
211
240
  - export HELM_GITLAB_CHART_NAME="/helm-charts/the-panter-chart"
212
241
  - export HELM_ARGS=""
213
242
  - export COMPONENT_NAME="app"
214
- - export BUILD_ID="$(git describe --tags 2>/dev/null || git rev-parse HEAD)"
215
- - echo -e "\\e[0Ksection_end:$(date +%s):injectvars\\r\\e[0K"
243
+ - collapseable_section_end "injectvars"
216
244
  - 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
217
245
  - kubectl config set-credentials "kube-pan-test-app-dev-app" --token="$CL_dev_app_KUBE_TOKEN"
218
246
  - 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"
219
247
  - kubectl config use-context "kube-pan-test-app-dev-app"
220
- - echo -e "\\e[0Ksection_start:$(date +%s):writeallvalues[collapsed=true]\\r\\e[0KWrite __all_values.yml for helm deployment"
248
+ - collapseable_section_start "writeallvalues" "Write __all_values.yml for helm deployment"
221
249
  - |
222
250
  cat > __all_values.yml <<EOF
223
251
  env:
224
252
  secret:
225
253
  SECRET_KEY_BASE: |-
226
- $(printf %s "$CL_dev_app_SECRET_KEY_BASE" | sed 's/^/ /')
254
+ $(printf %s "$CL_dev_app_SECRET_KEY_BASE" | sed '1!s/^/ /')
227
255
  POSTGRESQL_PASSWORD: |-
228
- $(printf %s "$CL_dev_app_POSTGRESQL_PASSWORD" | sed 's/^/ /')
256
+ $(printf %s "$CL_dev_app_POSTGRESQL_PASSWORD" | sed '1!s/^/ /')
229
257
  cloudsqlProxyCredentials: |-
230
- $(printf %s "$CL_dev_app_cloudsqlProxyCredentials" | sed 's/^/ /')
258
+ $(printf %s "$CL_dev_app_cloudsqlProxyCredentials" | sed '1!s/^/ /')
231
259
  public:
232
260
  ENV_SHORT: |-
233
261
  dev
@@ -236,16 +264,14 @@ app 🧪 test:
236
264
  ENV_TYPE: |-
237
265
  dev
238
266
  BUILD_INFO_BUILD_ID: |-
239
- $(printf %s "$(git describe --tags 2>/dev/null || git rev-parse HEAD)" | sed 's/^/ /')
267
+ $(printf %s "$(git describe --tags 2>/dev/null || git rev-parse HEAD)" | sed '1!s/^/ /')
240
268
  BUILD_INFO_BUILD_TIME: |-
241
- $(printf %s "$CI_JOB_STARTED_AT" | sed 's/^/ /')
269
+ $(printf %s "$CI_JOB_STARTED_AT" | sed '1!s/^/ /')
242
270
  BUILD_INFO_CURRENT_VERSION: |-
243
- $(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/^/ /')
271
+ $(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/^/ /')
244
272
  ROOT_URL: |-
245
273
  https://app.dev.test-app.pan.panter.cloud
246
- HOST_INTERNAL: |-
247
- app.dev.test-app.pan.panter.cloud
248
- HOST_CANONICAL: |-
274
+ HOSTNAME_INTERNAL: |-
249
275
  app.dev.test-app.pan.panter.cloud
250
276
  ROOT_URL_INTERNAL: |-
251
277
  https://app.dev.test-app.pan.panter.cloud
@@ -257,7 +283,7 @@ app 🧪 test:
257
283
  RAILS_ENV: |-
258
284
  production
259
285
  _ALL_ENV_VAR_KEYS: |-
260
- ["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"]
286
+ ["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"]
261
287
  application:
262
288
  host: |-
263
289
  app.dev.test-app.pan.panter.cloud
@@ -285,13 +311,13 @@ app 🧪 test:
285
311
  dbUser: |-
286
312
  postgres
287
313
  instanceConnectionName: |-
288
- some-project-id:europe-west6:pan-test-app-dev
314
+ myproject:europe-west6:instance-name
289
315
  proxyCredentials: |-
290
316
  $CL_dev_app_cloudsqlProxyCredentials
291
317
  fullDbName: |-
292
- app
293
- projectId: |-
294
- some-project-id
318
+ pan-test-app-dev-app
319
+ type: |-
320
+ unmanaged
295
321
  jobs:
296
322
  db-migrate:
297
323
  hook: |-
@@ -300,7 +326,7 @@ app 🧪 test:
300
326
  launcher bundle exec rake db:migrate
301
327
 
302
328
  EOF
303
- - echo -e "\\e[0Ksection_end:$(date +%s):writeallvalues\\r\\e[0K"
329
+ - collapseable_section_end "writeallvalues"
304
330
  - kubernetesCreateSecret
305
331
  - kubernetesDeploy
306
332
  - echo 'Uploading SBOM to Dependency Track'
@@ -343,7 +369,7 @@ app 🧪 test:
343
369
  KUBERNETES_MEMORY_LIMIT: 400Mi
344
370
  GIT_STRATEGY: none
345
371
  script:
346
- - echo -e "\\e[0Ksection_start:$(date +%s):injectvars[collapsed=true]\\r\\e[0KInjecting variables"
372
+ - collapseable_section_start "injectvars" "Injecting variables"
347
373
  - export ENV_SHORT="dev"
348
374
  - export APP_DIR="."
349
375
  - export ENV_TYPE="dev"
@@ -351,8 +377,7 @@ app 🧪 test:
351
377
  - export BUILD_INFO_BUILD_TIME="$CI_JOB_STARTED_AT"
352
378
  - 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")"
353
379
  - export ROOT_URL="https://app.dev.test-app.pan.panter.cloud"
354
- - export HOST_INTERNAL="app.dev.test-app.pan.panter.cloud"
355
- - export HOST_CANONICAL="app.dev.test-app.pan.panter.cloud"
380
+ - export HOSTNAME_INTERNAL="app.dev.test-app.pan.panter.cloud"
356
381
  - export ROOT_URL_INTERNAL="https://app.dev.test-app.pan.panter.cloud"
357
382
  - export KUBE_NAMESPACE="pan-test-app-dev"
358
383
  - export KUBE_APP_NAME="app"
@@ -361,15 +386,14 @@ app 🧪 test:
361
386
  - export POSTGRESQL_PASSWORD="$CL_dev_app_POSTGRESQL_PASSWORD"
362
387
  - export cloudsqlProxyCredentials="$CL_dev_app_cloudsqlProxyCredentials"
363
388
  - export RAILS_ENV="production"
364
- - 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\\"]"
389
+ - 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\\"]"
365
390
  - export RELEASE_NAME="pan-test-app-dev-app"
366
391
  - export HELM_EXPERIMENTAL_OCI="1"
367
392
  - export KUBE_DOCKER_IMAGE_PULL_SECRET="gitlab-registry-app"
368
393
  - export HELM_GITLAB_CHART_NAME="/helm-charts/the-panter-chart"
369
394
  - export HELM_ARGS=""
370
395
  - export COMPONENT_NAME="app"
371
- - export BUILD_ID="$(git describe --tags 2>/dev/null || git rev-parse HEAD)"
372
- - echo -e "\\e[0Ksection_end:$(date +%s):injectvars\\r\\e[0K"
396
+ - collapseable_section_end "injectvars"
373
397
  - 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
374
398
  - kubectl config set-credentials "kube-pan-test-app-dev-app" --token="$CL_dev_app_KUBE_TOKEN"
375
399
  - 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"
@@ -405,7 +429,7 @@ app 🧪 test:
405
429
  KUBERNETES_MEMORY_LIMIT: 400Mi
406
430
  GIT_STRATEGY: none
407
431
  script:
408
- - echo -e "\\e[0Ksection_start:$(date +%s):injectvars[collapsed=true]\\r\\e[0KInjecting variables"
432
+ - collapseable_section_start "injectvars" "Injecting variables"
409
433
  - export ENV_SHORT="dev"
410
434
  - export APP_DIR="."
411
435
  - export ENV_TYPE="dev"
@@ -413,8 +437,7 @@ app 🧪 test:
413
437
  - export BUILD_INFO_BUILD_TIME="$CI_JOB_STARTED_AT"
414
438
  - 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")"
415
439
  - export ROOT_URL="https://app.dev.test-app.pan.panter.cloud"
416
- - export HOST_INTERNAL="app.dev.test-app.pan.panter.cloud"
417
- - export HOST_CANONICAL="app.dev.test-app.pan.panter.cloud"
440
+ - export HOSTNAME_INTERNAL="app.dev.test-app.pan.panter.cloud"
418
441
  - export ROOT_URL_INTERNAL="https://app.dev.test-app.pan.panter.cloud"
419
442
  - export KUBE_NAMESPACE="pan-test-app-dev"
420
443
  - export KUBE_APP_NAME="app"
@@ -423,15 +446,14 @@ app 🧪 test:
423
446
  - export POSTGRESQL_PASSWORD="$CL_dev_app_POSTGRESQL_PASSWORD"
424
447
  - export cloudsqlProxyCredentials="$CL_dev_app_cloudsqlProxyCredentials"
425
448
  - export RAILS_ENV="production"
426
- - 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\\"]"
449
+ - 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\\"]"
427
450
  - export RELEASE_NAME="pan-test-app-dev-app"
428
451
  - export HELM_EXPERIMENTAL_OCI="1"
429
452
  - export KUBE_DOCKER_IMAGE_PULL_SECRET="gitlab-registry-app"
430
453
  - export HELM_GITLAB_CHART_NAME="/helm-charts/the-panter-chart"
431
454
  - export HELM_ARGS=""
432
455
  - export COMPONENT_NAME="app"
433
- - export BUILD_ID="$(git describe --tags 2>/dev/null || git rev-parse HEAD)"
434
- - echo -e "\\e[0Ksection_end:$(date +%s):injectvars\\r\\e[0K"
456
+ - collapseable_section_end "injectvars"
435
457
  - 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
436
458
  - kubectl config set-credentials "kube-pan-test-app-dev-app" --token="$CL_dev_app_KUBE_TOKEN"
437
459
  - 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"
@@ -471,7 +493,7 @@ app 🧪 test:
471
493
  KUBERNETES_MEMORY_REQUEST: 1Gi
472
494
  KUBERNETES_MEMORY_LIMIT: 2Gi
473
495
  script:
474
- - echo -e "\\e[0Ksection_start:$(date +%s):injectvars[collapsed=true]\\r\\e[0KInjecting variables"
496
+ - collapseable_section_start "injectvars" "Injecting variables"
475
497
  - export APP_DIR="."
476
498
  - export DOCKER_BUILD_CONTEXT="."
477
499
  - export DOCKER_REGISTRY="$CI_REGISTRY"
@@ -479,7 +501,7 @@ app 🧪 test:
479
501
  - export DOCKER_IMAGE_NAME="review/app"
480
502
  - export DOCKER_IMAGE="$CI_REGISTRY_IMAGE/$DOCKER_IMAGE_NAME"
481
503
  - export DOCKER_IMAGE_TAG="$CI_COMMIT_SHA"
482
- - echo -e "\\e[0Ksection_end:$(date +%s):injectvars\\r\\e[0K"
504
+ - collapseable_section_end "injectvars"
483
505
  - docker login --username gitlab-ci-token --password $CI_JOB_TOKEN $CI_REGISTRY
484
506
  - cd .
485
507
  - docker pull $DOCKER_CACHE_IMAGE || true
@@ -497,8 +519,8 @@ app 🧪 test:
497
519
  image: aquasec/trivy:0.38.3
498
520
  variables: {}
499
521
  script:
500
- - echo -e "\\e[0Ksection_start:$(date +%s):injectvars[collapsed=true]\\r\\e[0KInjecting variables"
501
- - echo -e "\\e[0Ksection_end:$(date +%s):injectvars\\r\\e[0K"
522
+ - collapseable_section_start "injectvars" "Injecting variables"
523
+ - collapseable_section_end "injectvars"
502
524
  - trivy fs --quiet --format cyclonedx --output "__sbom.json" .
503
525
  artifacts:
504
526
  paths:
@@ -517,7 +539,7 @@ app 🧪 test:
517
539
  KUBERNETES_MEMORY_REQUEST: 200Mi
518
540
  KUBERNETES_MEMORY_LIMIT: 400Mi
519
541
  script:
520
- - echo -e "\\e[0Ksection_start:$(date +%s):injectvars[collapsed=true]\\r\\e[0KInjecting variables"
542
+ - collapseable_section_start "injectvars" "Injecting variables"
521
543
  - export ENV_SHORT="review"
522
544
  - export APP_DIR="."
523
545
  - export ENV_TYPE="review"
@@ -525,8 +547,7 @@ app 🧪 test:
525
547
  - export BUILD_INFO_BUILD_TIME="$CI_JOB_STARTED_AT"
526
548
  - 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")"
527
549
  - 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"
528
- - 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"
529
- - 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"
550
+ - 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"
530
551
  - 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"
531
552
  - export KUBE_NAMESPACE="pan-test-app-review"
532
553
  - 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"
@@ -535,7 +556,7 @@ app 🧪 test:
535
556
  - export POSTGRESQL_PASSWORD="$CL_review_app_POSTGRESQL_PASSWORD"
536
557
  - export cloudsqlProxyCredentials="$CL_review_app_cloudsqlProxyCredentials"
537
558
  - export RAILS_ENV="production"
538
- - 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\\"]"
559
+ - 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\\"]"
539
560
  - export DOCKER_REGISTRY="$CI_REGISTRY"
540
561
  - export DOCKER_CACHE_IMAGE="$CI_REGISTRY_IMAGE/caches/app"
541
562
  - export DOCKER_IMAGE_NAME="review/app"
@@ -547,23 +568,22 @@ app 🧪 test:
547
568
  - export HELM_GITLAB_CHART_NAME="/helm-charts/the-panter-chart"
548
569
  - export HELM_ARGS=""
549
570
  - export COMPONENT_NAME="app"
550
- - export BUILD_ID="$(git describe --tags 2>/dev/null || git rev-parse HEAD)"
551
- - echo -e "\\e[0Ksection_end:$(date +%s):injectvars\\r\\e[0K"
571
+ - collapseable_section_end "injectvars"
552
572
  - 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
553
573
  - 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"
554
574
  - 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"
555
575
  - 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"
556
- - echo -e "\\e[0Ksection_start:$(date +%s):writeallvalues[collapsed=true]\\r\\e[0KWrite __all_values.yml for helm deployment"
576
+ - collapseable_section_start "writeallvalues" "Write __all_values.yml for helm deployment"
557
577
  - |
558
578
  cat > __all_values.yml <<EOF
559
579
  env:
560
580
  secret:
561
581
  SECRET_KEY_BASE: |-
562
- $(printf %s "$CL_review_app_SECRET_KEY_BASE" | sed 's/^/ /')
582
+ $(printf %s "$CL_review_app_SECRET_KEY_BASE" | sed '1!s/^/ /')
563
583
  POSTGRESQL_PASSWORD: |-
564
- $(printf %s "$CL_review_app_POSTGRESQL_PASSWORD" | sed 's/^/ /')
584
+ $(printf %s "$CL_review_app_POSTGRESQL_PASSWORD" | sed '1!s/^/ /')
565
585
  cloudsqlProxyCredentials: |-
566
- $(printf %s "$CL_review_app_cloudsqlProxyCredentials" | sed 's/^/ /')
586
+ $(printf %s "$CL_review_app_cloudsqlProxyCredentials" | sed '1!s/^/ /')
567
587
  public:
568
588
  ENV_SHORT: |-
569
589
  review
@@ -572,32 +592,30 @@ app 🧪 test:
572
592
  ENV_TYPE: |-
573
593
  review
574
594
  BUILD_INFO_BUILD_ID: |-
575
- $(printf %s "$(git describe --tags 2>/dev/null || git rev-parse HEAD)" | sed 's/^/ /')
595
+ $(printf %s "$(git describe --tags 2>/dev/null || git rev-parse HEAD)" | sed '1!s/^/ /')
576
596
  BUILD_INFO_BUILD_TIME: |-
577
- $(printf %s "$CI_JOB_STARTED_AT" | sed 's/^/ /')
597
+ $(printf %s "$CI_JOB_STARTED_AT" | sed '1!s/^/ /')
578
598
  BUILD_INFO_CURRENT_VERSION: |-
579
- $(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/^/ /')
599
+ $(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/^/ /')
580
600
  ROOT_URL: |-
581
- $(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/^/ /')
582
- HOST_INTERNAL: |-
583
- $(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/^/ /')
584
- HOST_CANONICAL: |-
585
- $(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/^/ /')
601
+ $(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/^/ /')
602
+ HOSTNAME_INTERNAL: |-
603
+ $(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/^/ /')
586
604
  ROOT_URL_INTERNAL: |-
587
- $(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/^/ /')
605
+ $(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/^/ /')
588
606
  KUBE_NAMESPACE: |-
589
607
  pan-test-app-review
590
608
  KUBE_APP_NAME: |-
591
- $(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/^/ /')
609
+ $(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/^/ /')
592
610
  KUBE_APP_NAME_PREFIX: |-
593
- $(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/^/ /')
611
+ $(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/^/ /')
594
612
  RAILS_ENV: |-
595
613
  production
596
614
  _ALL_ENV_VAR_KEYS: |-
597
- ["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"]
615
+ ["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"]
598
616
  application:
599
617
  host: |-
600
- $(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/^/ /')
618
+ $(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/^/ /')
601
619
  command: |-
602
620
  /cnb/process/web
603
621
  livenessProbe:
@@ -622,13 +640,13 @@ app 🧪 test:
622
640
  dbUser: |-
623
641
  postgres
624
642
  instanceConnectionName: |-
625
- some-project-id:europe-west6:pan-test-app-review
643
+ myproject:europe-west6:instance-name
626
644
  proxyCredentials: |-
627
645
  $CL_review_app_cloudsqlProxyCredentials
628
646
  fullDbName: |-
629
- $(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/^/ /')
630
- projectId: |-
631
- some-project-id
647
+ $(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/^/ /')
648
+ type: |-
649
+ unmanaged
632
650
  jobs:
633
651
  db-migrate:
634
652
  hook: |-
@@ -642,7 +660,7 @@ app 🧪 test:
642
660
  launcher bundle exec rake db:prepare db:seed
643
661
 
644
662
  EOF
645
- - echo -e "\\e[0Ksection_end:$(date +%s):writeallvalues\\r\\e[0K"
663
+ - collapseable_section_end "writeallvalues"
646
664
  - kubernetesCreateSecret
647
665
  - kubernetesDeploy
648
666
  - echo 'Uploading SBOM to Dependency Track'
@@ -683,7 +701,7 @@ app 🧪 test:
683
701
  KUBERNETES_MEMORY_LIMIT: 400Mi
684
702
  GIT_STRATEGY: none
685
703
  script:
686
- - echo -e "\\e[0Ksection_start:$(date +%s):injectvars[collapsed=true]\\r\\e[0KInjecting variables"
704
+ - collapseable_section_start "injectvars" "Injecting variables"
687
705
  - export ENV_SHORT="review"
688
706
  - export APP_DIR="."
689
707
  - export ENV_TYPE="review"
@@ -691,8 +709,7 @@ app 🧪 test:
691
709
  - export BUILD_INFO_BUILD_TIME="$CI_JOB_STARTED_AT"
692
710
  - 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")"
693
711
  - 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"
694
- - 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"
695
- - 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"
712
+ - 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"
696
713
  - 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"
697
714
  - export KUBE_NAMESPACE="pan-test-app-review"
698
715
  - 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"
@@ -701,15 +718,14 @@ app 🧪 test:
701
718
  - export POSTGRESQL_PASSWORD="$CL_review_app_POSTGRESQL_PASSWORD"
702
719
  - export cloudsqlProxyCredentials="$CL_review_app_cloudsqlProxyCredentials"
703
720
  - export RAILS_ENV="production"
704
- - 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\\"]"
721
+ - 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\\"]"
705
722
  - 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"
706
723
  - export HELM_EXPERIMENTAL_OCI="1"
707
724
  - export KUBE_DOCKER_IMAGE_PULL_SECRET="gitlab-registry-app"
708
725
  - export HELM_GITLAB_CHART_NAME="/helm-charts/the-panter-chart"
709
726
  - export HELM_ARGS=""
710
727
  - export COMPONENT_NAME="app"
711
- - export BUILD_ID="$(git describe --tags 2>/dev/null || git rev-parse HEAD)"
712
- - echo -e "\\e[0Ksection_end:$(date +%s):injectvars\\r\\e[0K"
728
+ - collapseable_section_end "injectvars"
713
729
  - 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
714
730
  - 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"
715
731
  - 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"
@@ -743,7 +759,7 @@ app 🧪 test:
743
759
  KUBERNETES_MEMORY_LIMIT: 400Mi
744
760
  GIT_STRATEGY: none
745
761
  script:
746
- - echo -e "\\e[0Ksection_start:$(date +%s):injectvars[collapsed=true]\\r\\e[0KInjecting variables"
762
+ - collapseable_section_start "injectvars" "Injecting variables"
747
763
  - export ENV_SHORT="review"
748
764
  - export APP_DIR="."
749
765
  - export ENV_TYPE="review"
@@ -751,8 +767,7 @@ app 🧪 test:
751
767
  - export BUILD_INFO_BUILD_TIME="$CI_JOB_STARTED_AT"
752
768
  - 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")"
753
769
  - 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"
754
- - 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"
755
- - 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"
770
+ - 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"
756
771
  - 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"
757
772
  - export KUBE_NAMESPACE="pan-test-app-review"
758
773
  - 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"
@@ -761,15 +776,14 @@ app 🧪 test:
761
776
  - export POSTGRESQL_PASSWORD="$CL_review_app_POSTGRESQL_PASSWORD"
762
777
  - export cloudsqlProxyCredentials="$CL_review_app_cloudsqlProxyCredentials"
763
778
  - export RAILS_ENV="production"
764
- - 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\\"]"
779
+ - 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\\"]"
765
780
  - 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"
766
781
  - export HELM_EXPERIMENTAL_OCI="1"
767
782
  - export KUBE_DOCKER_IMAGE_PULL_SECRET="gitlab-registry-app"
768
783
  - export HELM_GITLAB_CHART_NAME="/helm-charts/the-panter-chart"
769
784
  - export HELM_ARGS=""
770
785
  - export COMPONENT_NAME="app"
771
- - export BUILD_ID="$(git describe --tags 2>/dev/null || git rev-parse HEAD)"
772
- - echo -e "\\e[0Ksection_end:$(date +%s):injectvars\\r\\e[0K"
786
+ - collapseable_section_end "injectvars"
773
787
  - 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
774
788
  - 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"
775
789
  - 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"
@@ -807,7 +821,7 @@ app 🧪 test:
807
821
  KUBERNETES_MEMORY_REQUEST: 1Gi
808
822
  KUBERNETES_MEMORY_LIMIT: 2Gi
809
823
  script:
810
- - echo -e "\\e[0Ksection_start:$(date +%s):injectvars[collapsed=true]\\r\\e[0KInjecting variables"
824
+ - collapseable_section_start "injectvars" "Injecting variables"
811
825
  - export APP_DIR="."
812
826
  - export DOCKER_BUILD_CONTEXT="."
813
827
  - export DOCKER_REGISTRY="$CI_REGISTRY"
@@ -815,7 +829,7 @@ app 🧪 test:
815
829
  - export DOCKER_IMAGE_NAME="stage/app"
816
830
  - export DOCKER_IMAGE="$CI_REGISTRY_IMAGE/$DOCKER_IMAGE_NAME"
817
831
  - export DOCKER_IMAGE_TAG="$CI_COMMIT_SHA"
818
- - echo -e "\\e[0Ksection_end:$(date +%s):injectvars\\r\\e[0K"
832
+ - collapseable_section_end "injectvars"
819
833
  - docker login --username gitlab-ci-token --password $CI_JOB_TOKEN $CI_REGISTRY
820
834
  - cd .
821
835
  - docker pull $DOCKER_CACHE_IMAGE || true
@@ -833,8 +847,8 @@ app 🧪 test:
833
847
  image: aquasec/trivy:0.38.3
834
848
  variables: {}
835
849
  script:
836
- - echo -e "\\e[0Ksection_start:$(date +%s):injectvars[collapsed=true]\\r\\e[0KInjecting variables"
837
- - echo -e "\\e[0Ksection_end:$(date +%s):injectvars\\r\\e[0K"
850
+ - collapseable_section_start "injectvars" "Injecting variables"
851
+ - collapseable_section_end "injectvars"
838
852
  - trivy fs --quiet --format cyclonedx --output "__sbom.json" .
839
853
  artifacts:
840
854
  paths:
@@ -853,7 +867,7 @@ app 🧪 test:
853
867
  KUBERNETES_MEMORY_REQUEST: 200Mi
854
868
  KUBERNETES_MEMORY_LIMIT: 400Mi
855
869
  script:
856
- - echo -e "\\e[0Ksection_start:$(date +%s):injectvars[collapsed=true]\\r\\e[0KInjecting variables"
870
+ - collapseable_section_start "injectvars" "Injecting variables"
857
871
  - export ENV_SHORT="stage"
858
872
  - export APP_DIR="."
859
873
  - export ENV_TYPE="stage"
@@ -861,8 +875,7 @@ app 🧪 test:
861
875
  - export BUILD_INFO_BUILD_TIME="$CI_JOB_STARTED_AT"
862
876
  - 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")"
863
877
  - export ROOT_URL="https://app.stage.test-app.pan.panter.cloud"
864
- - export HOST_INTERNAL="app.stage.test-app.pan.panter.cloud"
865
- - export HOST_CANONICAL="app.stage.test-app.pan.panter.cloud"
878
+ - export HOSTNAME_INTERNAL="app.stage.test-app.pan.panter.cloud"
866
879
  - export ROOT_URL_INTERNAL="https://app.stage.test-app.pan.panter.cloud"
867
880
  - export KUBE_NAMESPACE="pan-test-app-stage"
868
881
  - export KUBE_APP_NAME="app"
@@ -871,7 +884,7 @@ app 🧪 test:
871
884
  - export POSTGRESQL_PASSWORD="$CL_stage_app_POSTGRESQL_PASSWORD"
872
885
  - export cloudsqlProxyCredentials="$CL_stage_app_cloudsqlProxyCredentials"
873
886
  - export RAILS_ENV="production"
874
- - 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\\"]"
887
+ - 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\\"]"
875
888
  - export DOCKER_REGISTRY="$CI_REGISTRY"
876
889
  - export DOCKER_CACHE_IMAGE="$CI_REGISTRY_IMAGE/caches/app"
877
890
  - export DOCKER_IMAGE_NAME="stage/app"
@@ -883,23 +896,22 @@ app 🧪 test:
883
896
  - export HELM_GITLAB_CHART_NAME="/helm-charts/the-panter-chart"
884
897
  - export HELM_ARGS=""
885
898
  - export COMPONENT_NAME="app"
886
- - export BUILD_ID="$(git describe --tags 2>/dev/null || git rev-parse HEAD)"
887
- - echo -e "\\e[0Ksection_end:$(date +%s):injectvars\\r\\e[0K"
899
+ - collapseable_section_end "injectvars"
888
900
  - 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
889
901
  - kubectl config set-credentials "kube-pan-test-app-stage-app" --token="$CL_stage_app_KUBE_TOKEN"
890
902
  - 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"
891
903
  - kubectl config use-context "kube-pan-test-app-stage-app"
892
- - echo -e "\\e[0Ksection_start:$(date +%s):writeallvalues[collapsed=true]\\r\\e[0KWrite __all_values.yml for helm deployment"
904
+ - collapseable_section_start "writeallvalues" "Write __all_values.yml for helm deployment"
893
905
  - |
894
906
  cat > __all_values.yml <<EOF
895
907
  env:
896
908
  secret:
897
909
  SECRET_KEY_BASE: |-
898
- $(printf %s "$CL_stage_app_SECRET_KEY_BASE" | sed 's/^/ /')
910
+ $(printf %s "$CL_stage_app_SECRET_KEY_BASE" | sed '1!s/^/ /')
899
911
  POSTGRESQL_PASSWORD: |-
900
- $(printf %s "$CL_stage_app_POSTGRESQL_PASSWORD" | sed 's/^/ /')
912
+ $(printf %s "$CL_stage_app_POSTGRESQL_PASSWORD" | sed '1!s/^/ /')
901
913
  cloudsqlProxyCredentials: |-
902
- $(printf %s "$CL_stage_app_cloudsqlProxyCredentials" | sed 's/^/ /')
914
+ $(printf %s "$CL_stage_app_cloudsqlProxyCredentials" | sed '1!s/^/ /')
903
915
  public:
904
916
  ENV_SHORT: |-
905
917
  stage
@@ -908,16 +920,14 @@ app 🧪 test:
908
920
  ENV_TYPE: |-
909
921
  stage
910
922
  BUILD_INFO_BUILD_ID: |-
911
- $(printf %s "$(git describe --tags 2>/dev/null || git rev-parse HEAD)" | sed 's/^/ /')
923
+ $(printf %s "$(git describe --tags 2>/dev/null || git rev-parse HEAD)" | sed '1!s/^/ /')
912
924
  BUILD_INFO_BUILD_TIME: |-
913
- $(printf %s "$CI_JOB_STARTED_AT" | sed 's/^/ /')
925
+ $(printf %s "$CI_JOB_STARTED_AT" | sed '1!s/^/ /')
914
926
  BUILD_INFO_CURRENT_VERSION: |-
915
- $(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/^/ /')
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 '1!s/^/ /')
916
928
  ROOT_URL: |-
917
929
  https://app.stage.test-app.pan.panter.cloud
918
- HOST_INTERNAL: |-
919
- app.stage.test-app.pan.panter.cloud
920
- HOST_CANONICAL: |-
930
+ HOSTNAME_INTERNAL: |-
921
931
  app.stage.test-app.pan.panter.cloud
922
932
  ROOT_URL_INTERNAL: |-
923
933
  https://app.stage.test-app.pan.panter.cloud
@@ -929,7 +939,7 @@ app 🧪 test:
929
939
  RAILS_ENV: |-
930
940
  production
931
941
  _ALL_ENV_VAR_KEYS: |-
932
- ["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"]
942
+ ["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"]
933
943
  application:
934
944
  host: |-
935
945
  app.stage.test-app.pan.panter.cloud
@@ -957,13 +967,13 @@ app 🧪 test:
957
967
  dbUser: |-
958
968
  postgres
959
969
  instanceConnectionName: |-
960
- some-project-id:europe-west6:pan-test-app-stage
970
+ myproject:europe-west6:instance-name
961
971
  proxyCredentials: |-
962
972
  $CL_stage_app_cloudsqlProxyCredentials
963
973
  fullDbName: |-
964
- app
965
- projectId: |-
966
- some-project-id
974
+ pan-test-app-stage-app
975
+ type: |-
976
+ unmanaged
967
977
  jobs:
968
978
  db-migrate:
969
979
  hook: |-
@@ -972,7 +982,7 @@ app 🧪 test:
972
982
  launcher bundle exec rake db:migrate
973
983
 
974
984
  EOF
975
- - echo -e "\\e[0Ksection_end:$(date +%s):writeallvalues\\r\\e[0K"
985
+ - collapseable_section_end "writeallvalues"
976
986
  - kubernetesCreateSecret
977
987
  - kubernetesDeploy
978
988
  - echo 'Uploading SBOM to Dependency Track'
@@ -1006,7 +1016,7 @@ app 🧪 test:
1006
1016
  KUBERNETES_MEMORY_LIMIT: 400Mi
1007
1017
  GIT_STRATEGY: none
1008
1018
  script:
1009
- - echo -e "\\e[0Ksection_start:$(date +%s):injectvars[collapsed=true]\\r\\e[0KInjecting variables"
1019
+ - collapseable_section_start "injectvars" "Injecting variables"
1010
1020
  - export ENV_SHORT="stage"
1011
1021
  - export APP_DIR="."
1012
1022
  - export ENV_TYPE="stage"
@@ -1014,8 +1024,7 @@ app 🧪 test:
1014
1024
  - export BUILD_INFO_BUILD_TIME="$CI_JOB_STARTED_AT"
1015
1025
  - 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")"
1016
1026
  - export ROOT_URL="https://app.stage.test-app.pan.panter.cloud"
1017
- - export HOST_INTERNAL="app.stage.test-app.pan.panter.cloud"
1018
- - export HOST_CANONICAL="app.stage.test-app.pan.panter.cloud"
1027
+ - export HOSTNAME_INTERNAL="app.stage.test-app.pan.panter.cloud"
1019
1028
  - export ROOT_URL_INTERNAL="https://app.stage.test-app.pan.panter.cloud"
1020
1029
  - export KUBE_NAMESPACE="pan-test-app-stage"
1021
1030
  - export KUBE_APP_NAME="app"
@@ -1024,15 +1033,14 @@ app 🧪 test:
1024
1033
  - export POSTGRESQL_PASSWORD="$CL_stage_app_POSTGRESQL_PASSWORD"
1025
1034
  - export cloudsqlProxyCredentials="$CL_stage_app_cloudsqlProxyCredentials"
1026
1035
  - export RAILS_ENV="production"
1027
- - 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\\"]"
1036
+ - 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\\"]"
1028
1037
  - export RELEASE_NAME="pan-test-app-stage-app"
1029
1038
  - export HELM_EXPERIMENTAL_OCI="1"
1030
1039
  - export KUBE_DOCKER_IMAGE_PULL_SECRET="gitlab-registry-app"
1031
1040
  - export HELM_GITLAB_CHART_NAME="/helm-charts/the-panter-chart"
1032
1041
  - export HELM_ARGS=""
1033
1042
  - export COMPONENT_NAME="app"
1034
- - export BUILD_ID="$(git describe --tags 2>/dev/null || git rev-parse HEAD)"
1035
- - echo -e "\\e[0Ksection_end:$(date +%s):injectvars\\r\\e[0K"
1043
+ - collapseable_section_end "injectvars"
1036
1044
  - 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
1037
1045
  - kubectl config set-credentials "kube-pan-test-app-stage-app" --token="$CL_stage_app_KUBE_TOKEN"
1038
1046
  - 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"
@@ -1066,7 +1074,7 @@ app 🧪 test:
1066
1074
  KUBERNETES_MEMORY_LIMIT: 400Mi
1067
1075
  GIT_STRATEGY: none
1068
1076
  script:
1069
- - echo -e "\\e[0Ksection_start:$(date +%s):injectvars[collapsed=true]\\r\\e[0KInjecting variables"
1077
+ - collapseable_section_start "injectvars" "Injecting variables"
1070
1078
  - export ENV_SHORT="stage"
1071
1079
  - export APP_DIR="."
1072
1080
  - export ENV_TYPE="stage"
@@ -1074,8 +1082,7 @@ app 🧪 test:
1074
1082
  - export BUILD_INFO_BUILD_TIME="$CI_JOB_STARTED_AT"
1075
1083
  - 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")"
1076
1084
  - export ROOT_URL="https://app.stage.test-app.pan.panter.cloud"
1077
- - export HOST_INTERNAL="app.stage.test-app.pan.panter.cloud"
1078
- - export HOST_CANONICAL="app.stage.test-app.pan.panter.cloud"
1085
+ - export HOSTNAME_INTERNAL="app.stage.test-app.pan.panter.cloud"
1079
1086
  - export ROOT_URL_INTERNAL="https://app.stage.test-app.pan.panter.cloud"
1080
1087
  - export KUBE_NAMESPACE="pan-test-app-stage"
1081
1088
  - export KUBE_APP_NAME="app"
@@ -1084,15 +1091,14 @@ app 🧪 test:
1084
1091
  - export POSTGRESQL_PASSWORD="$CL_stage_app_POSTGRESQL_PASSWORD"
1085
1092
  - export cloudsqlProxyCredentials="$CL_stage_app_cloudsqlProxyCredentials"
1086
1093
  - export RAILS_ENV="production"
1087
- - 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\\"]"
1094
+ - 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\\"]"
1088
1095
  - export RELEASE_NAME="pan-test-app-stage-app"
1089
1096
  - export HELM_EXPERIMENTAL_OCI="1"
1090
1097
  - export KUBE_DOCKER_IMAGE_PULL_SECRET="gitlab-registry-app"
1091
1098
  - export HELM_GITLAB_CHART_NAME="/helm-charts/the-panter-chart"
1092
1099
  - export HELM_ARGS=""
1093
1100
  - export COMPONENT_NAME="app"
1094
- - export BUILD_ID="$(git describe --tags 2>/dev/null || git rev-parse HEAD)"
1095
- - echo -e "\\e[0Ksection_end:$(date +%s):injectvars\\r\\e[0K"
1101
+ - collapseable_section_end "injectvars"
1096
1102
  - 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
1097
1103
  - kubectl config set-credentials "kube-pan-test-app-stage-app" --token="$CL_stage_app_KUBE_TOKEN"
1098
1104
  - 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"
@@ -1130,7 +1136,7 @@ app 🧪 test:
1130
1136
  KUBERNETES_MEMORY_REQUEST: 1Gi
1131
1137
  KUBERNETES_MEMORY_LIMIT: 2Gi
1132
1138
  script:
1133
- - echo -e "\\e[0Ksection_start:$(date +%s):injectvars[collapsed=true]\\r\\e[0KInjecting variables"
1139
+ - collapseable_section_start "injectvars" "Injecting variables"
1134
1140
  - export APP_DIR="."
1135
1141
  - export DOCKER_BUILD_CONTEXT="."
1136
1142
  - export DOCKER_REGISTRY="$CI_REGISTRY"
@@ -1138,7 +1144,7 @@ app 🧪 test:
1138
1144
  - export DOCKER_IMAGE_NAME="prod/app"
1139
1145
  - export DOCKER_IMAGE="$CI_REGISTRY_IMAGE/$DOCKER_IMAGE_NAME"
1140
1146
  - export DOCKER_IMAGE_TAG="$CI_COMMIT_SHA"
1141
- - echo -e "\\e[0Ksection_end:$(date +%s):injectvars\\r\\e[0K"
1147
+ - collapseable_section_end "injectvars"
1142
1148
  - docker login --username gitlab-ci-token --password $CI_JOB_TOKEN $CI_REGISTRY
1143
1149
  - cd .
1144
1150
  - docker pull $DOCKER_CACHE_IMAGE || true
@@ -1156,8 +1162,8 @@ app 🧪 test:
1156
1162
  image: aquasec/trivy:0.38.3
1157
1163
  variables: {}
1158
1164
  script:
1159
- - echo -e "\\e[0Ksection_start:$(date +%s):injectvars[collapsed=true]\\r\\e[0KInjecting variables"
1160
- - echo -e "\\e[0Ksection_end:$(date +%s):injectvars\\r\\e[0K"
1165
+ - collapseable_section_start "injectvars" "Injecting variables"
1166
+ - collapseable_section_end "injectvars"
1161
1167
  - trivy fs --quiet --format cyclonedx --output "__sbom.json" .
1162
1168
  artifacts:
1163
1169
  paths:
@@ -1176,7 +1182,7 @@ app 🧪 test:
1176
1182
  KUBERNETES_MEMORY_REQUEST: 200Mi
1177
1183
  KUBERNETES_MEMORY_LIMIT: 400Mi
1178
1184
  script:
1179
- - echo -e "\\e[0Ksection_start:$(date +%s):injectvars[collapsed=true]\\r\\e[0KInjecting variables"
1185
+ - collapseable_section_start "injectvars" "Injecting variables"
1180
1186
  - export ENV_SHORT="prod"
1181
1187
  - export APP_DIR="."
1182
1188
  - export ENV_TYPE="prod"
@@ -1184,8 +1190,7 @@ app 🧪 test:
1184
1190
  - export BUILD_INFO_BUILD_TIME="$CI_JOB_STARTED_AT"
1185
1191
  - 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")"
1186
1192
  - export ROOT_URL="https://my-fancy-website.com"
1187
- - export HOST_INTERNAL="app.prod.test-app.pan.panter.cloud"
1188
- - export HOST_CANONICAL="app.prod.test-app.pan.panter.cloud"
1193
+ - export HOSTNAME_INTERNAL="app.prod.test-app.pan.panter.cloud"
1189
1194
  - export ROOT_URL_INTERNAL="https://app.prod.test-app.pan.panter.cloud"
1190
1195
  - export KUBE_NAMESPACE="pan-test-app-prod"
1191
1196
  - export KUBE_APP_NAME="app"
@@ -1194,7 +1199,7 @@ app 🧪 test:
1194
1199
  - export POSTGRESQL_PASSWORD="$CL_prod_app_POSTGRESQL_PASSWORD"
1195
1200
  - export cloudsqlProxyCredentials="$CL_prod_app_cloudsqlProxyCredentials"
1196
1201
  - export RAILS_ENV="production"
1197
- - 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\\"]"
1202
+ - 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\\"]"
1198
1203
  - export DOCKER_REGISTRY="$CI_REGISTRY"
1199
1204
  - export DOCKER_CACHE_IMAGE="$CI_REGISTRY_IMAGE/caches/app"
1200
1205
  - export DOCKER_IMAGE_NAME="prod/app"
@@ -1206,23 +1211,22 @@ app 🧪 test:
1206
1211
  - export HELM_GITLAB_CHART_NAME="/helm-charts/the-panter-chart"
1207
1212
  - export HELM_ARGS=""
1208
1213
  - export COMPONENT_NAME="app"
1209
- - export BUILD_ID="$(git describe --tags 2>/dev/null || git rev-parse HEAD)"
1210
- - echo -e "\\e[0Ksection_end:$(date +%s):injectvars\\r\\e[0K"
1214
+ - collapseable_section_end "injectvars"
1211
1215
  - 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
1212
1216
  - kubectl config set-credentials "kube-pan-test-app-prod-app" --token="$CL_prod_app_KUBE_TOKEN"
1213
1217
  - 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"
1214
1218
  - kubectl config use-context "kube-pan-test-app-prod-app"
1215
- - echo -e "\\e[0Ksection_start:$(date +%s):writeallvalues[collapsed=true]\\r\\e[0KWrite __all_values.yml for helm deployment"
1219
+ - collapseable_section_start "writeallvalues" "Write __all_values.yml for helm deployment"
1216
1220
  - |
1217
1221
  cat > __all_values.yml <<EOF
1218
1222
  env:
1219
1223
  secret:
1220
1224
  SECRET_KEY_BASE: |-
1221
- $(printf %s "$CL_prod_app_SECRET_KEY_BASE" | sed 's/^/ /')
1225
+ $(printf %s "$CL_prod_app_SECRET_KEY_BASE" | sed '1!s/^/ /')
1222
1226
  POSTGRESQL_PASSWORD: |-
1223
- $(printf %s "$CL_prod_app_POSTGRESQL_PASSWORD" | sed 's/^/ /')
1227
+ $(printf %s "$CL_prod_app_POSTGRESQL_PASSWORD" | sed '1!s/^/ /')
1224
1228
  cloudsqlProxyCredentials: |-
1225
- $(printf %s "$CL_prod_app_cloudsqlProxyCredentials" | sed 's/^/ /')
1229
+ $(printf %s "$CL_prod_app_cloudsqlProxyCredentials" | sed '1!s/^/ /')
1226
1230
  public:
1227
1231
  ENV_SHORT: |-
1228
1232
  prod
@@ -1231,16 +1235,14 @@ app 🧪 test:
1231
1235
  ENV_TYPE: |-
1232
1236
  prod
1233
1237
  BUILD_INFO_BUILD_ID: |-
1234
- $(printf %s "$(git describe --tags 2>/dev/null || git rev-parse HEAD)" | sed 's/^/ /')
1238
+ $(printf %s "$(git describe --tags 2>/dev/null || git rev-parse HEAD)" | sed '1!s/^/ /')
1235
1239
  BUILD_INFO_BUILD_TIME: |-
1236
- $(printf %s "$CI_JOB_STARTED_AT" | sed 's/^/ /')
1240
+ $(printf %s "$CI_JOB_STARTED_AT" | sed '1!s/^/ /')
1237
1241
  BUILD_INFO_CURRENT_VERSION: |-
1238
- $(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/^/ /')
1242
+ $(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/^/ /')
1239
1243
  ROOT_URL: |-
1240
1244
  https://my-fancy-website.com
1241
- HOST_INTERNAL: |-
1242
- app.prod.test-app.pan.panter.cloud
1243
- HOST_CANONICAL: |-
1245
+ HOSTNAME_INTERNAL: |-
1244
1246
  app.prod.test-app.pan.panter.cloud
1245
1247
  ROOT_URL_INTERNAL: |-
1246
1248
  https://app.prod.test-app.pan.panter.cloud
@@ -1252,7 +1254,7 @@ app 🧪 test:
1252
1254
  RAILS_ENV: |-
1253
1255
  production
1254
1256
  _ALL_ENV_VAR_KEYS: |-
1255
- ["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"]
1257
+ ["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"]
1256
1258
  application:
1257
1259
  host: |-
1258
1260
  my-fancy-website.com
@@ -1280,13 +1282,13 @@ app 🧪 test:
1280
1282
  dbUser: |-
1281
1283
  postgres
1282
1284
  instanceConnectionName: |-
1283
- some-project-id:europe-west6:pan-test-app-prod
1285
+ myproject:europe-west6:instance-name
1284
1286
  proxyCredentials: |-
1285
1287
  $CL_prod_app_cloudsqlProxyCredentials
1286
1288
  fullDbName: |-
1287
- app
1288
- projectId: |-
1289
- some-project-id
1289
+ pan-test-app-prod-app
1290
+ type: |-
1291
+ unmanaged
1290
1292
  jobs:
1291
1293
  db-migrate:
1292
1294
  hook: |-
@@ -1295,7 +1297,7 @@ app 🧪 test:
1295
1297
  launcher bundle exec rake db:migrate
1296
1298
 
1297
1299
  EOF
1298
- - echo -e "\\e[0Ksection_end:$(date +%s):writeallvalues\\r\\e[0K"
1300
+ - collapseable_section_end "writeallvalues"
1299
1301
  - kubernetesCreateSecret
1300
1302
  - kubernetesDeploy
1301
1303
  - echo 'Uploading SBOM to Dependency Track'
@@ -1329,7 +1331,7 @@ app 🧪 test:
1329
1331
  KUBERNETES_MEMORY_LIMIT: 400Mi
1330
1332
  GIT_STRATEGY: none
1331
1333
  script:
1332
- - echo -e "\\e[0Ksection_start:$(date +%s):injectvars[collapsed=true]\\r\\e[0KInjecting variables"
1334
+ - collapseable_section_start "injectvars" "Injecting variables"
1333
1335
  - export ENV_SHORT="prod"
1334
1336
  - export APP_DIR="."
1335
1337
  - export ENV_TYPE="prod"
@@ -1337,8 +1339,7 @@ app 🧪 test:
1337
1339
  - export BUILD_INFO_BUILD_TIME="$CI_JOB_STARTED_AT"
1338
1340
  - 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")"
1339
1341
  - export ROOT_URL="https://my-fancy-website.com"
1340
- - export HOST_INTERNAL="app.prod.test-app.pan.panter.cloud"
1341
- - export HOST_CANONICAL="app.prod.test-app.pan.panter.cloud"
1342
+ - export HOSTNAME_INTERNAL="app.prod.test-app.pan.panter.cloud"
1342
1343
  - export ROOT_URL_INTERNAL="https://app.prod.test-app.pan.panter.cloud"
1343
1344
  - export KUBE_NAMESPACE="pan-test-app-prod"
1344
1345
  - export KUBE_APP_NAME="app"
@@ -1347,15 +1348,14 @@ app 🧪 test:
1347
1348
  - export POSTGRESQL_PASSWORD="$CL_prod_app_POSTGRESQL_PASSWORD"
1348
1349
  - export cloudsqlProxyCredentials="$CL_prod_app_cloudsqlProxyCredentials"
1349
1350
  - export RAILS_ENV="production"
1350
- - 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\\"]"
1351
+ - 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\\"]"
1351
1352
  - export RELEASE_NAME="pan-test-app-prod-app"
1352
1353
  - export HELM_EXPERIMENTAL_OCI="1"
1353
1354
  - export KUBE_DOCKER_IMAGE_PULL_SECRET="gitlab-registry-app"
1354
1355
  - export HELM_GITLAB_CHART_NAME="/helm-charts/the-panter-chart"
1355
1356
  - export HELM_ARGS=""
1356
1357
  - export COMPONENT_NAME="app"
1357
- - export BUILD_ID="$(git describe --tags 2>/dev/null || git rev-parse HEAD)"
1358
- - echo -e "\\e[0Ksection_end:$(date +%s):injectvars\\r\\e[0K"
1358
+ - collapseable_section_end "injectvars"
1359
1359
  - 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
1360
1360
  - kubectl config set-credentials "kube-pan-test-app-prod-app" --token="$CL_prod_app_KUBE_TOKEN"
1361
1361
  - 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"
@@ -1389,7 +1389,7 @@ app 🧪 test:
1389
1389
  KUBERNETES_MEMORY_LIMIT: 400Mi
1390
1390
  GIT_STRATEGY: none
1391
1391
  script:
1392
- - echo -e "\\e[0Ksection_start:$(date +%s):injectvars[collapsed=true]\\r\\e[0KInjecting variables"
1392
+ - collapseable_section_start "injectvars" "Injecting variables"
1393
1393
  - export ENV_SHORT="prod"
1394
1394
  - export APP_DIR="."
1395
1395
  - export ENV_TYPE="prod"
@@ -1397,8 +1397,7 @@ app 🧪 test:
1397
1397
  - export BUILD_INFO_BUILD_TIME="$CI_JOB_STARTED_AT"
1398
1398
  - 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")"
1399
1399
  - export ROOT_URL="https://my-fancy-website.com"
1400
- - export HOST_INTERNAL="app.prod.test-app.pan.panter.cloud"
1401
- - export HOST_CANONICAL="app.prod.test-app.pan.panter.cloud"
1400
+ - export HOSTNAME_INTERNAL="app.prod.test-app.pan.panter.cloud"
1402
1401
  - export ROOT_URL_INTERNAL="https://app.prod.test-app.pan.panter.cloud"
1403
1402
  - export KUBE_NAMESPACE="pan-test-app-prod"
1404
1403
  - export KUBE_APP_NAME="app"
@@ -1407,15 +1406,14 @@ app 🧪 test:
1407
1406
  - export POSTGRESQL_PASSWORD="$CL_prod_app_POSTGRESQL_PASSWORD"
1408
1407
  - export cloudsqlProxyCredentials="$CL_prod_app_cloudsqlProxyCredentials"
1409
1408
  - export RAILS_ENV="production"
1410
- - 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\\"]"
1409
+ - 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\\"]"
1411
1410
  - export RELEASE_NAME="pan-test-app-prod-app"
1412
1411
  - export HELM_EXPERIMENTAL_OCI="1"
1413
1412
  - export KUBE_DOCKER_IMAGE_PULL_SECRET="gitlab-registry-app"
1414
1413
  - export HELM_GITLAB_CHART_NAME="/helm-charts/the-panter-chart"
1415
1414
  - export HELM_ARGS=""
1416
1415
  - export COMPONENT_NAME="app"
1417
- - export BUILD_ID="$(git describe --tags 2>/dev/null || git rev-parse HEAD)"
1418
- - echo -e "\\e[0Ksection_end:$(date +%s):injectvars\\r\\e[0K"
1416
+ - collapseable_section_end "injectvars"
1419
1417
  - 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
1420
1418
  - kubectl config set-credentials "kube-pan-test-app-prod-app" --token="$CL_prod_app_KUBE_TOKEN"
1421
1419
  - 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"