@catladder/pipeline 1.170.1 → 2.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/bash/BashExpression.d.ts +1 -6
- package/dist/bash/BashExpression.js +2 -15
- package/dist/bash/bashEscape.d.ts +34 -0
- package/dist/bash/bashEscape.js +114 -0
- package/dist/bash/bashYaml.js +25 -2
- package/dist/bash/getInjectVarsScript.js +4 -2
- package/dist/bash/index.d.ts +2 -0
- package/dist/bash/index.js +26 -0
- package/dist/build/base/createAppBuildJob.js +3 -3
- package/dist/build/base/writeDotEnv.js +6 -4
- package/dist/build/custom/testJob.js +12 -12
- package/dist/build/docker.d.ts +3 -3
- package/dist/build/node/buildJob.js +1 -1
- package/dist/build/node/cache.d.ts +2 -4
- package/dist/build/node/cache.js +3 -24
- package/dist/build/node/testJob.js +11 -11
- package/dist/build/rails/build.js +1 -1
- package/dist/build/rails/test.js +8 -8
- package/dist/build/types.d.ts +0 -10
- package/dist/constants.js +1 -1
- package/dist/context/createComponentContext.js +0 -1
- package/dist/context/getEnvConfig.js +2 -1
- package/dist/context/getEnvironment.js +1 -2
- package/dist/context/getEnvironmentVariables.d.ts +5 -6
- package/dist/context/getEnvironmentVariables.js +50 -38
- package/dist/deploy/base/deploy.js +3 -3
- package/dist/deploy/cloudRun/createJobs/getCloudRunDeployScripts.js +2 -2
- package/dist/deploy/cloudRun/index.js +2 -2
- package/dist/deploy/cloudRun/utils/getServiceName.d.ts +1 -1
- package/dist/deploy/kubernetes/cloudSql/index.d.ts +2 -2
- package/dist/deploy/kubernetes/cloudSql/index.js +3 -14
- package/dist/deploy/kubernetes/deployJob.js +1 -3
- package/dist/deploy/kubernetes/index.js +2 -2
- package/dist/deploy/kubernetes/kubeEnv.d.ts +3 -3
- package/dist/deploy/kubernetes/kubeValues.d.ts +3 -4
- package/dist/deploy/kubernetes/kubeValues.js +2 -3
- package/dist/deploy/types/base.d.ts +0 -6
- package/dist/deploy/types/kubernetes.d.ts +1 -34
- package/dist/globalScriptFunctions/index.d.ts +14 -0
- package/dist/globalScriptFunctions/index.js +37 -0
- package/dist/index.d.ts +3 -1
- package/dist/index.js +3 -1
- package/dist/pipeline/gitlab/createGitlabJobs.js +3 -5
- package/dist/pipeline/gitlab/createGitlabPipeline.d.ts +1 -0
- package/dist/pipeline/gitlab/createGitlabPipeline.js +38 -2
- package/dist/pipeline/packageManager.js +1 -1
- package/dist/runner/index.d.ts +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/dist/types/config.d.ts +6 -9
- package/dist/types/context.d.ts +2 -9
- package/dist/types/gitlab-types.d.ts +1 -0
- package/dist/types/jobs.d.ts +0 -8
- package/dist/utils/gitlab.js +4 -1
- package/dist/utils/writeFiles.js +1 -7
- package/dist/variables/VariableValue.d.ts +3 -0
- package/dist/variables/VariableValue.js +5 -0
- package/dist/variables/VariableValueContainingReferences.d.ts +24 -0
- package/dist/variables/VariableValueContainingReferences.js +97 -0
- package/dist/variables/__tests__/resolveAllReferences.test.js +219 -0
- package/dist/variables/__tests__/resolveAllReferencesOnce.test.d.ts +1 -0
- package/dist/variables/__tests__/resolveAllReferencesOnce.test.js +171 -0
- package/dist/variables/__tests__/resolveReferencesOnce.test.d.ts +1 -0
- package/dist/variables/__tests__/resolveReferencesOnce.test.js +202 -0
- package/dist/variables/__tests__/variableValue.test.d.ts +1 -0
- package/dist/variables/__tests__/variableValue.test.js +36 -0
- package/dist/variables/resolveAllReferences.d.ts +3 -0
- package/dist/{bash/replaceAsync.js → variables/resolveAllReferences.js} +60 -40
- package/dist/variables/resolveAllReferencesOnce.d.ts +5 -0
- package/dist/variables/resolveAllReferencesOnce.js +191 -0
- package/dist/variables/resolveReferencesOnce.d.ts +8 -0
- package/dist/variables/resolveReferencesOnce.js +22 -0
- package/examples/__snapshots__/cloud-run-http2.test.ts.snap +312 -238
- package/examples/__snapshots__/cloud-run-memory-limit.test.ts.snap +312 -238
- package/examples/__snapshots__/cloud-run-meteor-with-worker.test.ts.snap +312 -222
- package/examples/__snapshots__/cloud-run-nextjs.test.ts.snap +1436 -0
- package/examples/__snapshots__/cloud-run-no-cpu-throttling.test.ts.snap +312 -238
- package/examples/__snapshots__/cloud-run-no-service.test.ts.snap +316 -238
- package/examples/__snapshots__/cloud-run-non-public.test.ts.snap +312 -238
- package/examples/__snapshots__/cloud-run-post-stop-job.test.ts.snap +313 -238
- package/examples/__snapshots__/cloud-run-service-custom-vpc-connector.test.ts.snap +312 -238
- package/examples/__snapshots__/cloud-run-service-custom-vpc.test.ts.snap +312 -238
- package/examples/__snapshots__/cloud-run-service-gen2.test.ts.snap +312 -238
- package/examples/__snapshots__/cloud-run-service-increase-timout.test.ts.snap +312 -238
- package/examples/__snapshots__/cloud-run-service-with-volumes.test.ts.snap +316 -238
- package/examples/__snapshots__/cloud-run-storybook.test.ts.snap +294 -220
- package/examples/__snapshots__/cloud-run-with-ngnix.test.ts.snap +312 -238
- package/examples/__snapshots__/cloud-run-with-sql-reuse-db.test.ts.snap +652 -486
- package/examples/__snapshots__/cloud-run-with-sql.test.ts.snap +282 -288
- package/examples/__snapshots__/cloud-run-with-worker.test.ts.snap +312 -238
- package/examples/__snapshots__/custom-build-job-with-tests.test.ts.snap +284 -194
- package/examples/__snapshots__/custom-build-job.test.ts.snap +278 -188
- package/examples/__snapshots__/custom-deploy.test.ts.snap +220 -154
- package/examples/__snapshots__/custom-envs.test.ts.snap +216 -126
- package/examples/__snapshots__/custom-sbom-java.test.ts.snap +278 -188
- package/examples/__snapshots__/git-submodule.test.ts.snap +312 -238
- package/examples/__snapshots__/kubernetes-application-customization.test.ts.snap +231 -253
- package/examples/__snapshots__/kubernetes-with-cloud-sql.test.ts.snap +240 -262
- package/examples/__snapshots__/kubernetes-with-jobs.test.ts.snap +504 -506
- package/examples/__snapshots__/kubernetes-with-mongodb.test.ts.snap +239 -261
- package/examples/__snapshots__/local-dot-env.test.ts.snap +236 -238
- package/examples/__snapshots__/meteor-kubernetes.test.ts.snap +236 -242
- package/examples/__snapshots__/multiline-var.test.ts.snap +1355 -973
- package/examples/__snapshots__/native-app.test.ts.snap +438 -392
- package/examples/__snapshots__/node-build-with-custom-image.test.ts.snap +312 -238
- package/examples/__snapshots__/node-build-with-docker-additions.test.ts.snap +312 -238
- package/examples/__snapshots__/rails-k8s-with-worker-dockerfile.test.ts.snap +186 -188
- package/examples/__snapshots__/rails-k8s-with-worker.test.ts.snap +162 -164
- package/examples/__snapshots__/referencing-other-vars.test.ts.snap +971 -765
- package/examples/__snapshots__/wait-for-other-deploy.test.ts.snap +330 -228
- package/examples/__snapshots__/{workspace-api-www-custom-cache.test.ts.snap → workspace-api-www-turbo-cache.test.ts.snap} +457 -499
- package/examples/__snapshots__/workspace-api-www.test.ts.snap +452 -482
- package/examples/{workspace-api-www-custom-cache.test.ts → cloud-run-nextjs.test.ts} +2 -2
- package/examples/cloud-run-nextjs.ts +28 -0
- package/examples/cloud-run-with-sql.ts +0 -1
- package/examples/kubernetes-application-customization.ts +1 -0
- package/examples/kubernetes-with-cloud-sql.ts +1 -0
- package/examples/kubernetes-with-jobs.ts +1 -0
- package/examples/kubernetes-with-mongodb.ts +1 -0
- package/examples/meteor-kubernetes.ts +1 -1
- package/examples/native-app.ts +10 -7
- package/examples/rails-k8s-with-worker.ts +7 -1
- package/examples/{kubernetes-with-cloud-sql-legacy.test.ts → workspace-api-www-turbo-cache.test.ts} +2 -2
- package/examples/{workspace-api-www-custom-cache.ts → workspace-api-www-turbo-cache.ts} +4 -3
- package/examples/workspace-api-www.ts +3 -2
- package/package.json +2 -6
- package/scripts/generate-examples-test.ts +0 -7
- package/src/bash/BashExpression.ts +0 -13
- package/src/bash/bashEscape.ts +158 -0
- package/src/bash/bashYaml.ts +36 -2
- package/src/bash/getInjectVarsScript.ts +11 -2
- package/src/bash/index.ts +2 -0
- package/src/build/base/createAppBuildJob.ts +0 -1
- package/src/build/base/writeDotEnv.ts +6 -6
- package/src/build/custom/testJob.ts +0 -1
- package/src/build/node/buildJob.ts +2 -2
- package/src/build/node/cache.ts +0 -29
- package/src/build/node/testJob.ts +0 -1
- package/src/build/rails/build.ts +0 -1
- package/src/build/rails/test.ts +0 -1
- package/src/build/types.ts +0 -13
- package/src/context/createComponentContext.ts +0 -1
- package/src/context/getEnvConfig.ts +2 -2
- package/src/context/getEnvironment.ts +1 -1
- package/src/context/getEnvironmentContext.ts +1 -1
- package/src/context/getEnvironmentVariables.ts +44 -51
- package/src/deploy/base/deploy.ts +1 -1
- package/src/deploy/cloudRun/createJobs/getCloudRunDeployScripts.ts +4 -12
- package/src/deploy/cloudRun/index.ts +2 -2
- package/src/deploy/kubernetes/cloudSql/index.ts +3 -16
- package/src/deploy/kubernetes/deployJob.ts +0 -2
- package/src/deploy/kubernetes/index.ts +2 -2
- package/src/deploy/kubernetes/kubeEnv.ts +3 -3
- package/src/deploy/kubernetes/kubeValues.ts +5 -8
- package/src/deploy/types/base.ts +0 -6
- package/src/deploy/types/kubernetes.ts +1 -36
- package/src/globalScriptFunctions/index.ts +30 -0
- package/src/index.ts +2 -0
- package/src/pipeline/gitlab/createGitlabJobs.ts +1 -4
- package/src/pipeline/gitlab/createGitlabPipeline.ts +8 -1
- package/src/pipeline/packageManager.ts +7 -5
- package/src/runner/index.ts +0 -1
- package/src/types/config.ts +6 -9
- package/src/types/context.ts +3 -9
- package/src/types/gitlab-types.ts +1 -0
- package/src/types/jobs.ts +0 -8
- package/src/utils/gitlab.ts +19 -2
- package/src/utils/writeFiles.ts +1 -2
- package/src/variables/VariableValue.ts +6 -0
- package/src/variables/VariableValueContainingReferences.ts +89 -0
- package/src/variables/__tests__/resolveAllReferences.test.ts +110 -0
- package/src/variables/__tests__/resolveAllReferencesOnce.test.ts +64 -0
- package/src/variables/__tests__/resolveReferencesOnce.test.ts +117 -0
- package/src/variables/__tests__/variableValue.test.ts +73 -0
- package/src/variables/resolveAllReferences.ts +46 -0
- package/src/variables/resolveAllReferencesOnce.ts +44 -0
- package/src/variables/resolveReferencesOnce.ts +29 -0
- package/bin/catladder-gitlab-dev.js +0 -3
- package/bin/catladder-gitlab.js +0 -3
- package/dist/bash/replaceAsync.d.ts +0 -2
- package/dist/bundles/catladder-gitlab/index.js +0 -15
- package/dist/context/__tests__/resolveReferences.test.js +0 -368
- package/dist/context/resolveReferences.d.ts +0 -6
- package/dist/context/resolveReferences.js +0 -286
- package/dist/deploy/kubernetes/processSecretsAsFiles.d.ts +0 -85
- package/dist/deploy/kubernetes/processSecretsAsFiles.js +0 -33
- package/examples/__snapshots__/kubernetes-with-cloud-sql-legacy.test.ts.snap +0 -1795
- package/examples/kubernetes-with-cloud-sql-legacy.ts +0 -35
- package/scripts/bundle +0 -2
- package/src/bash/replaceAsync.ts +0 -49
- package/src/context/__tests__/resolveReferences.test.ts +0 -148
- package/src/context/resolveReferences.ts +0 -93
- package/src/deploy/kubernetes/processSecretsAsFiles.ts +0 -35
- /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
|
-
-
|
|
86
|
+
- collapseable_section_start "injectvars" "Injecting variables"
|
|
57
87
|
- export APP_PATH="api"
|
|
58
|
-
-
|
|
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
|
-
-
|
|
112
|
+
- collapseable_section_start "injectvars" "Injecting variables"
|
|
83
113
|
- export APP_PATH="api"
|
|
84
|
-
-
|
|
85
|
-
-
|
|
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
|
-
-
|
|
118
|
+
- collapseable_section_end "nodeinstall"
|
|
89
119
|
- cd api
|
|
90
|
-
-
|
|
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
|
-
-
|
|
94
|
-
-
|
|
123
|
+
- collapseable_section_end "nodeinstall"
|
|
124
|
+
- collapseable_section_start "yarninstall" "Yarn install"
|
|
95
125
|
- yarn install --immutable
|
|
96
|
-
-
|
|
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
|
-
-
|
|
153
|
+
- collapseable_section_start "injectvars" "Injecting variables"
|
|
124
154
|
- export APP_PATH="api"
|
|
125
|
-
-
|
|
126
|
-
-
|
|
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
|
-
-
|
|
159
|
+
- collapseable_section_end "nodeinstall"
|
|
130
160
|
- cd api
|
|
131
|
-
-
|
|
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
|
-
-
|
|
135
|
-
-
|
|
164
|
+
- collapseable_section_end "nodeinstall"
|
|
165
|
+
- collapseable_section_start "yarninstall" "Yarn install"
|
|
136
166
|
- yarn install --immutable
|
|
137
|
-
-
|
|
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
|
-
-
|
|
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
|
|
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
|
|
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\\",\\"
|
|
180
|
-
-
|
|
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
|
-
-
|
|
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
|
-
-
|
|
214
|
+
- collapseable_section_end "nodeinstall"
|
|
186
215
|
- cd api
|
|
187
|
-
-
|
|
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
|
-
-
|
|
191
|
-
-
|
|
219
|
+
- collapseable_section_end "nodeinstall"
|
|
220
|
+
- collapseable_section_start "yarninstall" "Yarn install"
|
|
192
221
|
- yarn install --immutable
|
|
193
|
-
-
|
|
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
|
-
-
|
|
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
|
-
-
|
|
282
|
+
- collapseable_section_end "injectvars"
|
|
258
283
|
- ensureNodeDockerfile
|
|
259
|
-
-
|
|
284
|
+
- collapseable_section_start "docker-login" "Docker Login"
|
|
260
285
|
- docker login --username gitlab-ci-token --password $CI_JOB_TOKEN $CI_REGISTRY
|
|
261
|
-
-
|
|
262
|
-
-
|
|
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
|
-
-
|
|
265
|
-
-
|
|
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
|
-
-
|
|
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
|
-
-
|
|
289
|
-
-
|
|
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
|
-
-
|
|
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
|
|
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
|
|
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\\",\\"
|
|
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
|
-
-
|
|
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
|
-
-
|
|
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
|
-
|
|
379
|
+
$(printf %s "$(git describe --tags 2>/dev/null || git rev-parse HEAD)" | sed '1!s/^/ /')
|
|
357
380
|
BUILD_INFO_BUILD_TIME: |-
|
|
358
|
-
|
|
381
|
+
$(printf %s "$CI_JOB_STARTED_AT" | sed '1!s/^/ /')
|
|
359
382
|
BUILD_INFO_CURRENT_VERSION: |-
|
|
360
|
-
|
|
361
|
-
|
|
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
|
-
|
|
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","
|
|
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
|
-
-
|
|
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
|
-
-
|
|
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
|
|
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
|
|
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\\",\\"
|
|
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
|
-
-
|
|
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
|
-
-
|
|
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
|
|
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
|
|
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\\",\\"
|
|
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
|
-
-
|
|
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
|
-
-
|
|
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
|
|
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
|
|
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\\",\\"
|
|
590
|
-
-
|
|
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
|
-
-
|
|
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
|
-
-
|
|
611
|
+
- collapseable_section_end "nodeinstall"
|
|
596
612
|
- cd api
|
|
597
|
-
-
|
|
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
|
-
-
|
|
601
|
-
-
|
|
616
|
+
- collapseable_section_end "nodeinstall"
|
|
617
|
+
- collapseable_section_start "yarninstall" "Yarn install"
|
|
602
618
|
- yarn install --immutable
|
|
603
|
-
-
|
|
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
|
-
-
|
|
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
|
-
-
|
|
677
|
+
- collapseable_section_end "injectvars"
|
|
666
678
|
- ensureNodeDockerfile
|
|
667
|
-
-
|
|
679
|
+
- collapseable_section_start "docker-login" "Docker Login"
|
|
668
680
|
- docker login --username gitlab-ci-token --password $CI_JOB_TOKEN $CI_REGISTRY
|
|
669
|
-
-
|
|
670
|
-
-
|
|
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
|
-
-
|
|
673
|
-
-
|
|
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
|
-
-
|
|
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
|
-
-
|
|
695
|
-
-
|
|
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
|
-
-
|
|
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
|
|
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
|
|
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\\",\\"
|
|
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
|
-
-
|
|
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
|
-
-
|
|
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
|
-
|
|
770
|
+
$(printf %s "$(git describe --tags 2>/dev/null || git rev-parse HEAD)" | sed '1!s/^/ /')
|
|
761
771
|
BUILD_INFO_BUILD_TIME: |-
|
|
762
|
-
|
|
772
|
+
$(printf %s "$CI_JOB_STARTED_AT" | sed '1!s/^/ /')
|
|
763
773
|
BUILD_INFO_CURRENT_VERSION: |-
|
|
764
|
-
|
|
765
|
-
|
|
766
|
-
|
|
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
|
-
|
|
769
|
-
|
|
770
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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","
|
|
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
|
-
|
|
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
|
-
-
|
|
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
|
-
-
|
|
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
|
|
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
|
|
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\\",\\"
|
|
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
|
-
-
|
|
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
|
-
-
|
|
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
|
|
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
|
|
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\\",\\"
|
|
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
|
-
-
|
|
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
|
-
-
|
|
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
|
|
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
|
|
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\\",\\"
|
|
989
|
-
-
|
|
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
|
-
-
|
|
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
|
-
-
|
|
997
|
+
- collapseable_section_end "nodeinstall"
|
|
995
998
|
- cd api
|
|
996
|
-
-
|
|
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
|
-
-
|
|
1000
|
-
-
|
|
1002
|
+
- collapseable_section_end "nodeinstall"
|
|
1003
|
+
- collapseable_section_start "yarninstall" "Yarn install"
|
|
1001
1004
|
- yarn install --immutable
|
|
1002
|
-
-
|
|
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
|
-
-
|
|
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
|
-
-
|
|
1063
|
+
- collapseable_section_end "injectvars"
|
|
1065
1064
|
- ensureNodeDockerfile
|
|
1066
|
-
-
|
|
1065
|
+
- collapseable_section_start "docker-login" "Docker Login"
|
|
1067
1066
|
- docker login --username gitlab-ci-token --password $CI_JOB_TOKEN $CI_REGISTRY
|
|
1068
|
-
-
|
|
1069
|
-
-
|
|
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
|
-
-
|
|
1072
|
-
-
|
|
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
|
-
-
|
|
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
|
-
-
|
|
1094
|
-
-
|
|
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
|
-
-
|
|
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
|
|
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
|
|
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\\",\\"
|
|
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
|
-
-
|
|
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
|
-
-
|
|
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
|
-
|
|
1156
|
+
$(printf %s "$(git describe --tags 2>/dev/null || git rev-parse HEAD)" | sed '1!s/^/ /')
|
|
1160
1157
|
BUILD_INFO_BUILD_TIME: |-
|
|
1161
|
-
|
|
1158
|
+
$(printf %s "$CI_JOB_STARTED_AT" | sed '1!s/^/ /')
|
|
1162
1159
|
BUILD_INFO_CURRENT_VERSION: |-
|
|
1163
|
-
|
|
1164
|
-
|
|
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
|
-
|
|
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","
|
|
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
|
-
-
|
|
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
|
-
-
|
|
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
|
|
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
|
|
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\\",\\"
|
|
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
|
-
-
|
|
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
|
-
-
|
|
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
|
|
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
|
|
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\\",\\"
|
|
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
|
-
-
|
|
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
|
-
-
|
|
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
|
|
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
|
|
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\\",\\"
|
|
1380
|
-
-
|
|
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
|
-
-
|
|
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
|
-
-
|
|
1375
|
+
- collapseable_section_end "nodeinstall"
|
|
1386
1376
|
- cd api
|
|
1387
|
-
-
|
|
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
|
-
-
|
|
1391
|
-
-
|
|
1380
|
+
- collapseable_section_end "nodeinstall"
|
|
1381
|
+
- collapseable_section_start "yarninstall" "Yarn install"
|
|
1392
1382
|
- yarn install --immutable
|
|
1393
|
-
-
|
|
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
|
-
-
|
|
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
|
-
-
|
|
1441
|
+
- collapseable_section_end "injectvars"
|
|
1456
1442
|
- ensureNodeDockerfile
|
|
1457
|
-
-
|
|
1443
|
+
- collapseable_section_start "docker-login" "Docker Login"
|
|
1458
1444
|
- docker login --username gitlab-ci-token --password $CI_JOB_TOKEN $CI_REGISTRY
|
|
1459
|
-
-
|
|
1460
|
-
-
|
|
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
|
-
-
|
|
1463
|
-
-
|
|
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
|
-
-
|
|
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
|
-
-
|
|
1485
|
-
-
|
|
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
|
-
-
|
|
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
|
|
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
|
|
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\\",\\"
|
|
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
|
-
-
|
|
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
|
-
-
|
|
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
|
-
|
|
1534
|
+
$(printf %s "$(git describe --tags 2>/dev/null || git rev-parse HEAD)" | sed '1!s/^/ /')
|
|
1551
1535
|
BUILD_INFO_BUILD_TIME: |-
|
|
1552
|
-
|
|
1536
|
+
$(printf %s "$CI_JOB_STARTED_AT" | sed '1!s/^/ /')
|
|
1553
1537
|
BUILD_INFO_CURRENT_VERSION: |-
|
|
1554
|
-
|
|
1555
|
-
|
|
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
|
-
|
|
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","
|
|
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
|
-
-
|
|
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
|
-
-
|
|
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
|
|
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
|
|
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\\",\\"
|
|
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
|
-
-
|
|
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
|
-
-
|
|
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
|
|
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
|
|
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\\",\\"
|
|
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
|
-
-
|
|
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"
|