@catladder/pipeline 1.170.1 → 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.
- 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/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
|
|
@@ -404,7 +425,7 @@ api 🧪 test:
|
|
|
404
425
|
0 * * * *
|
|
405
426
|
|
|
406
427
|
EOF
|
|
407
|
-
-
|
|
428
|
+
- collapseable_section_end "writeallvalues"
|
|
408
429
|
- kubernetesCreateSecret
|
|
409
430
|
- kubernetesDeploy
|
|
410
431
|
- echo 'Uploading SBOM to Dependency Track'
|
|
@@ -449,30 +470,28 @@ api 🧪 test:
|
|
|
449
470
|
KUBERNETES_MEMORY_LIMIT: 400Mi
|
|
450
471
|
GIT_STRATEGY: none
|
|
451
472
|
script:
|
|
452
|
-
-
|
|
473
|
+
- collapseable_section_start "injectvars" "Injecting variables"
|
|
453
474
|
- export ENV_SHORT="dev"
|
|
454
475
|
- export APP_DIR="api"
|
|
455
476
|
- export ENV_TYPE="dev"
|
|
456
477
|
- export BUILD_INFO_BUILD_ID="$(git describe --tags 2>/dev/null || git rev-parse HEAD)"
|
|
457
478
|
- export BUILD_INFO_BUILD_TIME="$CI_JOB_STARTED_AT"
|
|
458
479
|
- 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")"
|
|
459
|
-
- export
|
|
480
|
+
- export HOSTNAME="api.dev.test-app.pan.panter.cloud"
|
|
460
481
|
- export ROOT_URL="https://api.dev.test-app.pan.panter.cloud"
|
|
461
|
-
- export
|
|
462
|
-
- export HOST_CANONICAL="api.dev.test-app.pan.panter.cloud"
|
|
482
|
+
- export HOSTNAME_INTERNAL="api.dev.test-app.pan.panter.cloud"
|
|
463
483
|
- export ROOT_URL_INTERNAL="https://api.dev.test-app.pan.panter.cloud"
|
|
464
484
|
- export KUBE_NAMESPACE="pan-test-app-dev"
|
|
465
485
|
- export KUBE_APP_NAME="api"
|
|
466
486
|
- export KUBE_APP_NAME_PREFIX=""
|
|
467
|
-
- export _ALL_ENV_VAR_KEYS="[\\"ENV_SHORT\\",\\"APP_DIR\\",\\"ENV_TYPE\\",\\"BUILD_INFO_BUILD_ID\\",\\"BUILD_INFO_BUILD_TIME\\",\\"BUILD_INFO_CURRENT_VERSION\\",\\"
|
|
487
|
+
- 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\\"]"
|
|
468
488
|
- export RELEASE_NAME="pan-test-app-dev-api"
|
|
469
489
|
- export HELM_EXPERIMENTAL_OCI="1"
|
|
470
490
|
- export KUBE_DOCKER_IMAGE_PULL_SECRET="gitlab-registry-api"
|
|
471
491
|
- export HELM_GITLAB_CHART_NAME="/helm-charts/the-panter-chart"
|
|
472
492
|
- export HELM_ARGS=""
|
|
473
493
|
- export COMPONENT_NAME="api"
|
|
474
|
-
-
|
|
475
|
-
- echo -e "\\e[0Ksection_end:$(date +%s):injectvars\\r\\e[0K"
|
|
494
|
+
- collapseable_section_end "injectvars"
|
|
476
495
|
- 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
|
|
477
496
|
- kubectl config set-credentials "kube-pan-test-app-dev-api" --token="$CL_dev_api_KUBE_TOKEN"
|
|
478
497
|
- 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"
|
|
@@ -508,30 +527,28 @@ api 🧪 test:
|
|
|
508
527
|
KUBERNETES_MEMORY_LIMIT: 400Mi
|
|
509
528
|
GIT_STRATEGY: none
|
|
510
529
|
script:
|
|
511
|
-
-
|
|
530
|
+
- collapseable_section_start "injectvars" "Injecting variables"
|
|
512
531
|
- export ENV_SHORT="dev"
|
|
513
532
|
- export APP_DIR="api"
|
|
514
533
|
- export ENV_TYPE="dev"
|
|
515
534
|
- export BUILD_INFO_BUILD_ID="$(git describe --tags 2>/dev/null || git rev-parse HEAD)"
|
|
516
535
|
- export BUILD_INFO_BUILD_TIME="$CI_JOB_STARTED_AT"
|
|
517
536
|
- 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")"
|
|
518
|
-
- export
|
|
537
|
+
- export HOSTNAME="api.dev.test-app.pan.panter.cloud"
|
|
519
538
|
- export ROOT_URL="https://api.dev.test-app.pan.panter.cloud"
|
|
520
|
-
- export
|
|
521
|
-
- export HOST_CANONICAL="api.dev.test-app.pan.panter.cloud"
|
|
539
|
+
- export HOSTNAME_INTERNAL="api.dev.test-app.pan.panter.cloud"
|
|
522
540
|
- export ROOT_URL_INTERNAL="https://api.dev.test-app.pan.panter.cloud"
|
|
523
541
|
- export KUBE_NAMESPACE="pan-test-app-dev"
|
|
524
542
|
- export KUBE_APP_NAME="api"
|
|
525
543
|
- export KUBE_APP_NAME_PREFIX=""
|
|
526
|
-
- export _ALL_ENV_VAR_KEYS="[\\"ENV_SHORT\\",\\"APP_DIR\\",\\"ENV_TYPE\\",\\"BUILD_INFO_BUILD_ID\\",\\"BUILD_INFO_BUILD_TIME\\",\\"BUILD_INFO_CURRENT_VERSION\\",\\"
|
|
544
|
+
- 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\\"]"
|
|
527
545
|
- export RELEASE_NAME="pan-test-app-dev-api"
|
|
528
546
|
- export HELM_EXPERIMENTAL_OCI="1"
|
|
529
547
|
- export KUBE_DOCKER_IMAGE_PULL_SECRET="gitlab-registry-api"
|
|
530
548
|
- export HELM_GITLAB_CHART_NAME="/helm-charts/the-panter-chart"
|
|
531
549
|
- export HELM_ARGS=""
|
|
532
550
|
- export COMPONENT_NAME="api"
|
|
533
|
-
-
|
|
534
|
-
- echo -e "\\e[0Ksection_end:$(date +%s):injectvars\\r\\e[0K"
|
|
551
|
+
- collapseable_section_end "injectvars"
|
|
535
552
|
- 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
|
|
536
553
|
- kubectl config set-credentials "kube-pan-test-app-dev-api" --token="$CL_dev_api_KUBE_TOKEN"
|
|
537
554
|
- 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"
|
|
@@ -562,36 +579,35 @@ api 🧪 test:
|
|
|
562
579
|
KUBERNETES_MEMORY_REQUEST: 1Gi
|
|
563
580
|
KUBERNETES_MEMORY_LIMIT: 4Gi
|
|
564
581
|
script:
|
|
565
|
-
-
|
|
582
|
+
- collapseable_section_start "injectvars" "Injecting variables"
|
|
566
583
|
- export ENV_SHORT="review"
|
|
567
584
|
- export APP_DIR="api"
|
|
568
585
|
- export ENV_TYPE="review"
|
|
569
586
|
- export BUILD_INFO_BUILD_ID="$(git describe --tags 2>/dev/null || git rev-parse HEAD)"
|
|
570
587
|
- export BUILD_INFO_BUILD_TIME="$CI_JOB_STARTED_AT"
|
|
571
588
|
- 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")"
|
|
572
|
-
- export
|
|
589
|
+
- 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"
|
|
573
590
|
- 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"
|
|
574
|
-
- export
|
|
575
|
-
- 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"
|
|
591
|
+
- 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"
|
|
576
592
|
- 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"
|
|
577
593
|
- export KUBE_NAMESPACE="pan-test-app-review"
|
|
578
594
|
- 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"
|
|
579
595
|
- 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"; })-"
|
|
580
|
-
- export _ALL_ENV_VAR_KEYS="[\\"ENV_SHORT\\",\\"APP_DIR\\",\\"ENV_TYPE\\",\\"BUILD_INFO_BUILD_ID\\",\\"BUILD_INFO_BUILD_TIME\\",\\"BUILD_INFO_CURRENT_VERSION\\",\\"
|
|
581
|
-
-
|
|
596
|
+
- 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\\"]"
|
|
597
|
+
- collapseable_section_end "injectvars"
|
|
582
598
|
- echo '{"id":"$(git describe --tags 2>/dev/null || git rev-parse HEAD)","time":"$CI_JOB_STARTED_AT"}' > api/__build_info.json
|
|
583
|
-
-
|
|
599
|
+
- collapseable_section_start "nodeinstall" "Ensure node version"
|
|
584
600
|
- if [ -f ~/.nvm/nvm.sh ]; then source ~/.nvm/nvm.sh; fi
|
|
585
601
|
- if command -v nvm &> /dev/null && [ -f ./.nvmrc ]; then nvm install; fi
|
|
586
|
-
-
|
|
602
|
+
- collapseable_section_end "nodeinstall"
|
|
587
603
|
- cd api
|
|
588
|
-
-
|
|
604
|
+
- collapseable_section_start "nodeinstall" "Ensure node version"
|
|
589
605
|
- if [ -f ~/.nvm/nvm.sh ]; then source ~/.nvm/nvm.sh; fi
|
|
590
606
|
- if command -v nvm &> /dev/null && [ -f ./.nvmrc ]; then nvm install; fi
|
|
591
|
-
-
|
|
592
|
-
-
|
|
607
|
+
- collapseable_section_end "nodeinstall"
|
|
608
|
+
- collapseable_section_start "yarninstall" "Yarn install"
|
|
593
609
|
- yarn install --immutable
|
|
594
|
-
-
|
|
610
|
+
- collapseable_section_end "yarninstall"
|
|
595
611
|
- yarn build
|
|
596
612
|
cache:
|
|
597
613
|
- key: api-yarn
|
|
@@ -602,10 +618,6 @@ api 🧪 test:
|
|
|
602
618
|
policy: pull-push
|
|
603
619
|
paths:
|
|
604
620
|
- api/node_modules
|
|
605
|
-
- key: api-next-cache
|
|
606
|
-
policy: pull-push
|
|
607
|
-
paths:
|
|
608
|
-
- api/.next/cache
|
|
609
621
|
artifacts:
|
|
610
622
|
paths:
|
|
611
623
|
- api/__build_info.json
|
|
@@ -636,7 +648,7 @@ api 🧪 test:
|
|
|
636
648
|
KUBERNETES_MEMORY_REQUEST: 1Gi
|
|
637
649
|
KUBERNETES_MEMORY_LIMIT: 2Gi
|
|
638
650
|
script:
|
|
639
|
-
-
|
|
651
|
+
- collapseable_section_start "injectvars" "Injecting variables"
|
|
640
652
|
- export APP_DIR="api"
|
|
641
653
|
- export DOCKER_BUILD_CONTEXT="."
|
|
642
654
|
- export DOCKER_REGISTRY="$CI_REGISTRY"
|
|
@@ -653,19 +665,19 @@ api 🧪 test:
|
|
|
653
665
|
COPY --chown=node:node api/yarn.lock /app/api/yarn.lock
|
|
654
666
|
COPY --chown=node:node .yarnrc.yml /app/.yarnrc.yml
|
|
655
667
|
COPY --chown=node:node .yarn /app/.yarn"
|
|
656
|
-
-
|
|
668
|
+
- collapseable_section_end "injectvars"
|
|
657
669
|
- ensureNodeDockerfile
|
|
658
|
-
-
|
|
670
|
+
- collapseable_section_start "docker-login" "Docker Login"
|
|
659
671
|
- docker login --username gitlab-ci-token --password $CI_JOB_TOKEN $CI_REGISTRY
|
|
660
|
-
-
|
|
661
|
-
-
|
|
672
|
+
- collapseable_section_end "docker-login"
|
|
673
|
+
- collapseable_section_start "docker-build" "Docker build"
|
|
662
674
|
- 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
|
|
663
|
-
-
|
|
664
|
-
-
|
|
675
|
+
- collapseable_section_end "docker-build"
|
|
676
|
+
- collapseable_section_start "docker-push" "Docker push and tag"
|
|
665
677
|
- docker push $DOCKER_IMAGE:$DOCKER_IMAGE_TAG
|
|
666
678
|
- docker tag $DOCKER_IMAGE:$DOCKER_IMAGE_TAG $DOCKER_CACHE_IMAGE
|
|
667
679
|
- docker push $DOCKER_CACHE_IMAGE
|
|
668
|
-
-
|
|
680
|
+
- collapseable_section_end "docker-push"
|
|
669
681
|
cache:
|
|
670
682
|
- key: api-yarn
|
|
671
683
|
policy: pull
|
|
@@ -682,8 +694,8 @@ api 🧪 test:
|
|
|
682
694
|
image: aquasec/trivy:0.38.3
|
|
683
695
|
variables: {}
|
|
684
696
|
script:
|
|
685
|
-
-
|
|
686
|
-
-
|
|
697
|
+
- collapseable_section_start "injectvars" "Injecting variables"
|
|
698
|
+
- collapseable_section_end "injectvars"
|
|
687
699
|
- trivy fs --quiet --format cyclonedx --output "__sbom.json" api
|
|
688
700
|
artifacts:
|
|
689
701
|
paths:
|
|
@@ -702,22 +714,21 @@ api 🧪 test:
|
|
|
702
714
|
KUBERNETES_MEMORY_REQUEST: 200Mi
|
|
703
715
|
KUBERNETES_MEMORY_LIMIT: 400Mi
|
|
704
716
|
script:
|
|
705
|
-
-
|
|
717
|
+
- collapseable_section_start "injectvars" "Injecting variables"
|
|
706
718
|
- export ENV_SHORT="review"
|
|
707
719
|
- export APP_DIR="api"
|
|
708
720
|
- export ENV_TYPE="review"
|
|
709
721
|
- export BUILD_INFO_BUILD_ID="$(git describe --tags 2>/dev/null || git rev-parse HEAD)"
|
|
710
722
|
- export BUILD_INFO_BUILD_TIME="$CI_JOB_STARTED_AT"
|
|
711
723
|
- 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")"
|
|
712
|
-
- export
|
|
724
|
+
- 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"
|
|
713
725
|
- 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"
|
|
714
|
-
- export
|
|
715
|
-
- 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"
|
|
726
|
+
- 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"
|
|
716
727
|
- 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"
|
|
717
728
|
- export KUBE_NAMESPACE="pan-test-app-review"
|
|
718
729
|
- 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"
|
|
719
730
|
- 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"; })-"
|
|
720
|
-
- export _ALL_ENV_VAR_KEYS="[\\"ENV_SHORT\\",\\"APP_DIR\\",\\"ENV_TYPE\\",\\"BUILD_INFO_BUILD_ID\\",\\"BUILD_INFO_BUILD_TIME\\",\\"BUILD_INFO_CURRENT_VERSION\\",\\"
|
|
731
|
+
- 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\\"]"
|
|
721
732
|
- export DOCKER_REGISTRY="$CI_REGISTRY"
|
|
722
733
|
- export DOCKER_CACHE_IMAGE="$CI_REGISTRY_IMAGE/caches/api"
|
|
723
734
|
- export DOCKER_IMAGE_NAME="review/api"
|
|
@@ -729,13 +740,12 @@ api 🧪 test:
|
|
|
729
740
|
- export HELM_GITLAB_CHART_NAME="/helm-charts/the-panter-chart"
|
|
730
741
|
- export HELM_ARGS=""
|
|
731
742
|
- export COMPONENT_NAME="api"
|
|
732
|
-
-
|
|
733
|
-
- echo -e "\\e[0Ksection_end:$(date +%s):injectvars\\r\\e[0K"
|
|
743
|
+
- collapseable_section_end "injectvars"
|
|
734
744
|
- 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
|
|
735
745
|
- 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"
|
|
736
746
|
- 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"
|
|
737
747
|
- 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"
|
|
738
|
-
-
|
|
748
|
+
- collapseable_section_start "writeallvalues" "Write __all_values.yml for helm deployment"
|
|
739
749
|
- |
|
|
740
750
|
cat > __all_values.yml <<EOF
|
|
741
751
|
env:
|
|
@@ -748,32 +758,30 @@ api 🧪 test:
|
|
|
748
758
|
ENV_TYPE: |-
|
|
749
759
|
review
|
|
750
760
|
BUILD_INFO_BUILD_ID: |-
|
|
751
|
-
|
|
761
|
+
$(printf %s "$(git describe --tags 2>/dev/null || git rev-parse HEAD)" | sed '1!s/^/ /')
|
|
752
762
|
BUILD_INFO_BUILD_TIME: |-
|
|
753
|
-
|
|
763
|
+
$(printf %s "$CI_JOB_STARTED_AT" | sed '1!s/^/ /')
|
|
754
764
|
BUILD_INFO_CURRENT_VERSION: |-
|
|
755
|
-
|
|
756
|
-
|
|
757
|
-
|
|
765
|
+
$(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/^/ /')
|
|
766
|
+
HOSTNAME: |-
|
|
767
|
+
$(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/^/ /')
|
|
758
768
|
ROOT_URL: |-
|
|
759
|
-
|
|
760
|
-
|
|
761
|
-
|
|
762
|
-
HOST_CANONICAL: |-
|
|
763
|
-
$(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/^/ /')
|
|
769
|
+
$(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/^/ /')
|
|
770
|
+
HOSTNAME_INTERNAL: |-
|
|
771
|
+
$(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/^/ /')
|
|
764
772
|
ROOT_URL_INTERNAL: |-
|
|
765
|
-
|
|
773
|
+
$(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/^/ /')
|
|
766
774
|
KUBE_NAMESPACE: |-
|
|
767
775
|
pan-test-app-review
|
|
768
776
|
KUBE_APP_NAME: |-
|
|
769
|
-
|
|
777
|
+
$(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/^/ /')
|
|
770
778
|
KUBE_APP_NAME_PREFIX: |-
|
|
771
|
-
|
|
779
|
+
$(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/^/ /')
|
|
772
780
|
_ALL_ENV_VAR_KEYS: |-
|
|
773
|
-
["ENV_SHORT","APP_DIR","ENV_TYPE","BUILD_INFO_BUILD_ID","BUILD_INFO_BUILD_TIME","BUILD_INFO_CURRENT_VERSION","
|
|
781
|
+
["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"]
|
|
774
782
|
application:
|
|
775
783
|
host: |-
|
|
776
|
-
|
|
784
|
+
$(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/^/ /')
|
|
777
785
|
command: |-
|
|
778
786
|
yarn start
|
|
779
787
|
livenessProbe:
|
|
@@ -795,7 +803,7 @@ api 🧪 test:
|
|
|
795
803
|
cronjobs: {}
|
|
796
804
|
|
|
797
805
|
EOF
|
|
798
|
-
-
|
|
806
|
+
- collapseable_section_end "writeallvalues"
|
|
799
807
|
- kubernetesCreateSecret
|
|
800
808
|
- kubernetesDeploy
|
|
801
809
|
- echo 'Uploading SBOM to Dependency Track'
|
|
@@ -838,30 +846,28 @@ api 🧪 test:
|
|
|
838
846
|
KUBERNETES_MEMORY_LIMIT: 400Mi
|
|
839
847
|
GIT_STRATEGY: none
|
|
840
848
|
script:
|
|
841
|
-
-
|
|
849
|
+
- collapseable_section_start "injectvars" "Injecting variables"
|
|
842
850
|
- export ENV_SHORT="review"
|
|
843
851
|
- export APP_DIR="api"
|
|
844
852
|
- export ENV_TYPE="review"
|
|
845
853
|
- export BUILD_INFO_BUILD_ID="$(git describe --tags 2>/dev/null || git rev-parse HEAD)"
|
|
846
854
|
- export BUILD_INFO_BUILD_TIME="$CI_JOB_STARTED_AT"
|
|
847
855
|
- 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")"
|
|
848
|
-
- export
|
|
856
|
+
- 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"
|
|
849
857
|
- 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"
|
|
850
|
-
- export
|
|
851
|
-
- 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"
|
|
858
|
+
- 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"
|
|
852
859
|
- 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"
|
|
853
860
|
- export KUBE_NAMESPACE="pan-test-app-review"
|
|
854
861
|
- 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"
|
|
855
862
|
- 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"; })-"
|
|
856
|
-
- export _ALL_ENV_VAR_KEYS="[\\"ENV_SHORT\\",\\"APP_DIR\\",\\"ENV_TYPE\\",\\"BUILD_INFO_BUILD_ID\\",\\"BUILD_INFO_BUILD_TIME\\",\\"BUILD_INFO_CURRENT_VERSION\\",\\"
|
|
863
|
+
- 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\\"]"
|
|
857
864
|
- 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"
|
|
858
865
|
- export HELM_EXPERIMENTAL_OCI="1"
|
|
859
866
|
- export KUBE_DOCKER_IMAGE_PULL_SECRET="gitlab-registry-api"
|
|
860
867
|
- export HELM_GITLAB_CHART_NAME="/helm-charts/the-panter-chart"
|
|
861
868
|
- export HELM_ARGS=""
|
|
862
869
|
- export COMPONENT_NAME="api"
|
|
863
|
-
-
|
|
864
|
-
- echo -e "\\e[0Ksection_end:$(date +%s):injectvars\\r\\e[0K"
|
|
870
|
+
- collapseable_section_end "injectvars"
|
|
865
871
|
- 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
|
|
866
872
|
- 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"
|
|
867
873
|
- 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"
|
|
@@ -895,30 +901,28 @@ api 🧪 test:
|
|
|
895
901
|
KUBERNETES_MEMORY_LIMIT: 400Mi
|
|
896
902
|
GIT_STRATEGY: none
|
|
897
903
|
script:
|
|
898
|
-
-
|
|
904
|
+
- collapseable_section_start "injectvars" "Injecting variables"
|
|
899
905
|
- export ENV_SHORT="review"
|
|
900
906
|
- export APP_DIR="api"
|
|
901
907
|
- export ENV_TYPE="review"
|
|
902
908
|
- export BUILD_INFO_BUILD_ID="$(git describe --tags 2>/dev/null || git rev-parse HEAD)"
|
|
903
909
|
- export BUILD_INFO_BUILD_TIME="$CI_JOB_STARTED_AT"
|
|
904
910
|
- 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")"
|
|
905
|
-
- export
|
|
911
|
+
- 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"
|
|
906
912
|
- 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"
|
|
907
|
-
- export
|
|
908
|
-
- 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"
|
|
913
|
+
- 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"
|
|
909
914
|
- 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"
|
|
910
915
|
- export KUBE_NAMESPACE="pan-test-app-review"
|
|
911
916
|
- 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"
|
|
912
917
|
- 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"; })-"
|
|
913
|
-
- export _ALL_ENV_VAR_KEYS="[\\"ENV_SHORT\\",\\"APP_DIR\\",\\"ENV_TYPE\\",\\"BUILD_INFO_BUILD_ID\\",\\"BUILD_INFO_BUILD_TIME\\",\\"BUILD_INFO_CURRENT_VERSION\\",\\"
|
|
918
|
+
- 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\\"]"
|
|
914
919
|
- 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"
|
|
915
920
|
- export HELM_EXPERIMENTAL_OCI="1"
|
|
916
921
|
- export KUBE_DOCKER_IMAGE_PULL_SECRET="gitlab-registry-api"
|
|
917
922
|
- export HELM_GITLAB_CHART_NAME="/helm-charts/the-panter-chart"
|
|
918
923
|
- export HELM_ARGS=""
|
|
919
924
|
- export COMPONENT_NAME="api"
|
|
920
|
-
-
|
|
921
|
-
- echo -e "\\e[0Ksection_end:$(date +%s):injectvars\\r\\e[0K"
|
|
925
|
+
- collapseable_section_end "injectvars"
|
|
922
926
|
- 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
|
|
923
927
|
- 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"
|
|
924
928
|
- 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"
|
|
@@ -947,36 +951,35 @@ api 🧪 test:
|
|
|
947
951
|
KUBERNETES_MEMORY_REQUEST: 1Gi
|
|
948
952
|
KUBERNETES_MEMORY_LIMIT: 4Gi
|
|
949
953
|
script:
|
|
950
|
-
-
|
|
954
|
+
- collapseable_section_start "injectvars" "Injecting variables"
|
|
951
955
|
- export ENV_SHORT="stage"
|
|
952
956
|
- export APP_DIR="api"
|
|
953
957
|
- export ENV_TYPE="stage"
|
|
954
958
|
- export BUILD_INFO_BUILD_ID="$(git describe --tags 2>/dev/null || git rev-parse HEAD)"
|
|
955
959
|
- export BUILD_INFO_BUILD_TIME="$CI_JOB_STARTED_AT"
|
|
956
960
|
- 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")"
|
|
957
|
-
- export
|
|
961
|
+
- export HOSTNAME="api.stage.test-app.pan.panter.cloud"
|
|
958
962
|
- export ROOT_URL="https://api.stage.test-app.pan.panter.cloud"
|
|
959
|
-
- export
|
|
960
|
-
- export HOST_CANONICAL="api.stage.test-app.pan.panter.cloud"
|
|
963
|
+
- export HOSTNAME_INTERNAL="api.stage.test-app.pan.panter.cloud"
|
|
961
964
|
- export ROOT_URL_INTERNAL="https://api.stage.test-app.pan.panter.cloud"
|
|
962
965
|
- export KUBE_NAMESPACE="pan-test-app-stage"
|
|
963
966
|
- export KUBE_APP_NAME="api"
|
|
964
967
|
- export KUBE_APP_NAME_PREFIX=""
|
|
965
|
-
- export _ALL_ENV_VAR_KEYS="[\\"ENV_SHORT\\",\\"APP_DIR\\",\\"ENV_TYPE\\",\\"BUILD_INFO_BUILD_ID\\",\\"BUILD_INFO_BUILD_TIME\\",\\"BUILD_INFO_CURRENT_VERSION\\",\\"
|
|
966
|
-
-
|
|
968
|
+
- 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\\"]"
|
|
969
|
+
- collapseable_section_end "injectvars"
|
|
967
970
|
- echo '{"id":"$(git describe --tags 2>/dev/null || git rev-parse HEAD)","time":"$CI_JOB_STARTED_AT"}' > api/__build_info.json
|
|
968
|
-
-
|
|
971
|
+
- collapseable_section_start "nodeinstall" "Ensure node version"
|
|
969
972
|
- if [ -f ~/.nvm/nvm.sh ]; then source ~/.nvm/nvm.sh; fi
|
|
970
973
|
- if command -v nvm &> /dev/null && [ -f ./.nvmrc ]; then nvm install; fi
|
|
971
|
-
-
|
|
974
|
+
- collapseable_section_end "nodeinstall"
|
|
972
975
|
- cd api
|
|
973
|
-
-
|
|
976
|
+
- collapseable_section_start "nodeinstall" "Ensure node version"
|
|
974
977
|
- if [ -f ~/.nvm/nvm.sh ]; then source ~/.nvm/nvm.sh; fi
|
|
975
978
|
- if command -v nvm &> /dev/null && [ -f ./.nvmrc ]; then nvm install; fi
|
|
976
|
-
-
|
|
977
|
-
-
|
|
979
|
+
- collapseable_section_end "nodeinstall"
|
|
980
|
+
- collapseable_section_start "yarninstall" "Yarn install"
|
|
978
981
|
- yarn install --immutable
|
|
979
|
-
-
|
|
982
|
+
- collapseable_section_end "yarninstall"
|
|
980
983
|
- yarn build
|
|
981
984
|
cache:
|
|
982
985
|
- key: api-yarn
|
|
@@ -987,10 +990,6 @@ api 🧪 test:
|
|
|
987
990
|
policy: pull-push
|
|
988
991
|
paths:
|
|
989
992
|
- api/node_modules
|
|
990
|
-
- key: api-next-cache
|
|
991
|
-
policy: pull-push
|
|
992
|
-
paths:
|
|
993
|
-
- api/.next/cache
|
|
994
993
|
artifacts:
|
|
995
994
|
paths:
|
|
996
995
|
- api/__build_info.json
|
|
@@ -1021,7 +1020,7 @@ api 🧪 test:
|
|
|
1021
1020
|
KUBERNETES_MEMORY_REQUEST: 1Gi
|
|
1022
1021
|
KUBERNETES_MEMORY_LIMIT: 2Gi
|
|
1023
1022
|
script:
|
|
1024
|
-
-
|
|
1023
|
+
- collapseable_section_start "injectvars" "Injecting variables"
|
|
1025
1024
|
- export APP_DIR="api"
|
|
1026
1025
|
- export DOCKER_BUILD_CONTEXT="."
|
|
1027
1026
|
- export DOCKER_REGISTRY="$CI_REGISTRY"
|
|
@@ -1038,19 +1037,19 @@ api 🧪 test:
|
|
|
1038
1037
|
COPY --chown=node:node api/yarn.lock /app/api/yarn.lock
|
|
1039
1038
|
COPY --chown=node:node .yarnrc.yml /app/.yarnrc.yml
|
|
1040
1039
|
COPY --chown=node:node .yarn /app/.yarn"
|
|
1041
|
-
-
|
|
1040
|
+
- collapseable_section_end "injectvars"
|
|
1042
1041
|
- ensureNodeDockerfile
|
|
1043
|
-
-
|
|
1042
|
+
- collapseable_section_start "docker-login" "Docker Login"
|
|
1044
1043
|
- docker login --username gitlab-ci-token --password $CI_JOB_TOKEN $CI_REGISTRY
|
|
1045
|
-
-
|
|
1046
|
-
-
|
|
1044
|
+
- collapseable_section_end "docker-login"
|
|
1045
|
+
- collapseable_section_start "docker-build" "Docker build"
|
|
1047
1046
|
- 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
|
|
1048
|
-
-
|
|
1049
|
-
-
|
|
1047
|
+
- collapseable_section_end "docker-build"
|
|
1048
|
+
- collapseable_section_start "docker-push" "Docker push and tag"
|
|
1050
1049
|
- docker push $DOCKER_IMAGE:$DOCKER_IMAGE_TAG
|
|
1051
1050
|
- docker tag $DOCKER_IMAGE:$DOCKER_IMAGE_TAG $DOCKER_CACHE_IMAGE
|
|
1052
1051
|
- docker push $DOCKER_CACHE_IMAGE
|
|
1053
|
-
-
|
|
1052
|
+
- collapseable_section_end "docker-push"
|
|
1054
1053
|
cache:
|
|
1055
1054
|
- key: api-yarn
|
|
1056
1055
|
policy: pull
|
|
@@ -1067,8 +1066,8 @@ api 🧪 test:
|
|
|
1067
1066
|
image: aquasec/trivy:0.38.3
|
|
1068
1067
|
variables: {}
|
|
1069
1068
|
script:
|
|
1070
|
-
-
|
|
1071
|
-
-
|
|
1069
|
+
- collapseable_section_start "injectvars" "Injecting variables"
|
|
1070
|
+
- collapseable_section_end "injectvars"
|
|
1072
1071
|
- trivy fs --quiet --format cyclonedx --output "__sbom.json" api
|
|
1073
1072
|
artifacts:
|
|
1074
1073
|
paths:
|
|
@@ -1087,22 +1086,21 @@ api 🧪 test:
|
|
|
1087
1086
|
KUBERNETES_MEMORY_REQUEST: 200Mi
|
|
1088
1087
|
KUBERNETES_MEMORY_LIMIT: 400Mi
|
|
1089
1088
|
script:
|
|
1090
|
-
-
|
|
1089
|
+
- collapseable_section_start "injectvars" "Injecting variables"
|
|
1091
1090
|
- export ENV_SHORT="stage"
|
|
1092
1091
|
- export APP_DIR="api"
|
|
1093
1092
|
- export ENV_TYPE="stage"
|
|
1094
1093
|
- export BUILD_INFO_BUILD_ID="$(git describe --tags 2>/dev/null || git rev-parse HEAD)"
|
|
1095
1094
|
- export BUILD_INFO_BUILD_TIME="$CI_JOB_STARTED_AT"
|
|
1096
1095
|
- export BUILD_INFO_CURRENT_VERSION="$(tag=$(git ls-remote origin "refs/tags/v*[0-9]" 2>/dev/null | cut -f 2- | sort -V | tail -1 | sed 's/refs\\/tags\\/v//'); [ -z "$tag" ] && echo "0.0.0" || echo "$tag")"
|
|
1097
|
-
- export
|
|
1096
|
+
- export HOSTNAME="api.stage.test-app.pan.panter.cloud"
|
|
1098
1097
|
- export ROOT_URL="https://api.stage.test-app.pan.panter.cloud"
|
|
1099
|
-
- export
|
|
1100
|
-
- export HOST_CANONICAL="api.stage.test-app.pan.panter.cloud"
|
|
1098
|
+
- export HOSTNAME_INTERNAL="api.stage.test-app.pan.panter.cloud"
|
|
1101
1099
|
- export ROOT_URL_INTERNAL="https://api.stage.test-app.pan.panter.cloud"
|
|
1102
1100
|
- export KUBE_NAMESPACE="pan-test-app-stage"
|
|
1103
1101
|
- export KUBE_APP_NAME="api"
|
|
1104
1102
|
- export KUBE_APP_NAME_PREFIX=""
|
|
1105
|
-
- export _ALL_ENV_VAR_KEYS="[\\"ENV_SHORT\\",\\"APP_DIR\\",\\"ENV_TYPE\\",\\"BUILD_INFO_BUILD_ID\\",\\"BUILD_INFO_BUILD_TIME\\",\\"BUILD_INFO_CURRENT_VERSION\\",\\"
|
|
1103
|
+
- 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\\"]"
|
|
1106
1104
|
- export DOCKER_REGISTRY="$CI_REGISTRY"
|
|
1107
1105
|
- export DOCKER_CACHE_IMAGE="$CI_REGISTRY_IMAGE/caches/api"
|
|
1108
1106
|
- export DOCKER_IMAGE_NAME="stage/api"
|
|
@@ -1114,13 +1112,12 @@ api 🧪 test:
|
|
|
1114
1112
|
- export HELM_GITLAB_CHART_NAME="/helm-charts/the-panter-chart"
|
|
1115
1113
|
- export HELM_ARGS=""
|
|
1116
1114
|
- export COMPONENT_NAME="api"
|
|
1117
|
-
-
|
|
1118
|
-
- echo -e "\\e[0Ksection_end:$(date +%s):injectvars\\r\\e[0K"
|
|
1115
|
+
- collapseable_section_end "injectvars"
|
|
1119
1116
|
- 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
|
|
1120
1117
|
- kubectl config set-credentials "kube-pan-test-app-stage-api" --token="$CL_stage_api_KUBE_TOKEN"
|
|
1121
1118
|
- 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"
|
|
1122
1119
|
- kubectl config use-context "kube-pan-test-app-stage-api"
|
|
1123
|
-
-
|
|
1120
|
+
- collapseable_section_start "writeallvalues" "Write __all_values.yml for helm deployment"
|
|
1124
1121
|
- |
|
|
1125
1122
|
cat > __all_values.yml <<EOF
|
|
1126
1123
|
env:
|
|
@@ -1133,18 +1130,16 @@ api 🧪 test:
|
|
|
1133
1130
|
ENV_TYPE: |-
|
|
1134
1131
|
stage
|
|
1135
1132
|
BUILD_INFO_BUILD_ID: |-
|
|
1136
|
-
|
|
1133
|
+
$(printf %s "$(git describe --tags 2>/dev/null || git rev-parse HEAD)" | sed '1!s/^/ /')
|
|
1137
1134
|
BUILD_INFO_BUILD_TIME: |-
|
|
1138
|
-
|
|
1135
|
+
$(printf %s "$CI_JOB_STARTED_AT" | sed '1!s/^/ /')
|
|
1139
1136
|
BUILD_INFO_CURRENT_VERSION: |-
|
|
1140
|
-
|
|
1141
|
-
|
|
1137
|
+
$(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/^/ /')
|
|
1138
|
+
HOSTNAME: |-
|
|
1142
1139
|
api.stage.test-app.pan.panter.cloud
|
|
1143
1140
|
ROOT_URL: |-
|
|
1144
1141
|
https://api.stage.test-app.pan.panter.cloud
|
|
1145
|
-
|
|
1146
|
-
api.stage.test-app.pan.panter.cloud
|
|
1147
|
-
HOST_CANONICAL: |-
|
|
1142
|
+
HOSTNAME_INTERNAL: |-
|
|
1148
1143
|
api.stage.test-app.pan.panter.cloud
|
|
1149
1144
|
ROOT_URL_INTERNAL: |-
|
|
1150
1145
|
https://api.stage.test-app.pan.panter.cloud
|
|
@@ -1154,7 +1149,7 @@ api 🧪 test:
|
|
|
1154
1149
|
api
|
|
1155
1150
|
KUBE_APP_NAME_PREFIX: ""
|
|
1156
1151
|
_ALL_ENV_VAR_KEYS: |-
|
|
1157
|
-
["ENV_SHORT","APP_DIR","ENV_TYPE","BUILD_INFO_BUILD_ID","BUILD_INFO_BUILD_TIME","BUILD_INFO_CURRENT_VERSION","
|
|
1152
|
+
["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"]
|
|
1158
1153
|
application:
|
|
1159
1154
|
host: |-
|
|
1160
1155
|
api.stage.test-app.pan.panter.cloud
|
|
@@ -1184,7 +1179,7 @@ api 🧪 test:
|
|
|
1184
1179
|
0 * * * *
|
|
1185
1180
|
|
|
1186
1181
|
EOF
|
|
1187
|
-
-
|
|
1182
|
+
- collapseable_section_end "writeallvalues"
|
|
1188
1183
|
- kubernetesCreateSecret
|
|
1189
1184
|
- kubernetesDeploy
|
|
1190
1185
|
- echo 'Uploading SBOM to Dependency Track'
|
|
@@ -1220,30 +1215,28 @@ api 🧪 test:
|
|
|
1220
1215
|
KUBERNETES_MEMORY_LIMIT: 400Mi
|
|
1221
1216
|
GIT_STRATEGY: none
|
|
1222
1217
|
script:
|
|
1223
|
-
-
|
|
1218
|
+
- collapseable_section_start "injectvars" "Injecting variables"
|
|
1224
1219
|
- export ENV_SHORT="stage"
|
|
1225
1220
|
- export APP_DIR="api"
|
|
1226
1221
|
- export ENV_TYPE="stage"
|
|
1227
1222
|
- export BUILD_INFO_BUILD_ID="$(git describe --tags 2>/dev/null || git rev-parse HEAD)"
|
|
1228
1223
|
- export BUILD_INFO_BUILD_TIME="$CI_JOB_STARTED_AT"
|
|
1229
1224
|
- 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")"
|
|
1230
|
-
- export
|
|
1225
|
+
- export HOSTNAME="api.stage.test-app.pan.panter.cloud"
|
|
1231
1226
|
- export ROOT_URL="https://api.stage.test-app.pan.panter.cloud"
|
|
1232
|
-
- export
|
|
1233
|
-
- export HOST_CANONICAL="api.stage.test-app.pan.panter.cloud"
|
|
1227
|
+
- export HOSTNAME_INTERNAL="api.stage.test-app.pan.panter.cloud"
|
|
1234
1228
|
- export ROOT_URL_INTERNAL="https://api.stage.test-app.pan.panter.cloud"
|
|
1235
1229
|
- export KUBE_NAMESPACE="pan-test-app-stage"
|
|
1236
1230
|
- export KUBE_APP_NAME="api"
|
|
1237
1231
|
- export KUBE_APP_NAME_PREFIX=""
|
|
1238
|
-
- export _ALL_ENV_VAR_KEYS="[\\"ENV_SHORT\\",\\"APP_DIR\\",\\"ENV_TYPE\\",\\"BUILD_INFO_BUILD_ID\\",\\"BUILD_INFO_BUILD_TIME\\",\\"BUILD_INFO_CURRENT_VERSION\\",\\"
|
|
1232
|
+
- 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\\"]"
|
|
1239
1233
|
- export RELEASE_NAME="pan-test-app-stage-api"
|
|
1240
1234
|
- export HELM_EXPERIMENTAL_OCI="1"
|
|
1241
1235
|
- export KUBE_DOCKER_IMAGE_PULL_SECRET="gitlab-registry-api"
|
|
1242
1236
|
- export HELM_GITLAB_CHART_NAME="/helm-charts/the-panter-chart"
|
|
1243
1237
|
- export HELM_ARGS=""
|
|
1244
1238
|
- export COMPONENT_NAME="api"
|
|
1245
|
-
-
|
|
1246
|
-
- echo -e "\\e[0Ksection_end:$(date +%s):injectvars\\r\\e[0K"
|
|
1239
|
+
- collapseable_section_end "injectvars"
|
|
1247
1240
|
- 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
|
|
1248
1241
|
- kubectl config set-credentials "kube-pan-test-app-stage-api" --token="$CL_stage_api_KUBE_TOKEN"
|
|
1249
1242
|
- 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"
|
|
@@ -1277,30 +1270,28 @@ api 🧪 test:
|
|
|
1277
1270
|
KUBERNETES_MEMORY_LIMIT: 400Mi
|
|
1278
1271
|
GIT_STRATEGY: none
|
|
1279
1272
|
script:
|
|
1280
|
-
-
|
|
1273
|
+
- collapseable_section_start "injectvars" "Injecting variables"
|
|
1281
1274
|
- export ENV_SHORT="stage"
|
|
1282
1275
|
- export APP_DIR="api"
|
|
1283
1276
|
- export ENV_TYPE="stage"
|
|
1284
1277
|
- export BUILD_INFO_BUILD_ID="$(git describe --tags 2>/dev/null || git rev-parse HEAD)"
|
|
1285
1278
|
- export BUILD_INFO_BUILD_TIME="$CI_JOB_STARTED_AT"
|
|
1286
1279
|
- 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")"
|
|
1287
|
-
- export
|
|
1280
|
+
- export HOSTNAME="api.stage.test-app.pan.panter.cloud"
|
|
1288
1281
|
- export ROOT_URL="https://api.stage.test-app.pan.panter.cloud"
|
|
1289
|
-
- export
|
|
1290
|
-
- export HOST_CANONICAL="api.stage.test-app.pan.panter.cloud"
|
|
1282
|
+
- export HOSTNAME_INTERNAL="api.stage.test-app.pan.panter.cloud"
|
|
1291
1283
|
- export ROOT_URL_INTERNAL="https://api.stage.test-app.pan.panter.cloud"
|
|
1292
1284
|
- export KUBE_NAMESPACE="pan-test-app-stage"
|
|
1293
1285
|
- export KUBE_APP_NAME="api"
|
|
1294
1286
|
- export KUBE_APP_NAME_PREFIX=""
|
|
1295
|
-
- export _ALL_ENV_VAR_KEYS="[\\"ENV_SHORT\\",\\"APP_DIR\\",\\"ENV_TYPE\\",\\"BUILD_INFO_BUILD_ID\\",\\"BUILD_INFO_BUILD_TIME\\",\\"BUILD_INFO_CURRENT_VERSION\\",\\"
|
|
1287
|
+
- 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\\"]"
|
|
1296
1288
|
- export RELEASE_NAME="pan-test-app-stage-api"
|
|
1297
1289
|
- export HELM_EXPERIMENTAL_OCI="1"
|
|
1298
1290
|
- export KUBE_DOCKER_IMAGE_PULL_SECRET="gitlab-registry-api"
|
|
1299
1291
|
- export HELM_GITLAB_CHART_NAME="/helm-charts/the-panter-chart"
|
|
1300
1292
|
- export HELM_ARGS=""
|
|
1301
1293
|
- export COMPONENT_NAME="api"
|
|
1302
|
-
-
|
|
1303
|
-
- echo -e "\\e[0Ksection_end:$(date +%s):injectvars\\r\\e[0K"
|
|
1294
|
+
- collapseable_section_end "injectvars"
|
|
1304
1295
|
- 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
|
|
1305
1296
|
- kubectl config set-credentials "kube-pan-test-app-stage-api" --token="$CL_stage_api_KUBE_TOKEN"
|
|
1306
1297
|
- 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"
|
|
@@ -1329,36 +1320,35 @@ api 🧪 test:
|
|
|
1329
1320
|
KUBERNETES_MEMORY_REQUEST: 1Gi
|
|
1330
1321
|
KUBERNETES_MEMORY_LIMIT: 4Gi
|
|
1331
1322
|
script:
|
|
1332
|
-
-
|
|
1323
|
+
- collapseable_section_start "injectvars" "Injecting variables"
|
|
1333
1324
|
- export ENV_SHORT="prod"
|
|
1334
1325
|
- export APP_DIR="api"
|
|
1335
1326
|
- export ENV_TYPE="prod"
|
|
1336
1327
|
- export BUILD_INFO_BUILD_ID="$(git describe --tags 2>/dev/null || git rev-parse HEAD)"
|
|
1337
1328
|
- export BUILD_INFO_BUILD_TIME="$CI_JOB_STARTED_AT"
|
|
1338
1329
|
- export BUILD_INFO_CURRENT_VERSION="$(tag=$(git ls-remote origin "refs/tags/v*[0-9]" 2>/dev/null | cut -f 2- | sort -V | tail -1 | sed 's/refs\\/tags\\/v//'); [ -z "$tag" ] && echo "0.0.0" || echo "$tag")"
|
|
1339
|
-
- export
|
|
1330
|
+
- export HOSTNAME="api.prod.test-app.pan.panter.cloud"
|
|
1340
1331
|
- export ROOT_URL="https://api.prod.test-app.pan.panter.cloud"
|
|
1341
|
-
- export
|
|
1342
|
-
- export HOST_CANONICAL="api.prod.test-app.pan.panter.cloud"
|
|
1332
|
+
- export HOSTNAME_INTERNAL="api.prod.test-app.pan.panter.cloud"
|
|
1343
1333
|
- export ROOT_URL_INTERNAL="https://api.prod.test-app.pan.panter.cloud"
|
|
1344
1334
|
- export KUBE_NAMESPACE="pan-test-app-prod"
|
|
1345
1335
|
- export KUBE_APP_NAME="api"
|
|
1346
1336
|
- export KUBE_APP_NAME_PREFIX=""
|
|
1347
|
-
- export _ALL_ENV_VAR_KEYS="[\\"ENV_SHORT\\",\\"APP_DIR\\",\\"ENV_TYPE\\",\\"BUILD_INFO_BUILD_ID\\",\\"BUILD_INFO_BUILD_TIME\\",\\"BUILD_INFO_CURRENT_VERSION\\",\\"
|
|
1348
|
-
-
|
|
1337
|
+
- 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\\"]"
|
|
1338
|
+
- collapseable_section_end "injectvars"
|
|
1349
1339
|
- echo '{"id":"$(git describe --tags 2>/dev/null || git rev-parse HEAD)","time":"$CI_JOB_STARTED_AT"}' > api/__build_info.json
|
|
1350
|
-
-
|
|
1340
|
+
- collapseable_section_start "nodeinstall" "Ensure node version"
|
|
1351
1341
|
- if [ -f ~/.nvm/nvm.sh ]; then source ~/.nvm/nvm.sh; fi
|
|
1352
1342
|
- if command -v nvm &> /dev/null && [ -f ./.nvmrc ]; then nvm install; fi
|
|
1353
|
-
-
|
|
1343
|
+
- collapseable_section_end "nodeinstall"
|
|
1354
1344
|
- cd api
|
|
1355
|
-
-
|
|
1345
|
+
- collapseable_section_start "nodeinstall" "Ensure node version"
|
|
1356
1346
|
- if [ -f ~/.nvm/nvm.sh ]; then source ~/.nvm/nvm.sh; fi
|
|
1357
1347
|
- if command -v nvm &> /dev/null && [ -f ./.nvmrc ]; then nvm install; fi
|
|
1358
|
-
-
|
|
1359
|
-
-
|
|
1348
|
+
- collapseable_section_end "nodeinstall"
|
|
1349
|
+
- collapseable_section_start "yarninstall" "Yarn install"
|
|
1360
1350
|
- yarn install --immutable
|
|
1361
|
-
-
|
|
1351
|
+
- collapseable_section_end "yarninstall"
|
|
1362
1352
|
- yarn build
|
|
1363
1353
|
cache:
|
|
1364
1354
|
- key: api-yarn
|
|
@@ -1369,10 +1359,6 @@ api 🧪 test:
|
|
|
1369
1359
|
policy: pull-push
|
|
1370
1360
|
paths:
|
|
1371
1361
|
- api/node_modules
|
|
1372
|
-
- key: api-next-cache
|
|
1373
|
-
policy: pull-push
|
|
1374
|
-
paths:
|
|
1375
|
-
- api/.next/cache
|
|
1376
1362
|
artifacts:
|
|
1377
1363
|
paths:
|
|
1378
1364
|
- api/__build_info.json
|
|
@@ -1403,7 +1389,7 @@ api 🧪 test:
|
|
|
1403
1389
|
KUBERNETES_MEMORY_REQUEST: 1Gi
|
|
1404
1390
|
KUBERNETES_MEMORY_LIMIT: 2Gi
|
|
1405
1391
|
script:
|
|
1406
|
-
-
|
|
1392
|
+
- collapseable_section_start "injectvars" "Injecting variables"
|
|
1407
1393
|
- export APP_DIR="api"
|
|
1408
1394
|
- export DOCKER_BUILD_CONTEXT="."
|
|
1409
1395
|
- export DOCKER_REGISTRY="$CI_REGISTRY"
|
|
@@ -1420,19 +1406,19 @@ api 🧪 test:
|
|
|
1420
1406
|
COPY --chown=node:node api/yarn.lock /app/api/yarn.lock
|
|
1421
1407
|
COPY --chown=node:node .yarnrc.yml /app/.yarnrc.yml
|
|
1422
1408
|
COPY --chown=node:node .yarn /app/.yarn"
|
|
1423
|
-
-
|
|
1409
|
+
- collapseable_section_end "injectvars"
|
|
1424
1410
|
- ensureNodeDockerfile
|
|
1425
|
-
-
|
|
1411
|
+
- collapseable_section_start "docker-login" "Docker Login"
|
|
1426
1412
|
- docker login --username gitlab-ci-token --password $CI_JOB_TOKEN $CI_REGISTRY
|
|
1427
|
-
-
|
|
1428
|
-
-
|
|
1413
|
+
- collapseable_section_end "docker-login"
|
|
1414
|
+
- collapseable_section_start "docker-build" "Docker build"
|
|
1429
1415
|
- 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
|
|
1430
|
-
-
|
|
1431
|
-
-
|
|
1416
|
+
- collapseable_section_end "docker-build"
|
|
1417
|
+
- collapseable_section_start "docker-push" "Docker push and tag"
|
|
1432
1418
|
- docker push $DOCKER_IMAGE:$DOCKER_IMAGE_TAG
|
|
1433
1419
|
- docker tag $DOCKER_IMAGE:$DOCKER_IMAGE_TAG $DOCKER_CACHE_IMAGE
|
|
1434
1420
|
- docker push $DOCKER_CACHE_IMAGE
|
|
1435
|
-
-
|
|
1421
|
+
- collapseable_section_end "docker-push"
|
|
1436
1422
|
cache:
|
|
1437
1423
|
- key: api-yarn
|
|
1438
1424
|
policy: pull
|
|
@@ -1449,8 +1435,8 @@ api 🧪 test:
|
|
|
1449
1435
|
image: aquasec/trivy:0.38.3
|
|
1450
1436
|
variables: {}
|
|
1451
1437
|
script:
|
|
1452
|
-
-
|
|
1453
|
-
-
|
|
1438
|
+
- collapseable_section_start "injectvars" "Injecting variables"
|
|
1439
|
+
- collapseable_section_end "injectvars"
|
|
1454
1440
|
- trivy fs --quiet --format cyclonedx --output "__sbom.json" api
|
|
1455
1441
|
artifacts:
|
|
1456
1442
|
paths:
|
|
@@ -1469,22 +1455,21 @@ api 🧪 test:
|
|
|
1469
1455
|
KUBERNETES_MEMORY_REQUEST: 200Mi
|
|
1470
1456
|
KUBERNETES_MEMORY_LIMIT: 400Mi
|
|
1471
1457
|
script:
|
|
1472
|
-
-
|
|
1458
|
+
- collapseable_section_start "injectvars" "Injecting variables"
|
|
1473
1459
|
- export ENV_SHORT="prod"
|
|
1474
1460
|
- export APP_DIR="api"
|
|
1475
1461
|
- export ENV_TYPE="prod"
|
|
1476
1462
|
- export BUILD_INFO_BUILD_ID="$(git describe --tags 2>/dev/null || git rev-parse HEAD)"
|
|
1477
1463
|
- export BUILD_INFO_BUILD_TIME="$CI_JOB_STARTED_AT"
|
|
1478
1464
|
- 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")"
|
|
1479
|
-
- export
|
|
1465
|
+
- export HOSTNAME="api.prod.test-app.pan.panter.cloud"
|
|
1480
1466
|
- export ROOT_URL="https://api.prod.test-app.pan.panter.cloud"
|
|
1481
|
-
- export
|
|
1482
|
-
- export HOST_CANONICAL="api.prod.test-app.pan.panter.cloud"
|
|
1467
|
+
- export HOSTNAME_INTERNAL="api.prod.test-app.pan.panter.cloud"
|
|
1483
1468
|
- export ROOT_URL_INTERNAL="https://api.prod.test-app.pan.panter.cloud"
|
|
1484
1469
|
- export KUBE_NAMESPACE="pan-test-app-prod"
|
|
1485
1470
|
- export KUBE_APP_NAME="api"
|
|
1486
1471
|
- export KUBE_APP_NAME_PREFIX=""
|
|
1487
|
-
- export _ALL_ENV_VAR_KEYS="[\\"ENV_SHORT\\",\\"APP_DIR\\",\\"ENV_TYPE\\",\\"BUILD_INFO_BUILD_ID\\",\\"BUILD_INFO_BUILD_TIME\\",\\"BUILD_INFO_CURRENT_VERSION\\",\\"
|
|
1472
|
+
- 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\\"]"
|
|
1488
1473
|
- export DOCKER_REGISTRY="$CI_REGISTRY"
|
|
1489
1474
|
- export DOCKER_CACHE_IMAGE="$CI_REGISTRY_IMAGE/caches/api"
|
|
1490
1475
|
- export DOCKER_IMAGE_NAME="prod/api"
|
|
@@ -1496,13 +1481,12 @@ api 🧪 test:
|
|
|
1496
1481
|
- export HELM_GITLAB_CHART_NAME="/helm-charts/the-panter-chart"
|
|
1497
1482
|
- export HELM_ARGS=""
|
|
1498
1483
|
- export COMPONENT_NAME="api"
|
|
1499
|
-
-
|
|
1500
|
-
- echo -e "\\e[0Ksection_end:$(date +%s):injectvars\\r\\e[0K"
|
|
1484
|
+
- collapseable_section_end "injectvars"
|
|
1501
1485
|
- 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
|
|
1502
1486
|
- kubectl config set-credentials "kube-pan-test-app-prod-api" --token="$CL_prod_api_KUBE_TOKEN"
|
|
1503
1487
|
- 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"
|
|
1504
1488
|
- kubectl config use-context "kube-pan-test-app-prod-api"
|
|
1505
|
-
-
|
|
1489
|
+
- collapseable_section_start "writeallvalues" "Write __all_values.yml for helm deployment"
|
|
1506
1490
|
- |
|
|
1507
1491
|
cat > __all_values.yml <<EOF
|
|
1508
1492
|
env:
|
|
@@ -1515,18 +1499,16 @@ api 🧪 test:
|
|
|
1515
1499
|
ENV_TYPE: |-
|
|
1516
1500
|
prod
|
|
1517
1501
|
BUILD_INFO_BUILD_ID: |-
|
|
1518
|
-
|
|
1502
|
+
$(printf %s "$(git describe --tags 2>/dev/null || git rev-parse HEAD)" | sed '1!s/^/ /')
|
|
1519
1503
|
BUILD_INFO_BUILD_TIME: |-
|
|
1520
|
-
|
|
1504
|
+
$(printf %s "$CI_JOB_STARTED_AT" | sed '1!s/^/ /')
|
|
1521
1505
|
BUILD_INFO_CURRENT_VERSION: |-
|
|
1522
|
-
|
|
1523
|
-
|
|
1506
|
+
$(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/^/ /')
|
|
1507
|
+
HOSTNAME: |-
|
|
1524
1508
|
api.prod.test-app.pan.panter.cloud
|
|
1525
1509
|
ROOT_URL: |-
|
|
1526
1510
|
https://api.prod.test-app.pan.panter.cloud
|
|
1527
|
-
|
|
1528
|
-
api.prod.test-app.pan.panter.cloud
|
|
1529
|
-
HOST_CANONICAL: |-
|
|
1511
|
+
HOSTNAME_INTERNAL: |-
|
|
1530
1512
|
api.prod.test-app.pan.panter.cloud
|
|
1531
1513
|
ROOT_URL_INTERNAL: |-
|
|
1532
1514
|
https://api.prod.test-app.pan.panter.cloud
|
|
@@ -1536,7 +1518,7 @@ api 🧪 test:
|
|
|
1536
1518
|
api
|
|
1537
1519
|
KUBE_APP_NAME_PREFIX: ""
|
|
1538
1520
|
_ALL_ENV_VAR_KEYS: |-
|
|
1539
|
-
["ENV_SHORT","APP_DIR","ENV_TYPE","BUILD_INFO_BUILD_ID","BUILD_INFO_BUILD_TIME","BUILD_INFO_CURRENT_VERSION","
|
|
1521
|
+
["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"]
|
|
1540
1522
|
application:
|
|
1541
1523
|
host: |-
|
|
1542
1524
|
api.prod.test-app.pan.panter.cloud
|
|
@@ -1566,7 +1548,7 @@ api 🧪 test:
|
|
|
1566
1548
|
0 * * * *
|
|
1567
1549
|
|
|
1568
1550
|
EOF
|
|
1569
|
-
-
|
|
1551
|
+
- collapseable_section_end "writeallvalues"
|
|
1570
1552
|
- kubernetesCreateSecret
|
|
1571
1553
|
- kubernetesDeploy
|
|
1572
1554
|
- echo 'Uploading SBOM to Dependency Track'
|
|
@@ -1602,30 +1584,28 @@ api 🧪 test:
|
|
|
1602
1584
|
KUBERNETES_MEMORY_LIMIT: 400Mi
|
|
1603
1585
|
GIT_STRATEGY: none
|
|
1604
1586
|
script:
|
|
1605
|
-
-
|
|
1587
|
+
- collapseable_section_start "injectvars" "Injecting variables"
|
|
1606
1588
|
- export ENV_SHORT="prod"
|
|
1607
1589
|
- export APP_DIR="api"
|
|
1608
1590
|
- export ENV_TYPE="prod"
|
|
1609
1591
|
- export BUILD_INFO_BUILD_ID="$(git describe --tags 2>/dev/null || git rev-parse HEAD)"
|
|
1610
1592
|
- export BUILD_INFO_BUILD_TIME="$CI_JOB_STARTED_AT"
|
|
1611
1593
|
- 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")"
|
|
1612
|
-
- export
|
|
1594
|
+
- export HOSTNAME="api.prod.test-app.pan.panter.cloud"
|
|
1613
1595
|
- export ROOT_URL="https://api.prod.test-app.pan.panter.cloud"
|
|
1614
|
-
- export
|
|
1615
|
-
- export HOST_CANONICAL="api.prod.test-app.pan.panter.cloud"
|
|
1596
|
+
- export HOSTNAME_INTERNAL="api.prod.test-app.pan.panter.cloud"
|
|
1616
1597
|
- export ROOT_URL_INTERNAL="https://api.prod.test-app.pan.panter.cloud"
|
|
1617
1598
|
- export KUBE_NAMESPACE="pan-test-app-prod"
|
|
1618
1599
|
- export KUBE_APP_NAME="api"
|
|
1619
1600
|
- export KUBE_APP_NAME_PREFIX=""
|
|
1620
|
-
- export _ALL_ENV_VAR_KEYS="[\\"ENV_SHORT\\",\\"APP_DIR\\",\\"ENV_TYPE\\",\\"BUILD_INFO_BUILD_ID\\",\\"BUILD_INFO_BUILD_TIME\\",\\"BUILD_INFO_CURRENT_VERSION\\",\\"
|
|
1601
|
+
- 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\\"]"
|
|
1621
1602
|
- export RELEASE_NAME="pan-test-app-prod-api"
|
|
1622
1603
|
- export HELM_EXPERIMENTAL_OCI="1"
|
|
1623
1604
|
- export KUBE_DOCKER_IMAGE_PULL_SECRET="gitlab-registry-api"
|
|
1624
1605
|
- export HELM_GITLAB_CHART_NAME="/helm-charts/the-panter-chart"
|
|
1625
1606
|
- export HELM_ARGS=""
|
|
1626
1607
|
- export COMPONENT_NAME="api"
|
|
1627
|
-
-
|
|
1628
|
-
- echo -e "\\e[0Ksection_end:$(date +%s):injectvars\\r\\e[0K"
|
|
1608
|
+
- collapseable_section_end "injectvars"
|
|
1629
1609
|
- 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
|
|
1630
1610
|
- kubectl config set-credentials "kube-pan-test-app-prod-api" --token="$CL_prod_api_KUBE_TOKEN"
|
|
1631
1611
|
- 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"
|
|
@@ -1659,30 +1639,28 @@ api 🧪 test:
|
|
|
1659
1639
|
KUBERNETES_MEMORY_LIMIT: 400Mi
|
|
1660
1640
|
GIT_STRATEGY: none
|
|
1661
1641
|
script:
|
|
1662
|
-
-
|
|
1642
|
+
- collapseable_section_start "injectvars" "Injecting variables"
|
|
1663
1643
|
- export ENV_SHORT="prod"
|
|
1664
1644
|
- export APP_DIR="api"
|
|
1665
1645
|
- export ENV_TYPE="prod"
|
|
1666
1646
|
- export BUILD_INFO_BUILD_ID="$(git describe --tags 2>/dev/null || git rev-parse HEAD)"
|
|
1667
1647
|
- export BUILD_INFO_BUILD_TIME="$CI_JOB_STARTED_AT"
|
|
1668
1648
|
- 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")"
|
|
1669
|
-
- export
|
|
1649
|
+
- export HOSTNAME="api.prod.test-app.pan.panter.cloud"
|
|
1670
1650
|
- export ROOT_URL="https://api.prod.test-app.pan.panter.cloud"
|
|
1671
|
-
- export
|
|
1672
|
-
- export HOST_CANONICAL="api.prod.test-app.pan.panter.cloud"
|
|
1651
|
+
- export HOSTNAME_INTERNAL="api.prod.test-app.pan.panter.cloud"
|
|
1673
1652
|
- export ROOT_URL_INTERNAL="https://api.prod.test-app.pan.panter.cloud"
|
|
1674
1653
|
- export KUBE_NAMESPACE="pan-test-app-prod"
|
|
1675
1654
|
- export KUBE_APP_NAME="api"
|
|
1676
1655
|
- export KUBE_APP_NAME_PREFIX=""
|
|
1677
|
-
- export _ALL_ENV_VAR_KEYS="[\\"ENV_SHORT\\",\\"APP_DIR\\",\\"ENV_TYPE\\",\\"BUILD_INFO_BUILD_ID\\",\\"BUILD_INFO_BUILD_TIME\\",\\"BUILD_INFO_CURRENT_VERSION\\",\\"
|
|
1656
|
+
- 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\\"]"
|
|
1678
1657
|
- export RELEASE_NAME="pan-test-app-prod-api"
|
|
1679
1658
|
- export HELM_EXPERIMENTAL_OCI="1"
|
|
1680
1659
|
- export KUBE_DOCKER_IMAGE_PULL_SECRET="gitlab-registry-api"
|
|
1681
1660
|
- export HELM_GITLAB_CHART_NAME="/helm-charts/the-panter-chart"
|
|
1682
1661
|
- export HELM_ARGS=""
|
|
1683
1662
|
- export COMPONENT_NAME="api"
|
|
1684
|
-
-
|
|
1685
|
-
- echo -e "\\e[0Ksection_end:$(date +%s):injectvars\\r\\e[0K"
|
|
1663
|
+
- collapseable_section_end "injectvars"
|
|
1686
1664
|
- 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
|
|
1687
1665
|
- kubectl config set-credentials "kube-pan-test-app-prod-api" --token="$CL_prod_api_KUBE_TOKEN"
|
|
1688
1666
|
- 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"
|
|
@@ -1711,9 +1689,9 @@ www 🛡 audit:
|
|
|
1711
1689
|
KUBERNETES_MEMORY_REQUEST: 1Gi
|
|
1712
1690
|
KUBERNETES_MEMORY_LIMIT: 4Gi
|
|
1713
1691
|
script:
|
|
1714
|
-
-
|
|
1692
|
+
- collapseable_section_start "injectvars" "Injecting variables"
|
|
1715
1693
|
- export APP_PATH="www"
|
|
1716
|
-
-
|
|
1694
|
+
- collapseable_section_end "injectvars"
|
|
1717
1695
|
- cd www
|
|
1718
1696
|
- yarn npm audit --environment production
|
|
1719
1697
|
rules:
|
|
@@ -1733,21 +1711,21 @@ www 👮 lint:
|
|
|
1733
1711
|
KUBERNETES_MEMORY_REQUEST: 1Gi
|
|
1734
1712
|
KUBERNETES_MEMORY_LIMIT: 4Gi
|
|
1735
1713
|
script:
|
|
1736
|
-
-
|
|
1714
|
+
- collapseable_section_start "injectvars" "Injecting variables"
|
|
1737
1715
|
- export APP_PATH="www"
|
|
1738
|
-
-
|
|
1739
|
-
-
|
|
1716
|
+
- collapseable_section_end "injectvars"
|
|
1717
|
+
- collapseable_section_start "nodeinstall" "Ensure node version"
|
|
1740
1718
|
- if [ -f ~/.nvm/nvm.sh ]; then source ~/.nvm/nvm.sh; fi
|
|
1741
1719
|
- if command -v nvm &> /dev/null && [ -f ./.nvmrc ]; then nvm install; fi
|
|
1742
|
-
-
|
|
1720
|
+
- collapseable_section_end "nodeinstall"
|
|
1743
1721
|
- cd www
|
|
1744
|
-
-
|
|
1722
|
+
- collapseable_section_start "nodeinstall" "Ensure node version"
|
|
1745
1723
|
- if [ -f ~/.nvm/nvm.sh ]; then source ~/.nvm/nvm.sh; fi
|
|
1746
1724
|
- if command -v nvm &> /dev/null && [ -f ./.nvmrc ]; then nvm install; fi
|
|
1747
|
-
-
|
|
1748
|
-
-
|
|
1725
|
+
- collapseable_section_end "nodeinstall"
|
|
1726
|
+
- collapseable_section_start "yarninstall" "Yarn install"
|
|
1749
1727
|
- yarn install --immutable
|
|
1750
|
-
-
|
|
1728
|
+
- collapseable_section_end "yarninstall"
|
|
1751
1729
|
- yarn lint
|
|
1752
1730
|
cache:
|
|
1753
1731
|
- key: www-yarn
|
|
@@ -1774,21 +1752,21 @@ www 🧪 test:
|
|
|
1774
1752
|
KUBERNETES_MEMORY_REQUEST: 1Gi
|
|
1775
1753
|
KUBERNETES_MEMORY_LIMIT: 4Gi
|
|
1776
1754
|
script:
|
|
1777
|
-
-
|
|
1755
|
+
- collapseable_section_start "injectvars" "Injecting variables"
|
|
1778
1756
|
- export APP_PATH="www"
|
|
1779
|
-
-
|
|
1780
|
-
-
|
|
1757
|
+
- collapseable_section_end "injectvars"
|
|
1758
|
+
- collapseable_section_start "nodeinstall" "Ensure node version"
|
|
1781
1759
|
- if [ -f ~/.nvm/nvm.sh ]; then source ~/.nvm/nvm.sh; fi
|
|
1782
1760
|
- if command -v nvm &> /dev/null && [ -f ./.nvmrc ]; then nvm install; fi
|
|
1783
|
-
-
|
|
1761
|
+
- collapseable_section_end "nodeinstall"
|
|
1784
1762
|
- cd www
|
|
1785
|
-
-
|
|
1763
|
+
- collapseable_section_start "nodeinstall" "Ensure node version"
|
|
1786
1764
|
- if [ -f ~/.nvm/nvm.sh ]; then source ~/.nvm/nvm.sh; fi
|
|
1787
1765
|
- if command -v nvm &> /dev/null && [ -f ./.nvmrc ]; then nvm install; fi
|
|
1788
|
-
-
|
|
1789
|
-
-
|
|
1766
|
+
- collapseable_section_end "nodeinstall"
|
|
1767
|
+
- collapseable_section_start "yarninstall" "Yarn install"
|
|
1790
1768
|
- yarn install --immutable
|
|
1791
|
-
-
|
|
1769
|
+
- collapseable_section_end "yarninstall"
|
|
1792
1770
|
- yarn test
|
|
1793
1771
|
cache:
|
|
1794
1772
|
- key: www-yarn
|
|
@@ -1815,36 +1793,51 @@ www 🧪 test:
|
|
|
1815
1793
|
KUBERNETES_MEMORY_REQUEST: 1Gi
|
|
1816
1794
|
KUBERNETES_MEMORY_LIMIT: 4Gi
|
|
1817
1795
|
script:
|
|
1818
|
-
-
|
|
1796
|
+
- collapseable_section_start "injectvars" "Injecting variables"
|
|
1819
1797
|
- export ENV_SHORT="dev"
|
|
1820
1798
|
- export APP_DIR="www"
|
|
1821
1799
|
- export ENV_TYPE="dev"
|
|
1822
1800
|
- export BUILD_INFO_BUILD_ID="$(git describe --tags 2>/dev/null || git rev-parse HEAD)"
|
|
1823
1801
|
- export BUILD_INFO_BUILD_TIME="$CI_JOB_STARTED_AT"
|
|
1824
1802
|
- 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")"
|
|
1825
|
-
- export
|
|
1803
|
+
- export HOSTNAME="www.dev.test-app.pan.panter.cloud"
|
|
1826
1804
|
- export ROOT_URL="https://www.dev.test-app.pan.panter.cloud"
|
|
1827
|
-
- export
|
|
1828
|
-
- export HOST_CANONICAL="www.dev.test-app.pan.panter.cloud"
|
|
1805
|
+
- export HOSTNAME_INTERNAL="www.dev.test-app.pan.panter.cloud"
|
|
1829
1806
|
- export ROOT_URL_INTERNAL="https://www.dev.test-app.pan.panter.cloud"
|
|
1830
1807
|
- export KUBE_NAMESPACE="pan-test-app-dev"
|
|
1831
1808
|
- export KUBE_APP_NAME="www"
|
|
1832
1809
|
- export KUBE_APP_NAME_PREFIX=""
|
|
1833
|
-
- export _ALL_ENV_VAR_KEYS="[\\"ENV_SHORT\\",\\"APP_DIR\\",\\"ENV_TYPE\\",\\"BUILD_INFO_BUILD_ID\\",\\"BUILD_INFO_BUILD_TIME\\",\\"BUILD_INFO_CURRENT_VERSION\\",\\"
|
|
1834
|
-
-
|
|
1810
|
+
- 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\\"]"
|
|
1811
|
+
- collapseable_section_end "injectvars"
|
|
1812
|
+
- collapseable_section_start "write-dotenv-www" "write dot env for www"
|
|
1813
|
+
- |-
|
|
1814
|
+
cat <<EOF > www/.env
|
|
1815
|
+
ENV_SHORT=dev
|
|
1816
|
+
APP_DIR=www
|
|
1817
|
+
ENV_TYPE=dev
|
|
1818
|
+
HOSTNAME=www.dev.test-app.pan.panter.cloud
|
|
1819
|
+
ROOT_URL=https://www.dev.test-app.pan.panter.cloud
|
|
1820
|
+
HOSTNAME_INTERNAL=www.dev.test-app.pan.panter.cloud
|
|
1821
|
+
ROOT_URL_INTERNAL=https://www.dev.test-app.pan.panter.cloud
|
|
1822
|
+
KUBE_NAMESPACE=pan-test-app-dev
|
|
1823
|
+
KUBE_APP_NAME=www
|
|
1824
|
+
KUBE_APP_NAME_PREFIX=
|
|
1825
|
+
_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"]
|
|
1826
|
+
EOF
|
|
1827
|
+
- collapseable_section_end "write-dotenv-www"
|
|
1835
1828
|
- echo '{"id":"$(git describe --tags 2>/dev/null || git rev-parse HEAD)","time":"$CI_JOB_STARTED_AT"}' > www/__build_info.json
|
|
1836
|
-
-
|
|
1829
|
+
- collapseable_section_start "nodeinstall" "Ensure node version"
|
|
1837
1830
|
- if [ -f ~/.nvm/nvm.sh ]; then source ~/.nvm/nvm.sh; fi
|
|
1838
1831
|
- if command -v nvm &> /dev/null && [ -f ./.nvmrc ]; then nvm install; fi
|
|
1839
|
-
-
|
|
1832
|
+
- collapseable_section_end "nodeinstall"
|
|
1840
1833
|
- cd www
|
|
1841
|
-
-
|
|
1834
|
+
- collapseable_section_start "nodeinstall" "Ensure node version"
|
|
1842
1835
|
- if [ -f ~/.nvm/nvm.sh ]; then source ~/.nvm/nvm.sh; fi
|
|
1843
1836
|
- if command -v nvm &> /dev/null && [ -f ./.nvmrc ]; then nvm install; fi
|
|
1844
|
-
-
|
|
1845
|
-
-
|
|
1837
|
+
- collapseable_section_end "nodeinstall"
|
|
1838
|
+
- collapseable_section_start "yarninstall" "Yarn install"
|
|
1846
1839
|
- yarn install --immutable
|
|
1847
|
-
-
|
|
1840
|
+
- collapseable_section_end "yarninstall"
|
|
1848
1841
|
- yarn build
|
|
1849
1842
|
cache:
|
|
1850
1843
|
- key: www-yarn
|
|
@@ -1855,15 +1848,13 @@ www 🧪 test:
|
|
|
1855
1848
|
policy: pull-push
|
|
1856
1849
|
paths:
|
|
1857
1850
|
- www/node_modules
|
|
1858
|
-
- key: www-next-cache
|
|
1859
|
-
policy: pull-push
|
|
1860
|
-
paths:
|
|
1861
|
-
- www/.next/cache
|
|
1862
1851
|
artifacts:
|
|
1863
1852
|
paths:
|
|
1864
1853
|
- www/__build_info.json
|
|
1865
1854
|
- www/.next
|
|
1866
1855
|
- www/dist
|
|
1856
|
+
exclude:
|
|
1857
|
+
- www/.env
|
|
1867
1858
|
expire_in: 1 day
|
|
1868
1859
|
when: always
|
|
1869
1860
|
reports: {}
|
|
@@ -1891,7 +1882,7 @@ www 🧪 test:
|
|
|
1891
1882
|
KUBERNETES_MEMORY_REQUEST: 1Gi
|
|
1892
1883
|
KUBERNETES_MEMORY_LIMIT: 2Gi
|
|
1893
1884
|
script:
|
|
1894
|
-
-
|
|
1885
|
+
- collapseable_section_start "injectvars" "Injecting variables"
|
|
1895
1886
|
- export APP_DIR="www"
|
|
1896
1887
|
- export DOCKER_BUILD_CONTEXT="."
|
|
1897
1888
|
- export DOCKER_REGISTRY="$CI_REGISTRY"
|
|
@@ -1908,19 +1899,19 @@ www 🧪 test:
|
|
|
1908
1899
|
COPY --chown=node:node www/yarn.lock /app/www/yarn.lock
|
|
1909
1900
|
COPY --chown=node:node .yarnrc.yml /app/.yarnrc.yml
|
|
1910
1901
|
COPY --chown=node:node .yarn /app/.yarn"
|
|
1911
|
-
-
|
|
1902
|
+
- collapseable_section_end "injectvars"
|
|
1912
1903
|
- ensureNodeDockerfile
|
|
1913
|
-
-
|
|
1904
|
+
- collapseable_section_start "docker-login" "Docker Login"
|
|
1914
1905
|
- docker login --username gitlab-ci-token --password $CI_JOB_TOKEN $CI_REGISTRY
|
|
1915
|
-
-
|
|
1916
|
-
-
|
|
1906
|
+
- collapseable_section_end "docker-login"
|
|
1907
|
+
- collapseable_section_start "docker-build" "Docker build"
|
|
1917
1908
|
- 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
|
|
1918
|
-
-
|
|
1919
|
-
-
|
|
1909
|
+
- collapseable_section_end "docker-build"
|
|
1910
|
+
- collapseable_section_start "docker-push" "Docker push and tag"
|
|
1920
1911
|
- docker push $DOCKER_IMAGE:$DOCKER_IMAGE_TAG
|
|
1921
1912
|
- docker tag $DOCKER_IMAGE:$DOCKER_IMAGE_TAG $DOCKER_CACHE_IMAGE
|
|
1922
1913
|
- docker push $DOCKER_CACHE_IMAGE
|
|
1923
|
-
-
|
|
1914
|
+
- collapseable_section_end "docker-push"
|
|
1924
1915
|
cache:
|
|
1925
1916
|
- key: www-yarn
|
|
1926
1917
|
policy: pull
|
|
@@ -1939,8 +1930,8 @@ www 🧪 test:
|
|
|
1939
1930
|
image: aquasec/trivy:0.38.3
|
|
1940
1931
|
variables: {}
|
|
1941
1932
|
script:
|
|
1942
|
-
-
|
|
1943
|
-
-
|
|
1933
|
+
- collapseable_section_start "injectvars" "Injecting variables"
|
|
1934
|
+
- collapseable_section_end "injectvars"
|
|
1944
1935
|
- trivy fs --quiet --format cyclonedx --output "__sbom.json" www
|
|
1945
1936
|
artifacts:
|
|
1946
1937
|
paths:
|
|
@@ -1961,22 +1952,21 @@ www 🧪 test:
|
|
|
1961
1952
|
KUBERNETES_MEMORY_REQUEST: 200Mi
|
|
1962
1953
|
KUBERNETES_MEMORY_LIMIT: 400Mi
|
|
1963
1954
|
script:
|
|
1964
|
-
-
|
|
1955
|
+
- collapseable_section_start "injectvars" "Injecting variables"
|
|
1965
1956
|
- export ENV_SHORT="dev"
|
|
1966
1957
|
- export APP_DIR="www"
|
|
1967
1958
|
- export ENV_TYPE="dev"
|
|
1968
1959
|
- export BUILD_INFO_BUILD_ID="$(git describe --tags 2>/dev/null || git rev-parse HEAD)"
|
|
1969
1960
|
- export BUILD_INFO_BUILD_TIME="$CI_JOB_STARTED_AT"
|
|
1970
1961
|
- 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")"
|
|
1971
|
-
- export
|
|
1962
|
+
- export HOSTNAME="www.dev.test-app.pan.panter.cloud"
|
|
1972
1963
|
- export ROOT_URL="https://www.dev.test-app.pan.panter.cloud"
|
|
1973
|
-
- export
|
|
1974
|
-
- export HOST_CANONICAL="www.dev.test-app.pan.panter.cloud"
|
|
1964
|
+
- export HOSTNAME_INTERNAL="www.dev.test-app.pan.panter.cloud"
|
|
1975
1965
|
- export ROOT_URL_INTERNAL="https://www.dev.test-app.pan.panter.cloud"
|
|
1976
1966
|
- export KUBE_NAMESPACE="pan-test-app-dev"
|
|
1977
1967
|
- export KUBE_APP_NAME="www"
|
|
1978
1968
|
- export KUBE_APP_NAME_PREFIX=""
|
|
1979
|
-
- export _ALL_ENV_VAR_KEYS="[\\"ENV_SHORT\\",\\"APP_DIR\\",\\"ENV_TYPE\\",\\"BUILD_INFO_BUILD_ID\\",\\"BUILD_INFO_BUILD_TIME\\",\\"BUILD_INFO_CURRENT_VERSION\\",\\"
|
|
1969
|
+
- 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\\"]"
|
|
1980
1970
|
- export DOCKER_REGISTRY="$CI_REGISTRY"
|
|
1981
1971
|
- export DOCKER_CACHE_IMAGE="$CI_REGISTRY_IMAGE/caches/www"
|
|
1982
1972
|
- export DOCKER_IMAGE_NAME="dev/www"
|
|
@@ -1988,13 +1978,12 @@ www 🧪 test:
|
|
|
1988
1978
|
- export HELM_GITLAB_CHART_NAME="/helm-charts/the-panter-chart"
|
|
1989
1979
|
- export HELM_ARGS=""
|
|
1990
1980
|
- export COMPONENT_NAME="www"
|
|
1991
|
-
-
|
|
1992
|
-
- echo -e "\\e[0Ksection_end:$(date +%s):injectvars\\r\\e[0K"
|
|
1981
|
+
- collapseable_section_end "injectvars"
|
|
1993
1982
|
- kubectl config set-cluster "kube-pan-test-app-dev-www" --server="$CL_dev_www_KUBE_URL" --certificate-authority <(echo $CL_dev_www_KUBE_CA_PEM | base64 -d) --embed-certs=true
|
|
1994
1983
|
- kubectl config set-credentials "kube-pan-test-app-dev-www" --token="$CL_dev_www_KUBE_TOKEN"
|
|
1995
1984
|
- kubectl config set-context "kube-pan-test-app-dev-www" --cluster="kube-pan-test-app-dev-www" --user="kube-pan-test-app-dev-www" --namespace="pan-test-app-dev"
|
|
1996
1985
|
- kubectl config use-context "kube-pan-test-app-dev-www"
|
|
1997
|
-
-
|
|
1986
|
+
- collapseable_section_start "writeallvalues" "Write __all_values.yml for helm deployment"
|
|
1998
1987
|
- |
|
|
1999
1988
|
cat > __all_values.yml <<EOF
|
|
2000
1989
|
env:
|
|
@@ -2007,18 +1996,16 @@ www 🧪 test:
|
|
|
2007
1996
|
ENV_TYPE: |-
|
|
2008
1997
|
dev
|
|
2009
1998
|
BUILD_INFO_BUILD_ID: |-
|
|
2010
|
-
|
|
1999
|
+
$(printf %s "$(git describe --tags 2>/dev/null || git rev-parse HEAD)" | sed '1!s/^/ /')
|
|
2011
2000
|
BUILD_INFO_BUILD_TIME: |-
|
|
2012
|
-
|
|
2001
|
+
$(printf %s "$CI_JOB_STARTED_AT" | sed '1!s/^/ /')
|
|
2013
2002
|
BUILD_INFO_CURRENT_VERSION: |-
|
|
2014
|
-
|
|
2015
|
-
|
|
2003
|
+
$(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/^/ /')
|
|
2004
|
+
HOSTNAME: |-
|
|
2016
2005
|
www.dev.test-app.pan.panter.cloud
|
|
2017
2006
|
ROOT_URL: |-
|
|
2018
2007
|
https://www.dev.test-app.pan.panter.cloud
|
|
2019
|
-
|
|
2020
|
-
www.dev.test-app.pan.panter.cloud
|
|
2021
|
-
HOST_CANONICAL: |-
|
|
2008
|
+
HOSTNAME_INTERNAL: |-
|
|
2022
2009
|
www.dev.test-app.pan.panter.cloud
|
|
2023
2010
|
ROOT_URL_INTERNAL: |-
|
|
2024
2011
|
https://www.dev.test-app.pan.panter.cloud
|
|
@@ -2028,7 +2015,7 @@ www 🧪 test:
|
|
|
2028
2015
|
www
|
|
2029
2016
|
KUBE_APP_NAME_PREFIX: ""
|
|
2030
2017
|
_ALL_ENV_VAR_KEYS: |-
|
|
2031
|
-
["ENV_SHORT","APP_DIR","ENV_TYPE","BUILD_INFO_BUILD_ID","BUILD_INFO_BUILD_TIME","BUILD_INFO_CURRENT_VERSION","
|
|
2018
|
+
["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"]
|
|
2032
2019
|
application:
|
|
2033
2020
|
host: |-
|
|
2034
2021
|
www.dev.test-app.pan.panter.cloud
|
|
@@ -2048,7 +2035,7 @@ www 🧪 test:
|
|
|
2048
2035
|
__health
|
|
2049
2036
|
|
|
2050
2037
|
EOF
|
|
2051
|
-
-
|
|
2038
|
+
- collapseable_section_end "writeallvalues"
|
|
2052
2039
|
- kubernetesCreateSecret
|
|
2053
2040
|
- kubernetesDeploy
|
|
2054
2041
|
- echo 'Uploading SBOM to Dependency Track'
|
|
@@ -2093,30 +2080,28 @@ www 🧪 test:
|
|
|
2093
2080
|
KUBERNETES_MEMORY_LIMIT: 400Mi
|
|
2094
2081
|
GIT_STRATEGY: none
|
|
2095
2082
|
script:
|
|
2096
|
-
-
|
|
2083
|
+
- collapseable_section_start "injectvars" "Injecting variables"
|
|
2097
2084
|
- export ENV_SHORT="dev"
|
|
2098
2085
|
- export APP_DIR="www"
|
|
2099
2086
|
- export ENV_TYPE="dev"
|
|
2100
2087
|
- export BUILD_INFO_BUILD_ID="$(git describe --tags 2>/dev/null || git rev-parse HEAD)"
|
|
2101
2088
|
- export BUILD_INFO_BUILD_TIME="$CI_JOB_STARTED_AT"
|
|
2102
2089
|
- 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")"
|
|
2103
|
-
- export
|
|
2090
|
+
- export HOSTNAME="www.dev.test-app.pan.panter.cloud"
|
|
2104
2091
|
- export ROOT_URL="https://www.dev.test-app.pan.panter.cloud"
|
|
2105
|
-
- export
|
|
2106
|
-
- export HOST_CANONICAL="www.dev.test-app.pan.panter.cloud"
|
|
2092
|
+
- export HOSTNAME_INTERNAL="www.dev.test-app.pan.panter.cloud"
|
|
2107
2093
|
- export ROOT_URL_INTERNAL="https://www.dev.test-app.pan.panter.cloud"
|
|
2108
2094
|
- export KUBE_NAMESPACE="pan-test-app-dev"
|
|
2109
2095
|
- export KUBE_APP_NAME="www"
|
|
2110
2096
|
- export KUBE_APP_NAME_PREFIX=""
|
|
2111
|
-
- export _ALL_ENV_VAR_KEYS="[\\"ENV_SHORT\\",\\"APP_DIR\\",\\"ENV_TYPE\\",\\"BUILD_INFO_BUILD_ID\\",\\"BUILD_INFO_BUILD_TIME\\",\\"BUILD_INFO_CURRENT_VERSION\\",\\"
|
|
2097
|
+
- 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\\"]"
|
|
2112
2098
|
- export RELEASE_NAME="pan-test-app-dev-www"
|
|
2113
2099
|
- export HELM_EXPERIMENTAL_OCI="1"
|
|
2114
2100
|
- export KUBE_DOCKER_IMAGE_PULL_SECRET="gitlab-registry-www"
|
|
2115
2101
|
- export HELM_GITLAB_CHART_NAME="/helm-charts/the-panter-chart"
|
|
2116
2102
|
- export HELM_ARGS=""
|
|
2117
2103
|
- export COMPONENT_NAME="www"
|
|
2118
|
-
-
|
|
2119
|
-
- echo -e "\\e[0Ksection_end:$(date +%s):injectvars\\r\\e[0K"
|
|
2104
|
+
- collapseable_section_end "injectvars"
|
|
2120
2105
|
- kubectl config set-cluster "kube-pan-test-app-dev-www" --server="$CL_dev_www_KUBE_URL" --certificate-authority <(echo $CL_dev_www_KUBE_CA_PEM | base64 -d) --embed-certs=true
|
|
2121
2106
|
- kubectl config set-credentials "kube-pan-test-app-dev-www" --token="$CL_dev_www_KUBE_TOKEN"
|
|
2122
2107
|
- kubectl config set-context "kube-pan-test-app-dev-www" --cluster="kube-pan-test-app-dev-www" --user="kube-pan-test-app-dev-www" --namespace="pan-test-app-dev"
|
|
@@ -2152,30 +2137,28 @@ www 🧪 test:
|
|
|
2152
2137
|
KUBERNETES_MEMORY_LIMIT: 400Mi
|
|
2153
2138
|
GIT_STRATEGY: none
|
|
2154
2139
|
script:
|
|
2155
|
-
-
|
|
2140
|
+
- collapseable_section_start "injectvars" "Injecting variables"
|
|
2156
2141
|
- export ENV_SHORT="dev"
|
|
2157
2142
|
- export APP_DIR="www"
|
|
2158
2143
|
- export ENV_TYPE="dev"
|
|
2159
2144
|
- export BUILD_INFO_BUILD_ID="$(git describe --tags 2>/dev/null || git rev-parse HEAD)"
|
|
2160
2145
|
- export BUILD_INFO_BUILD_TIME="$CI_JOB_STARTED_AT"
|
|
2161
2146
|
- 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")"
|
|
2162
|
-
- export
|
|
2147
|
+
- export HOSTNAME="www.dev.test-app.pan.panter.cloud"
|
|
2163
2148
|
- export ROOT_URL="https://www.dev.test-app.pan.panter.cloud"
|
|
2164
|
-
- export
|
|
2165
|
-
- export HOST_CANONICAL="www.dev.test-app.pan.panter.cloud"
|
|
2149
|
+
- export HOSTNAME_INTERNAL="www.dev.test-app.pan.panter.cloud"
|
|
2166
2150
|
- export ROOT_URL_INTERNAL="https://www.dev.test-app.pan.panter.cloud"
|
|
2167
2151
|
- export KUBE_NAMESPACE="pan-test-app-dev"
|
|
2168
2152
|
- export KUBE_APP_NAME="www"
|
|
2169
2153
|
- export KUBE_APP_NAME_PREFIX=""
|
|
2170
|
-
- export _ALL_ENV_VAR_KEYS="[\\"ENV_SHORT\\",\\"APP_DIR\\",\\"ENV_TYPE\\",\\"BUILD_INFO_BUILD_ID\\",\\"BUILD_INFO_BUILD_TIME\\",\\"BUILD_INFO_CURRENT_VERSION\\",\\"
|
|
2154
|
+
- 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\\"]"
|
|
2171
2155
|
- export RELEASE_NAME="pan-test-app-dev-www"
|
|
2172
2156
|
- export HELM_EXPERIMENTAL_OCI="1"
|
|
2173
2157
|
- export KUBE_DOCKER_IMAGE_PULL_SECRET="gitlab-registry-www"
|
|
2174
2158
|
- export HELM_GITLAB_CHART_NAME="/helm-charts/the-panter-chart"
|
|
2175
2159
|
- export HELM_ARGS=""
|
|
2176
2160
|
- export COMPONENT_NAME="www"
|
|
2177
|
-
-
|
|
2178
|
-
- echo -e "\\e[0Ksection_end:$(date +%s):injectvars\\r\\e[0K"
|
|
2161
|
+
- collapseable_section_end "injectvars"
|
|
2179
2162
|
- kubectl config set-cluster "kube-pan-test-app-dev-www" --server="$CL_dev_www_KUBE_URL" --certificate-authority <(echo $CL_dev_www_KUBE_CA_PEM | base64 -d) --embed-certs=true
|
|
2180
2163
|
- kubectl config set-credentials "kube-pan-test-app-dev-www" --token="$CL_dev_www_KUBE_TOKEN"
|
|
2181
2164
|
- kubectl config set-context "kube-pan-test-app-dev-www" --cluster="kube-pan-test-app-dev-www" --user="kube-pan-test-app-dev-www" --namespace="pan-test-app-dev"
|
|
@@ -2206,36 +2189,51 @@ www 🧪 test:
|
|
|
2206
2189
|
KUBERNETES_MEMORY_REQUEST: 1Gi
|
|
2207
2190
|
KUBERNETES_MEMORY_LIMIT: 4Gi
|
|
2208
2191
|
script:
|
|
2209
|
-
-
|
|
2192
|
+
- collapseable_section_start "injectvars" "Injecting variables"
|
|
2210
2193
|
- export ENV_SHORT="review"
|
|
2211
2194
|
- export APP_DIR="www"
|
|
2212
2195
|
- export ENV_TYPE="review"
|
|
2213
2196
|
- export BUILD_INFO_BUILD_ID="$(git describe --tags 2>/dev/null || git rev-parse HEAD)"
|
|
2214
2197
|
- export BUILD_INFO_BUILD_TIME="$CI_JOB_STARTED_AT"
|
|
2215
2198
|
- 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")"
|
|
2216
|
-
- export
|
|
2199
|
+
- export HOSTNAME="www.$([ -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"
|
|
2217
2200
|
- export ROOT_URL="https://www.$([ -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"
|
|
2218
|
-
- export
|
|
2219
|
-
- export HOST_CANONICAL="www.$([ -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"
|
|
2201
|
+
- export HOSTNAME_INTERNAL="www.$([ -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"
|
|
2220
2202
|
- export ROOT_URL_INTERNAL="https://www.$([ -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"
|
|
2221
2203
|
- export KUBE_NAMESPACE="pan-test-app-review"
|
|
2222
2204
|
- 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"; })-www"
|
|
2223
2205
|
- 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"; })-"
|
|
2224
|
-
- export _ALL_ENV_VAR_KEYS="[\\"ENV_SHORT\\",\\"APP_DIR\\",\\"ENV_TYPE\\",\\"BUILD_INFO_BUILD_ID\\",\\"BUILD_INFO_BUILD_TIME\\",\\"BUILD_INFO_CURRENT_VERSION\\",\\"
|
|
2225
|
-
-
|
|
2206
|
+
- 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\\"]"
|
|
2207
|
+
- collapseable_section_end "injectvars"
|
|
2208
|
+
- collapseable_section_start "write-dotenv-www" "write dot env for www"
|
|
2209
|
+
- |-
|
|
2210
|
+
cat <<EOF > www/.env
|
|
2211
|
+
ENV_SHORT=review
|
|
2212
|
+
APP_DIR=www
|
|
2213
|
+
ENV_TYPE=review
|
|
2214
|
+
HOSTNAME=$(printf %s "www.$([ -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" | escapeForDotEnv)
|
|
2215
|
+
ROOT_URL=$(printf %s "https://www.$([ -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" | escapeForDotEnv)
|
|
2216
|
+
HOSTNAME_INTERNAL=$(printf %s "www.$([ -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" | escapeForDotEnv)
|
|
2217
|
+
ROOT_URL_INTERNAL=$(printf %s "https://www.$([ -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" | escapeForDotEnv)
|
|
2218
|
+
KUBE_NAMESPACE=pan-test-app-review
|
|
2219
|
+
KUBE_APP_NAME=$(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"; })-www" | escapeForDotEnv)
|
|
2220
|
+
KUBE_APP_NAME_PREFIX=$(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"; })-" | escapeForDotEnv)
|
|
2221
|
+
_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"]
|
|
2222
|
+
EOF
|
|
2223
|
+
- collapseable_section_end "write-dotenv-www"
|
|
2226
2224
|
- echo '{"id":"$(git describe --tags 2>/dev/null || git rev-parse HEAD)","time":"$CI_JOB_STARTED_AT"}' > www/__build_info.json
|
|
2227
|
-
-
|
|
2225
|
+
- collapseable_section_start "nodeinstall" "Ensure node version"
|
|
2228
2226
|
- if [ -f ~/.nvm/nvm.sh ]; then source ~/.nvm/nvm.sh; fi
|
|
2229
2227
|
- if command -v nvm &> /dev/null && [ -f ./.nvmrc ]; then nvm install; fi
|
|
2230
|
-
-
|
|
2228
|
+
- collapseable_section_end "nodeinstall"
|
|
2231
2229
|
- cd www
|
|
2232
|
-
-
|
|
2230
|
+
- collapseable_section_start "nodeinstall" "Ensure node version"
|
|
2233
2231
|
- if [ -f ~/.nvm/nvm.sh ]; then source ~/.nvm/nvm.sh; fi
|
|
2234
2232
|
- if command -v nvm &> /dev/null && [ -f ./.nvmrc ]; then nvm install; fi
|
|
2235
|
-
-
|
|
2236
|
-
-
|
|
2233
|
+
- collapseable_section_end "nodeinstall"
|
|
2234
|
+
- collapseable_section_start "yarninstall" "Yarn install"
|
|
2237
2235
|
- yarn install --immutable
|
|
2238
|
-
-
|
|
2236
|
+
- collapseable_section_end "yarninstall"
|
|
2239
2237
|
- yarn build
|
|
2240
2238
|
cache:
|
|
2241
2239
|
- key: www-yarn
|
|
@@ -2246,15 +2244,13 @@ www 🧪 test:
|
|
|
2246
2244
|
policy: pull-push
|
|
2247
2245
|
paths:
|
|
2248
2246
|
- www/node_modules
|
|
2249
|
-
- key: www-next-cache
|
|
2250
|
-
policy: pull-push
|
|
2251
|
-
paths:
|
|
2252
|
-
- www/.next/cache
|
|
2253
2247
|
artifacts:
|
|
2254
2248
|
paths:
|
|
2255
2249
|
- www/__build_info.json
|
|
2256
2250
|
- www/.next
|
|
2257
2251
|
- www/dist
|
|
2252
|
+
exclude:
|
|
2253
|
+
- www/.env
|
|
2258
2254
|
expire_in: 1 day
|
|
2259
2255
|
when: always
|
|
2260
2256
|
reports: {}
|
|
@@ -2280,7 +2276,7 @@ www 🧪 test:
|
|
|
2280
2276
|
KUBERNETES_MEMORY_REQUEST: 1Gi
|
|
2281
2277
|
KUBERNETES_MEMORY_LIMIT: 2Gi
|
|
2282
2278
|
script:
|
|
2283
|
-
-
|
|
2279
|
+
- collapseable_section_start "injectvars" "Injecting variables"
|
|
2284
2280
|
- export APP_DIR="www"
|
|
2285
2281
|
- export DOCKER_BUILD_CONTEXT="."
|
|
2286
2282
|
- export DOCKER_REGISTRY="$CI_REGISTRY"
|
|
@@ -2297,19 +2293,19 @@ www 🧪 test:
|
|
|
2297
2293
|
COPY --chown=node:node www/yarn.lock /app/www/yarn.lock
|
|
2298
2294
|
COPY --chown=node:node .yarnrc.yml /app/.yarnrc.yml
|
|
2299
2295
|
COPY --chown=node:node .yarn /app/.yarn"
|
|
2300
|
-
-
|
|
2296
|
+
- collapseable_section_end "injectvars"
|
|
2301
2297
|
- ensureNodeDockerfile
|
|
2302
|
-
-
|
|
2298
|
+
- collapseable_section_start "docker-login" "Docker Login"
|
|
2303
2299
|
- docker login --username gitlab-ci-token --password $CI_JOB_TOKEN $CI_REGISTRY
|
|
2304
|
-
-
|
|
2305
|
-
-
|
|
2300
|
+
- collapseable_section_end "docker-login"
|
|
2301
|
+
- collapseable_section_start "docker-build" "Docker build"
|
|
2306
2302
|
- 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
|
|
2307
|
-
-
|
|
2308
|
-
-
|
|
2303
|
+
- collapseable_section_end "docker-build"
|
|
2304
|
+
- collapseable_section_start "docker-push" "Docker push and tag"
|
|
2309
2305
|
- docker push $DOCKER_IMAGE:$DOCKER_IMAGE_TAG
|
|
2310
2306
|
- docker tag $DOCKER_IMAGE:$DOCKER_IMAGE_TAG $DOCKER_CACHE_IMAGE
|
|
2311
2307
|
- docker push $DOCKER_CACHE_IMAGE
|
|
2312
|
-
-
|
|
2308
|
+
- collapseable_section_end "docker-push"
|
|
2313
2309
|
cache:
|
|
2314
2310
|
- key: www-yarn
|
|
2315
2311
|
policy: pull
|
|
@@ -2326,8 +2322,8 @@ www 🧪 test:
|
|
|
2326
2322
|
image: aquasec/trivy:0.38.3
|
|
2327
2323
|
variables: {}
|
|
2328
2324
|
script:
|
|
2329
|
-
-
|
|
2330
|
-
-
|
|
2325
|
+
- collapseable_section_start "injectvars" "Injecting variables"
|
|
2326
|
+
- collapseable_section_end "injectvars"
|
|
2331
2327
|
- trivy fs --quiet --format cyclonedx --output "__sbom.json" www
|
|
2332
2328
|
artifacts:
|
|
2333
2329
|
paths:
|
|
@@ -2346,22 +2342,21 @@ www 🧪 test:
|
|
|
2346
2342
|
KUBERNETES_MEMORY_REQUEST: 200Mi
|
|
2347
2343
|
KUBERNETES_MEMORY_LIMIT: 400Mi
|
|
2348
2344
|
script:
|
|
2349
|
-
-
|
|
2345
|
+
- collapseable_section_start "injectvars" "Injecting variables"
|
|
2350
2346
|
- export ENV_SHORT="review"
|
|
2351
2347
|
- export APP_DIR="www"
|
|
2352
2348
|
- export ENV_TYPE="review"
|
|
2353
2349
|
- export BUILD_INFO_BUILD_ID="$(git describe --tags 2>/dev/null || git rev-parse HEAD)"
|
|
2354
2350
|
- export BUILD_INFO_BUILD_TIME="$CI_JOB_STARTED_AT"
|
|
2355
2351
|
- 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")"
|
|
2356
|
-
- export
|
|
2352
|
+
- export HOSTNAME="www.$([ -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"
|
|
2357
2353
|
- export ROOT_URL="https://www.$([ -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"
|
|
2358
|
-
- export
|
|
2359
|
-
- export HOST_CANONICAL="www.$([ -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"
|
|
2354
|
+
- export HOSTNAME_INTERNAL="www.$([ -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"
|
|
2360
2355
|
- export ROOT_URL_INTERNAL="https://www.$([ -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"
|
|
2361
2356
|
- export KUBE_NAMESPACE="pan-test-app-review"
|
|
2362
2357
|
- 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"; })-www"
|
|
2363
2358
|
- 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"; })-"
|
|
2364
|
-
- export _ALL_ENV_VAR_KEYS="[\\"ENV_SHORT\\",\\"APP_DIR\\",\\"ENV_TYPE\\",\\"BUILD_INFO_BUILD_ID\\",\\"BUILD_INFO_BUILD_TIME\\",\\"BUILD_INFO_CURRENT_VERSION\\",\\"
|
|
2359
|
+
- 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\\"]"
|
|
2365
2360
|
- export DOCKER_REGISTRY="$CI_REGISTRY"
|
|
2366
2361
|
- export DOCKER_CACHE_IMAGE="$CI_REGISTRY_IMAGE/caches/www"
|
|
2367
2362
|
- export DOCKER_IMAGE_NAME="review/www"
|
|
@@ -2373,13 +2368,12 @@ www 🧪 test:
|
|
|
2373
2368
|
- export HELM_GITLAB_CHART_NAME="/helm-charts/the-panter-chart"
|
|
2374
2369
|
- export HELM_ARGS=""
|
|
2375
2370
|
- export COMPONENT_NAME="www"
|
|
2376
|
-
-
|
|
2377
|
-
- echo -e "\\e[0Ksection_end:$(date +%s):injectvars\\r\\e[0K"
|
|
2371
|
+
- collapseable_section_end "injectvars"
|
|
2378
2372
|
- 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"; })-www" --server="$CL_review_www_KUBE_URL" --certificate-authority <(echo $CL_review_www_KUBE_CA_PEM | base64 -d) --embed-certs=true
|
|
2379
2373
|
- 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"; })-www" --token="$CL_review_www_KUBE_TOKEN"
|
|
2380
2374
|
- 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"; })-www" --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"; })-www" --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"; })-www" --namespace="pan-test-app-review"
|
|
2381
2375
|
- 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"; })-www"
|
|
2382
|
-
-
|
|
2376
|
+
- collapseable_section_start "writeallvalues" "Write __all_values.yml for helm deployment"
|
|
2383
2377
|
- |
|
|
2384
2378
|
cat > __all_values.yml <<EOF
|
|
2385
2379
|
env:
|
|
@@ -2392,32 +2386,30 @@ www 🧪 test:
|
|
|
2392
2386
|
ENV_TYPE: |-
|
|
2393
2387
|
review
|
|
2394
2388
|
BUILD_INFO_BUILD_ID: |-
|
|
2395
|
-
|
|
2389
|
+
$(printf %s "$(git describe --tags 2>/dev/null || git rev-parse HEAD)" | sed '1!s/^/ /')
|
|
2396
2390
|
BUILD_INFO_BUILD_TIME: |-
|
|
2397
|
-
|
|
2391
|
+
$(printf %s "$CI_JOB_STARTED_AT" | sed '1!s/^/ /')
|
|
2398
2392
|
BUILD_INFO_CURRENT_VERSION: |-
|
|
2399
|
-
|
|
2400
|
-
|
|
2401
|
-
|
|
2393
|
+
$(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/^/ /')
|
|
2394
|
+
HOSTNAME: |-
|
|
2395
|
+
$(printf %s "www.$([ -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/^/ /')
|
|
2402
2396
|
ROOT_URL: |-
|
|
2403
|
-
|
|
2404
|
-
|
|
2405
|
-
|
|
2406
|
-
HOST_CANONICAL: |-
|
|
2407
|
-
$(printf %s "www.$([ -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/^/ /')
|
|
2397
|
+
$(printf %s "https://www.$([ -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/^/ /')
|
|
2398
|
+
HOSTNAME_INTERNAL: |-
|
|
2399
|
+
$(printf %s "www.$([ -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/^/ /')
|
|
2408
2400
|
ROOT_URL_INTERNAL: |-
|
|
2409
|
-
|
|
2401
|
+
$(printf %s "https://www.$([ -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/^/ /')
|
|
2410
2402
|
KUBE_NAMESPACE: |-
|
|
2411
2403
|
pan-test-app-review
|
|
2412
2404
|
KUBE_APP_NAME: |-
|
|
2413
|
-
|
|
2405
|
+
$(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"; })-www" | sed '1!s/^/ /')
|
|
2414
2406
|
KUBE_APP_NAME_PREFIX: |-
|
|
2415
|
-
|
|
2407
|
+
$(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/^/ /')
|
|
2416
2408
|
_ALL_ENV_VAR_KEYS: |-
|
|
2417
|
-
["ENV_SHORT","APP_DIR","ENV_TYPE","BUILD_INFO_BUILD_ID","BUILD_INFO_BUILD_TIME","BUILD_INFO_CURRENT_VERSION","
|
|
2409
|
+
["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"]
|
|
2418
2410
|
application:
|
|
2419
2411
|
host: |-
|
|
2420
|
-
|
|
2412
|
+
$(printf %s "www.$([ -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/^/ /')
|
|
2421
2413
|
command: |-
|
|
2422
2414
|
yarn start
|
|
2423
2415
|
livenessProbe:
|
|
@@ -2434,7 +2426,7 @@ www 🧪 test:
|
|
|
2434
2426
|
__health
|
|
2435
2427
|
|
|
2436
2428
|
EOF
|
|
2437
|
-
-
|
|
2429
|
+
- collapseable_section_end "writeallvalues"
|
|
2438
2430
|
- kubernetesCreateSecret
|
|
2439
2431
|
- kubernetesDeploy
|
|
2440
2432
|
- echo 'Uploading SBOM to Dependency Track'
|
|
@@ -2477,30 +2469,28 @@ www 🧪 test:
|
|
|
2477
2469
|
KUBERNETES_MEMORY_LIMIT: 400Mi
|
|
2478
2470
|
GIT_STRATEGY: none
|
|
2479
2471
|
script:
|
|
2480
|
-
-
|
|
2472
|
+
- collapseable_section_start "injectvars" "Injecting variables"
|
|
2481
2473
|
- export ENV_SHORT="review"
|
|
2482
2474
|
- export APP_DIR="www"
|
|
2483
2475
|
- export ENV_TYPE="review"
|
|
2484
2476
|
- export BUILD_INFO_BUILD_ID="$(git describe --tags 2>/dev/null || git rev-parse HEAD)"
|
|
2485
2477
|
- export BUILD_INFO_BUILD_TIME="$CI_JOB_STARTED_AT"
|
|
2486
2478
|
- 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")"
|
|
2487
|
-
- export
|
|
2479
|
+
- export HOSTNAME="www.$([ -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"
|
|
2488
2480
|
- export ROOT_URL="https://www.$([ -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"
|
|
2489
|
-
- export
|
|
2490
|
-
- export HOST_CANONICAL="www.$([ -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"
|
|
2481
|
+
- export HOSTNAME_INTERNAL="www.$([ -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"
|
|
2491
2482
|
- export ROOT_URL_INTERNAL="https://www.$([ -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"
|
|
2492
2483
|
- export KUBE_NAMESPACE="pan-test-app-review"
|
|
2493
2484
|
- 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"; })-www"
|
|
2494
2485
|
- 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"; })-"
|
|
2495
|
-
- export _ALL_ENV_VAR_KEYS="[\\"ENV_SHORT\\",\\"APP_DIR\\",\\"ENV_TYPE\\",\\"BUILD_INFO_BUILD_ID\\",\\"BUILD_INFO_BUILD_TIME\\",\\"BUILD_INFO_CURRENT_VERSION\\",\\"
|
|
2486
|
+
- 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\\"]"
|
|
2496
2487
|
- 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"; })-www"
|
|
2497
2488
|
- export HELM_EXPERIMENTAL_OCI="1"
|
|
2498
2489
|
- export KUBE_DOCKER_IMAGE_PULL_SECRET="gitlab-registry-www"
|
|
2499
2490
|
- export HELM_GITLAB_CHART_NAME="/helm-charts/the-panter-chart"
|
|
2500
2491
|
- export HELM_ARGS=""
|
|
2501
2492
|
- export COMPONENT_NAME="www"
|
|
2502
|
-
-
|
|
2503
|
-
- echo -e "\\e[0Ksection_end:$(date +%s):injectvars\\r\\e[0K"
|
|
2493
|
+
- collapseable_section_end "injectvars"
|
|
2504
2494
|
- 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"; })-www" --server="$CL_review_www_KUBE_URL" --certificate-authority <(echo $CL_review_www_KUBE_CA_PEM | base64 -d) --embed-certs=true
|
|
2505
2495
|
- 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"; })-www" --token="$CL_review_www_KUBE_TOKEN"
|
|
2506
2496
|
- 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"; })-www" --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"; })-www" --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"; })-www" --namespace="pan-test-app-review"
|
|
@@ -2534,30 +2524,28 @@ www 🧪 test:
|
|
|
2534
2524
|
KUBERNETES_MEMORY_LIMIT: 400Mi
|
|
2535
2525
|
GIT_STRATEGY: none
|
|
2536
2526
|
script:
|
|
2537
|
-
-
|
|
2527
|
+
- collapseable_section_start "injectvars" "Injecting variables"
|
|
2538
2528
|
- export ENV_SHORT="review"
|
|
2539
2529
|
- export APP_DIR="www"
|
|
2540
2530
|
- export ENV_TYPE="review"
|
|
2541
2531
|
- export BUILD_INFO_BUILD_ID="$(git describe --tags 2>/dev/null || git rev-parse HEAD)"
|
|
2542
2532
|
- export BUILD_INFO_BUILD_TIME="$CI_JOB_STARTED_AT"
|
|
2543
2533
|
- 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")"
|
|
2544
|
-
- export
|
|
2534
|
+
- export HOSTNAME="www.$([ -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"
|
|
2545
2535
|
- export ROOT_URL="https://www.$([ -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"
|
|
2546
|
-
- export
|
|
2547
|
-
- export HOST_CANONICAL="www.$([ -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"
|
|
2536
|
+
- export HOSTNAME_INTERNAL="www.$([ -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"
|
|
2548
2537
|
- export ROOT_URL_INTERNAL="https://www.$([ -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"
|
|
2549
2538
|
- export KUBE_NAMESPACE="pan-test-app-review"
|
|
2550
2539
|
- 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"; })-www"
|
|
2551
2540
|
- 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"; })-"
|
|
2552
|
-
- export _ALL_ENV_VAR_KEYS="[\\"ENV_SHORT\\",\\"APP_DIR\\",\\"ENV_TYPE\\",\\"BUILD_INFO_BUILD_ID\\",\\"BUILD_INFO_BUILD_TIME\\",\\"BUILD_INFO_CURRENT_VERSION\\",\\"
|
|
2541
|
+
- 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\\"]"
|
|
2553
2542
|
- 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"; })-www"
|
|
2554
2543
|
- export HELM_EXPERIMENTAL_OCI="1"
|
|
2555
2544
|
- export KUBE_DOCKER_IMAGE_PULL_SECRET="gitlab-registry-www"
|
|
2556
2545
|
- export HELM_GITLAB_CHART_NAME="/helm-charts/the-panter-chart"
|
|
2557
2546
|
- export HELM_ARGS=""
|
|
2558
2547
|
- export COMPONENT_NAME="www"
|
|
2559
|
-
-
|
|
2560
|
-
- echo -e "\\e[0Ksection_end:$(date +%s):injectvars\\r\\e[0K"
|
|
2548
|
+
- collapseable_section_end "injectvars"
|
|
2561
2549
|
- 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"; })-www" --server="$CL_review_www_KUBE_URL" --certificate-authority <(echo $CL_review_www_KUBE_CA_PEM | base64 -d) --embed-certs=true
|
|
2562
2550
|
- 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"; })-www" --token="$CL_review_www_KUBE_TOKEN"
|
|
2563
2551
|
- 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"; })-www" --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"; })-www" --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"; })-www" --namespace="pan-test-app-review"
|
|
@@ -2586,36 +2574,51 @@ www 🧪 test:
|
|
|
2586
2574
|
KUBERNETES_MEMORY_REQUEST: 1Gi
|
|
2587
2575
|
KUBERNETES_MEMORY_LIMIT: 4Gi
|
|
2588
2576
|
script:
|
|
2589
|
-
-
|
|
2577
|
+
- collapseable_section_start "injectvars" "Injecting variables"
|
|
2590
2578
|
- export ENV_SHORT="stage"
|
|
2591
2579
|
- export APP_DIR="www"
|
|
2592
2580
|
- export ENV_TYPE="stage"
|
|
2593
2581
|
- export BUILD_INFO_BUILD_ID="$(git describe --tags 2>/dev/null || git rev-parse HEAD)"
|
|
2594
2582
|
- export BUILD_INFO_BUILD_TIME="$CI_JOB_STARTED_AT"
|
|
2595
2583
|
- 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")"
|
|
2596
|
-
- export
|
|
2584
|
+
- export HOSTNAME="www.stage.test-app.pan.panter.cloud"
|
|
2597
2585
|
- export ROOT_URL="https://www.stage.test-app.pan.panter.cloud"
|
|
2598
|
-
- export
|
|
2599
|
-
- export HOST_CANONICAL="www.stage.test-app.pan.panter.cloud"
|
|
2586
|
+
- export HOSTNAME_INTERNAL="www.stage.test-app.pan.panter.cloud"
|
|
2600
2587
|
- export ROOT_URL_INTERNAL="https://www.stage.test-app.pan.panter.cloud"
|
|
2601
2588
|
- export KUBE_NAMESPACE="pan-test-app-stage"
|
|
2602
2589
|
- export KUBE_APP_NAME="www"
|
|
2603
2590
|
- export KUBE_APP_NAME_PREFIX=""
|
|
2604
|
-
- export _ALL_ENV_VAR_KEYS="[\\"ENV_SHORT\\",\\"APP_DIR\\",\\"ENV_TYPE\\",\\"BUILD_INFO_BUILD_ID\\",\\"BUILD_INFO_BUILD_TIME\\",\\"BUILD_INFO_CURRENT_VERSION\\",\\"
|
|
2605
|
-
-
|
|
2591
|
+
- 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\\"]"
|
|
2592
|
+
- collapseable_section_end "injectvars"
|
|
2593
|
+
- collapseable_section_start "write-dotenv-www" "write dot env for www"
|
|
2594
|
+
- |-
|
|
2595
|
+
cat <<EOF > www/.env
|
|
2596
|
+
ENV_SHORT=stage
|
|
2597
|
+
APP_DIR=www
|
|
2598
|
+
ENV_TYPE=stage
|
|
2599
|
+
HOSTNAME=www.stage.test-app.pan.panter.cloud
|
|
2600
|
+
ROOT_URL=https://www.stage.test-app.pan.panter.cloud
|
|
2601
|
+
HOSTNAME_INTERNAL=www.stage.test-app.pan.panter.cloud
|
|
2602
|
+
ROOT_URL_INTERNAL=https://www.stage.test-app.pan.panter.cloud
|
|
2603
|
+
KUBE_NAMESPACE=pan-test-app-stage
|
|
2604
|
+
KUBE_APP_NAME=www
|
|
2605
|
+
KUBE_APP_NAME_PREFIX=
|
|
2606
|
+
_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"]
|
|
2607
|
+
EOF
|
|
2608
|
+
- collapseable_section_end "write-dotenv-www"
|
|
2606
2609
|
- echo '{"id":"$(git describe --tags 2>/dev/null || git rev-parse HEAD)","time":"$CI_JOB_STARTED_AT"}' > www/__build_info.json
|
|
2607
|
-
-
|
|
2610
|
+
- collapseable_section_start "nodeinstall" "Ensure node version"
|
|
2608
2611
|
- if [ -f ~/.nvm/nvm.sh ]; then source ~/.nvm/nvm.sh; fi
|
|
2609
2612
|
- if command -v nvm &> /dev/null && [ -f ./.nvmrc ]; then nvm install; fi
|
|
2610
|
-
-
|
|
2613
|
+
- collapseable_section_end "nodeinstall"
|
|
2611
2614
|
- cd www
|
|
2612
|
-
-
|
|
2615
|
+
- collapseable_section_start "nodeinstall" "Ensure node version"
|
|
2613
2616
|
- if [ -f ~/.nvm/nvm.sh ]; then source ~/.nvm/nvm.sh; fi
|
|
2614
2617
|
- if command -v nvm &> /dev/null && [ -f ./.nvmrc ]; then nvm install; fi
|
|
2615
|
-
-
|
|
2616
|
-
-
|
|
2618
|
+
- collapseable_section_end "nodeinstall"
|
|
2619
|
+
- collapseable_section_start "yarninstall" "Yarn install"
|
|
2617
2620
|
- yarn install --immutable
|
|
2618
|
-
-
|
|
2621
|
+
- collapseable_section_end "yarninstall"
|
|
2619
2622
|
- yarn build
|
|
2620
2623
|
cache:
|
|
2621
2624
|
- key: www-yarn
|
|
@@ -2626,15 +2629,13 @@ www 🧪 test:
|
|
|
2626
2629
|
policy: pull-push
|
|
2627
2630
|
paths:
|
|
2628
2631
|
- www/node_modules
|
|
2629
|
-
- key: www-next-cache
|
|
2630
|
-
policy: pull-push
|
|
2631
|
-
paths:
|
|
2632
|
-
- www/.next/cache
|
|
2633
2632
|
artifacts:
|
|
2634
2633
|
paths:
|
|
2635
2634
|
- www/__build_info.json
|
|
2636
2635
|
- www/.next
|
|
2637
2636
|
- www/dist
|
|
2637
|
+
exclude:
|
|
2638
|
+
- www/.env
|
|
2638
2639
|
expire_in: 1 day
|
|
2639
2640
|
when: always
|
|
2640
2641
|
reports: {}
|
|
@@ -2660,7 +2661,7 @@ www 🧪 test:
|
|
|
2660
2661
|
KUBERNETES_MEMORY_REQUEST: 1Gi
|
|
2661
2662
|
KUBERNETES_MEMORY_LIMIT: 2Gi
|
|
2662
2663
|
script:
|
|
2663
|
-
-
|
|
2664
|
+
- collapseable_section_start "injectvars" "Injecting variables"
|
|
2664
2665
|
- export APP_DIR="www"
|
|
2665
2666
|
- export DOCKER_BUILD_CONTEXT="."
|
|
2666
2667
|
- export DOCKER_REGISTRY="$CI_REGISTRY"
|
|
@@ -2677,19 +2678,19 @@ www 🧪 test:
|
|
|
2677
2678
|
COPY --chown=node:node www/yarn.lock /app/www/yarn.lock
|
|
2678
2679
|
COPY --chown=node:node .yarnrc.yml /app/.yarnrc.yml
|
|
2679
2680
|
COPY --chown=node:node .yarn /app/.yarn"
|
|
2680
|
-
-
|
|
2681
|
+
- collapseable_section_end "injectvars"
|
|
2681
2682
|
- ensureNodeDockerfile
|
|
2682
|
-
-
|
|
2683
|
+
- collapseable_section_start "docker-login" "Docker Login"
|
|
2683
2684
|
- docker login --username gitlab-ci-token --password $CI_JOB_TOKEN $CI_REGISTRY
|
|
2684
|
-
-
|
|
2685
|
-
-
|
|
2685
|
+
- collapseable_section_end "docker-login"
|
|
2686
|
+
- collapseable_section_start "docker-build" "Docker build"
|
|
2686
2687
|
- 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
|
|
2687
|
-
-
|
|
2688
|
-
-
|
|
2688
|
+
- collapseable_section_end "docker-build"
|
|
2689
|
+
- collapseable_section_start "docker-push" "Docker push and tag"
|
|
2689
2690
|
- docker push $DOCKER_IMAGE:$DOCKER_IMAGE_TAG
|
|
2690
2691
|
- docker tag $DOCKER_IMAGE:$DOCKER_IMAGE_TAG $DOCKER_CACHE_IMAGE
|
|
2691
2692
|
- docker push $DOCKER_CACHE_IMAGE
|
|
2692
|
-
-
|
|
2693
|
+
- collapseable_section_end "docker-push"
|
|
2693
2694
|
cache:
|
|
2694
2695
|
- key: www-yarn
|
|
2695
2696
|
policy: pull
|
|
@@ -2706,8 +2707,8 @@ www 🧪 test:
|
|
|
2706
2707
|
image: aquasec/trivy:0.38.3
|
|
2707
2708
|
variables: {}
|
|
2708
2709
|
script:
|
|
2709
|
-
-
|
|
2710
|
-
-
|
|
2710
|
+
- collapseable_section_start "injectvars" "Injecting variables"
|
|
2711
|
+
- collapseable_section_end "injectvars"
|
|
2711
2712
|
- trivy fs --quiet --format cyclonedx --output "__sbom.json" www
|
|
2712
2713
|
artifacts:
|
|
2713
2714
|
paths:
|
|
@@ -2726,22 +2727,21 @@ www 🧪 test:
|
|
|
2726
2727
|
KUBERNETES_MEMORY_REQUEST: 200Mi
|
|
2727
2728
|
KUBERNETES_MEMORY_LIMIT: 400Mi
|
|
2728
2729
|
script:
|
|
2729
|
-
-
|
|
2730
|
+
- collapseable_section_start "injectvars" "Injecting variables"
|
|
2730
2731
|
- export ENV_SHORT="stage"
|
|
2731
2732
|
- export APP_DIR="www"
|
|
2732
2733
|
- export ENV_TYPE="stage"
|
|
2733
2734
|
- export BUILD_INFO_BUILD_ID="$(git describe --tags 2>/dev/null || git rev-parse HEAD)"
|
|
2734
2735
|
- export BUILD_INFO_BUILD_TIME="$CI_JOB_STARTED_AT"
|
|
2735
2736
|
- 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")"
|
|
2736
|
-
- export
|
|
2737
|
+
- export HOSTNAME="www.stage.test-app.pan.panter.cloud"
|
|
2737
2738
|
- export ROOT_URL="https://www.stage.test-app.pan.panter.cloud"
|
|
2738
|
-
- export
|
|
2739
|
-
- export HOST_CANONICAL="www.stage.test-app.pan.panter.cloud"
|
|
2739
|
+
- export HOSTNAME_INTERNAL="www.stage.test-app.pan.panter.cloud"
|
|
2740
2740
|
- export ROOT_URL_INTERNAL="https://www.stage.test-app.pan.panter.cloud"
|
|
2741
2741
|
- export KUBE_NAMESPACE="pan-test-app-stage"
|
|
2742
2742
|
- export KUBE_APP_NAME="www"
|
|
2743
2743
|
- export KUBE_APP_NAME_PREFIX=""
|
|
2744
|
-
- export _ALL_ENV_VAR_KEYS="[\\"ENV_SHORT\\",\\"APP_DIR\\",\\"ENV_TYPE\\",\\"BUILD_INFO_BUILD_ID\\",\\"BUILD_INFO_BUILD_TIME\\",\\"BUILD_INFO_CURRENT_VERSION\\",\\"
|
|
2744
|
+
- 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\\"]"
|
|
2745
2745
|
- export DOCKER_REGISTRY="$CI_REGISTRY"
|
|
2746
2746
|
- export DOCKER_CACHE_IMAGE="$CI_REGISTRY_IMAGE/caches/www"
|
|
2747
2747
|
- export DOCKER_IMAGE_NAME="stage/www"
|
|
@@ -2753,13 +2753,12 @@ www 🧪 test:
|
|
|
2753
2753
|
- export HELM_GITLAB_CHART_NAME="/helm-charts/the-panter-chart"
|
|
2754
2754
|
- export HELM_ARGS=""
|
|
2755
2755
|
- export COMPONENT_NAME="www"
|
|
2756
|
-
-
|
|
2757
|
-
- echo -e "\\e[0Ksection_end:$(date +%s):injectvars\\r\\e[0K"
|
|
2756
|
+
- collapseable_section_end "injectvars"
|
|
2758
2757
|
- kubectl config set-cluster "kube-pan-test-app-stage-www" --server="$CL_stage_www_KUBE_URL" --certificate-authority <(echo $CL_stage_www_KUBE_CA_PEM | base64 -d) --embed-certs=true
|
|
2759
2758
|
- kubectl config set-credentials "kube-pan-test-app-stage-www" --token="$CL_stage_www_KUBE_TOKEN"
|
|
2760
2759
|
- kubectl config set-context "kube-pan-test-app-stage-www" --cluster="kube-pan-test-app-stage-www" --user="kube-pan-test-app-stage-www" --namespace="pan-test-app-stage"
|
|
2761
2760
|
- kubectl config use-context "kube-pan-test-app-stage-www"
|
|
2762
|
-
-
|
|
2761
|
+
- collapseable_section_start "writeallvalues" "Write __all_values.yml for helm deployment"
|
|
2763
2762
|
- |
|
|
2764
2763
|
cat > __all_values.yml <<EOF
|
|
2765
2764
|
env:
|
|
@@ -2772,18 +2771,16 @@ www 🧪 test:
|
|
|
2772
2771
|
ENV_TYPE: |-
|
|
2773
2772
|
stage
|
|
2774
2773
|
BUILD_INFO_BUILD_ID: |-
|
|
2775
|
-
|
|
2774
|
+
$(printf %s "$(git describe --tags 2>/dev/null || git rev-parse HEAD)" | sed '1!s/^/ /')
|
|
2776
2775
|
BUILD_INFO_BUILD_TIME: |-
|
|
2777
|
-
|
|
2776
|
+
$(printf %s "$CI_JOB_STARTED_AT" | sed '1!s/^/ /')
|
|
2778
2777
|
BUILD_INFO_CURRENT_VERSION: |-
|
|
2779
|
-
|
|
2780
|
-
|
|
2778
|
+
$(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/^/ /')
|
|
2779
|
+
HOSTNAME: |-
|
|
2781
2780
|
www.stage.test-app.pan.panter.cloud
|
|
2782
2781
|
ROOT_URL: |-
|
|
2783
2782
|
https://www.stage.test-app.pan.panter.cloud
|
|
2784
|
-
|
|
2785
|
-
www.stage.test-app.pan.panter.cloud
|
|
2786
|
-
HOST_CANONICAL: |-
|
|
2783
|
+
HOSTNAME_INTERNAL: |-
|
|
2787
2784
|
www.stage.test-app.pan.panter.cloud
|
|
2788
2785
|
ROOT_URL_INTERNAL: |-
|
|
2789
2786
|
https://www.stage.test-app.pan.panter.cloud
|
|
@@ -2793,7 +2790,7 @@ www 🧪 test:
|
|
|
2793
2790
|
www
|
|
2794
2791
|
KUBE_APP_NAME_PREFIX: ""
|
|
2795
2792
|
_ALL_ENV_VAR_KEYS: |-
|
|
2796
|
-
["ENV_SHORT","APP_DIR","ENV_TYPE","BUILD_INFO_BUILD_ID","BUILD_INFO_BUILD_TIME","BUILD_INFO_CURRENT_VERSION","
|
|
2793
|
+
["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"]
|
|
2797
2794
|
application:
|
|
2798
2795
|
host: |-
|
|
2799
2796
|
www.stage.test-app.pan.panter.cloud
|
|
@@ -2813,7 +2810,7 @@ www 🧪 test:
|
|
|
2813
2810
|
__health
|
|
2814
2811
|
|
|
2815
2812
|
EOF
|
|
2816
|
-
-
|
|
2813
|
+
- collapseable_section_end "writeallvalues"
|
|
2817
2814
|
- kubernetesCreateSecret
|
|
2818
2815
|
- kubernetesDeploy
|
|
2819
2816
|
- echo 'Uploading SBOM to Dependency Track'
|
|
@@ -2849,30 +2846,28 @@ www 🧪 test:
|
|
|
2849
2846
|
KUBERNETES_MEMORY_LIMIT: 400Mi
|
|
2850
2847
|
GIT_STRATEGY: none
|
|
2851
2848
|
script:
|
|
2852
|
-
-
|
|
2849
|
+
- collapseable_section_start "injectvars" "Injecting variables"
|
|
2853
2850
|
- export ENV_SHORT="stage"
|
|
2854
2851
|
- export APP_DIR="www"
|
|
2855
2852
|
- export ENV_TYPE="stage"
|
|
2856
2853
|
- export BUILD_INFO_BUILD_ID="$(git describe --tags 2>/dev/null || git rev-parse HEAD)"
|
|
2857
2854
|
- export BUILD_INFO_BUILD_TIME="$CI_JOB_STARTED_AT"
|
|
2858
2855
|
- 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")"
|
|
2859
|
-
- export
|
|
2856
|
+
- export HOSTNAME="www.stage.test-app.pan.panter.cloud"
|
|
2860
2857
|
- export ROOT_URL="https://www.stage.test-app.pan.panter.cloud"
|
|
2861
|
-
- export
|
|
2862
|
-
- export HOST_CANONICAL="www.stage.test-app.pan.panter.cloud"
|
|
2858
|
+
- export HOSTNAME_INTERNAL="www.stage.test-app.pan.panter.cloud"
|
|
2863
2859
|
- export ROOT_URL_INTERNAL="https://www.stage.test-app.pan.panter.cloud"
|
|
2864
2860
|
- export KUBE_NAMESPACE="pan-test-app-stage"
|
|
2865
2861
|
- export KUBE_APP_NAME="www"
|
|
2866
2862
|
- export KUBE_APP_NAME_PREFIX=""
|
|
2867
|
-
- export _ALL_ENV_VAR_KEYS="[\\"ENV_SHORT\\",\\"APP_DIR\\",\\"ENV_TYPE\\",\\"BUILD_INFO_BUILD_ID\\",\\"BUILD_INFO_BUILD_TIME\\",\\"BUILD_INFO_CURRENT_VERSION\\",\\"
|
|
2863
|
+
- 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\\"]"
|
|
2868
2864
|
- export RELEASE_NAME="pan-test-app-stage-www"
|
|
2869
2865
|
- export HELM_EXPERIMENTAL_OCI="1"
|
|
2870
2866
|
- export KUBE_DOCKER_IMAGE_PULL_SECRET="gitlab-registry-www"
|
|
2871
2867
|
- export HELM_GITLAB_CHART_NAME="/helm-charts/the-panter-chart"
|
|
2872
2868
|
- export HELM_ARGS=""
|
|
2873
2869
|
- export COMPONENT_NAME="www"
|
|
2874
|
-
-
|
|
2875
|
-
- echo -e "\\e[0Ksection_end:$(date +%s):injectvars\\r\\e[0K"
|
|
2870
|
+
- collapseable_section_end "injectvars"
|
|
2876
2871
|
- kubectl config set-cluster "kube-pan-test-app-stage-www" --server="$CL_stage_www_KUBE_URL" --certificate-authority <(echo $CL_stage_www_KUBE_CA_PEM | base64 -d) --embed-certs=true
|
|
2877
2872
|
- kubectl config set-credentials "kube-pan-test-app-stage-www" --token="$CL_stage_www_KUBE_TOKEN"
|
|
2878
2873
|
- kubectl config set-context "kube-pan-test-app-stage-www" --cluster="kube-pan-test-app-stage-www" --user="kube-pan-test-app-stage-www" --namespace="pan-test-app-stage"
|
|
@@ -2906,30 +2901,28 @@ www 🧪 test:
|
|
|
2906
2901
|
KUBERNETES_MEMORY_LIMIT: 400Mi
|
|
2907
2902
|
GIT_STRATEGY: none
|
|
2908
2903
|
script:
|
|
2909
|
-
-
|
|
2904
|
+
- collapseable_section_start "injectvars" "Injecting variables"
|
|
2910
2905
|
- export ENV_SHORT="stage"
|
|
2911
2906
|
- export APP_DIR="www"
|
|
2912
2907
|
- export ENV_TYPE="stage"
|
|
2913
2908
|
- export BUILD_INFO_BUILD_ID="$(git describe --tags 2>/dev/null || git rev-parse HEAD)"
|
|
2914
2909
|
- export BUILD_INFO_BUILD_TIME="$CI_JOB_STARTED_AT"
|
|
2915
2910
|
- 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")"
|
|
2916
|
-
- export
|
|
2911
|
+
- export HOSTNAME="www.stage.test-app.pan.panter.cloud"
|
|
2917
2912
|
- export ROOT_URL="https://www.stage.test-app.pan.panter.cloud"
|
|
2918
|
-
- export
|
|
2919
|
-
- export HOST_CANONICAL="www.stage.test-app.pan.panter.cloud"
|
|
2913
|
+
- export HOSTNAME_INTERNAL="www.stage.test-app.pan.panter.cloud"
|
|
2920
2914
|
- export ROOT_URL_INTERNAL="https://www.stage.test-app.pan.panter.cloud"
|
|
2921
2915
|
- export KUBE_NAMESPACE="pan-test-app-stage"
|
|
2922
2916
|
- export KUBE_APP_NAME="www"
|
|
2923
2917
|
- export KUBE_APP_NAME_PREFIX=""
|
|
2924
|
-
- export _ALL_ENV_VAR_KEYS="[\\"ENV_SHORT\\",\\"APP_DIR\\",\\"ENV_TYPE\\",\\"BUILD_INFO_BUILD_ID\\",\\"BUILD_INFO_BUILD_TIME\\",\\"BUILD_INFO_CURRENT_VERSION\\",\\"
|
|
2918
|
+
- 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\\"]"
|
|
2925
2919
|
- export RELEASE_NAME="pan-test-app-stage-www"
|
|
2926
2920
|
- export HELM_EXPERIMENTAL_OCI="1"
|
|
2927
2921
|
- export KUBE_DOCKER_IMAGE_PULL_SECRET="gitlab-registry-www"
|
|
2928
2922
|
- export HELM_GITLAB_CHART_NAME="/helm-charts/the-panter-chart"
|
|
2929
2923
|
- export HELM_ARGS=""
|
|
2930
2924
|
- export COMPONENT_NAME="www"
|
|
2931
|
-
-
|
|
2932
|
-
- echo -e "\\e[0Ksection_end:$(date +%s):injectvars\\r\\e[0K"
|
|
2925
|
+
- collapseable_section_end "injectvars"
|
|
2933
2926
|
- kubectl config set-cluster "kube-pan-test-app-stage-www" --server="$CL_stage_www_KUBE_URL" --certificate-authority <(echo $CL_stage_www_KUBE_CA_PEM | base64 -d) --embed-certs=true
|
|
2934
2927
|
- kubectl config set-credentials "kube-pan-test-app-stage-www" --token="$CL_stage_www_KUBE_TOKEN"
|
|
2935
2928
|
- kubectl config set-context "kube-pan-test-app-stage-www" --cluster="kube-pan-test-app-stage-www" --user="kube-pan-test-app-stage-www" --namespace="pan-test-app-stage"
|
|
@@ -2958,36 +2951,51 @@ www 🧪 test:
|
|
|
2958
2951
|
KUBERNETES_MEMORY_REQUEST: 1Gi
|
|
2959
2952
|
KUBERNETES_MEMORY_LIMIT: 4Gi
|
|
2960
2953
|
script:
|
|
2961
|
-
-
|
|
2954
|
+
- collapseable_section_start "injectvars" "Injecting variables"
|
|
2962
2955
|
- export ENV_SHORT="prod"
|
|
2963
2956
|
- export APP_DIR="www"
|
|
2964
2957
|
- export ENV_TYPE="prod"
|
|
2965
2958
|
- export BUILD_INFO_BUILD_ID="$(git describe --tags 2>/dev/null || git rev-parse HEAD)"
|
|
2966
2959
|
- export BUILD_INFO_BUILD_TIME="$CI_JOB_STARTED_AT"
|
|
2967
2960
|
- 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")"
|
|
2968
|
-
- export
|
|
2961
|
+
- export HOSTNAME="www.prod.test-app.pan.panter.cloud"
|
|
2969
2962
|
- export ROOT_URL="https://www.prod.test-app.pan.panter.cloud"
|
|
2970
|
-
- export
|
|
2971
|
-
- export HOST_CANONICAL="www.prod.test-app.pan.panter.cloud"
|
|
2963
|
+
- export HOSTNAME_INTERNAL="www.prod.test-app.pan.panter.cloud"
|
|
2972
2964
|
- export ROOT_URL_INTERNAL="https://www.prod.test-app.pan.panter.cloud"
|
|
2973
2965
|
- export KUBE_NAMESPACE="pan-test-app-prod"
|
|
2974
2966
|
- export KUBE_APP_NAME="www"
|
|
2975
2967
|
- export KUBE_APP_NAME_PREFIX=""
|
|
2976
|
-
- export _ALL_ENV_VAR_KEYS="[\\"ENV_SHORT\\",\\"APP_DIR\\",\\"ENV_TYPE\\",\\"BUILD_INFO_BUILD_ID\\",\\"BUILD_INFO_BUILD_TIME\\",\\"BUILD_INFO_CURRENT_VERSION\\",\\"
|
|
2977
|
-
-
|
|
2968
|
+
- 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\\"]"
|
|
2969
|
+
- collapseable_section_end "injectvars"
|
|
2970
|
+
- collapseable_section_start "write-dotenv-www" "write dot env for www"
|
|
2971
|
+
- |-
|
|
2972
|
+
cat <<EOF > www/.env
|
|
2973
|
+
ENV_SHORT=prod
|
|
2974
|
+
APP_DIR=www
|
|
2975
|
+
ENV_TYPE=prod
|
|
2976
|
+
HOSTNAME=www.prod.test-app.pan.panter.cloud
|
|
2977
|
+
ROOT_URL=https://www.prod.test-app.pan.panter.cloud
|
|
2978
|
+
HOSTNAME_INTERNAL=www.prod.test-app.pan.panter.cloud
|
|
2979
|
+
ROOT_URL_INTERNAL=https://www.prod.test-app.pan.panter.cloud
|
|
2980
|
+
KUBE_NAMESPACE=pan-test-app-prod
|
|
2981
|
+
KUBE_APP_NAME=www
|
|
2982
|
+
KUBE_APP_NAME_PREFIX=
|
|
2983
|
+
_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"]
|
|
2984
|
+
EOF
|
|
2985
|
+
- collapseable_section_end "write-dotenv-www"
|
|
2978
2986
|
- echo '{"id":"$(git describe --tags 2>/dev/null || git rev-parse HEAD)","time":"$CI_JOB_STARTED_AT"}' > www/__build_info.json
|
|
2979
|
-
-
|
|
2987
|
+
- collapseable_section_start "nodeinstall" "Ensure node version"
|
|
2980
2988
|
- if [ -f ~/.nvm/nvm.sh ]; then source ~/.nvm/nvm.sh; fi
|
|
2981
2989
|
- if command -v nvm &> /dev/null && [ -f ./.nvmrc ]; then nvm install; fi
|
|
2982
|
-
-
|
|
2990
|
+
- collapseable_section_end "nodeinstall"
|
|
2983
2991
|
- cd www
|
|
2984
|
-
-
|
|
2992
|
+
- collapseable_section_start "nodeinstall" "Ensure node version"
|
|
2985
2993
|
- if [ -f ~/.nvm/nvm.sh ]; then source ~/.nvm/nvm.sh; fi
|
|
2986
2994
|
- if command -v nvm &> /dev/null && [ -f ./.nvmrc ]; then nvm install; fi
|
|
2987
|
-
-
|
|
2988
|
-
-
|
|
2995
|
+
- collapseable_section_end "nodeinstall"
|
|
2996
|
+
- collapseable_section_start "yarninstall" "Yarn install"
|
|
2989
2997
|
- yarn install --immutable
|
|
2990
|
-
-
|
|
2998
|
+
- collapseable_section_end "yarninstall"
|
|
2991
2999
|
- yarn build
|
|
2992
3000
|
cache:
|
|
2993
3001
|
- key: www-yarn
|
|
@@ -2998,15 +3006,13 @@ www 🧪 test:
|
|
|
2998
3006
|
policy: pull-push
|
|
2999
3007
|
paths:
|
|
3000
3008
|
- www/node_modules
|
|
3001
|
-
- key: www-next-cache
|
|
3002
|
-
policy: pull-push
|
|
3003
|
-
paths:
|
|
3004
|
-
- www/.next/cache
|
|
3005
3009
|
artifacts:
|
|
3006
3010
|
paths:
|
|
3007
3011
|
- www/__build_info.json
|
|
3008
3012
|
- www/.next
|
|
3009
3013
|
- www/dist
|
|
3014
|
+
exclude:
|
|
3015
|
+
- www/.env
|
|
3010
3016
|
expire_in: 1 day
|
|
3011
3017
|
when: always
|
|
3012
3018
|
reports: {}
|
|
@@ -3032,7 +3038,7 @@ www 🧪 test:
|
|
|
3032
3038
|
KUBERNETES_MEMORY_REQUEST: 1Gi
|
|
3033
3039
|
KUBERNETES_MEMORY_LIMIT: 2Gi
|
|
3034
3040
|
script:
|
|
3035
|
-
-
|
|
3041
|
+
- collapseable_section_start "injectvars" "Injecting variables"
|
|
3036
3042
|
- export APP_DIR="www"
|
|
3037
3043
|
- export DOCKER_BUILD_CONTEXT="."
|
|
3038
3044
|
- export DOCKER_REGISTRY="$CI_REGISTRY"
|
|
@@ -3049,19 +3055,19 @@ www 🧪 test:
|
|
|
3049
3055
|
COPY --chown=node:node www/yarn.lock /app/www/yarn.lock
|
|
3050
3056
|
COPY --chown=node:node .yarnrc.yml /app/.yarnrc.yml
|
|
3051
3057
|
COPY --chown=node:node .yarn /app/.yarn"
|
|
3052
|
-
-
|
|
3058
|
+
- collapseable_section_end "injectvars"
|
|
3053
3059
|
- ensureNodeDockerfile
|
|
3054
|
-
-
|
|
3060
|
+
- collapseable_section_start "docker-login" "Docker Login"
|
|
3055
3061
|
- docker login --username gitlab-ci-token --password $CI_JOB_TOKEN $CI_REGISTRY
|
|
3056
|
-
-
|
|
3057
|
-
-
|
|
3062
|
+
- collapseable_section_end "docker-login"
|
|
3063
|
+
- collapseable_section_start "docker-build" "Docker build"
|
|
3058
3064
|
- 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
|
|
3059
|
-
-
|
|
3060
|
-
-
|
|
3065
|
+
- collapseable_section_end "docker-build"
|
|
3066
|
+
- collapseable_section_start "docker-push" "Docker push and tag"
|
|
3061
3067
|
- docker push $DOCKER_IMAGE:$DOCKER_IMAGE_TAG
|
|
3062
3068
|
- docker tag $DOCKER_IMAGE:$DOCKER_IMAGE_TAG $DOCKER_CACHE_IMAGE
|
|
3063
3069
|
- docker push $DOCKER_CACHE_IMAGE
|
|
3064
|
-
-
|
|
3070
|
+
- collapseable_section_end "docker-push"
|
|
3065
3071
|
cache:
|
|
3066
3072
|
- key: www-yarn
|
|
3067
3073
|
policy: pull
|
|
@@ -3078,8 +3084,8 @@ www 🧪 test:
|
|
|
3078
3084
|
image: aquasec/trivy:0.38.3
|
|
3079
3085
|
variables: {}
|
|
3080
3086
|
script:
|
|
3081
|
-
-
|
|
3082
|
-
-
|
|
3087
|
+
- collapseable_section_start "injectvars" "Injecting variables"
|
|
3088
|
+
- collapseable_section_end "injectvars"
|
|
3083
3089
|
- trivy fs --quiet --format cyclonedx --output "__sbom.json" www
|
|
3084
3090
|
artifacts:
|
|
3085
3091
|
paths:
|
|
@@ -3098,22 +3104,21 @@ www 🧪 test:
|
|
|
3098
3104
|
KUBERNETES_MEMORY_REQUEST: 200Mi
|
|
3099
3105
|
KUBERNETES_MEMORY_LIMIT: 400Mi
|
|
3100
3106
|
script:
|
|
3101
|
-
-
|
|
3107
|
+
- collapseable_section_start "injectvars" "Injecting variables"
|
|
3102
3108
|
- export ENV_SHORT="prod"
|
|
3103
3109
|
- export APP_DIR="www"
|
|
3104
3110
|
- export ENV_TYPE="prod"
|
|
3105
3111
|
- export BUILD_INFO_BUILD_ID="$(git describe --tags 2>/dev/null || git rev-parse HEAD)"
|
|
3106
3112
|
- export BUILD_INFO_BUILD_TIME="$CI_JOB_STARTED_AT"
|
|
3107
3113
|
- 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")"
|
|
3108
|
-
- export
|
|
3114
|
+
- export HOSTNAME="www.prod.test-app.pan.panter.cloud"
|
|
3109
3115
|
- export ROOT_URL="https://www.prod.test-app.pan.panter.cloud"
|
|
3110
|
-
- export
|
|
3111
|
-
- export HOST_CANONICAL="www.prod.test-app.pan.panter.cloud"
|
|
3116
|
+
- export HOSTNAME_INTERNAL="www.prod.test-app.pan.panter.cloud"
|
|
3112
3117
|
- export ROOT_URL_INTERNAL="https://www.prod.test-app.pan.panter.cloud"
|
|
3113
3118
|
- export KUBE_NAMESPACE="pan-test-app-prod"
|
|
3114
3119
|
- export KUBE_APP_NAME="www"
|
|
3115
3120
|
- export KUBE_APP_NAME_PREFIX=""
|
|
3116
|
-
- export _ALL_ENV_VAR_KEYS="[\\"ENV_SHORT\\",\\"APP_DIR\\",\\"ENV_TYPE\\",\\"BUILD_INFO_BUILD_ID\\",\\"BUILD_INFO_BUILD_TIME\\",\\"BUILD_INFO_CURRENT_VERSION\\",\\"
|
|
3121
|
+
- 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\\"]"
|
|
3117
3122
|
- export DOCKER_REGISTRY="$CI_REGISTRY"
|
|
3118
3123
|
- export DOCKER_CACHE_IMAGE="$CI_REGISTRY_IMAGE/caches/www"
|
|
3119
3124
|
- export DOCKER_IMAGE_NAME="prod/www"
|
|
@@ -3125,13 +3130,12 @@ www 🧪 test:
|
|
|
3125
3130
|
- export HELM_GITLAB_CHART_NAME="/helm-charts/the-panter-chart"
|
|
3126
3131
|
- export HELM_ARGS=""
|
|
3127
3132
|
- export COMPONENT_NAME="www"
|
|
3128
|
-
-
|
|
3129
|
-
- echo -e "\\e[0Ksection_end:$(date +%s):injectvars\\r\\e[0K"
|
|
3133
|
+
- collapseable_section_end "injectvars"
|
|
3130
3134
|
- kubectl config set-cluster "kube-pan-test-app-prod-www" --server="$CL_prod_www_KUBE_URL" --certificate-authority <(echo $CL_prod_www_KUBE_CA_PEM | base64 -d) --embed-certs=true
|
|
3131
3135
|
- kubectl config set-credentials "kube-pan-test-app-prod-www" --token="$CL_prod_www_KUBE_TOKEN"
|
|
3132
3136
|
- kubectl config set-context "kube-pan-test-app-prod-www" --cluster="kube-pan-test-app-prod-www" --user="kube-pan-test-app-prod-www" --namespace="pan-test-app-prod"
|
|
3133
3137
|
- kubectl config use-context "kube-pan-test-app-prod-www"
|
|
3134
|
-
-
|
|
3138
|
+
- collapseable_section_start "writeallvalues" "Write __all_values.yml for helm deployment"
|
|
3135
3139
|
- |
|
|
3136
3140
|
cat > __all_values.yml <<EOF
|
|
3137
3141
|
env:
|
|
@@ -3144,18 +3148,16 @@ www 🧪 test:
|
|
|
3144
3148
|
ENV_TYPE: |-
|
|
3145
3149
|
prod
|
|
3146
3150
|
BUILD_INFO_BUILD_ID: |-
|
|
3147
|
-
|
|
3151
|
+
$(printf %s "$(git describe --tags 2>/dev/null || git rev-parse HEAD)" | sed '1!s/^/ /')
|
|
3148
3152
|
BUILD_INFO_BUILD_TIME: |-
|
|
3149
|
-
|
|
3153
|
+
$(printf %s "$CI_JOB_STARTED_AT" | sed '1!s/^/ /')
|
|
3150
3154
|
BUILD_INFO_CURRENT_VERSION: |-
|
|
3151
|
-
|
|
3152
|
-
|
|
3155
|
+
$(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/^/ /')
|
|
3156
|
+
HOSTNAME: |-
|
|
3153
3157
|
www.prod.test-app.pan.panter.cloud
|
|
3154
3158
|
ROOT_URL: |-
|
|
3155
3159
|
https://www.prod.test-app.pan.panter.cloud
|
|
3156
|
-
|
|
3157
|
-
www.prod.test-app.pan.panter.cloud
|
|
3158
|
-
HOST_CANONICAL: |-
|
|
3160
|
+
HOSTNAME_INTERNAL: |-
|
|
3159
3161
|
www.prod.test-app.pan.panter.cloud
|
|
3160
3162
|
ROOT_URL_INTERNAL: |-
|
|
3161
3163
|
https://www.prod.test-app.pan.panter.cloud
|
|
@@ -3165,7 +3167,7 @@ www 🧪 test:
|
|
|
3165
3167
|
www
|
|
3166
3168
|
KUBE_APP_NAME_PREFIX: ""
|
|
3167
3169
|
_ALL_ENV_VAR_KEYS: |-
|
|
3168
|
-
["ENV_SHORT","APP_DIR","ENV_TYPE","BUILD_INFO_BUILD_ID","BUILD_INFO_BUILD_TIME","BUILD_INFO_CURRENT_VERSION","
|
|
3170
|
+
["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"]
|
|
3169
3171
|
application:
|
|
3170
3172
|
host: |-
|
|
3171
3173
|
www.prod.test-app.pan.panter.cloud
|
|
@@ -3185,7 +3187,7 @@ www 🧪 test:
|
|
|
3185
3187
|
__health
|
|
3186
3188
|
|
|
3187
3189
|
EOF
|
|
3188
|
-
-
|
|
3190
|
+
- collapseable_section_end "writeallvalues"
|
|
3189
3191
|
- kubernetesCreateSecret
|
|
3190
3192
|
- kubernetesDeploy
|
|
3191
3193
|
- echo 'Uploading SBOM to Dependency Track'
|
|
@@ -3221,30 +3223,28 @@ www 🧪 test:
|
|
|
3221
3223
|
KUBERNETES_MEMORY_LIMIT: 400Mi
|
|
3222
3224
|
GIT_STRATEGY: none
|
|
3223
3225
|
script:
|
|
3224
|
-
-
|
|
3226
|
+
- collapseable_section_start "injectvars" "Injecting variables"
|
|
3225
3227
|
- export ENV_SHORT="prod"
|
|
3226
3228
|
- export APP_DIR="www"
|
|
3227
3229
|
- export ENV_TYPE="prod"
|
|
3228
3230
|
- export BUILD_INFO_BUILD_ID="$(git describe --tags 2>/dev/null || git rev-parse HEAD)"
|
|
3229
3231
|
- export BUILD_INFO_BUILD_TIME="$CI_JOB_STARTED_AT"
|
|
3230
3232
|
- 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")"
|
|
3231
|
-
- export
|
|
3233
|
+
- export HOSTNAME="www.prod.test-app.pan.panter.cloud"
|
|
3232
3234
|
- export ROOT_URL="https://www.prod.test-app.pan.panter.cloud"
|
|
3233
|
-
- export
|
|
3234
|
-
- export HOST_CANONICAL="www.prod.test-app.pan.panter.cloud"
|
|
3235
|
+
- export HOSTNAME_INTERNAL="www.prod.test-app.pan.panter.cloud"
|
|
3235
3236
|
- export ROOT_URL_INTERNAL="https://www.prod.test-app.pan.panter.cloud"
|
|
3236
3237
|
- export KUBE_NAMESPACE="pan-test-app-prod"
|
|
3237
3238
|
- export KUBE_APP_NAME="www"
|
|
3238
3239
|
- export KUBE_APP_NAME_PREFIX=""
|
|
3239
|
-
- export _ALL_ENV_VAR_KEYS="[\\"ENV_SHORT\\",\\"APP_DIR\\",\\"ENV_TYPE\\",\\"BUILD_INFO_BUILD_ID\\",\\"BUILD_INFO_BUILD_TIME\\",\\"BUILD_INFO_CURRENT_VERSION\\",\\"
|
|
3240
|
+
- 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\\"]"
|
|
3240
3241
|
- export RELEASE_NAME="pan-test-app-prod-www"
|
|
3241
3242
|
- export HELM_EXPERIMENTAL_OCI="1"
|
|
3242
3243
|
- export KUBE_DOCKER_IMAGE_PULL_SECRET="gitlab-registry-www"
|
|
3243
3244
|
- export HELM_GITLAB_CHART_NAME="/helm-charts/the-panter-chart"
|
|
3244
3245
|
- export HELM_ARGS=""
|
|
3245
3246
|
- export COMPONENT_NAME="www"
|
|
3246
|
-
-
|
|
3247
|
-
- echo -e "\\e[0Ksection_end:$(date +%s):injectvars\\r\\e[0K"
|
|
3247
|
+
- collapseable_section_end "injectvars"
|
|
3248
3248
|
- kubectl config set-cluster "kube-pan-test-app-prod-www" --server="$CL_prod_www_KUBE_URL" --certificate-authority <(echo $CL_prod_www_KUBE_CA_PEM | base64 -d) --embed-certs=true
|
|
3249
3249
|
- kubectl config set-credentials "kube-pan-test-app-prod-www" --token="$CL_prod_www_KUBE_TOKEN"
|
|
3250
3250
|
- kubectl config set-context "kube-pan-test-app-prod-www" --cluster="kube-pan-test-app-prod-www" --user="kube-pan-test-app-prod-www" --namespace="pan-test-app-prod"
|
|
@@ -3278,30 +3278,28 @@ www 🧪 test:
|
|
|
3278
3278
|
KUBERNETES_MEMORY_LIMIT: 400Mi
|
|
3279
3279
|
GIT_STRATEGY: none
|
|
3280
3280
|
script:
|
|
3281
|
-
-
|
|
3281
|
+
- collapseable_section_start "injectvars" "Injecting variables"
|
|
3282
3282
|
- export ENV_SHORT="prod"
|
|
3283
3283
|
- export APP_DIR="www"
|
|
3284
3284
|
- export ENV_TYPE="prod"
|
|
3285
3285
|
- export BUILD_INFO_BUILD_ID="$(git describe --tags 2>/dev/null || git rev-parse HEAD)"
|
|
3286
3286
|
- export BUILD_INFO_BUILD_TIME="$CI_JOB_STARTED_AT"
|
|
3287
3287
|
- 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")"
|
|
3288
|
-
- export
|
|
3288
|
+
- export HOSTNAME="www.prod.test-app.pan.panter.cloud"
|
|
3289
3289
|
- export ROOT_URL="https://www.prod.test-app.pan.panter.cloud"
|
|
3290
|
-
- export
|
|
3291
|
-
- export HOST_CANONICAL="www.prod.test-app.pan.panter.cloud"
|
|
3290
|
+
- export HOSTNAME_INTERNAL="www.prod.test-app.pan.panter.cloud"
|
|
3292
3291
|
- export ROOT_URL_INTERNAL="https://www.prod.test-app.pan.panter.cloud"
|
|
3293
3292
|
- export KUBE_NAMESPACE="pan-test-app-prod"
|
|
3294
3293
|
- export KUBE_APP_NAME="www"
|
|
3295
3294
|
- export KUBE_APP_NAME_PREFIX=""
|
|
3296
|
-
- export _ALL_ENV_VAR_KEYS="[\\"ENV_SHORT\\",\\"APP_DIR\\",\\"ENV_TYPE\\",\\"BUILD_INFO_BUILD_ID\\",\\"BUILD_INFO_BUILD_TIME\\",\\"BUILD_INFO_CURRENT_VERSION\\",\\"
|
|
3295
|
+
- 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\\"]"
|
|
3297
3296
|
- export RELEASE_NAME="pan-test-app-prod-www"
|
|
3298
3297
|
- export HELM_EXPERIMENTAL_OCI="1"
|
|
3299
3298
|
- export KUBE_DOCKER_IMAGE_PULL_SECRET="gitlab-registry-www"
|
|
3300
3299
|
- export HELM_GITLAB_CHART_NAME="/helm-charts/the-panter-chart"
|
|
3301
3300
|
- export HELM_ARGS=""
|
|
3302
3301
|
- export COMPONENT_NAME="www"
|
|
3303
|
-
-
|
|
3304
|
-
- echo -e "\\e[0Ksection_end:$(date +%s):injectvars\\r\\e[0K"
|
|
3302
|
+
- collapseable_section_end "injectvars"
|
|
3305
3303
|
- kubectl config set-cluster "kube-pan-test-app-prod-www" --server="$CL_prod_www_KUBE_URL" --certificate-authority <(echo $CL_prod_www_KUBE_CA_PEM | base64 -d) --embed-certs=true
|
|
3306
3304
|
- kubectl config set-credentials "kube-pan-test-app-prod-www" --token="$CL_prod_www_KUBE_TOKEN"
|
|
3307
3305
|
- kubectl config set-context "kube-pan-test-app-prod-www" --cluster="kube-pan-test-app-prod-www" --user="kube-pan-test-app-prod-www" --namespace="pan-test-app-prod"
|