@catladder/pipeline 1.170.0 → 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (194) hide show
  1. package/dist/bash/BashExpression.d.ts +2 -6
  2. package/dist/bash/BashExpression.js +5 -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 -41
  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 +4741 -0
  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 → referencing-other-vars.test.ts} +2 -2
  123. package/examples/referencing-other-vars.ts +83 -0
  124. package/examples/workspace-api-www-turbo-cache.test.ts +11 -0
  125. package/examples/{workspace-api-www-custom-cache.ts → workspace-api-www-turbo-cache.ts} +4 -3
  126. package/examples/workspace-api-www.ts +3 -2
  127. package/package.json +2 -6
  128. package/src/bash/BashExpression.ts +10 -13
  129. package/src/bash/bashEscape.ts +158 -0
  130. package/src/bash/bashYaml.ts +36 -2
  131. package/src/bash/getInjectVarsScript.ts +11 -2
  132. package/src/bash/index.ts +2 -0
  133. package/src/build/base/createAppBuildJob.ts +0 -1
  134. package/src/build/base/writeDotEnv.ts +6 -6
  135. package/src/build/custom/testJob.ts +0 -1
  136. package/src/build/node/buildJob.ts +2 -2
  137. package/src/build/node/cache.ts +0 -29
  138. package/src/build/node/testJob.ts +0 -1
  139. package/src/build/rails/build.ts +0 -1
  140. package/src/build/rails/test.ts +0 -1
  141. package/src/build/types.ts +0 -13
  142. package/src/context/createComponentContext.ts +0 -1
  143. package/src/context/getEnvConfig.ts +2 -2
  144. package/src/context/getEnvironment.ts +1 -1
  145. package/src/context/getEnvironmentContext.ts +1 -1
  146. package/src/context/getEnvironmentVariables.ts +44 -51
  147. package/src/deploy/base/deploy.ts +1 -1
  148. package/src/deploy/cloudRun/createJobs/getCloudRunDeployScripts.ts +4 -12
  149. package/src/deploy/cloudRun/index.ts +2 -2
  150. package/src/deploy/kubernetes/cloudSql/index.ts +3 -16
  151. package/src/deploy/kubernetes/deployJob.ts +0 -2
  152. package/src/deploy/kubernetes/index.ts +2 -2
  153. package/src/deploy/kubernetes/kubeEnv.ts +3 -3
  154. package/src/deploy/kubernetes/kubeValues.ts +5 -8
  155. package/src/deploy/types/base.ts +0 -6
  156. package/src/deploy/types/kubernetes.ts +1 -36
  157. package/src/globalScriptFunctions/index.ts +30 -0
  158. package/src/index.ts +2 -0
  159. package/src/pipeline/gitlab/createGitlabJobs.ts +1 -4
  160. package/src/pipeline/gitlab/createGitlabPipeline.ts +8 -1
  161. package/src/pipeline/packageManager.ts +7 -5
  162. package/src/runner/index.ts +0 -1
  163. package/src/types/config.ts +6 -9
  164. package/src/types/context.ts +3 -9
  165. package/src/types/gitlab-types.ts +1 -0
  166. package/src/types/jobs.ts +0 -8
  167. package/src/utils/gitlab.ts +19 -2
  168. package/src/utils/writeFiles.ts +1 -2
  169. package/src/variables/VariableValue.ts +6 -0
  170. package/src/variables/VariableValueContainingReferences.ts +89 -0
  171. package/src/variables/__tests__/resolveAllReferences.test.ts +110 -0
  172. package/src/variables/__tests__/resolveAllReferencesOnce.test.ts +64 -0
  173. package/src/variables/__tests__/resolveReferencesOnce.test.ts +117 -0
  174. package/src/variables/__tests__/variableValue.test.ts +73 -0
  175. package/src/variables/resolveAllReferences.ts +46 -0
  176. package/src/variables/resolveAllReferencesOnce.ts +44 -0
  177. package/src/variables/resolveReferencesOnce.ts +29 -0
  178. package/bin/catladder-gitlab-dev.js +0 -3
  179. package/bin/catladder-gitlab.js +0 -3
  180. package/dist/bash/replaceAsync.d.ts +0 -2
  181. package/dist/bundles/catladder-gitlab/index.js +0 -15
  182. package/dist/context/__tests__/resolveReferences.test.js +0 -368
  183. package/dist/context/resolveReferences.d.ts +0 -6
  184. package/dist/context/resolveReferences.js +0 -286
  185. package/dist/deploy/kubernetes/processSecretsAsFiles.d.ts +0 -85
  186. package/dist/deploy/kubernetes/processSecretsAsFiles.js +0 -33
  187. package/examples/__snapshots__/kubernetes-with-cloud-sql-legacy.test.ts.snap +0 -1795
  188. package/examples/kubernetes-with-cloud-sql-legacy.ts +0 -35
  189. package/scripts/bundle +0 -2
  190. package/src/bash/replaceAsync.ts +0 -54
  191. package/src/context/__tests__/resolveReferences.test.ts +0 -148
  192. package/src/context/resolveReferences.ts +0 -93
  193. package/src/deploy/kubernetes/processSecretsAsFiles.ts +0 -35
  194. /package/dist/{context/__tests__/resolveReferences.test.d.ts → variables/__tests__/resolveAllReferences.test.d.ts} +0 -0
@@ -45,6 +45,36 @@ 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
  api 🛡 audit:
49
79
  stage: test
50
80
  image: path/to/docker/jobs-default:the-version
@@ -53,9 +83,9 @@ api 🛡 audit:
53
83
  KUBERNETES_MEMORY_REQUEST: 1Gi
54
84
  KUBERNETES_MEMORY_LIMIT: 4Gi
55
85
  script:
56
- - echo -e "\\e[0Ksection_start:$(date +%s):injectvars[collapsed=true]\\r\\e[0KInjecting variables"
86
+ - collapseable_section_start "injectvars" "Injecting variables"
57
87
  - export APP_PATH="api"
58
- - echo -e "\\e[0Ksection_end:$(date +%s):injectvars\\r\\e[0K"
88
+ - collapseable_section_end "injectvars"
59
89
  - cd api
60
90
  - yarn npm audit --environment production
61
91
  rules:
@@ -79,21 +109,21 @@ api 👮 lint:
79
109
  KUBERNETES_MEMORY_REQUEST: 1Gi
80
110
  KUBERNETES_MEMORY_LIMIT: 4Gi
81
111
  script:
82
- - echo -e "\\e[0Ksection_start:$(date +%s):injectvars[collapsed=true]\\r\\e[0KInjecting variables"
112
+ - collapseable_section_start "injectvars" "Injecting variables"
83
113
  - export APP_PATH="api"
84
- - echo -e "\\e[0Ksection_end:$(date +%s):injectvars\\r\\e[0K"
85
- - echo -e "\\e[0Ksection_start:$(date +%s):nodeinstall[collapsed=true]\\r\\e[0KEnsure node version"
114
+ - collapseable_section_end "injectvars"
115
+ - collapseable_section_start "nodeinstall" "Ensure node version"
86
116
  - if [ -f ~/.nvm/nvm.sh ]; then source ~/.nvm/nvm.sh; fi
87
117
  - if command -v nvm &> /dev/null && [ -f ./.nvmrc ]; then nvm install; fi
88
- - echo -e "\\e[0Ksection_end:$(date +%s):nodeinstall\\r\\e[0K"
118
+ - collapseable_section_end "nodeinstall"
89
119
  - cd api
90
- - echo -e "\\e[0Ksection_start:$(date +%s):nodeinstall[collapsed=true]\\r\\e[0KEnsure node version"
120
+ - collapseable_section_start "nodeinstall" "Ensure node version"
91
121
  - if [ -f ~/.nvm/nvm.sh ]; then source ~/.nvm/nvm.sh; fi
92
122
  - if command -v nvm &> /dev/null && [ -f ./.nvmrc ]; then nvm install; fi
93
- - echo -e "\\e[0Ksection_end:$(date +%s):nodeinstall\\r\\e[0K"
94
- - echo -e "\\e[0Ksection_start:$(date +%s):yarninstall[collapsed=true]\\r\\e[0KYarn install"
123
+ - collapseable_section_end "nodeinstall"
124
+ - collapseable_section_start "yarninstall" "Yarn install"
95
125
  - yarn install --immutable
96
- - echo -e "\\e[0Ksection_end:$(date +%s):yarninstall\\r\\e[0K"
126
+ - collapseable_section_end "yarninstall"
97
127
  - yarn lint
98
128
  cache:
99
129
  - key: api-yarn
@@ -120,21 +150,21 @@ api 🧪 test:
120
150
  KUBERNETES_MEMORY_REQUEST: 1Gi
121
151
  KUBERNETES_MEMORY_LIMIT: 4Gi
122
152
  script:
123
- - echo -e "\\e[0Ksection_start:$(date +%s):injectvars[collapsed=true]\\r\\e[0KInjecting variables"
153
+ - collapseable_section_start "injectvars" "Injecting variables"
124
154
  - export APP_PATH="api"
125
- - echo -e "\\e[0Ksection_end:$(date +%s):injectvars\\r\\e[0K"
126
- - echo -e "\\e[0Ksection_start:$(date +%s):nodeinstall[collapsed=true]\\r\\e[0KEnsure node version"
155
+ - collapseable_section_end "injectvars"
156
+ - collapseable_section_start "nodeinstall" "Ensure node version"
127
157
  - if [ -f ~/.nvm/nvm.sh ]; then source ~/.nvm/nvm.sh; fi
128
158
  - if command -v nvm &> /dev/null && [ -f ./.nvmrc ]; then nvm install; fi
129
- - echo -e "\\e[0Ksection_end:$(date +%s):nodeinstall\\r\\e[0K"
159
+ - collapseable_section_end "nodeinstall"
130
160
  - cd api
131
- - echo -e "\\e[0Ksection_start:$(date +%s):nodeinstall[collapsed=true]\\r\\e[0KEnsure node version"
161
+ - collapseable_section_start "nodeinstall" "Ensure node version"
132
162
  - if [ -f ~/.nvm/nvm.sh ]; then source ~/.nvm/nvm.sh; fi
133
163
  - if command -v nvm &> /dev/null && [ -f ./.nvmrc ]; then nvm install; fi
134
- - echo -e "\\e[0Ksection_end:$(date +%s):nodeinstall\\r\\e[0K"
135
- - echo -e "\\e[0Ksection_start:$(date +%s):yarninstall[collapsed=true]\\r\\e[0KYarn install"
164
+ - collapseable_section_end "nodeinstall"
165
+ - collapseable_section_start "yarninstall" "Yarn install"
136
166
  - yarn install --immutable
137
- - echo -e "\\e[0Ksection_end:$(date +%s):yarninstall\\r\\e[0K"
167
+ - collapseable_section_end "yarninstall"
138
168
  - yarn test
139
169
  cache:
140
170
  - key: api-yarn
@@ -161,36 +191,35 @@ api 🧪 test:
161
191
  KUBERNETES_MEMORY_REQUEST: 1Gi
162
192
  KUBERNETES_MEMORY_LIMIT: 4Gi
163
193
  script:
164
- - echo -e "\\e[0Ksection_start:$(date +%s):injectvars[collapsed=true]\\r\\e[0KInjecting variables"
194
+ - collapseable_section_start "injectvars" "Injecting variables"
165
195
  - export ENV_SHORT="dev"
166
196
  - export APP_DIR="api"
167
197
  - export ENV_TYPE="dev"
168
198
  - export BUILD_INFO_BUILD_ID="$(git describe --tags 2>/dev/null || git rev-parse HEAD)"
169
199
  - export BUILD_INFO_BUILD_TIME="$CI_JOB_STARTED_AT"
170
200
  - 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")"
171
- - export HOST="api.dev.test-app.pan.panter.cloud"
201
+ - export HOSTNAME="api.dev.test-app.pan.panter.cloud"
172
202
  - export ROOT_URL="https://api.dev.test-app.pan.panter.cloud"
173
- - export HOST_INTERNAL="api.dev.test-app.pan.panter.cloud"
174
- - export HOST_CANONICAL="api.dev.test-app.pan.panter.cloud"
203
+ - export HOSTNAME_INTERNAL="api.dev.test-app.pan.panter.cloud"
175
204
  - export ROOT_URL_INTERNAL="https://api.dev.test-app.pan.panter.cloud"
176
205
  - export KUBE_NAMESPACE="pan-test-app-dev"
177
206
  - export KUBE_APP_NAME="api"
178
207
  - export KUBE_APP_NAME_PREFIX=""
179
- - export _ALL_ENV_VAR_KEYS="[\\"ENV_SHORT\\",\\"APP_DIR\\",\\"ENV_TYPE\\",\\"BUILD_INFO_BUILD_ID\\",\\"BUILD_INFO_BUILD_TIME\\",\\"BUILD_INFO_CURRENT_VERSION\\",\\"HOST\\",\\"ROOT_URL\\",\\"HOST_INTERNAL\\",\\"HOST_CANONICAL\\",\\"ROOT_URL_INTERNAL\\",\\"KUBE_NAMESPACE\\",\\"KUBE_APP_NAME\\",\\"KUBE_APP_NAME_PREFIX\\"]"
180
- - echo -e "\\e[0Ksection_end:$(date +%s):injectvars\\r\\e[0K"
208
+ - export _ALL_ENV_VAR_KEYS="[\\"ENV_SHORT\\",\\"APP_DIR\\",\\"ENV_TYPE\\",\\"BUILD_INFO_BUILD_ID\\",\\"BUILD_INFO_BUILD_TIME\\",\\"BUILD_INFO_CURRENT_VERSION\\",\\"HOSTNAME\\",\\"ROOT_URL\\",\\"HOSTNAME_INTERNAL\\",\\"ROOT_URL_INTERNAL\\",\\"KUBE_NAMESPACE\\",\\"KUBE_APP_NAME\\",\\"KUBE_APP_NAME_PREFIX\\"]"
209
+ - collapseable_section_end "injectvars"
181
210
  - echo '{"id":"$(git describe --tags 2>/dev/null || git rev-parse HEAD)","time":"$CI_JOB_STARTED_AT"}' > api/__build_info.json
182
- - echo -e "\\e[0Ksection_start:$(date +%s):nodeinstall[collapsed=true]\\r\\e[0KEnsure node version"
211
+ - collapseable_section_start "nodeinstall" "Ensure node version"
183
212
  - if [ -f ~/.nvm/nvm.sh ]; then source ~/.nvm/nvm.sh; fi
184
213
  - if command -v nvm &> /dev/null && [ -f ./.nvmrc ]; then nvm install; fi
185
- - echo -e "\\e[0Ksection_end:$(date +%s):nodeinstall\\r\\e[0K"
214
+ - collapseable_section_end "nodeinstall"
186
215
  - cd api
187
- - echo -e "\\e[0Ksection_start:$(date +%s):nodeinstall[collapsed=true]\\r\\e[0KEnsure node version"
216
+ - collapseable_section_start "nodeinstall" "Ensure node version"
188
217
  - if [ -f ~/.nvm/nvm.sh ]; then source ~/.nvm/nvm.sh; fi
189
218
  - if command -v nvm &> /dev/null && [ -f ./.nvmrc ]; then nvm install; fi
190
- - echo -e "\\e[0Ksection_end:$(date +%s):nodeinstall\\r\\e[0K"
191
- - echo -e "\\e[0Ksection_start:$(date +%s):yarninstall[collapsed=true]\\r\\e[0KYarn install"
219
+ - collapseable_section_end "nodeinstall"
220
+ - collapseable_section_start "yarninstall" "Yarn install"
192
221
  - yarn install --immutable
193
- - echo -e "\\e[0Ksection_end:$(date +%s):yarninstall\\r\\e[0K"
222
+ - collapseable_section_end "yarninstall"
194
223
  - yarn build
195
224
  cache:
196
225
  - key: api-yarn
@@ -201,10 +230,6 @@ api 🧪 test:
201
230
  policy: pull-push
202
231
  paths:
203
232
  - api/node_modules
204
- - key: api-next-cache
205
- policy: pull-push
206
- paths:
207
- - api/.next/cache
208
233
  artifacts:
209
234
  paths:
210
235
  - api/__build_info.json
@@ -237,7 +262,7 @@ api 🧪 test:
237
262
  KUBERNETES_MEMORY_REQUEST: 1Gi
238
263
  KUBERNETES_MEMORY_LIMIT: 2Gi
239
264
  script:
240
- - echo -e "\\e[0Ksection_start:$(date +%s):injectvars[collapsed=true]\\r\\e[0KInjecting variables"
265
+ - collapseable_section_start "injectvars" "Injecting variables"
241
266
  - export APP_DIR="api"
242
267
  - export DOCKER_BUILD_CONTEXT="."
243
268
  - export DOCKER_REGISTRY="$CI_REGISTRY"
@@ -254,19 +279,19 @@ api 🧪 test:
254
279
  COPY --chown=node:node api/yarn.lock /app/api/yarn.lock
255
280
  COPY --chown=node:node .yarnrc.yml /app/.yarnrc.yml
256
281
  COPY --chown=node:node .yarn /app/.yarn"
257
- - echo -e "\\e[0Ksection_end:$(date +%s):injectvars\\r\\e[0K"
282
+ - collapseable_section_end "injectvars"
258
283
  - ensureNodeDockerfile
259
- - echo -e "\\e[0Ksection_start:$(date +%s):docker-login[collapsed=true]\\r\\e[0KDocker Login"
284
+ - collapseable_section_start "docker-login" "Docker Login"
260
285
  - docker login --username gitlab-ci-token --password $CI_JOB_TOKEN $CI_REGISTRY
261
- - echo -e "\\e[0Ksection_end:$(date +%s):docker-login\\r\\e[0K"
262
- - echo -e "\\e[0Ksection_start:$(date +%s):docker-build[collapsed=true]\\r\\e[0KDocker build"
286
+ - collapseable_section_end "docker-login"
287
+ - collapseable_section_start "docker-build" "Docker build"
263
288
  - 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
264
- - echo -e "\\e[0Ksection_end:$(date +%s):docker-build\\r\\e[0K"
265
- - echo -e "\\e[0Ksection_start:$(date +%s):docker-push[collapsed=true]\\r\\e[0KDocker push and tag"
289
+ - collapseable_section_end "docker-build"
290
+ - collapseable_section_start "docker-push" "Docker push and tag"
266
291
  - docker push $DOCKER_IMAGE:$DOCKER_IMAGE_TAG
267
292
  - docker tag $DOCKER_IMAGE:$DOCKER_IMAGE_TAG $DOCKER_CACHE_IMAGE
268
293
  - docker push $DOCKER_CACHE_IMAGE
269
- - echo -e "\\e[0Ksection_end:$(date +%s):docker-push\\r\\e[0K"
294
+ - collapseable_section_end "docker-push"
270
295
  cache:
271
296
  - key: api-yarn
272
297
  policy: pull
@@ -285,8 +310,8 @@ api 🧪 test:
285
310
  image: aquasec/trivy:0.38.3
286
311
  variables: {}
287
312
  script:
288
- - echo -e "\\e[0Ksection_start:$(date +%s):injectvars[collapsed=true]\\r\\e[0KInjecting variables"
289
- - echo -e "\\e[0Ksection_end:$(date +%s):injectvars\\r\\e[0K"
313
+ - collapseable_section_start "injectvars" "Injecting variables"
314
+ - collapseable_section_end "injectvars"
290
315
  - trivy fs --quiet --format cyclonedx --output "__sbom.json" api
291
316
  artifacts:
292
317
  paths:
@@ -307,22 +332,21 @@ api 🧪 test:
307
332
  KUBERNETES_MEMORY_REQUEST: 200Mi
308
333
  KUBERNETES_MEMORY_LIMIT: 400Mi
309
334
  script:
310
- - echo -e "\\e[0Ksection_start:$(date +%s):injectvars[collapsed=true]\\r\\e[0KInjecting variables"
335
+ - collapseable_section_start "injectvars" "Injecting variables"
311
336
  - export ENV_SHORT="dev"
312
337
  - export APP_DIR="api"
313
338
  - export ENV_TYPE="dev"
314
339
  - export BUILD_INFO_BUILD_ID="$(git describe --tags 2>/dev/null || git rev-parse HEAD)"
315
340
  - export BUILD_INFO_BUILD_TIME="$CI_JOB_STARTED_AT"
316
341
  - 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")"
317
- - export HOST="api.dev.test-app.pan.panter.cloud"
342
+ - export HOSTNAME="api.dev.test-app.pan.panter.cloud"
318
343
  - export ROOT_URL="https://api.dev.test-app.pan.panter.cloud"
319
- - export HOST_INTERNAL="api.dev.test-app.pan.panter.cloud"
320
- - export HOST_CANONICAL="api.dev.test-app.pan.panter.cloud"
344
+ - export HOSTNAME_INTERNAL="api.dev.test-app.pan.panter.cloud"
321
345
  - export ROOT_URL_INTERNAL="https://api.dev.test-app.pan.panter.cloud"
322
346
  - export KUBE_NAMESPACE="pan-test-app-dev"
323
347
  - export KUBE_APP_NAME="api"
324
348
  - export KUBE_APP_NAME_PREFIX=""
325
- - export _ALL_ENV_VAR_KEYS="[\\"ENV_SHORT\\",\\"APP_DIR\\",\\"ENV_TYPE\\",\\"BUILD_INFO_BUILD_ID\\",\\"BUILD_INFO_BUILD_TIME\\",\\"BUILD_INFO_CURRENT_VERSION\\",\\"HOST\\",\\"ROOT_URL\\",\\"HOST_INTERNAL\\",\\"HOST_CANONICAL\\",\\"ROOT_URL_INTERNAL\\",\\"KUBE_NAMESPACE\\",\\"KUBE_APP_NAME\\",\\"KUBE_APP_NAME_PREFIX\\"]"
349
+ - export _ALL_ENV_VAR_KEYS="[\\"ENV_SHORT\\",\\"APP_DIR\\",\\"ENV_TYPE\\",\\"BUILD_INFO_BUILD_ID\\",\\"BUILD_INFO_BUILD_TIME\\",\\"BUILD_INFO_CURRENT_VERSION\\",\\"HOSTNAME\\",\\"ROOT_URL\\",\\"HOSTNAME_INTERNAL\\",\\"ROOT_URL_INTERNAL\\",\\"KUBE_NAMESPACE\\",\\"KUBE_APP_NAME\\",\\"KUBE_APP_NAME_PREFIX\\"]"
326
350
  - export DOCKER_REGISTRY="$CI_REGISTRY"
327
351
  - export DOCKER_CACHE_IMAGE="$CI_REGISTRY_IMAGE/caches/api"
328
352
  - export DOCKER_IMAGE_NAME="dev/api"
@@ -334,13 +358,12 @@ api 🧪 test:
334
358
  - export HELM_GITLAB_CHART_NAME="/helm-charts/the-panter-chart"
335
359
  - export HELM_ARGS=""
336
360
  - export COMPONENT_NAME="api"
337
- - export BUILD_ID="$(git describe --tags 2>/dev/null || git rev-parse HEAD)"
338
- - echo -e "\\e[0Ksection_end:$(date +%s):injectvars\\r\\e[0K"
361
+ - collapseable_section_end "injectvars"
339
362
  - kubectl config set-cluster "kube-pan-test-app-dev-api" --server="$CL_dev_api_KUBE_URL" --certificate-authority <(echo $CL_dev_api_KUBE_CA_PEM | base64 -d) --embed-certs=true
340
363
  - kubectl config set-credentials "kube-pan-test-app-dev-api" --token="$CL_dev_api_KUBE_TOKEN"
341
364
  - kubectl config set-context "kube-pan-test-app-dev-api" --cluster="kube-pan-test-app-dev-api" --user="kube-pan-test-app-dev-api" --namespace="pan-test-app-dev"
342
365
  - kubectl config use-context "kube-pan-test-app-dev-api"
343
- - echo -e "\\e[0Ksection_start:$(date +%s):writeallvalues[collapsed=true]\\r\\e[0KWrite __all_values.yml for helm deployment"
366
+ - collapseable_section_start "writeallvalues" "Write __all_values.yml for helm deployment"
344
367
  - |
345
368
  cat > __all_values.yml <<EOF
346
369
  env:
@@ -353,18 +376,16 @@ api 🧪 test:
353
376
  ENV_TYPE: |-
354
377
  dev
355
378
  BUILD_INFO_BUILD_ID: |-
356
- $(printf %s "$(git describe --tags 2>/dev/null || git rev-parse HEAD)" | sed 's/^/ /')
379
+ $(printf %s "$(git describe --tags 2>/dev/null || git rev-parse HEAD)" | sed '1!s/^/ /')
357
380
  BUILD_INFO_BUILD_TIME: |-
358
- $(printf %s "$CI_JOB_STARTED_AT" | sed 's/^/ /')
381
+ $(printf %s "$CI_JOB_STARTED_AT" | sed '1!s/^/ /')
359
382
  BUILD_INFO_CURRENT_VERSION: |-
360
- $(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/^/ /')
361
- HOST: |-
383
+ $(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/^/ /')
384
+ HOSTNAME: |-
362
385
  api.dev.test-app.pan.panter.cloud
363
386
  ROOT_URL: |-
364
387
  https://api.dev.test-app.pan.panter.cloud
365
- HOST_INTERNAL: |-
366
- api.dev.test-app.pan.panter.cloud
367
- HOST_CANONICAL: |-
388
+ HOSTNAME_INTERNAL: |-
368
389
  api.dev.test-app.pan.panter.cloud
369
390
  ROOT_URL_INTERNAL: |-
370
391
  https://api.dev.test-app.pan.panter.cloud
@@ -374,7 +395,7 @@ api 🧪 test:
374
395
  api
375
396
  KUBE_APP_NAME_PREFIX: ""
376
397
  _ALL_ENV_VAR_KEYS: |-
377
- ["ENV_SHORT","APP_DIR","ENV_TYPE","BUILD_INFO_BUILD_ID","BUILD_INFO_BUILD_TIME","BUILD_INFO_CURRENT_VERSION","HOST","ROOT_URL","HOST_INTERNAL","HOST_CANONICAL","ROOT_URL_INTERNAL","KUBE_NAMESPACE","KUBE_APP_NAME","KUBE_APP_NAME_PREFIX"]
398
+ ["ENV_SHORT","APP_DIR","ENV_TYPE","BUILD_INFO_BUILD_ID","BUILD_INFO_BUILD_TIME","BUILD_INFO_CURRENT_VERSION","HOSTNAME","ROOT_URL","HOSTNAME_INTERNAL","ROOT_URL_INTERNAL","KUBE_NAMESPACE","KUBE_APP_NAME","KUBE_APP_NAME_PREFIX"]
378
399
  application:
379
400
  host: |-
380
401
  api.dev.test-app.pan.panter.cloud
@@ -413,7 +434,7 @@ api 🧪 test:
413
434
  2048Mi
414
435
 
415
436
  EOF
416
- - echo -e "\\e[0Ksection_end:$(date +%s):writeallvalues\\r\\e[0K"
437
+ - collapseable_section_end "writeallvalues"
417
438
  - kubernetesCreateSecret
418
439
  - kubernetesDeploy
419
440
  - echo 'Uploading SBOM to Dependency Track'
@@ -458,30 +479,28 @@ api 🧪 test:
458
479
  KUBERNETES_MEMORY_LIMIT: 400Mi
459
480
  GIT_STRATEGY: none
460
481
  script:
461
- - echo -e "\\e[0Ksection_start:$(date +%s):injectvars[collapsed=true]\\r\\e[0KInjecting variables"
482
+ - collapseable_section_start "injectvars" "Injecting variables"
462
483
  - export ENV_SHORT="dev"
463
484
  - export APP_DIR="api"
464
485
  - export ENV_TYPE="dev"
465
486
  - export BUILD_INFO_BUILD_ID="$(git describe --tags 2>/dev/null || git rev-parse HEAD)"
466
487
  - export BUILD_INFO_BUILD_TIME="$CI_JOB_STARTED_AT"
467
488
  - 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")"
468
- - export HOST="api.dev.test-app.pan.panter.cloud"
489
+ - export HOSTNAME="api.dev.test-app.pan.panter.cloud"
469
490
  - export ROOT_URL="https://api.dev.test-app.pan.panter.cloud"
470
- - export HOST_INTERNAL="api.dev.test-app.pan.panter.cloud"
471
- - export HOST_CANONICAL="api.dev.test-app.pan.panter.cloud"
491
+ - export HOSTNAME_INTERNAL="api.dev.test-app.pan.panter.cloud"
472
492
  - export ROOT_URL_INTERNAL="https://api.dev.test-app.pan.panter.cloud"
473
493
  - export KUBE_NAMESPACE="pan-test-app-dev"
474
494
  - export KUBE_APP_NAME="api"
475
495
  - export KUBE_APP_NAME_PREFIX=""
476
- - export _ALL_ENV_VAR_KEYS="[\\"ENV_SHORT\\",\\"APP_DIR\\",\\"ENV_TYPE\\",\\"BUILD_INFO_BUILD_ID\\",\\"BUILD_INFO_BUILD_TIME\\",\\"BUILD_INFO_CURRENT_VERSION\\",\\"HOST\\",\\"ROOT_URL\\",\\"HOST_INTERNAL\\",\\"HOST_CANONICAL\\",\\"ROOT_URL_INTERNAL\\",\\"KUBE_NAMESPACE\\",\\"KUBE_APP_NAME\\",\\"KUBE_APP_NAME_PREFIX\\"]"
496
+ - export _ALL_ENV_VAR_KEYS="[\\"ENV_SHORT\\",\\"APP_DIR\\",\\"ENV_TYPE\\",\\"BUILD_INFO_BUILD_ID\\",\\"BUILD_INFO_BUILD_TIME\\",\\"BUILD_INFO_CURRENT_VERSION\\",\\"HOSTNAME\\",\\"ROOT_URL\\",\\"HOSTNAME_INTERNAL\\",\\"ROOT_URL_INTERNAL\\",\\"KUBE_NAMESPACE\\",\\"KUBE_APP_NAME\\",\\"KUBE_APP_NAME_PREFIX\\"]"
477
497
  - export RELEASE_NAME="pan-test-app-dev-api"
478
498
  - export HELM_EXPERIMENTAL_OCI="1"
479
499
  - export KUBE_DOCKER_IMAGE_PULL_SECRET="gitlab-registry-api"
480
500
  - export HELM_GITLAB_CHART_NAME="/helm-charts/the-panter-chart"
481
501
  - export HELM_ARGS=""
482
502
  - export COMPONENT_NAME="api"
483
- - export BUILD_ID="$(git describe --tags 2>/dev/null || git rev-parse HEAD)"
484
- - echo -e "\\e[0Ksection_end:$(date +%s):injectvars\\r\\e[0K"
503
+ - collapseable_section_end "injectvars"
485
504
  - kubectl config set-cluster "kube-pan-test-app-dev-api" --server="$CL_dev_api_KUBE_URL" --certificate-authority <(echo $CL_dev_api_KUBE_CA_PEM | base64 -d) --embed-certs=true
486
505
  - kubectl config set-credentials "kube-pan-test-app-dev-api" --token="$CL_dev_api_KUBE_TOKEN"
487
506
  - kubectl config set-context "kube-pan-test-app-dev-api" --cluster="kube-pan-test-app-dev-api" --user="kube-pan-test-app-dev-api" --namespace="pan-test-app-dev"
@@ -517,30 +536,28 @@ api 🧪 test:
517
536
  KUBERNETES_MEMORY_LIMIT: 400Mi
518
537
  GIT_STRATEGY: none
519
538
  script:
520
- - echo -e "\\e[0Ksection_start:$(date +%s):injectvars[collapsed=true]\\r\\e[0KInjecting variables"
539
+ - collapseable_section_start "injectvars" "Injecting variables"
521
540
  - export ENV_SHORT="dev"
522
541
  - export APP_DIR="api"
523
542
  - export ENV_TYPE="dev"
524
543
  - export BUILD_INFO_BUILD_ID="$(git describe --tags 2>/dev/null || git rev-parse HEAD)"
525
544
  - export BUILD_INFO_BUILD_TIME="$CI_JOB_STARTED_AT"
526
545
  - 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
- - export HOST="api.dev.test-app.pan.panter.cloud"
546
+ - export HOSTNAME="api.dev.test-app.pan.panter.cloud"
528
547
  - export ROOT_URL="https://api.dev.test-app.pan.panter.cloud"
529
- - export HOST_INTERNAL="api.dev.test-app.pan.panter.cloud"
530
- - export HOST_CANONICAL="api.dev.test-app.pan.panter.cloud"
548
+ - export HOSTNAME_INTERNAL="api.dev.test-app.pan.panter.cloud"
531
549
  - export ROOT_URL_INTERNAL="https://api.dev.test-app.pan.panter.cloud"
532
550
  - export KUBE_NAMESPACE="pan-test-app-dev"
533
551
  - export KUBE_APP_NAME="api"
534
552
  - export KUBE_APP_NAME_PREFIX=""
535
- - export _ALL_ENV_VAR_KEYS="[\\"ENV_SHORT\\",\\"APP_DIR\\",\\"ENV_TYPE\\",\\"BUILD_INFO_BUILD_ID\\",\\"BUILD_INFO_BUILD_TIME\\",\\"BUILD_INFO_CURRENT_VERSION\\",\\"HOST\\",\\"ROOT_URL\\",\\"HOST_INTERNAL\\",\\"HOST_CANONICAL\\",\\"ROOT_URL_INTERNAL\\",\\"KUBE_NAMESPACE\\",\\"KUBE_APP_NAME\\",\\"KUBE_APP_NAME_PREFIX\\"]"
553
+ - export _ALL_ENV_VAR_KEYS="[\\"ENV_SHORT\\",\\"APP_DIR\\",\\"ENV_TYPE\\",\\"BUILD_INFO_BUILD_ID\\",\\"BUILD_INFO_BUILD_TIME\\",\\"BUILD_INFO_CURRENT_VERSION\\",\\"HOSTNAME\\",\\"ROOT_URL\\",\\"HOSTNAME_INTERNAL\\",\\"ROOT_URL_INTERNAL\\",\\"KUBE_NAMESPACE\\",\\"KUBE_APP_NAME\\",\\"KUBE_APP_NAME_PREFIX\\"]"
536
554
  - export RELEASE_NAME="pan-test-app-dev-api"
537
555
  - export HELM_EXPERIMENTAL_OCI="1"
538
556
  - export KUBE_DOCKER_IMAGE_PULL_SECRET="gitlab-registry-api"
539
557
  - export HELM_GITLAB_CHART_NAME="/helm-charts/the-panter-chart"
540
558
  - export HELM_ARGS=""
541
559
  - export COMPONENT_NAME="api"
542
- - export BUILD_ID="$(git describe --tags 2>/dev/null || git rev-parse HEAD)"
543
- - echo -e "\\e[0Ksection_end:$(date +%s):injectvars\\r\\e[0K"
560
+ - collapseable_section_end "injectvars"
544
561
  - kubectl config set-cluster "kube-pan-test-app-dev-api" --server="$CL_dev_api_KUBE_URL" --certificate-authority <(echo $CL_dev_api_KUBE_CA_PEM | base64 -d) --embed-certs=true
545
562
  - kubectl config set-credentials "kube-pan-test-app-dev-api" --token="$CL_dev_api_KUBE_TOKEN"
546
563
  - kubectl config set-context "kube-pan-test-app-dev-api" --cluster="kube-pan-test-app-dev-api" --user="kube-pan-test-app-dev-api" --namespace="pan-test-app-dev"
@@ -571,36 +588,35 @@ api 🧪 test:
571
588
  KUBERNETES_MEMORY_REQUEST: 1Gi
572
589
  KUBERNETES_MEMORY_LIMIT: 4Gi
573
590
  script:
574
- - echo -e "\\e[0Ksection_start:$(date +%s):injectvars[collapsed=true]\\r\\e[0KInjecting variables"
591
+ - collapseable_section_start "injectvars" "Injecting variables"
575
592
  - export ENV_SHORT="review"
576
593
  - export APP_DIR="api"
577
594
  - export ENV_TYPE="review"
578
595
  - export BUILD_INFO_BUILD_ID="$(git describe --tags 2>/dev/null || git rev-parse HEAD)"
579
596
  - export BUILD_INFO_BUILD_TIME="$CI_JOB_STARTED_AT"
580
597
  - 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")"
581
- - export HOST="api.$([ -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"
598
+ - export HOSTNAME="api.$([ -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"
582
599
  - export ROOT_URL="https://api.$([ -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"
583
- - export HOST_INTERNAL="api.$([ -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"
584
- - export HOST_CANONICAL="api.$([ -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"
600
+ - export HOSTNAME_INTERNAL="api.$([ -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"
585
601
  - export ROOT_URL_INTERNAL="https://api.$([ -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"
586
602
  - export KUBE_NAMESPACE="pan-test-app-review"
587
603
  - 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"; })-api"
588
604
  - export KUBE_APP_NAME_PREFIX="$([ -n "$CI_MERGE_REQUEST_IID" ] && echo "mr$CI_MERGE_REQUEST_IID" || { [ -n "$CI_COMMIT_REF_SLUG" ] && echo "$CI_COMMIT_REF_SLUG" || echo "unknown"; })-"
589
- - export _ALL_ENV_VAR_KEYS="[\\"ENV_SHORT\\",\\"APP_DIR\\",\\"ENV_TYPE\\",\\"BUILD_INFO_BUILD_ID\\",\\"BUILD_INFO_BUILD_TIME\\",\\"BUILD_INFO_CURRENT_VERSION\\",\\"HOST\\",\\"ROOT_URL\\",\\"HOST_INTERNAL\\",\\"HOST_CANONICAL\\",\\"ROOT_URL_INTERNAL\\",\\"KUBE_NAMESPACE\\",\\"KUBE_APP_NAME\\",\\"KUBE_APP_NAME_PREFIX\\"]"
590
- - echo -e "\\e[0Ksection_end:$(date +%s):injectvars\\r\\e[0K"
605
+ - export _ALL_ENV_VAR_KEYS="[\\"ENV_SHORT\\",\\"APP_DIR\\",\\"ENV_TYPE\\",\\"BUILD_INFO_BUILD_ID\\",\\"BUILD_INFO_BUILD_TIME\\",\\"BUILD_INFO_CURRENT_VERSION\\",\\"HOSTNAME\\",\\"ROOT_URL\\",\\"HOSTNAME_INTERNAL\\",\\"ROOT_URL_INTERNAL\\",\\"KUBE_NAMESPACE\\",\\"KUBE_APP_NAME\\",\\"KUBE_APP_NAME_PREFIX\\"]"
606
+ - collapseable_section_end "injectvars"
591
607
  - echo '{"id":"$(git describe --tags 2>/dev/null || git rev-parse HEAD)","time":"$CI_JOB_STARTED_AT"}' > api/__build_info.json
592
- - echo -e "\\e[0Ksection_start:$(date +%s):nodeinstall[collapsed=true]\\r\\e[0KEnsure node version"
608
+ - collapseable_section_start "nodeinstall" "Ensure node version"
593
609
  - if [ -f ~/.nvm/nvm.sh ]; then source ~/.nvm/nvm.sh; fi
594
610
  - if command -v nvm &> /dev/null && [ -f ./.nvmrc ]; then nvm install; fi
595
- - echo -e "\\e[0Ksection_end:$(date +%s):nodeinstall\\r\\e[0K"
611
+ - collapseable_section_end "nodeinstall"
596
612
  - cd api
597
- - echo -e "\\e[0Ksection_start:$(date +%s):nodeinstall[collapsed=true]\\r\\e[0KEnsure node version"
613
+ - collapseable_section_start "nodeinstall" "Ensure node version"
598
614
  - if [ -f ~/.nvm/nvm.sh ]; then source ~/.nvm/nvm.sh; fi
599
615
  - if command -v nvm &> /dev/null && [ -f ./.nvmrc ]; then nvm install; fi
600
- - echo -e "\\e[0Ksection_end:$(date +%s):nodeinstall\\r\\e[0K"
601
- - echo -e "\\e[0Ksection_start:$(date +%s):yarninstall[collapsed=true]\\r\\e[0KYarn install"
616
+ - collapseable_section_end "nodeinstall"
617
+ - collapseable_section_start "yarninstall" "Yarn install"
602
618
  - yarn install --immutable
603
- - echo -e "\\e[0Ksection_end:$(date +%s):yarninstall\\r\\e[0K"
619
+ - collapseable_section_end "yarninstall"
604
620
  - yarn build
605
621
  cache:
606
622
  - key: api-yarn
@@ -611,10 +627,6 @@ api 🧪 test:
611
627
  policy: pull-push
612
628
  paths:
613
629
  - api/node_modules
614
- - key: api-next-cache
615
- policy: pull-push
616
- paths:
617
- - api/.next/cache
618
630
  artifacts:
619
631
  paths:
620
632
  - api/__build_info.json
@@ -645,7 +657,7 @@ api 🧪 test:
645
657
  KUBERNETES_MEMORY_REQUEST: 1Gi
646
658
  KUBERNETES_MEMORY_LIMIT: 2Gi
647
659
  script:
648
- - echo -e "\\e[0Ksection_start:$(date +%s):injectvars[collapsed=true]\\r\\e[0KInjecting variables"
660
+ - collapseable_section_start "injectvars" "Injecting variables"
649
661
  - export APP_DIR="api"
650
662
  - export DOCKER_BUILD_CONTEXT="."
651
663
  - export DOCKER_REGISTRY="$CI_REGISTRY"
@@ -662,19 +674,19 @@ api 🧪 test:
662
674
  COPY --chown=node:node api/yarn.lock /app/api/yarn.lock
663
675
  COPY --chown=node:node .yarnrc.yml /app/.yarnrc.yml
664
676
  COPY --chown=node:node .yarn /app/.yarn"
665
- - echo -e "\\e[0Ksection_end:$(date +%s):injectvars\\r\\e[0K"
677
+ - collapseable_section_end "injectvars"
666
678
  - ensureNodeDockerfile
667
- - echo -e "\\e[0Ksection_start:$(date +%s):docker-login[collapsed=true]\\r\\e[0KDocker Login"
679
+ - collapseable_section_start "docker-login" "Docker Login"
668
680
  - docker login --username gitlab-ci-token --password $CI_JOB_TOKEN $CI_REGISTRY
669
- - echo -e "\\e[0Ksection_end:$(date +%s):docker-login\\r\\e[0K"
670
- - echo -e "\\e[0Ksection_start:$(date +%s):docker-build[collapsed=true]\\r\\e[0KDocker build"
681
+ - collapseable_section_end "docker-login"
682
+ - collapseable_section_start "docker-build" "Docker build"
671
683
  - 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
672
- - echo -e "\\e[0Ksection_end:$(date +%s):docker-build\\r\\e[0K"
673
- - echo -e "\\e[0Ksection_start:$(date +%s):docker-push[collapsed=true]\\r\\e[0KDocker push and tag"
684
+ - collapseable_section_end "docker-build"
685
+ - collapseable_section_start "docker-push" "Docker push and tag"
674
686
  - docker push $DOCKER_IMAGE:$DOCKER_IMAGE_TAG
675
687
  - docker tag $DOCKER_IMAGE:$DOCKER_IMAGE_TAG $DOCKER_CACHE_IMAGE
676
688
  - docker push $DOCKER_CACHE_IMAGE
677
- - echo -e "\\e[0Ksection_end:$(date +%s):docker-push\\r\\e[0K"
689
+ - collapseable_section_end "docker-push"
678
690
  cache:
679
691
  - key: api-yarn
680
692
  policy: pull
@@ -691,8 +703,8 @@ api 🧪 test:
691
703
  image: aquasec/trivy:0.38.3
692
704
  variables: {}
693
705
  script:
694
- - echo -e "\\e[0Ksection_start:$(date +%s):injectvars[collapsed=true]\\r\\e[0KInjecting variables"
695
- - echo -e "\\e[0Ksection_end:$(date +%s):injectvars\\r\\e[0K"
706
+ - collapseable_section_start "injectvars" "Injecting variables"
707
+ - collapseable_section_end "injectvars"
696
708
  - trivy fs --quiet --format cyclonedx --output "__sbom.json" api
697
709
  artifacts:
698
710
  paths:
@@ -711,22 +723,21 @@ api 🧪 test:
711
723
  KUBERNETES_MEMORY_REQUEST: 200Mi
712
724
  KUBERNETES_MEMORY_LIMIT: 400Mi
713
725
  script:
714
- - echo -e "\\e[0Ksection_start:$(date +%s):injectvars[collapsed=true]\\r\\e[0KInjecting variables"
726
+ - collapseable_section_start "injectvars" "Injecting variables"
715
727
  - export ENV_SHORT="review"
716
728
  - export APP_DIR="api"
717
729
  - export ENV_TYPE="review"
718
730
  - export BUILD_INFO_BUILD_ID="$(git describe --tags 2>/dev/null || git rev-parse HEAD)"
719
731
  - export BUILD_INFO_BUILD_TIME="$CI_JOB_STARTED_AT"
720
732
  - 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")"
721
- - export HOST="api.$([ -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"
733
+ - export HOSTNAME="api.$([ -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"
722
734
  - export ROOT_URL="https://api.$([ -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"
723
- - export HOST_INTERNAL="api.$([ -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"
724
- - export HOST_CANONICAL="api.$([ -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"
735
+ - export HOSTNAME_INTERNAL="api.$([ -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"
725
736
  - export ROOT_URL_INTERNAL="https://api.$([ -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"
726
737
  - export KUBE_NAMESPACE="pan-test-app-review"
727
738
  - 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"; })-api"
728
739
  - export KUBE_APP_NAME_PREFIX="$([ -n "$CI_MERGE_REQUEST_IID" ] && echo "mr$CI_MERGE_REQUEST_IID" || { [ -n "$CI_COMMIT_REF_SLUG" ] && echo "$CI_COMMIT_REF_SLUG" || echo "unknown"; })-"
729
- - export _ALL_ENV_VAR_KEYS="[\\"ENV_SHORT\\",\\"APP_DIR\\",\\"ENV_TYPE\\",\\"BUILD_INFO_BUILD_ID\\",\\"BUILD_INFO_BUILD_TIME\\",\\"BUILD_INFO_CURRENT_VERSION\\",\\"HOST\\",\\"ROOT_URL\\",\\"HOST_INTERNAL\\",\\"HOST_CANONICAL\\",\\"ROOT_URL_INTERNAL\\",\\"KUBE_NAMESPACE\\",\\"KUBE_APP_NAME\\",\\"KUBE_APP_NAME_PREFIX\\"]"
740
+ - export _ALL_ENV_VAR_KEYS="[\\"ENV_SHORT\\",\\"APP_DIR\\",\\"ENV_TYPE\\",\\"BUILD_INFO_BUILD_ID\\",\\"BUILD_INFO_BUILD_TIME\\",\\"BUILD_INFO_CURRENT_VERSION\\",\\"HOSTNAME\\",\\"ROOT_URL\\",\\"HOSTNAME_INTERNAL\\",\\"ROOT_URL_INTERNAL\\",\\"KUBE_NAMESPACE\\",\\"KUBE_APP_NAME\\",\\"KUBE_APP_NAME_PREFIX\\"]"
730
741
  - export DOCKER_REGISTRY="$CI_REGISTRY"
731
742
  - export DOCKER_CACHE_IMAGE="$CI_REGISTRY_IMAGE/caches/api"
732
743
  - export DOCKER_IMAGE_NAME="review/api"
@@ -738,13 +749,12 @@ api 🧪 test:
738
749
  - export HELM_GITLAB_CHART_NAME="/helm-charts/the-panter-chart"
739
750
  - export HELM_ARGS=""
740
751
  - export COMPONENT_NAME="api"
741
- - export BUILD_ID="$(git describe --tags 2>/dev/null || git rev-parse HEAD)"
742
- - echo -e "\\e[0Ksection_end:$(date +%s):injectvars\\r\\e[0K"
752
+ - collapseable_section_end "injectvars"
743
753
  - 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"; })-api" --server="$CL_review_api_KUBE_URL" --certificate-authority <(echo $CL_review_api_KUBE_CA_PEM | base64 -d) --embed-certs=true
744
754
  - 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"; })-api" --token="$CL_review_api_KUBE_TOKEN"
745
755
  - 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"; })-api" --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"; })-api" --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"; })-api" --namespace="pan-test-app-review"
746
756
  - 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"; })-api"
747
- - echo -e "\\e[0Ksection_start:$(date +%s):writeallvalues[collapsed=true]\\r\\e[0KWrite __all_values.yml for helm deployment"
757
+ - collapseable_section_start "writeallvalues" "Write __all_values.yml for helm deployment"
748
758
  - |
749
759
  cat > __all_values.yml <<EOF
750
760
  env:
@@ -757,32 +767,30 @@ api 🧪 test:
757
767
  ENV_TYPE: |-
758
768
  review
759
769
  BUILD_INFO_BUILD_ID: |-
760
- $(printf %s "$(git describe --tags 2>/dev/null || git rev-parse HEAD)" | sed 's/^/ /')
770
+ $(printf %s "$(git describe --tags 2>/dev/null || git rev-parse HEAD)" | sed '1!s/^/ /')
761
771
  BUILD_INFO_BUILD_TIME: |-
762
- $(printf %s "$CI_JOB_STARTED_AT" | sed 's/^/ /')
772
+ $(printf %s "$CI_JOB_STARTED_AT" | sed '1!s/^/ /')
763
773
  BUILD_INFO_CURRENT_VERSION: |-
764
- $(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/^/ /')
765
- HOST: |-
766
- $(printf %s "api.$([ -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/^/ /')
774
+ $(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/^/ /')
775
+ HOSTNAME: |-
776
+ $(printf %s "api.$([ -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/^/ /')
767
777
  ROOT_URL: |-
768
- $(printf %s "https://api.$([ -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/^/ /')
769
- HOST_INTERNAL: |-
770
- $(printf %s "api.$([ -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/^/ /')
771
- HOST_CANONICAL: |-
772
- $(printf %s "api.$([ -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/^/ /')
778
+ $(printf %s "https://api.$([ -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/^/ /')
779
+ HOSTNAME_INTERNAL: |-
780
+ $(printf %s "api.$([ -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/^/ /')
773
781
  ROOT_URL_INTERNAL: |-
774
- $(printf %s "https://api.$([ -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/^/ /')
782
+ $(printf %s "https://api.$([ -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/^/ /')
775
783
  KUBE_NAMESPACE: |-
776
784
  pan-test-app-review
777
785
  KUBE_APP_NAME: |-
778
- $(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"; })-api" | sed 's/^/ /')
786
+ $(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"; })-api" | sed '1!s/^/ /')
779
787
  KUBE_APP_NAME_PREFIX: |-
780
- $(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/^/ /')
788
+ $(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/^/ /')
781
789
  _ALL_ENV_VAR_KEYS: |-
782
- ["ENV_SHORT","APP_DIR","ENV_TYPE","BUILD_INFO_BUILD_ID","BUILD_INFO_BUILD_TIME","BUILD_INFO_CURRENT_VERSION","HOST","ROOT_URL","HOST_INTERNAL","HOST_CANONICAL","ROOT_URL_INTERNAL","KUBE_NAMESPACE","KUBE_APP_NAME","KUBE_APP_NAME_PREFIX"]
790
+ ["ENV_SHORT","APP_DIR","ENV_TYPE","BUILD_INFO_BUILD_ID","BUILD_INFO_BUILD_TIME","BUILD_INFO_CURRENT_VERSION","HOSTNAME","ROOT_URL","HOSTNAME_INTERNAL","ROOT_URL_INTERNAL","KUBE_NAMESPACE","KUBE_APP_NAME","KUBE_APP_NAME_PREFIX"]
783
791
  application:
784
792
  host: |-
785
- $(printf %s "api.$([ -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/^/ /')
793
+ $(printf %s "api.$([ -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/^/ /')
786
794
  command: |-
787
795
  node main.js
788
796
  livenessProbe:
@@ -818,7 +826,7 @@ api 🧪 test:
818
826
  2048Mi
819
827
 
820
828
  EOF
821
- - echo -e "\\e[0Ksection_end:$(date +%s):writeallvalues\\r\\e[0K"
829
+ - collapseable_section_end "writeallvalues"
822
830
  - kubernetesCreateSecret
823
831
  - kubernetesDeploy
824
832
  - echo 'Uploading SBOM to Dependency Track'
@@ -861,30 +869,28 @@ api 🧪 test:
861
869
  KUBERNETES_MEMORY_LIMIT: 400Mi
862
870
  GIT_STRATEGY: none
863
871
  script:
864
- - echo -e "\\e[0Ksection_start:$(date +%s):injectvars[collapsed=true]\\r\\e[0KInjecting variables"
872
+ - collapseable_section_start "injectvars" "Injecting variables"
865
873
  - export ENV_SHORT="review"
866
874
  - export APP_DIR="api"
867
875
  - export ENV_TYPE="review"
868
876
  - export BUILD_INFO_BUILD_ID="$(git describe --tags 2>/dev/null || git rev-parse HEAD)"
869
877
  - export BUILD_INFO_BUILD_TIME="$CI_JOB_STARTED_AT"
870
878
  - export BUILD_INFO_CURRENT_VERSION="$(tag=$(git ls-remote origin "refs/tags/v*[0-9]" 2>/dev/null | cut -f 2- | sort -V | tail -1 | sed 's/refs\\/tags\\/v//'); [ -z "$tag" ] && echo "0.0.0" || echo "$tag")"
871
- - export HOST="api.$([ -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"
879
+ - export HOSTNAME="api.$([ -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"
872
880
  - export ROOT_URL="https://api.$([ -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"
873
- - export HOST_INTERNAL="api.$([ -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"
874
- - export HOST_CANONICAL="api.$([ -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"
881
+ - export HOSTNAME_INTERNAL="api.$([ -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"
875
882
  - export ROOT_URL_INTERNAL="https://api.$([ -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"
876
883
  - export KUBE_NAMESPACE="pan-test-app-review"
877
884
  - 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"; })-api"
878
885
  - export KUBE_APP_NAME_PREFIX="$([ -n "$CI_MERGE_REQUEST_IID" ] && echo "mr$CI_MERGE_REQUEST_IID" || { [ -n "$CI_COMMIT_REF_SLUG" ] && echo "$CI_COMMIT_REF_SLUG" || echo "unknown"; })-"
879
- - export _ALL_ENV_VAR_KEYS="[\\"ENV_SHORT\\",\\"APP_DIR\\",\\"ENV_TYPE\\",\\"BUILD_INFO_BUILD_ID\\",\\"BUILD_INFO_BUILD_TIME\\",\\"BUILD_INFO_CURRENT_VERSION\\",\\"HOST\\",\\"ROOT_URL\\",\\"HOST_INTERNAL\\",\\"HOST_CANONICAL\\",\\"ROOT_URL_INTERNAL\\",\\"KUBE_NAMESPACE\\",\\"KUBE_APP_NAME\\",\\"KUBE_APP_NAME_PREFIX\\"]"
886
+ - export _ALL_ENV_VAR_KEYS="[\\"ENV_SHORT\\",\\"APP_DIR\\",\\"ENV_TYPE\\",\\"BUILD_INFO_BUILD_ID\\",\\"BUILD_INFO_BUILD_TIME\\",\\"BUILD_INFO_CURRENT_VERSION\\",\\"HOSTNAME\\",\\"ROOT_URL\\",\\"HOSTNAME_INTERNAL\\",\\"ROOT_URL_INTERNAL\\",\\"KUBE_NAMESPACE\\",\\"KUBE_APP_NAME\\",\\"KUBE_APP_NAME_PREFIX\\"]"
880
887
  - 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"; })-api"
881
888
  - export HELM_EXPERIMENTAL_OCI="1"
882
889
  - export KUBE_DOCKER_IMAGE_PULL_SECRET="gitlab-registry-api"
883
890
  - export HELM_GITLAB_CHART_NAME="/helm-charts/the-panter-chart"
884
891
  - export HELM_ARGS=""
885
892
  - export COMPONENT_NAME="api"
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"
893
+ - collapseable_section_end "injectvars"
888
894
  - 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"; })-api" --server="$CL_review_api_KUBE_URL" --certificate-authority <(echo $CL_review_api_KUBE_CA_PEM | base64 -d) --embed-certs=true
889
895
  - 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"; })-api" --token="$CL_review_api_KUBE_TOKEN"
890
896
  - 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"; })-api" --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"; })-api" --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"; })-api" --namespace="pan-test-app-review"
@@ -918,30 +924,28 @@ api 🧪 test:
918
924
  KUBERNETES_MEMORY_LIMIT: 400Mi
919
925
  GIT_STRATEGY: none
920
926
  script:
921
- - echo -e "\\e[0Ksection_start:$(date +%s):injectvars[collapsed=true]\\r\\e[0KInjecting variables"
927
+ - collapseable_section_start "injectvars" "Injecting variables"
922
928
  - export ENV_SHORT="review"
923
929
  - export APP_DIR="api"
924
930
  - export ENV_TYPE="review"
925
931
  - export BUILD_INFO_BUILD_ID="$(git describe --tags 2>/dev/null || git rev-parse HEAD)"
926
932
  - export BUILD_INFO_BUILD_TIME="$CI_JOB_STARTED_AT"
927
933
  - 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")"
928
- - export HOST="api.$([ -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"
934
+ - export HOSTNAME="api.$([ -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"
929
935
  - export ROOT_URL="https://api.$([ -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"
930
- - export HOST_INTERNAL="api.$([ -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"
931
- - export HOST_CANONICAL="api.$([ -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"
936
+ - export HOSTNAME_INTERNAL="api.$([ -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"
932
937
  - export ROOT_URL_INTERNAL="https://api.$([ -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"
933
938
  - export KUBE_NAMESPACE="pan-test-app-review"
934
939
  - 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"; })-api"
935
940
  - export KUBE_APP_NAME_PREFIX="$([ -n "$CI_MERGE_REQUEST_IID" ] && echo "mr$CI_MERGE_REQUEST_IID" || { [ -n "$CI_COMMIT_REF_SLUG" ] && echo "$CI_COMMIT_REF_SLUG" || echo "unknown"; })-"
936
- - export _ALL_ENV_VAR_KEYS="[\\"ENV_SHORT\\",\\"APP_DIR\\",\\"ENV_TYPE\\",\\"BUILD_INFO_BUILD_ID\\",\\"BUILD_INFO_BUILD_TIME\\",\\"BUILD_INFO_CURRENT_VERSION\\",\\"HOST\\",\\"ROOT_URL\\",\\"HOST_INTERNAL\\",\\"HOST_CANONICAL\\",\\"ROOT_URL_INTERNAL\\",\\"KUBE_NAMESPACE\\",\\"KUBE_APP_NAME\\",\\"KUBE_APP_NAME_PREFIX\\"]"
941
+ - export _ALL_ENV_VAR_KEYS="[\\"ENV_SHORT\\",\\"APP_DIR\\",\\"ENV_TYPE\\",\\"BUILD_INFO_BUILD_ID\\",\\"BUILD_INFO_BUILD_TIME\\",\\"BUILD_INFO_CURRENT_VERSION\\",\\"HOSTNAME\\",\\"ROOT_URL\\",\\"HOSTNAME_INTERNAL\\",\\"ROOT_URL_INTERNAL\\",\\"KUBE_NAMESPACE\\",\\"KUBE_APP_NAME\\",\\"KUBE_APP_NAME_PREFIX\\"]"
937
942
  - 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"; })-api"
938
943
  - export HELM_EXPERIMENTAL_OCI="1"
939
944
  - export KUBE_DOCKER_IMAGE_PULL_SECRET="gitlab-registry-api"
940
945
  - export HELM_GITLAB_CHART_NAME="/helm-charts/the-panter-chart"
941
946
  - export HELM_ARGS=""
942
947
  - export COMPONENT_NAME="api"
943
- - export BUILD_ID="$(git describe --tags 2>/dev/null || git rev-parse HEAD)"
944
- - echo -e "\\e[0Ksection_end:$(date +%s):injectvars\\r\\e[0K"
948
+ - collapseable_section_end "injectvars"
945
949
  - 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"; })-api" --server="$CL_review_api_KUBE_URL" --certificate-authority <(echo $CL_review_api_KUBE_CA_PEM | base64 -d) --embed-certs=true
946
950
  - 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"; })-api" --token="$CL_review_api_KUBE_TOKEN"
947
951
  - 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"; })-api" --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"; })-api" --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"; })-api" --namespace="pan-test-app-review"
@@ -970,36 +974,35 @@ api 🧪 test:
970
974
  KUBERNETES_MEMORY_REQUEST: 1Gi
971
975
  KUBERNETES_MEMORY_LIMIT: 4Gi
972
976
  script:
973
- - echo -e "\\e[0Ksection_start:$(date +%s):injectvars[collapsed=true]\\r\\e[0KInjecting variables"
977
+ - collapseable_section_start "injectvars" "Injecting variables"
974
978
  - export ENV_SHORT="stage"
975
979
  - export APP_DIR="api"
976
980
  - export ENV_TYPE="stage"
977
981
  - export BUILD_INFO_BUILD_ID="$(git describe --tags 2>/dev/null || git rev-parse HEAD)"
978
982
  - export BUILD_INFO_BUILD_TIME="$CI_JOB_STARTED_AT"
979
983
  - 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")"
980
- - export HOST="api.stage.test-app.pan.panter.cloud"
984
+ - export HOSTNAME="api.stage.test-app.pan.panter.cloud"
981
985
  - export ROOT_URL="https://api.stage.test-app.pan.panter.cloud"
982
- - export HOST_INTERNAL="api.stage.test-app.pan.panter.cloud"
983
- - export HOST_CANONICAL="api.stage.test-app.pan.panter.cloud"
986
+ - export HOSTNAME_INTERNAL="api.stage.test-app.pan.panter.cloud"
984
987
  - export ROOT_URL_INTERNAL="https://api.stage.test-app.pan.panter.cloud"
985
988
  - export KUBE_NAMESPACE="pan-test-app-stage"
986
989
  - export KUBE_APP_NAME="api"
987
990
  - export KUBE_APP_NAME_PREFIX=""
988
- - export _ALL_ENV_VAR_KEYS="[\\"ENV_SHORT\\",\\"APP_DIR\\",\\"ENV_TYPE\\",\\"BUILD_INFO_BUILD_ID\\",\\"BUILD_INFO_BUILD_TIME\\",\\"BUILD_INFO_CURRENT_VERSION\\",\\"HOST\\",\\"ROOT_URL\\",\\"HOST_INTERNAL\\",\\"HOST_CANONICAL\\",\\"ROOT_URL_INTERNAL\\",\\"KUBE_NAMESPACE\\",\\"KUBE_APP_NAME\\",\\"KUBE_APP_NAME_PREFIX\\"]"
989
- - echo -e "\\e[0Ksection_end:$(date +%s):injectvars\\r\\e[0K"
991
+ - export _ALL_ENV_VAR_KEYS="[\\"ENV_SHORT\\",\\"APP_DIR\\",\\"ENV_TYPE\\",\\"BUILD_INFO_BUILD_ID\\",\\"BUILD_INFO_BUILD_TIME\\",\\"BUILD_INFO_CURRENT_VERSION\\",\\"HOSTNAME\\",\\"ROOT_URL\\",\\"HOSTNAME_INTERNAL\\",\\"ROOT_URL_INTERNAL\\",\\"KUBE_NAMESPACE\\",\\"KUBE_APP_NAME\\",\\"KUBE_APP_NAME_PREFIX\\"]"
992
+ - collapseable_section_end "injectvars"
990
993
  - echo '{"id":"$(git describe --tags 2>/dev/null || git rev-parse HEAD)","time":"$CI_JOB_STARTED_AT"}' > api/__build_info.json
991
- - echo -e "\\e[0Ksection_start:$(date +%s):nodeinstall[collapsed=true]\\r\\e[0KEnsure node version"
994
+ - collapseable_section_start "nodeinstall" "Ensure node version"
992
995
  - if [ -f ~/.nvm/nvm.sh ]; then source ~/.nvm/nvm.sh; fi
993
996
  - if command -v nvm &> /dev/null && [ -f ./.nvmrc ]; then nvm install; fi
994
- - echo -e "\\e[0Ksection_end:$(date +%s):nodeinstall\\r\\e[0K"
997
+ - collapseable_section_end "nodeinstall"
995
998
  - cd api
996
- - echo -e "\\e[0Ksection_start:$(date +%s):nodeinstall[collapsed=true]\\r\\e[0KEnsure node version"
999
+ - collapseable_section_start "nodeinstall" "Ensure node version"
997
1000
  - if [ -f ~/.nvm/nvm.sh ]; then source ~/.nvm/nvm.sh; fi
998
1001
  - if command -v nvm &> /dev/null && [ -f ./.nvmrc ]; then nvm install; fi
999
- - echo -e "\\e[0Ksection_end:$(date +%s):nodeinstall\\r\\e[0K"
1000
- - echo -e "\\e[0Ksection_start:$(date +%s):yarninstall[collapsed=true]\\r\\e[0KYarn install"
1002
+ - collapseable_section_end "nodeinstall"
1003
+ - collapseable_section_start "yarninstall" "Yarn install"
1001
1004
  - yarn install --immutable
1002
- - echo -e "\\e[0Ksection_end:$(date +%s):yarninstall\\r\\e[0K"
1005
+ - collapseable_section_end "yarninstall"
1003
1006
  - yarn build
1004
1007
  cache:
1005
1008
  - key: api-yarn
@@ -1010,10 +1013,6 @@ api 🧪 test:
1010
1013
  policy: pull-push
1011
1014
  paths:
1012
1015
  - api/node_modules
1013
- - key: api-next-cache
1014
- policy: pull-push
1015
- paths:
1016
- - api/.next/cache
1017
1016
  artifacts:
1018
1017
  paths:
1019
1018
  - api/__build_info.json
@@ -1044,7 +1043,7 @@ api 🧪 test:
1044
1043
  KUBERNETES_MEMORY_REQUEST: 1Gi
1045
1044
  KUBERNETES_MEMORY_LIMIT: 2Gi
1046
1045
  script:
1047
- - echo -e "\\e[0Ksection_start:$(date +%s):injectvars[collapsed=true]\\r\\e[0KInjecting variables"
1046
+ - collapseable_section_start "injectvars" "Injecting variables"
1048
1047
  - export APP_DIR="api"
1049
1048
  - export DOCKER_BUILD_CONTEXT="."
1050
1049
  - export DOCKER_REGISTRY="$CI_REGISTRY"
@@ -1061,19 +1060,19 @@ api 🧪 test:
1061
1060
  COPY --chown=node:node api/yarn.lock /app/api/yarn.lock
1062
1061
  COPY --chown=node:node .yarnrc.yml /app/.yarnrc.yml
1063
1062
  COPY --chown=node:node .yarn /app/.yarn"
1064
- - echo -e "\\e[0Ksection_end:$(date +%s):injectvars\\r\\e[0K"
1063
+ - collapseable_section_end "injectvars"
1065
1064
  - ensureNodeDockerfile
1066
- - echo -e "\\e[0Ksection_start:$(date +%s):docker-login[collapsed=true]\\r\\e[0KDocker Login"
1065
+ - collapseable_section_start "docker-login" "Docker Login"
1067
1066
  - docker login --username gitlab-ci-token --password $CI_JOB_TOKEN $CI_REGISTRY
1068
- - echo -e "\\e[0Ksection_end:$(date +%s):docker-login\\r\\e[0K"
1069
- - echo -e "\\e[0Ksection_start:$(date +%s):docker-build[collapsed=true]\\r\\e[0KDocker build"
1067
+ - collapseable_section_end "docker-login"
1068
+ - collapseable_section_start "docker-build" "Docker build"
1070
1069
  - 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
1071
- - echo -e "\\e[0Ksection_end:$(date +%s):docker-build\\r\\e[0K"
1072
- - echo -e "\\e[0Ksection_start:$(date +%s):docker-push[collapsed=true]\\r\\e[0KDocker push and tag"
1070
+ - collapseable_section_end "docker-build"
1071
+ - collapseable_section_start "docker-push" "Docker push and tag"
1073
1072
  - docker push $DOCKER_IMAGE:$DOCKER_IMAGE_TAG
1074
1073
  - docker tag $DOCKER_IMAGE:$DOCKER_IMAGE_TAG $DOCKER_CACHE_IMAGE
1075
1074
  - docker push $DOCKER_CACHE_IMAGE
1076
- - echo -e "\\e[0Ksection_end:$(date +%s):docker-push\\r\\e[0K"
1075
+ - collapseable_section_end "docker-push"
1077
1076
  cache:
1078
1077
  - key: api-yarn
1079
1078
  policy: pull
@@ -1090,8 +1089,8 @@ api 🧪 test:
1090
1089
  image: aquasec/trivy:0.38.3
1091
1090
  variables: {}
1092
1091
  script:
1093
- - echo -e "\\e[0Ksection_start:$(date +%s):injectvars[collapsed=true]\\r\\e[0KInjecting variables"
1094
- - echo -e "\\e[0Ksection_end:$(date +%s):injectvars\\r\\e[0K"
1092
+ - collapseable_section_start "injectvars" "Injecting variables"
1093
+ - collapseable_section_end "injectvars"
1095
1094
  - trivy fs --quiet --format cyclonedx --output "__sbom.json" api
1096
1095
  artifacts:
1097
1096
  paths:
@@ -1110,22 +1109,21 @@ api 🧪 test:
1110
1109
  KUBERNETES_MEMORY_REQUEST: 200Mi
1111
1110
  KUBERNETES_MEMORY_LIMIT: 400Mi
1112
1111
  script:
1113
- - echo -e "\\e[0Ksection_start:$(date +%s):injectvars[collapsed=true]\\r\\e[0KInjecting variables"
1112
+ - collapseable_section_start "injectvars" "Injecting variables"
1114
1113
  - export ENV_SHORT="stage"
1115
1114
  - export APP_DIR="api"
1116
1115
  - export ENV_TYPE="stage"
1117
1116
  - export BUILD_INFO_BUILD_ID="$(git describe --tags 2>/dev/null || git rev-parse HEAD)"
1118
1117
  - export BUILD_INFO_BUILD_TIME="$CI_JOB_STARTED_AT"
1119
1118
  - 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")"
1120
- - export HOST="api.stage.test-app.pan.panter.cloud"
1119
+ - export HOSTNAME="api.stage.test-app.pan.panter.cloud"
1121
1120
  - export ROOT_URL="https://api.stage.test-app.pan.panter.cloud"
1122
- - export HOST_INTERNAL="api.stage.test-app.pan.panter.cloud"
1123
- - export HOST_CANONICAL="api.stage.test-app.pan.panter.cloud"
1121
+ - export HOSTNAME_INTERNAL="api.stage.test-app.pan.panter.cloud"
1124
1122
  - export ROOT_URL_INTERNAL="https://api.stage.test-app.pan.panter.cloud"
1125
1123
  - export KUBE_NAMESPACE="pan-test-app-stage"
1126
1124
  - export KUBE_APP_NAME="api"
1127
1125
  - export KUBE_APP_NAME_PREFIX=""
1128
- - export _ALL_ENV_VAR_KEYS="[\\"ENV_SHORT\\",\\"APP_DIR\\",\\"ENV_TYPE\\",\\"BUILD_INFO_BUILD_ID\\",\\"BUILD_INFO_BUILD_TIME\\",\\"BUILD_INFO_CURRENT_VERSION\\",\\"HOST\\",\\"ROOT_URL\\",\\"HOST_INTERNAL\\",\\"HOST_CANONICAL\\",\\"ROOT_URL_INTERNAL\\",\\"KUBE_NAMESPACE\\",\\"KUBE_APP_NAME\\",\\"KUBE_APP_NAME_PREFIX\\"]"
1126
+ - export _ALL_ENV_VAR_KEYS="[\\"ENV_SHORT\\",\\"APP_DIR\\",\\"ENV_TYPE\\",\\"BUILD_INFO_BUILD_ID\\",\\"BUILD_INFO_BUILD_TIME\\",\\"BUILD_INFO_CURRENT_VERSION\\",\\"HOSTNAME\\",\\"ROOT_URL\\",\\"HOSTNAME_INTERNAL\\",\\"ROOT_URL_INTERNAL\\",\\"KUBE_NAMESPACE\\",\\"KUBE_APP_NAME\\",\\"KUBE_APP_NAME_PREFIX\\"]"
1129
1127
  - export DOCKER_REGISTRY="$CI_REGISTRY"
1130
1128
  - export DOCKER_CACHE_IMAGE="$CI_REGISTRY_IMAGE/caches/api"
1131
1129
  - export DOCKER_IMAGE_NAME="stage/api"
@@ -1137,13 +1135,12 @@ api 🧪 test:
1137
1135
  - export HELM_GITLAB_CHART_NAME="/helm-charts/the-panter-chart"
1138
1136
  - export HELM_ARGS=""
1139
1137
  - export COMPONENT_NAME="api"
1140
- - export BUILD_ID="$(git describe --tags 2>/dev/null || git rev-parse HEAD)"
1141
- - echo -e "\\e[0Ksection_end:$(date +%s):injectvars\\r\\e[0K"
1138
+ - collapseable_section_end "injectvars"
1142
1139
  - kubectl config set-cluster "kube-pan-test-app-stage-api" --server="$CL_stage_api_KUBE_URL" --certificate-authority <(echo $CL_stage_api_KUBE_CA_PEM | base64 -d) --embed-certs=true
1143
1140
  - kubectl config set-credentials "kube-pan-test-app-stage-api" --token="$CL_stage_api_KUBE_TOKEN"
1144
1141
  - kubectl config set-context "kube-pan-test-app-stage-api" --cluster="kube-pan-test-app-stage-api" --user="kube-pan-test-app-stage-api" --namespace="pan-test-app-stage"
1145
1142
  - kubectl config use-context "kube-pan-test-app-stage-api"
1146
- - echo -e "\\e[0Ksection_start:$(date +%s):writeallvalues[collapsed=true]\\r\\e[0KWrite __all_values.yml for helm deployment"
1143
+ - collapseable_section_start "writeallvalues" "Write __all_values.yml for helm deployment"
1147
1144
  - |
1148
1145
  cat > __all_values.yml <<EOF
1149
1146
  env:
@@ -1156,18 +1153,16 @@ api 🧪 test:
1156
1153
  ENV_TYPE: |-
1157
1154
  stage
1158
1155
  BUILD_INFO_BUILD_ID: |-
1159
- $(printf %s "$(git describe --tags 2>/dev/null || git rev-parse HEAD)" | sed 's/^/ /')
1156
+ $(printf %s "$(git describe --tags 2>/dev/null || git rev-parse HEAD)" | sed '1!s/^/ /')
1160
1157
  BUILD_INFO_BUILD_TIME: |-
1161
- $(printf %s "$CI_JOB_STARTED_AT" | sed 's/^/ /')
1158
+ $(printf %s "$CI_JOB_STARTED_AT" | sed '1!s/^/ /')
1162
1159
  BUILD_INFO_CURRENT_VERSION: |-
1163
- $(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/^/ /')
1164
- HOST: |-
1160
+ $(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/^/ /')
1161
+ HOSTNAME: |-
1165
1162
  api.stage.test-app.pan.panter.cloud
1166
1163
  ROOT_URL: |-
1167
1164
  https://api.stage.test-app.pan.panter.cloud
1168
- HOST_INTERNAL: |-
1169
- api.stage.test-app.pan.panter.cloud
1170
- HOST_CANONICAL: |-
1165
+ HOSTNAME_INTERNAL: |-
1171
1166
  api.stage.test-app.pan.panter.cloud
1172
1167
  ROOT_URL_INTERNAL: |-
1173
1168
  https://api.stage.test-app.pan.panter.cloud
@@ -1177,7 +1172,7 @@ api 🧪 test:
1177
1172
  api
1178
1173
  KUBE_APP_NAME_PREFIX: ""
1179
1174
  _ALL_ENV_VAR_KEYS: |-
1180
- ["ENV_SHORT","APP_DIR","ENV_TYPE","BUILD_INFO_BUILD_ID","BUILD_INFO_BUILD_TIME","BUILD_INFO_CURRENT_VERSION","HOST","ROOT_URL","HOST_INTERNAL","HOST_CANONICAL","ROOT_URL_INTERNAL","KUBE_NAMESPACE","KUBE_APP_NAME","KUBE_APP_NAME_PREFIX"]
1175
+ ["ENV_SHORT","APP_DIR","ENV_TYPE","BUILD_INFO_BUILD_ID","BUILD_INFO_BUILD_TIME","BUILD_INFO_CURRENT_VERSION","HOSTNAME","ROOT_URL","HOSTNAME_INTERNAL","ROOT_URL_INTERNAL","KUBE_NAMESPACE","KUBE_APP_NAME","KUBE_APP_NAME_PREFIX"]
1181
1176
  application:
1182
1177
  host: |-
1183
1178
  api.stage.test-app.pan.panter.cloud
@@ -1216,7 +1211,7 @@ api 🧪 test:
1216
1211
  2048Mi
1217
1212
 
1218
1213
  EOF
1219
- - echo -e "\\e[0Ksection_end:$(date +%s):writeallvalues\\r\\e[0K"
1214
+ - collapseable_section_end "writeallvalues"
1220
1215
  - kubernetesCreateSecret
1221
1216
  - kubernetesDeploy
1222
1217
  - echo 'Uploading SBOM to Dependency Track'
@@ -1252,30 +1247,28 @@ api 🧪 test:
1252
1247
  KUBERNETES_MEMORY_LIMIT: 400Mi
1253
1248
  GIT_STRATEGY: none
1254
1249
  script:
1255
- - echo -e "\\e[0Ksection_start:$(date +%s):injectvars[collapsed=true]\\r\\e[0KInjecting variables"
1250
+ - collapseable_section_start "injectvars" "Injecting variables"
1256
1251
  - export ENV_SHORT="stage"
1257
1252
  - export APP_DIR="api"
1258
1253
  - export ENV_TYPE="stage"
1259
1254
  - export BUILD_INFO_BUILD_ID="$(git describe --tags 2>/dev/null || git rev-parse HEAD)"
1260
1255
  - export BUILD_INFO_BUILD_TIME="$CI_JOB_STARTED_AT"
1261
1256
  - 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")"
1262
- - export HOST="api.stage.test-app.pan.panter.cloud"
1257
+ - export HOSTNAME="api.stage.test-app.pan.panter.cloud"
1263
1258
  - export ROOT_URL="https://api.stage.test-app.pan.panter.cloud"
1264
- - export HOST_INTERNAL="api.stage.test-app.pan.panter.cloud"
1265
- - export HOST_CANONICAL="api.stage.test-app.pan.panter.cloud"
1259
+ - export HOSTNAME_INTERNAL="api.stage.test-app.pan.panter.cloud"
1266
1260
  - export ROOT_URL_INTERNAL="https://api.stage.test-app.pan.panter.cloud"
1267
1261
  - export KUBE_NAMESPACE="pan-test-app-stage"
1268
1262
  - export KUBE_APP_NAME="api"
1269
1263
  - export KUBE_APP_NAME_PREFIX=""
1270
- - export _ALL_ENV_VAR_KEYS="[\\"ENV_SHORT\\",\\"APP_DIR\\",\\"ENV_TYPE\\",\\"BUILD_INFO_BUILD_ID\\",\\"BUILD_INFO_BUILD_TIME\\",\\"BUILD_INFO_CURRENT_VERSION\\",\\"HOST\\",\\"ROOT_URL\\",\\"HOST_INTERNAL\\",\\"HOST_CANONICAL\\",\\"ROOT_URL_INTERNAL\\",\\"KUBE_NAMESPACE\\",\\"KUBE_APP_NAME\\",\\"KUBE_APP_NAME_PREFIX\\"]"
1264
+ - export _ALL_ENV_VAR_KEYS="[\\"ENV_SHORT\\",\\"APP_DIR\\",\\"ENV_TYPE\\",\\"BUILD_INFO_BUILD_ID\\",\\"BUILD_INFO_BUILD_TIME\\",\\"BUILD_INFO_CURRENT_VERSION\\",\\"HOSTNAME\\",\\"ROOT_URL\\",\\"HOSTNAME_INTERNAL\\",\\"ROOT_URL_INTERNAL\\",\\"KUBE_NAMESPACE\\",\\"KUBE_APP_NAME\\",\\"KUBE_APP_NAME_PREFIX\\"]"
1271
1265
  - export RELEASE_NAME="pan-test-app-stage-api"
1272
1266
  - export HELM_EXPERIMENTAL_OCI="1"
1273
1267
  - export KUBE_DOCKER_IMAGE_PULL_SECRET="gitlab-registry-api"
1274
1268
  - export HELM_GITLAB_CHART_NAME="/helm-charts/the-panter-chart"
1275
1269
  - export HELM_ARGS=""
1276
1270
  - export COMPONENT_NAME="api"
1277
- - export BUILD_ID="$(git describe --tags 2>/dev/null || git rev-parse HEAD)"
1278
- - echo -e "\\e[0Ksection_end:$(date +%s):injectvars\\r\\e[0K"
1271
+ - collapseable_section_end "injectvars"
1279
1272
  - kubectl config set-cluster "kube-pan-test-app-stage-api" --server="$CL_stage_api_KUBE_URL" --certificate-authority <(echo $CL_stage_api_KUBE_CA_PEM | base64 -d) --embed-certs=true
1280
1273
  - kubectl config set-credentials "kube-pan-test-app-stage-api" --token="$CL_stage_api_KUBE_TOKEN"
1281
1274
  - kubectl config set-context "kube-pan-test-app-stage-api" --cluster="kube-pan-test-app-stage-api" --user="kube-pan-test-app-stage-api" --namespace="pan-test-app-stage"
@@ -1309,30 +1302,28 @@ api 🧪 test:
1309
1302
  KUBERNETES_MEMORY_LIMIT: 400Mi
1310
1303
  GIT_STRATEGY: none
1311
1304
  script:
1312
- - echo -e "\\e[0Ksection_start:$(date +%s):injectvars[collapsed=true]\\r\\e[0KInjecting variables"
1305
+ - collapseable_section_start "injectvars" "Injecting variables"
1313
1306
  - export ENV_SHORT="stage"
1314
1307
  - export APP_DIR="api"
1315
1308
  - export ENV_TYPE="stage"
1316
1309
  - export BUILD_INFO_BUILD_ID="$(git describe --tags 2>/dev/null || git rev-parse HEAD)"
1317
1310
  - export BUILD_INFO_BUILD_TIME="$CI_JOB_STARTED_AT"
1318
1311
  - 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")"
1319
- - export HOST="api.stage.test-app.pan.panter.cloud"
1312
+ - export HOSTNAME="api.stage.test-app.pan.panter.cloud"
1320
1313
  - export ROOT_URL="https://api.stage.test-app.pan.panter.cloud"
1321
- - export HOST_INTERNAL="api.stage.test-app.pan.panter.cloud"
1322
- - export HOST_CANONICAL="api.stage.test-app.pan.panter.cloud"
1314
+ - export HOSTNAME_INTERNAL="api.stage.test-app.pan.panter.cloud"
1323
1315
  - export ROOT_URL_INTERNAL="https://api.stage.test-app.pan.panter.cloud"
1324
1316
  - export KUBE_NAMESPACE="pan-test-app-stage"
1325
1317
  - export KUBE_APP_NAME="api"
1326
1318
  - export KUBE_APP_NAME_PREFIX=""
1327
- - export _ALL_ENV_VAR_KEYS="[\\"ENV_SHORT\\",\\"APP_DIR\\",\\"ENV_TYPE\\",\\"BUILD_INFO_BUILD_ID\\",\\"BUILD_INFO_BUILD_TIME\\",\\"BUILD_INFO_CURRENT_VERSION\\",\\"HOST\\",\\"ROOT_URL\\",\\"HOST_INTERNAL\\",\\"HOST_CANONICAL\\",\\"ROOT_URL_INTERNAL\\",\\"KUBE_NAMESPACE\\",\\"KUBE_APP_NAME\\",\\"KUBE_APP_NAME_PREFIX\\"]"
1319
+ - export _ALL_ENV_VAR_KEYS="[\\"ENV_SHORT\\",\\"APP_DIR\\",\\"ENV_TYPE\\",\\"BUILD_INFO_BUILD_ID\\",\\"BUILD_INFO_BUILD_TIME\\",\\"BUILD_INFO_CURRENT_VERSION\\",\\"HOSTNAME\\",\\"ROOT_URL\\",\\"HOSTNAME_INTERNAL\\",\\"ROOT_URL_INTERNAL\\",\\"KUBE_NAMESPACE\\",\\"KUBE_APP_NAME\\",\\"KUBE_APP_NAME_PREFIX\\"]"
1328
1320
  - export RELEASE_NAME="pan-test-app-stage-api"
1329
1321
  - export HELM_EXPERIMENTAL_OCI="1"
1330
1322
  - export KUBE_DOCKER_IMAGE_PULL_SECRET="gitlab-registry-api"
1331
1323
  - export HELM_GITLAB_CHART_NAME="/helm-charts/the-panter-chart"
1332
1324
  - export HELM_ARGS=""
1333
1325
  - export COMPONENT_NAME="api"
1334
- - export BUILD_ID="$(git describe --tags 2>/dev/null || git rev-parse HEAD)"
1335
- - echo -e "\\e[0Ksection_end:$(date +%s):injectvars\\r\\e[0K"
1326
+ - collapseable_section_end "injectvars"
1336
1327
  - kubectl config set-cluster "kube-pan-test-app-stage-api" --server="$CL_stage_api_KUBE_URL" --certificate-authority <(echo $CL_stage_api_KUBE_CA_PEM | base64 -d) --embed-certs=true
1337
1328
  - kubectl config set-credentials "kube-pan-test-app-stage-api" --token="$CL_stage_api_KUBE_TOKEN"
1338
1329
  - kubectl config set-context "kube-pan-test-app-stage-api" --cluster="kube-pan-test-app-stage-api" --user="kube-pan-test-app-stage-api" --namespace="pan-test-app-stage"
@@ -1361,36 +1352,35 @@ api 🧪 test:
1361
1352
  KUBERNETES_MEMORY_REQUEST: 1Gi
1362
1353
  KUBERNETES_MEMORY_LIMIT: 4Gi
1363
1354
  script:
1364
- - echo -e "\\e[0Ksection_start:$(date +%s):injectvars[collapsed=true]\\r\\e[0KInjecting variables"
1355
+ - collapseable_section_start "injectvars" "Injecting variables"
1365
1356
  - export ENV_SHORT="prod"
1366
1357
  - export APP_DIR="api"
1367
1358
  - export ENV_TYPE="prod"
1368
1359
  - export BUILD_INFO_BUILD_ID="$(git describe --tags 2>/dev/null || git rev-parse HEAD)"
1369
1360
  - export BUILD_INFO_BUILD_TIME="$CI_JOB_STARTED_AT"
1370
1361
  - 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")"
1371
- - export HOST="api.prod.test-app.pan.panter.cloud"
1362
+ - export HOSTNAME="api.prod.test-app.pan.panter.cloud"
1372
1363
  - export ROOT_URL="https://api.prod.test-app.pan.panter.cloud"
1373
- - export HOST_INTERNAL="api.prod.test-app.pan.panter.cloud"
1374
- - export HOST_CANONICAL="api.prod.test-app.pan.panter.cloud"
1364
+ - export HOSTNAME_INTERNAL="api.prod.test-app.pan.panter.cloud"
1375
1365
  - export ROOT_URL_INTERNAL="https://api.prod.test-app.pan.panter.cloud"
1376
1366
  - export KUBE_NAMESPACE="pan-test-app-prod"
1377
1367
  - export KUBE_APP_NAME="api"
1378
1368
  - export KUBE_APP_NAME_PREFIX=""
1379
- - export _ALL_ENV_VAR_KEYS="[\\"ENV_SHORT\\",\\"APP_DIR\\",\\"ENV_TYPE\\",\\"BUILD_INFO_BUILD_ID\\",\\"BUILD_INFO_BUILD_TIME\\",\\"BUILD_INFO_CURRENT_VERSION\\",\\"HOST\\",\\"ROOT_URL\\",\\"HOST_INTERNAL\\",\\"HOST_CANONICAL\\",\\"ROOT_URL_INTERNAL\\",\\"KUBE_NAMESPACE\\",\\"KUBE_APP_NAME\\",\\"KUBE_APP_NAME_PREFIX\\"]"
1380
- - echo -e "\\e[0Ksection_end:$(date +%s):injectvars\\r\\e[0K"
1369
+ - export _ALL_ENV_VAR_KEYS="[\\"ENV_SHORT\\",\\"APP_DIR\\",\\"ENV_TYPE\\",\\"BUILD_INFO_BUILD_ID\\",\\"BUILD_INFO_BUILD_TIME\\",\\"BUILD_INFO_CURRENT_VERSION\\",\\"HOSTNAME\\",\\"ROOT_URL\\",\\"HOSTNAME_INTERNAL\\",\\"ROOT_URL_INTERNAL\\",\\"KUBE_NAMESPACE\\",\\"KUBE_APP_NAME\\",\\"KUBE_APP_NAME_PREFIX\\"]"
1370
+ - collapseable_section_end "injectvars"
1381
1371
  - echo '{"id":"$(git describe --tags 2>/dev/null || git rev-parse HEAD)","time":"$CI_JOB_STARTED_AT"}' > api/__build_info.json
1382
- - echo -e "\\e[0Ksection_start:$(date +%s):nodeinstall[collapsed=true]\\r\\e[0KEnsure node version"
1372
+ - collapseable_section_start "nodeinstall" "Ensure node version"
1383
1373
  - if [ -f ~/.nvm/nvm.sh ]; then source ~/.nvm/nvm.sh; fi
1384
1374
  - if command -v nvm &> /dev/null && [ -f ./.nvmrc ]; then nvm install; fi
1385
- - echo -e "\\e[0Ksection_end:$(date +%s):nodeinstall\\r\\e[0K"
1375
+ - collapseable_section_end "nodeinstall"
1386
1376
  - cd api
1387
- - echo -e "\\e[0Ksection_start:$(date +%s):nodeinstall[collapsed=true]\\r\\e[0KEnsure node version"
1377
+ - collapseable_section_start "nodeinstall" "Ensure node version"
1388
1378
  - if [ -f ~/.nvm/nvm.sh ]; then source ~/.nvm/nvm.sh; fi
1389
1379
  - if command -v nvm &> /dev/null && [ -f ./.nvmrc ]; then nvm install; fi
1390
- - echo -e "\\e[0Ksection_end:$(date +%s):nodeinstall\\r\\e[0K"
1391
- - echo -e "\\e[0Ksection_start:$(date +%s):yarninstall[collapsed=true]\\r\\e[0KYarn install"
1380
+ - collapseable_section_end "nodeinstall"
1381
+ - collapseable_section_start "yarninstall" "Yarn install"
1392
1382
  - yarn install --immutable
1393
- - echo -e "\\e[0Ksection_end:$(date +%s):yarninstall\\r\\e[0K"
1383
+ - collapseable_section_end "yarninstall"
1394
1384
  - yarn build
1395
1385
  cache:
1396
1386
  - key: api-yarn
@@ -1401,10 +1391,6 @@ api 🧪 test:
1401
1391
  policy: pull-push
1402
1392
  paths:
1403
1393
  - api/node_modules
1404
- - key: api-next-cache
1405
- policy: pull-push
1406
- paths:
1407
- - api/.next/cache
1408
1394
  artifacts:
1409
1395
  paths:
1410
1396
  - api/__build_info.json
@@ -1435,7 +1421,7 @@ api 🧪 test:
1435
1421
  KUBERNETES_MEMORY_REQUEST: 1Gi
1436
1422
  KUBERNETES_MEMORY_LIMIT: 2Gi
1437
1423
  script:
1438
- - echo -e "\\e[0Ksection_start:$(date +%s):injectvars[collapsed=true]\\r\\e[0KInjecting variables"
1424
+ - collapseable_section_start "injectvars" "Injecting variables"
1439
1425
  - export APP_DIR="api"
1440
1426
  - export DOCKER_BUILD_CONTEXT="."
1441
1427
  - export DOCKER_REGISTRY="$CI_REGISTRY"
@@ -1452,19 +1438,19 @@ api 🧪 test:
1452
1438
  COPY --chown=node:node api/yarn.lock /app/api/yarn.lock
1453
1439
  COPY --chown=node:node .yarnrc.yml /app/.yarnrc.yml
1454
1440
  COPY --chown=node:node .yarn /app/.yarn"
1455
- - echo -e "\\e[0Ksection_end:$(date +%s):injectvars\\r\\e[0K"
1441
+ - collapseable_section_end "injectvars"
1456
1442
  - ensureNodeDockerfile
1457
- - echo -e "\\e[0Ksection_start:$(date +%s):docker-login[collapsed=true]\\r\\e[0KDocker Login"
1443
+ - collapseable_section_start "docker-login" "Docker Login"
1458
1444
  - docker login --username gitlab-ci-token --password $CI_JOB_TOKEN $CI_REGISTRY
1459
- - echo -e "\\e[0Ksection_end:$(date +%s):docker-login\\r\\e[0K"
1460
- - echo -e "\\e[0Ksection_start:$(date +%s):docker-build[collapsed=true]\\r\\e[0KDocker build"
1445
+ - collapseable_section_end "docker-login"
1446
+ - collapseable_section_start "docker-build" "Docker build"
1461
1447
  - 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
1462
- - echo -e "\\e[0Ksection_end:$(date +%s):docker-build\\r\\e[0K"
1463
- - echo -e "\\e[0Ksection_start:$(date +%s):docker-push[collapsed=true]\\r\\e[0KDocker push and tag"
1448
+ - collapseable_section_end "docker-build"
1449
+ - collapseable_section_start "docker-push" "Docker push and tag"
1464
1450
  - docker push $DOCKER_IMAGE:$DOCKER_IMAGE_TAG
1465
1451
  - docker tag $DOCKER_IMAGE:$DOCKER_IMAGE_TAG $DOCKER_CACHE_IMAGE
1466
1452
  - docker push $DOCKER_CACHE_IMAGE
1467
- - echo -e "\\e[0Ksection_end:$(date +%s):docker-push\\r\\e[0K"
1453
+ - collapseable_section_end "docker-push"
1468
1454
  cache:
1469
1455
  - key: api-yarn
1470
1456
  policy: pull
@@ -1481,8 +1467,8 @@ api 🧪 test:
1481
1467
  image: aquasec/trivy:0.38.3
1482
1468
  variables: {}
1483
1469
  script:
1484
- - echo -e "\\e[0Ksection_start:$(date +%s):injectvars[collapsed=true]\\r\\e[0KInjecting variables"
1485
- - echo -e "\\e[0Ksection_end:$(date +%s):injectvars\\r\\e[0K"
1470
+ - collapseable_section_start "injectvars" "Injecting variables"
1471
+ - collapseable_section_end "injectvars"
1486
1472
  - trivy fs --quiet --format cyclonedx --output "__sbom.json" api
1487
1473
  artifacts:
1488
1474
  paths:
@@ -1501,22 +1487,21 @@ api 🧪 test:
1501
1487
  KUBERNETES_MEMORY_REQUEST: 200Mi
1502
1488
  KUBERNETES_MEMORY_LIMIT: 400Mi
1503
1489
  script:
1504
- - echo -e "\\e[0Ksection_start:$(date +%s):injectvars[collapsed=true]\\r\\e[0KInjecting variables"
1490
+ - collapseable_section_start "injectvars" "Injecting variables"
1505
1491
  - export ENV_SHORT="prod"
1506
1492
  - export APP_DIR="api"
1507
1493
  - export ENV_TYPE="prod"
1508
1494
  - export BUILD_INFO_BUILD_ID="$(git describe --tags 2>/dev/null || git rev-parse HEAD)"
1509
1495
  - export BUILD_INFO_BUILD_TIME="$CI_JOB_STARTED_AT"
1510
1496
  - 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")"
1511
- - export HOST="api.prod.test-app.pan.panter.cloud"
1497
+ - export HOSTNAME="api.prod.test-app.pan.panter.cloud"
1512
1498
  - export ROOT_URL="https://api.prod.test-app.pan.panter.cloud"
1513
- - export HOST_INTERNAL="api.prod.test-app.pan.panter.cloud"
1514
- - export HOST_CANONICAL="api.prod.test-app.pan.panter.cloud"
1499
+ - export HOSTNAME_INTERNAL="api.prod.test-app.pan.panter.cloud"
1515
1500
  - export ROOT_URL_INTERNAL="https://api.prod.test-app.pan.panter.cloud"
1516
1501
  - export KUBE_NAMESPACE="pan-test-app-prod"
1517
1502
  - export KUBE_APP_NAME="api"
1518
1503
  - export KUBE_APP_NAME_PREFIX=""
1519
- - export _ALL_ENV_VAR_KEYS="[\\"ENV_SHORT\\",\\"APP_DIR\\",\\"ENV_TYPE\\",\\"BUILD_INFO_BUILD_ID\\",\\"BUILD_INFO_BUILD_TIME\\",\\"BUILD_INFO_CURRENT_VERSION\\",\\"HOST\\",\\"ROOT_URL\\",\\"HOST_INTERNAL\\",\\"HOST_CANONICAL\\",\\"ROOT_URL_INTERNAL\\",\\"KUBE_NAMESPACE\\",\\"KUBE_APP_NAME\\",\\"KUBE_APP_NAME_PREFIX\\"]"
1504
+ - export _ALL_ENV_VAR_KEYS="[\\"ENV_SHORT\\",\\"APP_DIR\\",\\"ENV_TYPE\\",\\"BUILD_INFO_BUILD_ID\\",\\"BUILD_INFO_BUILD_TIME\\",\\"BUILD_INFO_CURRENT_VERSION\\",\\"HOSTNAME\\",\\"ROOT_URL\\",\\"HOSTNAME_INTERNAL\\",\\"ROOT_URL_INTERNAL\\",\\"KUBE_NAMESPACE\\",\\"KUBE_APP_NAME\\",\\"KUBE_APP_NAME_PREFIX\\"]"
1520
1505
  - export DOCKER_REGISTRY="$CI_REGISTRY"
1521
1506
  - export DOCKER_CACHE_IMAGE="$CI_REGISTRY_IMAGE/caches/api"
1522
1507
  - export DOCKER_IMAGE_NAME="prod/api"
@@ -1528,13 +1513,12 @@ api 🧪 test:
1528
1513
  - export HELM_GITLAB_CHART_NAME="/helm-charts/the-panter-chart"
1529
1514
  - export HELM_ARGS=""
1530
1515
  - export COMPONENT_NAME="api"
1531
- - export BUILD_ID="$(git describe --tags 2>/dev/null || git rev-parse HEAD)"
1532
- - echo -e "\\e[0Ksection_end:$(date +%s):injectvars\\r\\e[0K"
1516
+ - collapseable_section_end "injectvars"
1533
1517
  - kubectl config set-cluster "kube-pan-test-app-prod-api" --server="$CL_prod_api_KUBE_URL" --certificate-authority <(echo $CL_prod_api_KUBE_CA_PEM | base64 -d) --embed-certs=true
1534
1518
  - kubectl config set-credentials "kube-pan-test-app-prod-api" --token="$CL_prod_api_KUBE_TOKEN"
1535
1519
  - kubectl config set-context "kube-pan-test-app-prod-api" --cluster="kube-pan-test-app-prod-api" --user="kube-pan-test-app-prod-api" --namespace="pan-test-app-prod"
1536
1520
  - kubectl config use-context "kube-pan-test-app-prod-api"
1537
- - echo -e "\\e[0Ksection_start:$(date +%s):writeallvalues[collapsed=true]\\r\\e[0KWrite __all_values.yml for helm deployment"
1521
+ - collapseable_section_start "writeallvalues" "Write __all_values.yml for helm deployment"
1538
1522
  - |
1539
1523
  cat > __all_values.yml <<EOF
1540
1524
  env:
@@ -1547,18 +1531,16 @@ api 🧪 test:
1547
1531
  ENV_TYPE: |-
1548
1532
  prod
1549
1533
  BUILD_INFO_BUILD_ID: |-
1550
- $(printf %s "$(git describe --tags 2>/dev/null || git rev-parse HEAD)" | sed 's/^/ /')
1534
+ $(printf %s "$(git describe --tags 2>/dev/null || git rev-parse HEAD)" | sed '1!s/^/ /')
1551
1535
  BUILD_INFO_BUILD_TIME: |-
1552
- $(printf %s "$CI_JOB_STARTED_AT" | sed 's/^/ /')
1536
+ $(printf %s "$CI_JOB_STARTED_AT" | sed '1!s/^/ /')
1553
1537
  BUILD_INFO_CURRENT_VERSION: |-
1554
- $(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/^/ /')
1555
- HOST: |-
1538
+ $(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/^/ /')
1539
+ HOSTNAME: |-
1556
1540
  api.prod.test-app.pan.panter.cloud
1557
1541
  ROOT_URL: |-
1558
1542
  https://api.prod.test-app.pan.panter.cloud
1559
- HOST_INTERNAL: |-
1560
- api.prod.test-app.pan.panter.cloud
1561
- HOST_CANONICAL: |-
1543
+ HOSTNAME_INTERNAL: |-
1562
1544
  api.prod.test-app.pan.panter.cloud
1563
1545
  ROOT_URL_INTERNAL: |-
1564
1546
  https://api.prod.test-app.pan.panter.cloud
@@ -1568,7 +1550,7 @@ api 🧪 test:
1568
1550
  api
1569
1551
  KUBE_APP_NAME_PREFIX: ""
1570
1552
  _ALL_ENV_VAR_KEYS: |-
1571
- ["ENV_SHORT","APP_DIR","ENV_TYPE","BUILD_INFO_BUILD_ID","BUILD_INFO_BUILD_TIME","BUILD_INFO_CURRENT_VERSION","HOST","ROOT_URL","HOST_INTERNAL","HOST_CANONICAL","ROOT_URL_INTERNAL","KUBE_NAMESPACE","KUBE_APP_NAME","KUBE_APP_NAME_PREFIX"]
1553
+ ["ENV_SHORT","APP_DIR","ENV_TYPE","BUILD_INFO_BUILD_ID","BUILD_INFO_BUILD_TIME","BUILD_INFO_CURRENT_VERSION","HOSTNAME","ROOT_URL","HOSTNAME_INTERNAL","ROOT_URL_INTERNAL","KUBE_NAMESPACE","KUBE_APP_NAME","KUBE_APP_NAME_PREFIX"]
1572
1554
  application:
1573
1555
  host: |-
1574
1556
  api.prod.test-app.pan.panter.cloud
@@ -1607,7 +1589,7 @@ api 🧪 test:
1607
1589
  2048Mi
1608
1590
 
1609
1591
  EOF
1610
- - echo -e "\\e[0Ksection_end:$(date +%s):writeallvalues\\r\\e[0K"
1592
+ - collapseable_section_end "writeallvalues"
1611
1593
  - kubernetesCreateSecret
1612
1594
  - kubernetesDeploy
1613
1595
  - echo 'Uploading SBOM to Dependency Track'
@@ -1643,30 +1625,28 @@ api 🧪 test:
1643
1625
  KUBERNETES_MEMORY_LIMIT: 400Mi
1644
1626
  GIT_STRATEGY: none
1645
1627
  script:
1646
- - echo -e "\\e[0Ksection_start:$(date +%s):injectvars[collapsed=true]\\r\\e[0KInjecting variables"
1628
+ - collapseable_section_start "injectvars" "Injecting variables"
1647
1629
  - export ENV_SHORT="prod"
1648
1630
  - export APP_DIR="api"
1649
1631
  - export ENV_TYPE="prod"
1650
1632
  - export BUILD_INFO_BUILD_ID="$(git describe --tags 2>/dev/null || git rev-parse HEAD)"
1651
1633
  - export BUILD_INFO_BUILD_TIME="$CI_JOB_STARTED_AT"
1652
1634
  - 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")"
1653
- - export HOST="api.prod.test-app.pan.panter.cloud"
1635
+ - export HOSTNAME="api.prod.test-app.pan.panter.cloud"
1654
1636
  - export ROOT_URL="https://api.prod.test-app.pan.panter.cloud"
1655
- - export HOST_INTERNAL="api.prod.test-app.pan.panter.cloud"
1656
- - export HOST_CANONICAL="api.prod.test-app.pan.panter.cloud"
1637
+ - export HOSTNAME_INTERNAL="api.prod.test-app.pan.panter.cloud"
1657
1638
  - export ROOT_URL_INTERNAL="https://api.prod.test-app.pan.panter.cloud"
1658
1639
  - export KUBE_NAMESPACE="pan-test-app-prod"
1659
1640
  - export KUBE_APP_NAME="api"
1660
1641
  - export KUBE_APP_NAME_PREFIX=""
1661
- - export _ALL_ENV_VAR_KEYS="[\\"ENV_SHORT\\",\\"APP_DIR\\",\\"ENV_TYPE\\",\\"BUILD_INFO_BUILD_ID\\",\\"BUILD_INFO_BUILD_TIME\\",\\"BUILD_INFO_CURRENT_VERSION\\",\\"HOST\\",\\"ROOT_URL\\",\\"HOST_INTERNAL\\",\\"HOST_CANONICAL\\",\\"ROOT_URL_INTERNAL\\",\\"KUBE_NAMESPACE\\",\\"KUBE_APP_NAME\\",\\"KUBE_APP_NAME_PREFIX\\"]"
1642
+ - export _ALL_ENV_VAR_KEYS="[\\"ENV_SHORT\\",\\"APP_DIR\\",\\"ENV_TYPE\\",\\"BUILD_INFO_BUILD_ID\\",\\"BUILD_INFO_BUILD_TIME\\",\\"BUILD_INFO_CURRENT_VERSION\\",\\"HOSTNAME\\",\\"ROOT_URL\\",\\"HOSTNAME_INTERNAL\\",\\"ROOT_URL_INTERNAL\\",\\"KUBE_NAMESPACE\\",\\"KUBE_APP_NAME\\",\\"KUBE_APP_NAME_PREFIX\\"]"
1662
1643
  - export RELEASE_NAME="pan-test-app-prod-api"
1663
1644
  - export HELM_EXPERIMENTAL_OCI="1"
1664
1645
  - export KUBE_DOCKER_IMAGE_PULL_SECRET="gitlab-registry-api"
1665
1646
  - export HELM_GITLAB_CHART_NAME="/helm-charts/the-panter-chart"
1666
1647
  - export HELM_ARGS=""
1667
1648
  - export COMPONENT_NAME="api"
1668
- - export BUILD_ID="$(git describe --tags 2>/dev/null || git rev-parse HEAD)"
1669
- - echo -e "\\e[0Ksection_end:$(date +%s):injectvars\\r\\e[0K"
1649
+ - collapseable_section_end "injectvars"
1670
1650
  - kubectl config set-cluster "kube-pan-test-app-prod-api" --server="$CL_prod_api_KUBE_URL" --certificate-authority <(echo $CL_prod_api_KUBE_CA_PEM | base64 -d) --embed-certs=true
1671
1651
  - kubectl config set-credentials "kube-pan-test-app-prod-api" --token="$CL_prod_api_KUBE_TOKEN"
1672
1652
  - kubectl config set-context "kube-pan-test-app-prod-api" --cluster="kube-pan-test-app-prod-api" --user="kube-pan-test-app-prod-api" --namespace="pan-test-app-prod"
@@ -1700,30 +1680,28 @@ api 🧪 test:
1700
1680
  KUBERNETES_MEMORY_LIMIT: 400Mi
1701
1681
  GIT_STRATEGY: none
1702
1682
  script:
1703
- - echo -e "\\e[0Ksection_start:$(date +%s):injectvars[collapsed=true]\\r\\e[0KInjecting variables"
1683
+ - collapseable_section_start "injectvars" "Injecting variables"
1704
1684
  - export ENV_SHORT="prod"
1705
1685
  - export APP_DIR="api"
1706
1686
  - export ENV_TYPE="prod"
1707
1687
  - export BUILD_INFO_BUILD_ID="$(git describe --tags 2>/dev/null || git rev-parse HEAD)"
1708
1688
  - export BUILD_INFO_BUILD_TIME="$CI_JOB_STARTED_AT"
1709
1689
  - 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")"
1710
- - export HOST="api.prod.test-app.pan.panter.cloud"
1690
+ - export HOSTNAME="api.prod.test-app.pan.panter.cloud"
1711
1691
  - export ROOT_URL="https://api.prod.test-app.pan.panter.cloud"
1712
- - export HOST_INTERNAL="api.prod.test-app.pan.panter.cloud"
1713
- - export HOST_CANONICAL="api.prod.test-app.pan.panter.cloud"
1692
+ - export HOSTNAME_INTERNAL="api.prod.test-app.pan.panter.cloud"
1714
1693
  - export ROOT_URL_INTERNAL="https://api.prod.test-app.pan.panter.cloud"
1715
1694
  - export KUBE_NAMESPACE="pan-test-app-prod"
1716
1695
  - export KUBE_APP_NAME="api"
1717
1696
  - export KUBE_APP_NAME_PREFIX=""
1718
- - export _ALL_ENV_VAR_KEYS="[\\"ENV_SHORT\\",\\"APP_DIR\\",\\"ENV_TYPE\\",\\"BUILD_INFO_BUILD_ID\\",\\"BUILD_INFO_BUILD_TIME\\",\\"BUILD_INFO_CURRENT_VERSION\\",\\"HOST\\",\\"ROOT_URL\\",\\"HOST_INTERNAL\\",\\"HOST_CANONICAL\\",\\"ROOT_URL_INTERNAL\\",\\"KUBE_NAMESPACE\\",\\"KUBE_APP_NAME\\",\\"KUBE_APP_NAME_PREFIX\\"]"
1697
+ - export _ALL_ENV_VAR_KEYS="[\\"ENV_SHORT\\",\\"APP_DIR\\",\\"ENV_TYPE\\",\\"BUILD_INFO_BUILD_ID\\",\\"BUILD_INFO_BUILD_TIME\\",\\"BUILD_INFO_CURRENT_VERSION\\",\\"HOSTNAME\\",\\"ROOT_URL\\",\\"HOSTNAME_INTERNAL\\",\\"ROOT_URL_INTERNAL\\",\\"KUBE_NAMESPACE\\",\\"KUBE_APP_NAME\\",\\"KUBE_APP_NAME_PREFIX\\"]"
1719
1698
  - export RELEASE_NAME="pan-test-app-prod-api"
1720
1699
  - export HELM_EXPERIMENTAL_OCI="1"
1721
1700
  - export KUBE_DOCKER_IMAGE_PULL_SECRET="gitlab-registry-api"
1722
1701
  - export HELM_GITLAB_CHART_NAME="/helm-charts/the-panter-chart"
1723
1702
  - export HELM_ARGS=""
1724
1703
  - export COMPONENT_NAME="api"
1725
- - export BUILD_ID="$(git describe --tags 2>/dev/null || git rev-parse HEAD)"
1726
- - echo -e "\\e[0Ksection_end:$(date +%s):injectvars\\r\\e[0K"
1704
+ - collapseable_section_end "injectvars"
1727
1705
  - kubectl config set-cluster "kube-pan-test-app-prod-api" --server="$CL_prod_api_KUBE_URL" --certificate-authority <(echo $CL_prod_api_KUBE_CA_PEM | base64 -d) --embed-certs=true
1728
1706
  - kubectl config set-credentials "kube-pan-test-app-prod-api" --token="$CL_prod_api_KUBE_TOKEN"
1729
1707
  - kubectl config set-context "kube-pan-test-app-prod-api" --cluster="kube-pan-test-app-prod-api" --user="kube-pan-test-app-prod-api" --namespace="pan-test-app-prod"