@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
|
app1 🛡 audit:
|
|
49
79
|
stage: test
|
|
50
80
|
image: path/to/docker/jobs-default:the-version
|
|
@@ -53,9 +83,9 @@ app1 🛡 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="app1"
|
|
58
|
-
-
|
|
88
|
+
- collapseable_section_end "injectvars"
|
|
59
89
|
- cd app1
|
|
60
90
|
- yarn npm audit --environment production
|
|
61
91
|
rules:
|
|
@@ -79,21 +109,21 @@ app1 👮 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="app1"
|
|
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 app1
|
|
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: app1-yarn
|
|
@@ -120,21 +150,21 @@ app1 🧪 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="app1"
|
|
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 app1
|
|
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: app1-yarn
|
|
@@ -161,17 +191,16 @@ app1 🧪 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="app1"
|
|
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="$(printf %s "pan-test-app-dev-app1-$CL_dev_app1_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')"
|
|
172
202
|
- export ROOT_URL="https://$(printf %s "pan-test-app-dev-app1-$CL_dev_app1_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')"
|
|
173
|
-
- export
|
|
174
|
-
- export HOST_CANONICAL="$(printf %s "pan-test-app-dev-app1-$CL_dev_app1_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')"
|
|
203
|
+
- export HOSTNAME_INTERNAL="$(printf %s "pan-test-app-dev-app1-$CL_dev_app1_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')"
|
|
175
204
|
- export ROOT_URL_INTERNAL="https://$(printf %s "pan-test-app-dev-app1-$CL_dev_app1_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')"
|
|
176
205
|
- export DEPLOY_CLOUD_RUN_PROJECT_ID="asdf"
|
|
177
206
|
- export DEPLOY_CLOUD_RUN_REGION="asia-east1"
|
|
@@ -189,21 +218,49 @@ app1 🧪 test:
|
|
|
189
218
|
app1 single quote: '
|
|
190
219
|
app1 doouble quote: \\"
|
|
191
220
|
"
|
|
192
|
-
- export _ALL_ENV_VAR_KEYS="[\\"ENV_SHORT\\",\\"APP_DIR\\",\\"ENV_TYPE\\",\\"BUILD_INFO_BUILD_ID\\",\\"BUILD_INFO_BUILD_TIME\\",\\"BUILD_INFO_CURRENT_VERSION\\",\\"
|
|
193
|
-
-
|
|
221
|
+
- 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\\",\\"DEPLOY_CLOUD_RUN_PROJECT_ID\\",\\"DEPLOY_CLOUD_RUN_REGION\\",\\"GCLOUD_DEPLOY_credentialsKey\\",\\"GCLOUD_RUN_canonicalHostSuffix\\",\\"foo\\",\\"multiline\\"]"
|
|
222
|
+
- collapseable_section_end "injectvars"
|
|
223
|
+
- collapseable_section_start "write-dotenv-app1" "write dot env for app1"
|
|
224
|
+
- |-
|
|
225
|
+
cat <<EOF > app1/.env
|
|
226
|
+
ENV_SHORT=dev
|
|
227
|
+
APP_DIR=app1
|
|
228
|
+
ENV_TYPE=dev
|
|
229
|
+
HOSTNAME=$(printf %s "$(printf %s "pan-test-app-dev-app1-$CL_dev_app1_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')" | escapeForDotEnv)
|
|
230
|
+
ROOT_URL=$(printf %s "https://$(printf %s "pan-test-app-dev-app1-$CL_dev_app1_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')" | escapeForDotEnv)
|
|
231
|
+
HOSTNAME_INTERNAL=$(printf %s "$(printf %s "pan-test-app-dev-app1-$CL_dev_app1_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')" | escapeForDotEnv)
|
|
232
|
+
ROOT_URL_INTERNAL=$(printf %s "https://$(printf %s "pan-test-app-dev-app1-$CL_dev_app1_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')" | escapeForDotEnv)
|
|
233
|
+
DEPLOY_CLOUD_RUN_PROJECT_ID=asdf
|
|
234
|
+
DEPLOY_CLOUD_RUN_REGION=asia-east1
|
|
235
|
+
GCLOUD_DEPLOY_credentialsKey=$(printf %s "$CL_dev_app1_GCLOUD_DEPLOY_credentialsKey" | escapeForDotEnv)
|
|
236
|
+
GCLOUD_RUN_canonicalHostSuffix=$(printf %s "$CL_dev_app1_GCLOUD_RUN_canonicalHostSuffix" | escapeForDotEnv)
|
|
237
|
+
foo=foo-value
|
|
238
|
+
multiline=$(printf %s "app1 line1
|
|
239
|
+
app1 line2
|
|
240
|
+
app1 line3
|
|
241
|
+
|
|
242
|
+
the url of self: \\"https://$(printf %s "pan-test-app-dev-app1-$CL_dev_app1_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')\\"
|
|
243
|
+
|
|
244
|
+
|
|
245
|
+
app1 single quote: '
|
|
246
|
+
app1 doouble quote: \\"
|
|
247
|
+
" | escapeForDotEnv)
|
|
248
|
+
_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","DEPLOY_CLOUD_RUN_PROJECT_ID","DEPLOY_CLOUD_RUN_REGION","GCLOUD_DEPLOY_credentialsKey","GCLOUD_RUN_canonicalHostSuffix","foo","multiline"]
|
|
249
|
+
EOF
|
|
250
|
+
- collapseable_section_end "write-dotenv-app1"
|
|
194
251
|
- echo '{"id":"$(git describe --tags 2>/dev/null || git rev-parse HEAD)","time":"$CI_JOB_STARTED_AT"}' > app1/__build_info.json
|
|
195
|
-
-
|
|
252
|
+
- collapseable_section_start "nodeinstall" "Ensure node version"
|
|
196
253
|
- if [ -f ~/.nvm/nvm.sh ]; then source ~/.nvm/nvm.sh; fi
|
|
197
254
|
- if command -v nvm &> /dev/null && [ -f ./.nvmrc ]; then nvm install; fi
|
|
198
|
-
-
|
|
255
|
+
- collapseable_section_end "nodeinstall"
|
|
199
256
|
- cd app1
|
|
200
|
-
-
|
|
257
|
+
- collapseable_section_start "nodeinstall" "Ensure node version"
|
|
201
258
|
- if [ -f ~/.nvm/nvm.sh ]; then source ~/.nvm/nvm.sh; fi
|
|
202
259
|
- if command -v nvm &> /dev/null && [ -f ./.nvmrc ]; then nvm install; fi
|
|
203
|
-
-
|
|
204
|
-
-
|
|
260
|
+
- collapseable_section_end "nodeinstall"
|
|
261
|
+
- collapseable_section_start "yarninstall" "Yarn install"
|
|
205
262
|
- yarn install --immutable
|
|
206
|
-
-
|
|
263
|
+
- collapseable_section_end "yarninstall"
|
|
207
264
|
- yarn build
|
|
208
265
|
cache:
|
|
209
266
|
- key: app1-yarn
|
|
@@ -214,15 +271,13 @@ app1 🧪 test:
|
|
|
214
271
|
policy: pull-push
|
|
215
272
|
paths:
|
|
216
273
|
- app1/node_modules
|
|
217
|
-
- key: app1-next-cache
|
|
218
|
-
policy: pull-push
|
|
219
|
-
paths:
|
|
220
|
-
- app1/.next/cache
|
|
221
274
|
artifacts:
|
|
222
275
|
paths:
|
|
223
276
|
- app1/__build_info.json
|
|
224
277
|
- app1/.next
|
|
225
278
|
- app1/dist
|
|
279
|
+
exclude:
|
|
280
|
+
- app1/.env
|
|
226
281
|
expire_in: 1 day
|
|
227
282
|
when: always
|
|
228
283
|
reports: {}
|
|
@@ -250,7 +305,7 @@ app1 🧪 test:
|
|
|
250
305
|
KUBERNETES_MEMORY_REQUEST: 1Gi
|
|
251
306
|
KUBERNETES_MEMORY_LIMIT: 2Gi
|
|
252
307
|
script:
|
|
253
|
-
-
|
|
308
|
+
- collapseable_section_start "injectvars" "Injecting variables"
|
|
254
309
|
- export APP_DIR="app1"
|
|
255
310
|
- export DOCKER_BUILD_CONTEXT="."
|
|
256
311
|
- export DOCKER_REGISTRY="asia-east1-docker.pkg.dev"
|
|
@@ -266,20 +321,20 @@ app1 🧪 test:
|
|
|
266
321
|
COPY --chown=node:node app1/yarn.lock /app/app1/yarn.lock
|
|
267
322
|
COPY --chown=node:node .yarnrc.yml /app/.yarnrc.yml
|
|
268
323
|
COPY --chown=node:node .yarn /app/.yarn"
|
|
269
|
-
-
|
|
324
|
+
- collapseable_section_end "injectvars"
|
|
270
325
|
- ensureNodeDockerfile
|
|
271
|
-
-
|
|
326
|
+
- collapseable_section_start "docker-login" "Docker Login"
|
|
272
327
|
- gcloud auth activate-service-account --key-file=<(echo "$CL_dev_app1_GCLOUD_DEPLOY_credentialsKey")
|
|
273
328
|
- gcloud auth configure-docker asia-east1-docker.pkg.dev
|
|
274
|
-
-
|
|
275
|
-
-
|
|
329
|
+
- collapseable_section_end "docker-login"
|
|
330
|
+
- collapseable_section_start "docker-build" "Docker build"
|
|
276
331
|
- 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
|
|
277
|
-
-
|
|
278
|
-
-
|
|
332
|
+
- collapseable_section_end "docker-build"
|
|
333
|
+
- collapseable_section_start "docker-push" "Docker push and tag"
|
|
279
334
|
- docker push $DOCKER_IMAGE:$DOCKER_IMAGE_TAG
|
|
280
335
|
- docker tag $DOCKER_IMAGE:$DOCKER_IMAGE_TAG $DOCKER_CACHE_IMAGE
|
|
281
336
|
- docker push $DOCKER_CACHE_IMAGE
|
|
282
|
-
-
|
|
337
|
+
- collapseable_section_end "docker-push"
|
|
283
338
|
cache:
|
|
284
339
|
- key: app1-yarn
|
|
285
340
|
policy: pull
|
|
@@ -298,8 +353,8 @@ app1 🧪 test:
|
|
|
298
353
|
image: aquasec/trivy:0.38.3
|
|
299
354
|
variables: {}
|
|
300
355
|
script:
|
|
301
|
-
-
|
|
302
|
-
-
|
|
356
|
+
- collapseable_section_start "injectvars" "Injecting variables"
|
|
357
|
+
- collapseable_section_end "injectvars"
|
|
303
358
|
- trivy fs --quiet --format cyclonedx --output "__sbom.json" app1
|
|
304
359
|
artifacts:
|
|
305
360
|
paths:
|
|
@@ -320,17 +375,16 @@ app1 🧪 test:
|
|
|
320
375
|
KUBERNETES_MEMORY_REQUEST: 200Mi
|
|
321
376
|
KUBERNETES_MEMORY_LIMIT: 400Mi
|
|
322
377
|
script:
|
|
323
|
-
-
|
|
378
|
+
- collapseable_section_start "injectvars" "Injecting variables"
|
|
324
379
|
- export ENV_SHORT="dev"
|
|
325
380
|
- export APP_DIR="app1"
|
|
326
381
|
- export ENV_TYPE="dev"
|
|
327
382
|
- export BUILD_INFO_BUILD_ID="$(git describe --tags 2>/dev/null || git rev-parse HEAD)"
|
|
328
383
|
- export BUILD_INFO_BUILD_TIME="$CI_JOB_STARTED_AT"
|
|
329
384
|
- 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")"
|
|
330
|
-
- export
|
|
385
|
+
- export HOSTNAME="$(printf %s "pan-test-app-dev-app1-$CL_dev_app1_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')"
|
|
331
386
|
- export ROOT_URL="https://$(printf %s "pan-test-app-dev-app1-$CL_dev_app1_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')"
|
|
332
|
-
- export
|
|
333
|
-
- export HOST_CANONICAL="$(printf %s "pan-test-app-dev-app1-$CL_dev_app1_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')"
|
|
387
|
+
- export HOSTNAME_INTERNAL="$(printf %s "pan-test-app-dev-app1-$CL_dev_app1_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')"
|
|
334
388
|
- export ROOT_URL_INTERNAL="https://$(printf %s "pan-test-app-dev-app1-$CL_dev_app1_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')"
|
|
335
389
|
- export DEPLOY_CLOUD_RUN_PROJECT_ID="asdf"
|
|
336
390
|
- export DEPLOY_CLOUD_RUN_REGION="asia-east1"
|
|
@@ -348,19 +402,19 @@ app1 🧪 test:
|
|
|
348
402
|
app1 single quote: '
|
|
349
403
|
app1 doouble quote: \\"
|
|
350
404
|
"
|
|
351
|
-
- export _ALL_ENV_VAR_KEYS="[\\"ENV_SHORT\\",\\"APP_DIR\\",\\"ENV_TYPE\\",\\"BUILD_INFO_BUILD_ID\\",\\"BUILD_INFO_BUILD_TIME\\",\\"BUILD_INFO_CURRENT_VERSION\\",\\"
|
|
405
|
+
- 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\\",\\"DEPLOY_CLOUD_RUN_PROJECT_ID\\",\\"DEPLOY_CLOUD_RUN_REGION\\",\\"GCLOUD_DEPLOY_credentialsKey\\",\\"GCLOUD_RUN_canonicalHostSuffix\\",\\"foo\\",\\"multiline\\"]"
|
|
352
406
|
- export DOCKER_REGISTRY="asia-east1-docker.pkg.dev"
|
|
353
407
|
- export DOCKER_IMAGE="asia-east1-docker.pkg.dev/asdf/catladder-deploy/pan-test-app/dev/app1"
|
|
354
408
|
- export DOCKER_CACHE_IMAGE="asia-east1-docker.pkg.dev/asdf/catladder-deploy/pan-test-app/caches/app1"
|
|
355
409
|
- export DOCKER_IMAGE_TAG="$CI_COMMIT_SHA"
|
|
356
410
|
- export CLOUDSDK_CORE_DISABLE_PROMPTS="1"
|
|
357
|
-
-
|
|
358
|
-
-
|
|
411
|
+
- collapseable_section_end "injectvars"
|
|
412
|
+
- collapseable_section_start "prepare" "Prepare..."
|
|
359
413
|
- gcloud auth activate-service-account --key-file=<(echo "$CL_dev_app1_GCLOUD_DEPLOY_credentialsKey")
|
|
360
414
|
- export GCLOUD_PROJECT_NUMBER=$(gcloud projects describe asdf --format="value(projectNumber)")
|
|
361
415
|
- 'echo "GCLOUD_PROJECT_NUMBER: $GCLOUD_PROJECT_NUMBER"'
|
|
362
|
-
-
|
|
363
|
-
-
|
|
416
|
+
- collapseable_section_end "prepare"
|
|
417
|
+
- collapseable_section_start "writeenvvars" "Write env vars to file"
|
|
364
418
|
- |
|
|
365
419
|
cat > ____envvars.yaml <<EOF
|
|
366
420
|
ENV_SHORT: |-
|
|
@@ -370,53 +424,51 @@ app1 🧪 test:
|
|
|
370
424
|
ENV_TYPE: |-
|
|
371
425
|
dev
|
|
372
426
|
BUILD_INFO_BUILD_ID: |-
|
|
373
|
-
|
|
427
|
+
$(printf %s "$(git describe --tags 2>/dev/null || git rev-parse HEAD)" | sed '1!s/^/ /')
|
|
374
428
|
BUILD_INFO_BUILD_TIME: |-
|
|
375
|
-
|
|
429
|
+
$(printf %s "$CI_JOB_STARTED_AT" | sed '1!s/^/ /')
|
|
376
430
|
BUILD_INFO_CURRENT_VERSION: |-
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
431
|
+
$(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/^/ /')
|
|
432
|
+
HOSTNAME: |-
|
|
433
|
+
$(printf %s "$(printf %s "pan-test-app-dev-app1-$CL_dev_app1_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')" | sed '1!s/^/ /')
|
|
380
434
|
ROOT_URL: |-
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
HOST_CANONICAL: |-
|
|
385
|
-
$(printf %s "$(printf %s "pan-test-app-dev-app1-$CL_dev_app1_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')" | sed 's/^/ /')
|
|
435
|
+
$(printf %s "https://$(printf %s "pan-test-app-dev-app1-$CL_dev_app1_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')" | sed '1!s/^/ /')
|
|
436
|
+
HOSTNAME_INTERNAL: |-
|
|
437
|
+
$(printf %s "$(printf %s "pan-test-app-dev-app1-$CL_dev_app1_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')" | sed '1!s/^/ /')
|
|
386
438
|
ROOT_URL_INTERNAL: |-
|
|
387
|
-
|
|
439
|
+
$(printf %s "https://$(printf %s "pan-test-app-dev-app1-$CL_dev_app1_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')" | sed '1!s/^/ /')
|
|
388
440
|
DEPLOY_CLOUD_RUN_PROJECT_ID: |-
|
|
389
441
|
asdf
|
|
390
442
|
DEPLOY_CLOUD_RUN_REGION: |-
|
|
391
443
|
asia-east1
|
|
392
444
|
GCLOUD_RUN_canonicalHostSuffix: |-
|
|
393
|
-
|
|
445
|
+
$(printf %s "$CL_dev_app1_GCLOUD_RUN_canonicalHostSuffix" | sed '1!s/^/ /')
|
|
394
446
|
foo: |-
|
|
395
447
|
foo-value
|
|
396
448
|
multiline: |-
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
449
|
+
app1 line1
|
|
450
|
+
app1 line2
|
|
451
|
+
app1 line3
|
|
452
|
+
|
|
453
|
+
the url of self: "$(printf %s "https://$(printf %s "pan-test-app-dev-app1-$CL_dev_app1_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')" | sed '1!s/^/ /')"
|
|
454
|
+
|
|
455
|
+
|
|
456
|
+
app1 single quote: '
|
|
457
|
+
app1 doouble quote: "
|
|
458
|
+
|
|
407
459
|
_ALL_ENV_VAR_KEYS: |-
|
|
408
|
-
["ENV_SHORT","APP_DIR","ENV_TYPE","BUILD_INFO_BUILD_ID","BUILD_INFO_BUILD_TIME","BUILD_INFO_CURRENT_VERSION","
|
|
460
|
+
["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","DEPLOY_CLOUD_RUN_PROJECT_ID","DEPLOY_CLOUD_RUN_REGION","GCLOUD_DEPLOY_credentialsKey","GCLOUD_RUN_canonicalHostSuffix","foo","multiline"]
|
|
409
461
|
|
|
410
462
|
EOF
|
|
411
|
-
-
|
|
412
|
-
-
|
|
463
|
+
- collapseable_section_end "writeenvvars"
|
|
464
|
+
- collapseable_section_start "deploy" "Deploy to cloud run"
|
|
413
465
|
- gcloud run deploy pan-test-app-dev-app1 --command="yarn,start" --image=asia-east1-docker.pkg.dev/asdf/catladder-deploy/pan-test-app/dev/app1:$DOCKER_IMAGE_TAG --project=asdf --region=asia-east1 --labels=customer-name=pan,component-name=app1,app-name=test-app,env-type=dev,env-name=dev,build-type=node,cloud-run-service-name=pan-test-app-dev-app1 --env-vars-file=____envvars.yaml --min-instances=0 --max-instances=100 --cpu-throttling --allow-unauthenticated --ingress=all --cpu-boost
|
|
414
|
-
-
|
|
415
|
-
-
|
|
466
|
+
- collapseable_section_end "deploy"
|
|
467
|
+
- collapseable_section_start "cleanup" "Cleanup"
|
|
416
468
|
- gcloud run revisions list --project=asdf --region=asia-east1 --service=pan-test-app-dev-app1 --limit=unlimited --sort-by=metadata.creationTimestamp --format="value(name)" --filter='(status.conditions.status=False OR status.conditions.status=Unknown)' | while read -r revisionname; do gcloud run revisions delete --project=asdf --region=asia-east1 --quiet $revisionname ; done
|
|
417
469
|
- gcloud artifacts docker images list asia-east1-docker.pkg.dev/asdf/catladder-deploy/pan-test-app/dev/app1 --sort-by=~CREATE_TIME --format="value(version)" | tail -n +2 | while read -r version; do gcloud artifacts docker images delete asia-east1-docker.pkg.dev/asdf/catladder-deploy/pan-test-app/dev/app1@$version --quiet --delete-tags; done
|
|
418
470
|
- gcloud artifacts docker images list asia-east1-docker.pkg.dev/asdf/catladder-deploy/pan-test-app/caches/app1 --sort-by=~CREATE_TIME --format="value(version)" | tail -n +2 | while read -r version; do gcloud artifacts docker images delete asia-east1-docker.pkg.dev/asdf/catladder-deploy/pan-test-app/caches/app1@$version --quiet --delete-tags; done
|
|
419
|
-
-
|
|
471
|
+
- collapseable_section_end "cleanup"
|
|
420
472
|
- echo 'Uploading SBOM to Dependency Track'
|
|
421
473
|
- /dtrackuploader https://dep.panter.swiss/ "$DT_KEY_PROD" upload "pan-test-app/app1" "https://$(printf %s "pan-test-app-dev-app1-$CL_dev_app1_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')" "__sbom.json" vex.json || true
|
|
422
474
|
- echo "CL_GITLAB_ENVIRONMENT_URL=https://$(printf %s "pan-test-app-dev-app1-$CL_dev_app1_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')" >> gitlab_environment.env
|
|
@@ -458,9 +510,9 @@ app1 🧪 test:
|
|
|
458
510
|
KUBERNETES_MEMORY_LIMIT: 400Mi
|
|
459
511
|
GIT_STRATEGY: none
|
|
460
512
|
script:
|
|
461
|
-
-
|
|
513
|
+
- collapseable_section_start "injectvars" "Injecting variables"
|
|
462
514
|
- export CLOUDSDK_CORE_DISABLE_PROMPTS="1"
|
|
463
|
-
-
|
|
515
|
+
- collapseable_section_end "injectvars"
|
|
464
516
|
- set +e
|
|
465
517
|
- gcloud auth activate-service-account --key-file=<(echo "$CL_dev_app1_GCLOUD_DEPLOY_credentialsKey")
|
|
466
518
|
- gcloud run services delete pan-test-app-dev-app1 --project=asdf --region=asia-east1
|
|
@@ -496,17 +548,16 @@ app1 🧪 test:
|
|
|
496
548
|
KUBERNETES_MEMORY_REQUEST: 1Gi
|
|
497
549
|
KUBERNETES_MEMORY_LIMIT: 4Gi
|
|
498
550
|
script:
|
|
499
|
-
-
|
|
551
|
+
- collapseable_section_start "injectvars" "Injecting variables"
|
|
500
552
|
- export ENV_SHORT="review"
|
|
501
553
|
- export APP_DIR="app1"
|
|
502
554
|
- export ENV_TYPE="review"
|
|
503
555
|
- export BUILD_INFO_BUILD_ID="$(git describe --tags 2>/dev/null || git rev-parse HEAD)"
|
|
504
556
|
- export BUILD_INFO_BUILD_TIME="$CI_JOB_STARTED_AT"
|
|
505
557
|
- 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")"
|
|
506
|
-
- export
|
|
558
|
+
- export HOSTNAME="$(printf %s "pan-test-app-review-$([ -n "$CI_MERGE_REQUEST_IID" ] && echo "mr$CI_MERGE_REQUEST_IID" || { [ -n "$CI_COMMIT_REF_SLUG" ] && echo "$CI_COMMIT_REF_SLUG" || echo "unknown"; })-app1-$CL_review_app1_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')"
|
|
507
559
|
- export ROOT_URL="https://$(printf %s "pan-test-app-review-$([ -n "$CI_MERGE_REQUEST_IID" ] && echo "mr$CI_MERGE_REQUEST_IID" || { [ -n "$CI_COMMIT_REF_SLUG" ] && echo "$CI_COMMIT_REF_SLUG" || echo "unknown"; })-app1-$CL_review_app1_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')"
|
|
508
|
-
- export
|
|
509
|
-
- export HOST_CANONICAL="$(printf %s "pan-test-app-review-$([ -n "$CI_MERGE_REQUEST_IID" ] && echo "mr$CI_MERGE_REQUEST_IID" || { [ -n "$CI_COMMIT_REF_SLUG" ] && echo "$CI_COMMIT_REF_SLUG" || echo "unknown"; })-app1-$CL_review_app1_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')"
|
|
560
|
+
- export HOSTNAME_INTERNAL="$(printf %s "pan-test-app-review-$([ -n "$CI_MERGE_REQUEST_IID" ] && echo "mr$CI_MERGE_REQUEST_IID" || { [ -n "$CI_COMMIT_REF_SLUG" ] && echo "$CI_COMMIT_REF_SLUG" || echo "unknown"; })-app1-$CL_review_app1_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')"
|
|
510
561
|
- export ROOT_URL_INTERNAL="https://$(printf %s "pan-test-app-review-$([ -n "$CI_MERGE_REQUEST_IID" ] && echo "mr$CI_MERGE_REQUEST_IID" || { [ -n "$CI_COMMIT_REF_SLUG" ] && echo "$CI_COMMIT_REF_SLUG" || echo "unknown"; })-app1-$CL_review_app1_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')"
|
|
511
562
|
- export DEPLOY_CLOUD_RUN_PROJECT_ID="asdf"
|
|
512
563
|
- export DEPLOY_CLOUD_RUN_REGION="asia-east1"
|
|
@@ -524,21 +575,49 @@ app1 🧪 test:
|
|
|
524
575
|
app1 single quote: '
|
|
525
576
|
app1 doouble quote: \\"
|
|
526
577
|
"
|
|
527
|
-
- export _ALL_ENV_VAR_KEYS="[\\"ENV_SHORT\\",\\"APP_DIR\\",\\"ENV_TYPE\\",\\"BUILD_INFO_BUILD_ID\\",\\"BUILD_INFO_BUILD_TIME\\",\\"BUILD_INFO_CURRENT_VERSION\\",\\"
|
|
528
|
-
-
|
|
578
|
+
- 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\\",\\"DEPLOY_CLOUD_RUN_PROJECT_ID\\",\\"DEPLOY_CLOUD_RUN_REGION\\",\\"GCLOUD_DEPLOY_credentialsKey\\",\\"GCLOUD_RUN_canonicalHostSuffix\\",\\"foo\\",\\"multiline\\"]"
|
|
579
|
+
- collapseable_section_end "injectvars"
|
|
580
|
+
- collapseable_section_start "write-dotenv-app1" "write dot env for app1"
|
|
581
|
+
- |-
|
|
582
|
+
cat <<EOF > app1/.env
|
|
583
|
+
ENV_SHORT=review
|
|
584
|
+
APP_DIR=app1
|
|
585
|
+
ENV_TYPE=review
|
|
586
|
+
HOSTNAME=$(printf %s "$(printf %s "pan-test-app-review-$([ -n "$CI_MERGE_REQUEST_IID" ] && echo "mr$CI_MERGE_REQUEST_IID" || { [ -n "$CI_COMMIT_REF_SLUG" ] && echo "$CI_COMMIT_REF_SLUG" || echo "unknown"; })-app1-$CL_review_app1_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')" | escapeForDotEnv)
|
|
587
|
+
ROOT_URL=$(printf %s "https://$(printf %s "pan-test-app-review-$([ -n "$CI_MERGE_REQUEST_IID" ] && echo "mr$CI_MERGE_REQUEST_IID" || { [ -n "$CI_COMMIT_REF_SLUG" ] && echo "$CI_COMMIT_REF_SLUG" || echo "unknown"; })-app1-$CL_review_app1_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')" | escapeForDotEnv)
|
|
588
|
+
HOSTNAME_INTERNAL=$(printf %s "$(printf %s "pan-test-app-review-$([ -n "$CI_MERGE_REQUEST_IID" ] && echo "mr$CI_MERGE_REQUEST_IID" || { [ -n "$CI_COMMIT_REF_SLUG" ] && echo "$CI_COMMIT_REF_SLUG" || echo "unknown"; })-app1-$CL_review_app1_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')" | escapeForDotEnv)
|
|
589
|
+
ROOT_URL_INTERNAL=$(printf %s "https://$(printf %s "pan-test-app-review-$([ -n "$CI_MERGE_REQUEST_IID" ] && echo "mr$CI_MERGE_REQUEST_IID" || { [ -n "$CI_COMMIT_REF_SLUG" ] && echo "$CI_COMMIT_REF_SLUG" || echo "unknown"; })-app1-$CL_review_app1_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')" | escapeForDotEnv)
|
|
590
|
+
DEPLOY_CLOUD_RUN_PROJECT_ID=asdf
|
|
591
|
+
DEPLOY_CLOUD_RUN_REGION=asia-east1
|
|
592
|
+
GCLOUD_DEPLOY_credentialsKey=$(printf %s "$CL_review_app1_GCLOUD_DEPLOY_credentialsKey" | escapeForDotEnv)
|
|
593
|
+
GCLOUD_RUN_canonicalHostSuffix=$(printf %s "$CL_review_app1_GCLOUD_RUN_canonicalHostSuffix" | escapeForDotEnv)
|
|
594
|
+
foo=foo-value
|
|
595
|
+
multiline=$(printf %s "app1 line1
|
|
596
|
+
app1 line2
|
|
597
|
+
app1 line3
|
|
598
|
+
|
|
599
|
+
the url of self: \\"https://$(printf %s "pan-test-app-review-$([ -n "$CI_MERGE_REQUEST_IID" ] && echo "mr$CI_MERGE_REQUEST_IID" || { [ -n "$CI_COMMIT_REF_SLUG" ] && echo "$CI_COMMIT_REF_SLUG" || echo "unknown"; })-app1-$CL_review_app1_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')\\"
|
|
600
|
+
|
|
601
|
+
|
|
602
|
+
app1 single quote: '
|
|
603
|
+
app1 doouble quote: \\"
|
|
604
|
+
" | escapeForDotEnv)
|
|
605
|
+
_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","DEPLOY_CLOUD_RUN_PROJECT_ID","DEPLOY_CLOUD_RUN_REGION","GCLOUD_DEPLOY_credentialsKey","GCLOUD_RUN_canonicalHostSuffix","foo","multiline"]
|
|
606
|
+
EOF
|
|
607
|
+
- collapseable_section_end "write-dotenv-app1"
|
|
529
608
|
- echo '{"id":"$(git describe --tags 2>/dev/null || git rev-parse HEAD)","time":"$CI_JOB_STARTED_AT"}' > app1/__build_info.json
|
|
530
|
-
-
|
|
609
|
+
- collapseable_section_start "nodeinstall" "Ensure node version"
|
|
531
610
|
- if [ -f ~/.nvm/nvm.sh ]; then source ~/.nvm/nvm.sh; fi
|
|
532
611
|
- if command -v nvm &> /dev/null && [ -f ./.nvmrc ]; then nvm install; fi
|
|
533
|
-
-
|
|
612
|
+
- collapseable_section_end "nodeinstall"
|
|
534
613
|
- cd app1
|
|
535
|
-
-
|
|
614
|
+
- collapseable_section_start "nodeinstall" "Ensure node version"
|
|
536
615
|
- if [ -f ~/.nvm/nvm.sh ]; then source ~/.nvm/nvm.sh; fi
|
|
537
616
|
- if command -v nvm &> /dev/null && [ -f ./.nvmrc ]; then nvm install; fi
|
|
538
|
-
-
|
|
539
|
-
-
|
|
617
|
+
- collapseable_section_end "nodeinstall"
|
|
618
|
+
- collapseable_section_start "yarninstall" "Yarn install"
|
|
540
619
|
- yarn install --immutable
|
|
541
|
-
-
|
|
620
|
+
- collapseable_section_end "yarninstall"
|
|
542
621
|
- yarn build
|
|
543
622
|
cache:
|
|
544
623
|
- key: app1-yarn
|
|
@@ -549,15 +628,13 @@ app1 🧪 test:
|
|
|
549
628
|
policy: pull-push
|
|
550
629
|
paths:
|
|
551
630
|
- app1/node_modules
|
|
552
|
-
- key: app1-next-cache
|
|
553
|
-
policy: pull-push
|
|
554
|
-
paths:
|
|
555
|
-
- app1/.next/cache
|
|
556
631
|
artifacts:
|
|
557
632
|
paths:
|
|
558
633
|
- app1/__build_info.json
|
|
559
634
|
- app1/.next
|
|
560
635
|
- app1/dist
|
|
636
|
+
exclude:
|
|
637
|
+
- app1/.env
|
|
561
638
|
expire_in: 1 day
|
|
562
639
|
when: always
|
|
563
640
|
reports: {}
|
|
@@ -583,7 +660,7 @@ app1 🧪 test:
|
|
|
583
660
|
KUBERNETES_MEMORY_REQUEST: 1Gi
|
|
584
661
|
KUBERNETES_MEMORY_LIMIT: 2Gi
|
|
585
662
|
script:
|
|
586
|
-
-
|
|
663
|
+
- collapseable_section_start "injectvars" "Injecting variables"
|
|
587
664
|
- export APP_DIR="app1"
|
|
588
665
|
- export DOCKER_BUILD_CONTEXT="."
|
|
589
666
|
- export DOCKER_REGISTRY="asia-east1-docker.pkg.dev"
|
|
@@ -599,20 +676,20 @@ app1 🧪 test:
|
|
|
599
676
|
COPY --chown=node:node app1/yarn.lock /app/app1/yarn.lock
|
|
600
677
|
COPY --chown=node:node .yarnrc.yml /app/.yarnrc.yml
|
|
601
678
|
COPY --chown=node:node .yarn /app/.yarn"
|
|
602
|
-
-
|
|
679
|
+
- collapseable_section_end "injectvars"
|
|
603
680
|
- ensureNodeDockerfile
|
|
604
|
-
-
|
|
681
|
+
- collapseable_section_start "docker-login" "Docker Login"
|
|
605
682
|
- gcloud auth activate-service-account --key-file=<(echo "$CL_review_app1_GCLOUD_DEPLOY_credentialsKey")
|
|
606
683
|
- gcloud auth configure-docker asia-east1-docker.pkg.dev
|
|
607
|
-
-
|
|
608
|
-
-
|
|
684
|
+
- collapseable_section_end "docker-login"
|
|
685
|
+
- collapseable_section_start "docker-build" "Docker build"
|
|
609
686
|
- 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
|
|
610
|
-
-
|
|
611
|
-
-
|
|
687
|
+
- collapseable_section_end "docker-build"
|
|
688
|
+
- collapseable_section_start "docker-push" "Docker push and tag"
|
|
612
689
|
- docker push $DOCKER_IMAGE:$DOCKER_IMAGE_TAG
|
|
613
690
|
- docker tag $DOCKER_IMAGE:$DOCKER_IMAGE_TAG $DOCKER_CACHE_IMAGE
|
|
614
691
|
- docker push $DOCKER_CACHE_IMAGE
|
|
615
|
-
-
|
|
692
|
+
- collapseable_section_end "docker-push"
|
|
616
693
|
cache:
|
|
617
694
|
- key: app1-yarn
|
|
618
695
|
policy: pull
|
|
@@ -629,8 +706,8 @@ app1 🧪 test:
|
|
|
629
706
|
image: aquasec/trivy:0.38.3
|
|
630
707
|
variables: {}
|
|
631
708
|
script:
|
|
632
|
-
-
|
|
633
|
-
-
|
|
709
|
+
- collapseable_section_start "injectvars" "Injecting variables"
|
|
710
|
+
- collapseable_section_end "injectvars"
|
|
634
711
|
- trivy fs --quiet --format cyclonedx --output "__sbom.json" app1
|
|
635
712
|
artifacts:
|
|
636
713
|
paths:
|
|
@@ -649,17 +726,16 @@ app1 🧪 test:
|
|
|
649
726
|
KUBERNETES_MEMORY_REQUEST: 200Mi
|
|
650
727
|
KUBERNETES_MEMORY_LIMIT: 400Mi
|
|
651
728
|
script:
|
|
652
|
-
-
|
|
729
|
+
- collapseable_section_start "injectvars" "Injecting variables"
|
|
653
730
|
- export ENV_SHORT="review"
|
|
654
731
|
- export APP_DIR="app1"
|
|
655
732
|
- export ENV_TYPE="review"
|
|
656
733
|
- export BUILD_INFO_BUILD_ID="$(git describe --tags 2>/dev/null || git rev-parse HEAD)"
|
|
657
734
|
- export BUILD_INFO_BUILD_TIME="$CI_JOB_STARTED_AT"
|
|
658
735
|
- 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")"
|
|
659
|
-
- export
|
|
736
|
+
- export HOSTNAME="$(printf %s "pan-test-app-review-$([ -n "$CI_MERGE_REQUEST_IID" ] && echo "mr$CI_MERGE_REQUEST_IID" || { [ -n "$CI_COMMIT_REF_SLUG" ] && echo "$CI_COMMIT_REF_SLUG" || echo "unknown"; })-app1-$CL_review_app1_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')"
|
|
660
737
|
- export ROOT_URL="https://$(printf %s "pan-test-app-review-$([ -n "$CI_MERGE_REQUEST_IID" ] && echo "mr$CI_MERGE_REQUEST_IID" || { [ -n "$CI_COMMIT_REF_SLUG" ] && echo "$CI_COMMIT_REF_SLUG" || echo "unknown"; })-app1-$CL_review_app1_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')"
|
|
661
|
-
- export
|
|
662
|
-
- export HOST_CANONICAL="$(printf %s "pan-test-app-review-$([ -n "$CI_MERGE_REQUEST_IID" ] && echo "mr$CI_MERGE_REQUEST_IID" || { [ -n "$CI_COMMIT_REF_SLUG" ] && echo "$CI_COMMIT_REF_SLUG" || echo "unknown"; })-app1-$CL_review_app1_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')"
|
|
738
|
+
- export HOSTNAME_INTERNAL="$(printf %s "pan-test-app-review-$([ -n "$CI_MERGE_REQUEST_IID" ] && echo "mr$CI_MERGE_REQUEST_IID" || { [ -n "$CI_COMMIT_REF_SLUG" ] && echo "$CI_COMMIT_REF_SLUG" || echo "unknown"; })-app1-$CL_review_app1_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')"
|
|
663
739
|
- export ROOT_URL_INTERNAL="https://$(printf %s "pan-test-app-review-$([ -n "$CI_MERGE_REQUEST_IID" ] && echo "mr$CI_MERGE_REQUEST_IID" || { [ -n "$CI_COMMIT_REF_SLUG" ] && echo "$CI_COMMIT_REF_SLUG" || echo "unknown"; })-app1-$CL_review_app1_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')"
|
|
664
740
|
- export DEPLOY_CLOUD_RUN_PROJECT_ID="asdf"
|
|
665
741
|
- export DEPLOY_CLOUD_RUN_REGION="asia-east1"
|
|
@@ -677,19 +753,19 @@ app1 🧪 test:
|
|
|
677
753
|
app1 single quote: '
|
|
678
754
|
app1 doouble quote: \\"
|
|
679
755
|
"
|
|
680
|
-
- export _ALL_ENV_VAR_KEYS="[\\"ENV_SHORT\\",\\"APP_DIR\\",\\"ENV_TYPE\\",\\"BUILD_INFO_BUILD_ID\\",\\"BUILD_INFO_BUILD_TIME\\",\\"BUILD_INFO_CURRENT_VERSION\\",\\"
|
|
756
|
+
- 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\\",\\"DEPLOY_CLOUD_RUN_PROJECT_ID\\",\\"DEPLOY_CLOUD_RUN_REGION\\",\\"GCLOUD_DEPLOY_credentialsKey\\",\\"GCLOUD_RUN_canonicalHostSuffix\\",\\"foo\\",\\"multiline\\"]"
|
|
681
757
|
- export DOCKER_REGISTRY="asia-east1-docker.pkg.dev"
|
|
682
758
|
- export DOCKER_IMAGE="asia-east1-docker.pkg.dev/asdf/catladder-deploy/pan-test-app/review/app1/$([ -n "$CI_MERGE_REQUEST_IID" ] && echo "mr$CI_MERGE_REQUEST_IID" || { [ -n "$CI_COMMIT_REF_SLUG" ] && echo "$CI_COMMIT_REF_SLUG" || echo "unknown"; })"
|
|
683
759
|
- export DOCKER_CACHE_IMAGE="asia-east1-docker.pkg.dev/asdf/catladder-deploy/pan-test-app/caches/app1"
|
|
684
760
|
- export DOCKER_IMAGE_TAG="$CI_COMMIT_SHA"
|
|
685
761
|
- export CLOUDSDK_CORE_DISABLE_PROMPTS="1"
|
|
686
|
-
-
|
|
687
|
-
-
|
|
762
|
+
- collapseable_section_end "injectvars"
|
|
763
|
+
- collapseable_section_start "prepare" "Prepare..."
|
|
688
764
|
- gcloud auth activate-service-account --key-file=<(echo "$CL_review_app1_GCLOUD_DEPLOY_credentialsKey")
|
|
689
765
|
- export GCLOUD_PROJECT_NUMBER=$(gcloud projects describe asdf --format="value(projectNumber)")
|
|
690
766
|
- 'echo "GCLOUD_PROJECT_NUMBER: $GCLOUD_PROJECT_NUMBER"'
|
|
691
|
-
-
|
|
692
|
-
-
|
|
767
|
+
- collapseable_section_end "prepare"
|
|
768
|
+
- collapseable_section_start "writeenvvars" "Write env vars to file"
|
|
693
769
|
- |
|
|
694
770
|
cat > ____envvars.yaml <<EOF
|
|
695
771
|
ENV_SHORT: |-
|
|
@@ -699,56 +775,54 @@ app1 🧪 test:
|
|
|
699
775
|
ENV_TYPE: |-
|
|
700
776
|
review
|
|
701
777
|
BUILD_INFO_BUILD_ID: |-
|
|
702
|
-
|
|
778
|
+
$(printf %s "$(git describe --tags 2>/dev/null || git rev-parse HEAD)" | sed '1!s/^/ /')
|
|
703
779
|
BUILD_INFO_BUILD_TIME: |-
|
|
704
|
-
|
|
780
|
+
$(printf %s "$CI_JOB_STARTED_AT" | sed '1!s/^/ /')
|
|
705
781
|
BUILD_INFO_CURRENT_VERSION: |-
|
|
706
|
-
|
|
707
|
-
|
|
708
|
-
|
|
782
|
+
$(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/^/ /')
|
|
783
|
+
HOSTNAME: |-
|
|
784
|
+
$(printf %s "$(printf %s "pan-test-app-review-$([ -n "$CI_MERGE_REQUEST_IID" ] && echo "mr$CI_MERGE_REQUEST_IID" || { [ -n "$CI_COMMIT_REF_SLUG" ] && echo "$CI_COMMIT_REF_SLUG" || echo "unknown"; })-app1-$CL_review_app1_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')" | sed '1!s/^/ /')
|
|
709
785
|
ROOT_URL: |-
|
|
710
|
-
|
|
711
|
-
|
|
712
|
-
|
|
713
|
-
HOST_CANONICAL: |-
|
|
714
|
-
$(printf %s "$(printf %s "pan-test-app-review-$([ -n "$CI_MERGE_REQUEST_IID" ] && echo "mr$CI_MERGE_REQUEST_IID" || { [ -n "$CI_COMMIT_REF_SLUG" ] && echo "$CI_COMMIT_REF_SLUG" || echo "unknown"; })-app1-$CL_review_app1_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')" | sed 's/^/ /')
|
|
786
|
+
$(printf %s "https://$(printf %s "pan-test-app-review-$([ -n "$CI_MERGE_REQUEST_IID" ] && echo "mr$CI_MERGE_REQUEST_IID" || { [ -n "$CI_COMMIT_REF_SLUG" ] && echo "$CI_COMMIT_REF_SLUG" || echo "unknown"; })-app1-$CL_review_app1_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')" | sed '1!s/^/ /')
|
|
787
|
+
HOSTNAME_INTERNAL: |-
|
|
788
|
+
$(printf %s "$(printf %s "pan-test-app-review-$([ -n "$CI_MERGE_REQUEST_IID" ] && echo "mr$CI_MERGE_REQUEST_IID" || { [ -n "$CI_COMMIT_REF_SLUG" ] && echo "$CI_COMMIT_REF_SLUG" || echo "unknown"; })-app1-$CL_review_app1_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')" | sed '1!s/^/ /')
|
|
715
789
|
ROOT_URL_INTERNAL: |-
|
|
716
|
-
|
|
790
|
+
$(printf %s "https://$(printf %s "pan-test-app-review-$([ -n "$CI_MERGE_REQUEST_IID" ] && echo "mr$CI_MERGE_REQUEST_IID" || { [ -n "$CI_COMMIT_REF_SLUG" ] && echo "$CI_COMMIT_REF_SLUG" || echo "unknown"; })-app1-$CL_review_app1_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')" | sed '1!s/^/ /')
|
|
717
791
|
DEPLOY_CLOUD_RUN_PROJECT_ID: |-
|
|
718
792
|
asdf
|
|
719
793
|
DEPLOY_CLOUD_RUN_REGION: |-
|
|
720
794
|
asia-east1
|
|
721
795
|
GCLOUD_RUN_canonicalHostSuffix: |-
|
|
722
|
-
|
|
796
|
+
$(printf %s "$CL_review_app1_GCLOUD_RUN_canonicalHostSuffix" | sed '1!s/^/ /')
|
|
723
797
|
foo: |-
|
|
724
798
|
foo-value
|
|
725
799
|
multiline: |-
|
|
726
|
-
|
|
727
|
-
|
|
728
|
-
|
|
729
|
-
|
|
730
|
-
|
|
731
|
-
|
|
732
|
-
|
|
733
|
-
|
|
734
|
-
|
|
735
|
-
|
|
800
|
+
app1 line1
|
|
801
|
+
app1 line2
|
|
802
|
+
app1 line3
|
|
803
|
+
|
|
804
|
+
the url of self: "$(printf %s "https://$(printf %s "pan-test-app-review-$([ -n "$CI_MERGE_REQUEST_IID" ] && echo "mr$CI_MERGE_REQUEST_IID" || { [ -n "$CI_COMMIT_REF_SLUG" ] && echo "$CI_COMMIT_REF_SLUG" || echo "unknown"; })-app1-$CL_review_app1_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')" | sed '1!s/^/ /')"
|
|
805
|
+
|
|
806
|
+
|
|
807
|
+
app1 single quote: '
|
|
808
|
+
app1 doouble quote: "
|
|
809
|
+
|
|
736
810
|
_ALL_ENV_VAR_KEYS: |-
|
|
737
|
-
["ENV_SHORT","APP_DIR","ENV_TYPE","BUILD_INFO_BUILD_ID","BUILD_INFO_BUILD_TIME","BUILD_INFO_CURRENT_VERSION","
|
|
811
|
+
["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","DEPLOY_CLOUD_RUN_PROJECT_ID","DEPLOY_CLOUD_RUN_REGION","GCLOUD_DEPLOY_credentialsKey","GCLOUD_RUN_canonicalHostSuffix","foo","multiline"]
|
|
738
812
|
|
|
739
813
|
EOF
|
|
740
|
-
-
|
|
741
|
-
-
|
|
814
|
+
- collapseable_section_end "writeenvvars"
|
|
815
|
+
- collapseable_section_start "deploy" "Deploy to cloud run"
|
|
742
816
|
- gcloud run deploy $(printf %s "pan-test-app-review-$([ -n "$CI_MERGE_REQUEST_IID" ] && echo "mr$CI_MERGE_REQUEST_IID" || { [ -n "$CI_COMMIT_REF_SLUG" ] && echo "$CI_COMMIT_REF_SLUG" || echo "unknown"; })-app1" | awk '{print tolower($0)}') --command="yarn,start" --image=asia-east1-docker.pkg.dev/asdf/catladder-deploy/pan-test-app/review/app1/$([ -n "$CI_MERGE_REQUEST_IID" ] && echo "mr$CI_MERGE_REQUEST_IID" || { [ -n "$CI_COMMIT_REF_SLUG" ] && echo "$CI_COMMIT_REF_SLUG" || echo "unknown"; }):$DOCKER_IMAGE_TAG --project=asdf --region=asia-east1 --labels=customer-name=pan,component-name=app1,app-name=test-app,env-type=review,env-name=review,build-type=node,cloud-run-service-name=$(printf %s "pan-test-app-review-$([ -n "$CI_MERGE_REQUEST_IID" ] && echo "mr$CI_MERGE_REQUEST_IID" || { [ -n "$CI_COMMIT_REF_SLUG" ] && echo "$CI_COMMIT_REF_SLUG" || echo "unknown"; })-app1" | awk '{print tolower($0)}') --env-vars-file=____envvars.yaml --min-instances=0 --max-instances=100 --cpu-throttling --allow-unauthenticated --ingress=all --cpu-boost
|
|
743
|
-
-
|
|
744
|
-
-
|
|
817
|
+
- collapseable_section_end "deploy"
|
|
818
|
+
- collapseable_section_start "cleanup" "Cleanup"
|
|
745
819
|
- gcloud run revisions list --project=asdf --region=asia-east1 --service=$(printf %s "pan-test-app-review-$([ -n "$CI_MERGE_REQUEST_IID" ] && echo "mr$CI_MERGE_REQUEST_IID" || { [ -n "$CI_COMMIT_REF_SLUG" ] && echo "$CI_COMMIT_REF_SLUG" || echo "unknown"; })-app1" | awk '{print tolower($0)}') --limit=unlimited --sort-by=metadata.creationTimestamp --format="value(name)" --filter='(status.conditions.status=False OR status.conditions.status=Unknown)' | while read -r revisionname; do gcloud run revisions delete --project=asdf --region=asia-east1 --quiet $revisionname ; done
|
|
746
820
|
- gcloud artifacts docker images list asia-east1-docker.pkg.dev/asdf/catladder-deploy/pan-test-app/review/app1/$([ -n "$CI_MERGE_REQUEST_IID" ] && echo "mr$CI_MERGE_REQUEST_IID" || { [ -n "$CI_COMMIT_REF_SLUG" ] && echo "$CI_COMMIT_REF_SLUG" || echo "unknown"; }) --sort-by=~CREATE_TIME --format="value(version)" | tail -n +2 | while read -r version; do gcloud artifacts docker images delete asia-east1-docker.pkg.dev/asdf/catladder-deploy/pan-test-app/review/app1/$([ -n "$CI_MERGE_REQUEST_IID" ] && echo "mr$CI_MERGE_REQUEST_IID" || { [ -n "$CI_COMMIT_REF_SLUG" ] && echo "$CI_COMMIT_REF_SLUG" || echo "unknown"; })@$version --quiet --delete-tags; done
|
|
747
821
|
- gcloud artifacts docker images list asia-east1-docker.pkg.dev/asdf/catladder-deploy/pan-test-app/caches/app1 --sort-by=~CREATE_TIME --format="value(version)" | tail -n +2 | while read -r version; do gcloud artifacts docker images delete asia-east1-docker.pkg.dev/asdf/catladder-deploy/pan-test-app/caches/app1@$version --quiet --delete-tags; done
|
|
748
822
|
- set +e
|
|
749
823
|
- gcloud artifacts docker images delete asia-east1-docker.pkg.dev/asdf/catladder-deploy/pan-test-app/review/app1 --quiet --delete-tags
|
|
750
824
|
- set -e
|
|
751
|
-
-
|
|
825
|
+
- collapseable_section_end "cleanup"
|
|
752
826
|
- echo 'Uploading SBOM to Dependency Track'
|
|
753
827
|
- /dtrackuploader https://dep.panter.swiss/ "$DT_KEY_PROD" upload "pan-test-app/app1" "https://$(printf %s "pan-test-app-review-$([ -n "$CI_MERGE_REQUEST_IID" ] && echo "mr$CI_MERGE_REQUEST_IID" || { [ -n "$CI_COMMIT_REF_SLUG" ] && echo "$CI_COMMIT_REF_SLUG" || echo "unknown"; })-app1-$CL_review_app1_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')" "__sbom.json" vex.json || true
|
|
754
828
|
- echo "CL_GITLAB_ENVIRONMENT_URL=https://$(printf %s "pan-test-app-review-$([ -n "$CI_MERGE_REQUEST_IID" ] && echo "mr$CI_MERGE_REQUEST_IID" || { [ -n "$CI_COMMIT_REF_SLUG" ] && echo "$CI_COMMIT_REF_SLUG" || echo "unknown"; })-app1-$CL_review_app1_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')" >> gitlab_environment.env
|
|
@@ -788,9 +862,9 @@ app1 🧪 test:
|
|
|
788
862
|
KUBERNETES_MEMORY_LIMIT: 400Mi
|
|
789
863
|
GIT_STRATEGY: none
|
|
790
864
|
script:
|
|
791
|
-
-
|
|
865
|
+
- collapseable_section_start "injectvars" "Injecting variables"
|
|
792
866
|
- export CLOUDSDK_CORE_DISABLE_PROMPTS="1"
|
|
793
|
-
-
|
|
867
|
+
- collapseable_section_end "injectvars"
|
|
794
868
|
- set +e
|
|
795
869
|
- gcloud auth activate-service-account --key-file=<(echo "$CL_review_app1_GCLOUD_DEPLOY_credentialsKey")
|
|
796
870
|
- gcloud run services delete $(printf %s "pan-test-app-review-$([ -n "$CI_MERGE_REQUEST_IID" ] && echo "mr$CI_MERGE_REQUEST_IID" || { [ -n "$CI_COMMIT_REF_SLUG" ] && echo "$CI_COMMIT_REF_SLUG" || echo "unknown"; })-app1" | awk '{print tolower($0)}') --project=asdf --region=asia-east1
|
|
@@ -827,17 +901,16 @@ app1 🧪 test:
|
|
|
827
901
|
KUBERNETES_MEMORY_REQUEST: 1Gi
|
|
828
902
|
KUBERNETES_MEMORY_LIMIT: 4Gi
|
|
829
903
|
script:
|
|
830
|
-
-
|
|
904
|
+
- collapseable_section_start "injectvars" "Injecting variables"
|
|
831
905
|
- export ENV_SHORT="stage"
|
|
832
906
|
- export APP_DIR="app1"
|
|
833
907
|
- export ENV_TYPE="stage"
|
|
834
908
|
- export BUILD_INFO_BUILD_ID="$(git describe --tags 2>/dev/null || git rev-parse HEAD)"
|
|
835
909
|
- export BUILD_INFO_BUILD_TIME="$CI_JOB_STARTED_AT"
|
|
836
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")"
|
|
837
|
-
- export
|
|
911
|
+
- export HOSTNAME="$(printf %s "pan-test-app-stage-app1-$CL_stage_app1_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')"
|
|
838
912
|
- export ROOT_URL="https://$(printf %s "pan-test-app-stage-app1-$CL_stage_app1_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')"
|
|
839
|
-
- export
|
|
840
|
-
- export HOST_CANONICAL="$(printf %s "pan-test-app-stage-app1-$CL_stage_app1_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')"
|
|
913
|
+
- export HOSTNAME_INTERNAL="$(printf %s "pan-test-app-stage-app1-$CL_stage_app1_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')"
|
|
841
914
|
- export ROOT_URL_INTERNAL="https://$(printf %s "pan-test-app-stage-app1-$CL_stage_app1_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')"
|
|
842
915
|
- export DEPLOY_CLOUD_RUN_PROJECT_ID="asdf"
|
|
843
916
|
- export DEPLOY_CLOUD_RUN_REGION="asia-east1"
|
|
@@ -855,21 +928,49 @@ app1 🧪 test:
|
|
|
855
928
|
app1 single quote: '
|
|
856
929
|
app1 doouble quote: \\"
|
|
857
930
|
"
|
|
858
|
-
- export _ALL_ENV_VAR_KEYS="[\\"ENV_SHORT\\",\\"APP_DIR\\",\\"ENV_TYPE\\",\\"BUILD_INFO_BUILD_ID\\",\\"BUILD_INFO_BUILD_TIME\\",\\"BUILD_INFO_CURRENT_VERSION\\",\\"
|
|
859
|
-
-
|
|
931
|
+
- 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\\",\\"DEPLOY_CLOUD_RUN_PROJECT_ID\\",\\"DEPLOY_CLOUD_RUN_REGION\\",\\"GCLOUD_DEPLOY_credentialsKey\\",\\"GCLOUD_RUN_canonicalHostSuffix\\",\\"foo\\",\\"multiline\\"]"
|
|
932
|
+
- collapseable_section_end "injectvars"
|
|
933
|
+
- collapseable_section_start "write-dotenv-app1" "write dot env for app1"
|
|
934
|
+
- |-
|
|
935
|
+
cat <<EOF > app1/.env
|
|
936
|
+
ENV_SHORT=stage
|
|
937
|
+
APP_DIR=app1
|
|
938
|
+
ENV_TYPE=stage
|
|
939
|
+
HOSTNAME=$(printf %s "$(printf %s "pan-test-app-stage-app1-$CL_stage_app1_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')" | escapeForDotEnv)
|
|
940
|
+
ROOT_URL=$(printf %s "https://$(printf %s "pan-test-app-stage-app1-$CL_stage_app1_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')" | escapeForDotEnv)
|
|
941
|
+
HOSTNAME_INTERNAL=$(printf %s "$(printf %s "pan-test-app-stage-app1-$CL_stage_app1_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')" | escapeForDotEnv)
|
|
942
|
+
ROOT_URL_INTERNAL=$(printf %s "https://$(printf %s "pan-test-app-stage-app1-$CL_stage_app1_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')" | escapeForDotEnv)
|
|
943
|
+
DEPLOY_CLOUD_RUN_PROJECT_ID=asdf
|
|
944
|
+
DEPLOY_CLOUD_RUN_REGION=asia-east1
|
|
945
|
+
GCLOUD_DEPLOY_credentialsKey=$(printf %s "$CL_stage_app1_GCLOUD_DEPLOY_credentialsKey" | escapeForDotEnv)
|
|
946
|
+
GCLOUD_RUN_canonicalHostSuffix=$(printf %s "$CL_stage_app1_GCLOUD_RUN_canonicalHostSuffix" | escapeForDotEnv)
|
|
947
|
+
foo=foo-value
|
|
948
|
+
multiline=$(printf %s "app1 line1
|
|
949
|
+
app1 line2
|
|
950
|
+
app1 line3
|
|
951
|
+
|
|
952
|
+
the url of self: \\"https://$(printf %s "pan-test-app-stage-app1-$CL_stage_app1_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')\\"
|
|
953
|
+
|
|
954
|
+
|
|
955
|
+
app1 single quote: '
|
|
956
|
+
app1 doouble quote: \\"
|
|
957
|
+
" | escapeForDotEnv)
|
|
958
|
+
_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","DEPLOY_CLOUD_RUN_PROJECT_ID","DEPLOY_CLOUD_RUN_REGION","GCLOUD_DEPLOY_credentialsKey","GCLOUD_RUN_canonicalHostSuffix","foo","multiline"]
|
|
959
|
+
EOF
|
|
960
|
+
- collapseable_section_end "write-dotenv-app1"
|
|
860
961
|
- echo '{"id":"$(git describe --tags 2>/dev/null || git rev-parse HEAD)","time":"$CI_JOB_STARTED_AT"}' > app1/__build_info.json
|
|
861
|
-
-
|
|
962
|
+
- collapseable_section_start "nodeinstall" "Ensure node version"
|
|
862
963
|
- if [ -f ~/.nvm/nvm.sh ]; then source ~/.nvm/nvm.sh; fi
|
|
863
964
|
- if command -v nvm &> /dev/null && [ -f ./.nvmrc ]; then nvm install; fi
|
|
864
|
-
-
|
|
965
|
+
- collapseable_section_end "nodeinstall"
|
|
865
966
|
- cd app1
|
|
866
|
-
-
|
|
967
|
+
- collapseable_section_start "nodeinstall" "Ensure node version"
|
|
867
968
|
- if [ -f ~/.nvm/nvm.sh ]; then source ~/.nvm/nvm.sh; fi
|
|
868
969
|
- if command -v nvm &> /dev/null && [ -f ./.nvmrc ]; then nvm install; fi
|
|
869
|
-
-
|
|
870
|
-
-
|
|
970
|
+
- collapseable_section_end "nodeinstall"
|
|
971
|
+
- collapseable_section_start "yarninstall" "Yarn install"
|
|
871
972
|
- yarn install --immutable
|
|
872
|
-
-
|
|
973
|
+
- collapseable_section_end "yarninstall"
|
|
873
974
|
- yarn build
|
|
874
975
|
cache:
|
|
875
976
|
- key: app1-yarn
|
|
@@ -880,15 +981,13 @@ app1 🧪 test:
|
|
|
880
981
|
policy: pull-push
|
|
881
982
|
paths:
|
|
882
983
|
- app1/node_modules
|
|
883
|
-
- key: app1-next-cache
|
|
884
|
-
policy: pull-push
|
|
885
|
-
paths:
|
|
886
|
-
- app1/.next/cache
|
|
887
984
|
artifacts:
|
|
888
985
|
paths:
|
|
889
986
|
- app1/__build_info.json
|
|
890
987
|
- app1/.next
|
|
891
988
|
- app1/dist
|
|
989
|
+
exclude:
|
|
990
|
+
- app1/.env
|
|
892
991
|
expire_in: 1 day
|
|
893
992
|
when: always
|
|
894
993
|
reports: {}
|
|
@@ -914,7 +1013,7 @@ app1 🧪 test:
|
|
|
914
1013
|
KUBERNETES_MEMORY_REQUEST: 1Gi
|
|
915
1014
|
KUBERNETES_MEMORY_LIMIT: 2Gi
|
|
916
1015
|
script:
|
|
917
|
-
-
|
|
1016
|
+
- collapseable_section_start "injectvars" "Injecting variables"
|
|
918
1017
|
- export APP_DIR="app1"
|
|
919
1018
|
- export DOCKER_BUILD_CONTEXT="."
|
|
920
1019
|
- export DOCKER_REGISTRY="asia-east1-docker.pkg.dev"
|
|
@@ -930,20 +1029,20 @@ app1 🧪 test:
|
|
|
930
1029
|
COPY --chown=node:node app1/yarn.lock /app/app1/yarn.lock
|
|
931
1030
|
COPY --chown=node:node .yarnrc.yml /app/.yarnrc.yml
|
|
932
1031
|
COPY --chown=node:node .yarn /app/.yarn"
|
|
933
|
-
-
|
|
1032
|
+
- collapseable_section_end "injectvars"
|
|
934
1033
|
- ensureNodeDockerfile
|
|
935
|
-
-
|
|
1034
|
+
- collapseable_section_start "docker-login" "Docker Login"
|
|
936
1035
|
- gcloud auth activate-service-account --key-file=<(echo "$CL_stage_app1_GCLOUD_DEPLOY_credentialsKey")
|
|
937
1036
|
- gcloud auth configure-docker asia-east1-docker.pkg.dev
|
|
938
|
-
-
|
|
939
|
-
-
|
|
1037
|
+
- collapseable_section_end "docker-login"
|
|
1038
|
+
- collapseable_section_start "docker-build" "Docker build"
|
|
940
1039
|
- 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
|
|
941
|
-
-
|
|
942
|
-
-
|
|
1040
|
+
- collapseable_section_end "docker-build"
|
|
1041
|
+
- collapseable_section_start "docker-push" "Docker push and tag"
|
|
943
1042
|
- docker push $DOCKER_IMAGE:$DOCKER_IMAGE_TAG
|
|
944
1043
|
- docker tag $DOCKER_IMAGE:$DOCKER_IMAGE_TAG $DOCKER_CACHE_IMAGE
|
|
945
1044
|
- docker push $DOCKER_CACHE_IMAGE
|
|
946
|
-
-
|
|
1045
|
+
- collapseable_section_end "docker-push"
|
|
947
1046
|
cache:
|
|
948
1047
|
- key: app1-yarn
|
|
949
1048
|
policy: pull
|
|
@@ -960,8 +1059,8 @@ app1 🧪 test:
|
|
|
960
1059
|
image: aquasec/trivy:0.38.3
|
|
961
1060
|
variables: {}
|
|
962
1061
|
script:
|
|
963
|
-
-
|
|
964
|
-
-
|
|
1062
|
+
- collapseable_section_start "injectvars" "Injecting variables"
|
|
1063
|
+
- collapseable_section_end "injectvars"
|
|
965
1064
|
- trivy fs --quiet --format cyclonedx --output "__sbom.json" app1
|
|
966
1065
|
artifacts:
|
|
967
1066
|
paths:
|
|
@@ -980,17 +1079,16 @@ app1 🧪 test:
|
|
|
980
1079
|
KUBERNETES_MEMORY_REQUEST: 200Mi
|
|
981
1080
|
KUBERNETES_MEMORY_LIMIT: 400Mi
|
|
982
1081
|
script:
|
|
983
|
-
-
|
|
1082
|
+
- collapseable_section_start "injectvars" "Injecting variables"
|
|
984
1083
|
- export ENV_SHORT="stage"
|
|
985
1084
|
- export APP_DIR="app1"
|
|
986
1085
|
- export ENV_TYPE="stage"
|
|
987
1086
|
- export BUILD_INFO_BUILD_ID="$(git describe --tags 2>/dev/null || git rev-parse HEAD)"
|
|
988
1087
|
- export BUILD_INFO_BUILD_TIME="$CI_JOB_STARTED_AT"
|
|
989
1088
|
- 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")"
|
|
990
|
-
- export
|
|
1089
|
+
- export HOSTNAME="$(printf %s "pan-test-app-stage-app1-$CL_stage_app1_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')"
|
|
991
1090
|
- export ROOT_URL="https://$(printf %s "pan-test-app-stage-app1-$CL_stage_app1_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')"
|
|
992
|
-
- export
|
|
993
|
-
- export HOST_CANONICAL="$(printf %s "pan-test-app-stage-app1-$CL_stage_app1_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')"
|
|
1091
|
+
- export HOSTNAME_INTERNAL="$(printf %s "pan-test-app-stage-app1-$CL_stage_app1_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')"
|
|
994
1092
|
- export ROOT_URL_INTERNAL="https://$(printf %s "pan-test-app-stage-app1-$CL_stage_app1_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')"
|
|
995
1093
|
- export DEPLOY_CLOUD_RUN_PROJECT_ID="asdf"
|
|
996
1094
|
- export DEPLOY_CLOUD_RUN_REGION="asia-east1"
|
|
@@ -1008,19 +1106,19 @@ app1 🧪 test:
|
|
|
1008
1106
|
app1 single quote: '
|
|
1009
1107
|
app1 doouble quote: \\"
|
|
1010
1108
|
"
|
|
1011
|
-
- export _ALL_ENV_VAR_KEYS="[\\"ENV_SHORT\\",\\"APP_DIR\\",\\"ENV_TYPE\\",\\"BUILD_INFO_BUILD_ID\\",\\"BUILD_INFO_BUILD_TIME\\",\\"BUILD_INFO_CURRENT_VERSION\\",\\"
|
|
1109
|
+
- 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\\",\\"DEPLOY_CLOUD_RUN_PROJECT_ID\\",\\"DEPLOY_CLOUD_RUN_REGION\\",\\"GCLOUD_DEPLOY_credentialsKey\\",\\"GCLOUD_RUN_canonicalHostSuffix\\",\\"foo\\",\\"multiline\\"]"
|
|
1012
1110
|
- export DOCKER_REGISTRY="asia-east1-docker.pkg.dev"
|
|
1013
1111
|
- export DOCKER_IMAGE="asia-east1-docker.pkg.dev/asdf/catladder-deploy/pan-test-app/stage/app1"
|
|
1014
1112
|
- export DOCKER_CACHE_IMAGE="asia-east1-docker.pkg.dev/asdf/catladder-deploy/pan-test-app/caches/app1"
|
|
1015
1113
|
- export DOCKER_IMAGE_TAG="$CI_COMMIT_SHA"
|
|
1016
1114
|
- export CLOUDSDK_CORE_DISABLE_PROMPTS="1"
|
|
1017
|
-
-
|
|
1018
|
-
-
|
|
1115
|
+
- collapseable_section_end "injectvars"
|
|
1116
|
+
- collapseable_section_start "prepare" "Prepare..."
|
|
1019
1117
|
- gcloud auth activate-service-account --key-file=<(echo "$CL_stage_app1_GCLOUD_DEPLOY_credentialsKey")
|
|
1020
1118
|
- export GCLOUD_PROJECT_NUMBER=$(gcloud projects describe asdf --format="value(projectNumber)")
|
|
1021
1119
|
- 'echo "GCLOUD_PROJECT_NUMBER: $GCLOUD_PROJECT_NUMBER"'
|
|
1022
|
-
-
|
|
1023
|
-
-
|
|
1120
|
+
- collapseable_section_end "prepare"
|
|
1121
|
+
- collapseable_section_start "writeenvvars" "Write env vars to file"
|
|
1024
1122
|
- |
|
|
1025
1123
|
cat > ____envvars.yaml <<EOF
|
|
1026
1124
|
ENV_SHORT: |-
|
|
@@ -1030,53 +1128,51 @@ app1 🧪 test:
|
|
|
1030
1128
|
ENV_TYPE: |-
|
|
1031
1129
|
stage
|
|
1032
1130
|
BUILD_INFO_BUILD_ID: |-
|
|
1033
|
-
|
|
1131
|
+
$(printf %s "$(git describe --tags 2>/dev/null || git rev-parse HEAD)" | sed '1!s/^/ /')
|
|
1034
1132
|
BUILD_INFO_BUILD_TIME: |-
|
|
1035
|
-
|
|
1133
|
+
$(printf %s "$CI_JOB_STARTED_AT" | sed '1!s/^/ /')
|
|
1036
1134
|
BUILD_INFO_CURRENT_VERSION: |-
|
|
1037
|
-
|
|
1038
|
-
|
|
1039
|
-
|
|
1135
|
+
$(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/^/ /')
|
|
1136
|
+
HOSTNAME: |-
|
|
1137
|
+
$(printf %s "$(printf %s "pan-test-app-stage-app1-$CL_stage_app1_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')" | sed '1!s/^/ /')
|
|
1040
1138
|
ROOT_URL: |-
|
|
1041
|
-
|
|
1042
|
-
|
|
1043
|
-
|
|
1044
|
-
HOST_CANONICAL: |-
|
|
1045
|
-
$(printf %s "$(printf %s "pan-test-app-stage-app1-$CL_stage_app1_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')" | sed 's/^/ /')
|
|
1139
|
+
$(printf %s "https://$(printf %s "pan-test-app-stage-app1-$CL_stage_app1_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')" | sed '1!s/^/ /')
|
|
1140
|
+
HOSTNAME_INTERNAL: |-
|
|
1141
|
+
$(printf %s "$(printf %s "pan-test-app-stage-app1-$CL_stage_app1_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')" | sed '1!s/^/ /')
|
|
1046
1142
|
ROOT_URL_INTERNAL: |-
|
|
1047
|
-
|
|
1143
|
+
$(printf %s "https://$(printf %s "pan-test-app-stage-app1-$CL_stage_app1_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')" | sed '1!s/^/ /')
|
|
1048
1144
|
DEPLOY_CLOUD_RUN_PROJECT_ID: |-
|
|
1049
1145
|
asdf
|
|
1050
1146
|
DEPLOY_CLOUD_RUN_REGION: |-
|
|
1051
1147
|
asia-east1
|
|
1052
1148
|
GCLOUD_RUN_canonicalHostSuffix: |-
|
|
1053
|
-
|
|
1149
|
+
$(printf %s "$CL_stage_app1_GCLOUD_RUN_canonicalHostSuffix" | sed '1!s/^/ /')
|
|
1054
1150
|
foo: |-
|
|
1055
1151
|
foo-value
|
|
1056
1152
|
multiline: |-
|
|
1057
|
-
|
|
1058
|
-
|
|
1059
|
-
|
|
1060
|
-
|
|
1061
|
-
|
|
1062
|
-
|
|
1063
|
-
|
|
1064
|
-
|
|
1065
|
-
|
|
1066
|
-
|
|
1153
|
+
app1 line1
|
|
1154
|
+
app1 line2
|
|
1155
|
+
app1 line3
|
|
1156
|
+
|
|
1157
|
+
the url of self: "$(printf %s "https://$(printf %s "pan-test-app-stage-app1-$CL_stage_app1_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')" | sed '1!s/^/ /')"
|
|
1158
|
+
|
|
1159
|
+
|
|
1160
|
+
app1 single quote: '
|
|
1161
|
+
app1 doouble quote: "
|
|
1162
|
+
|
|
1067
1163
|
_ALL_ENV_VAR_KEYS: |-
|
|
1068
|
-
["ENV_SHORT","APP_DIR","ENV_TYPE","BUILD_INFO_BUILD_ID","BUILD_INFO_BUILD_TIME","BUILD_INFO_CURRENT_VERSION","
|
|
1164
|
+
["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","DEPLOY_CLOUD_RUN_PROJECT_ID","DEPLOY_CLOUD_RUN_REGION","GCLOUD_DEPLOY_credentialsKey","GCLOUD_RUN_canonicalHostSuffix","foo","multiline"]
|
|
1069
1165
|
|
|
1070
1166
|
EOF
|
|
1071
|
-
-
|
|
1072
|
-
-
|
|
1167
|
+
- collapseable_section_end "writeenvvars"
|
|
1168
|
+
- collapseable_section_start "deploy" "Deploy to cloud run"
|
|
1073
1169
|
- gcloud run deploy pan-test-app-stage-app1 --command="yarn,start" --image=asia-east1-docker.pkg.dev/asdf/catladder-deploy/pan-test-app/stage/app1:$DOCKER_IMAGE_TAG --project=asdf --region=asia-east1 --labels=customer-name=pan,component-name=app1,app-name=test-app,env-type=stage,env-name=stage,build-type=node,cloud-run-service-name=pan-test-app-stage-app1 --env-vars-file=____envvars.yaml --min-instances=0 --max-instances=100 --cpu-throttling --allow-unauthenticated --ingress=all --cpu-boost
|
|
1074
|
-
-
|
|
1075
|
-
-
|
|
1170
|
+
- collapseable_section_end "deploy"
|
|
1171
|
+
- collapseable_section_start "cleanup" "Cleanup"
|
|
1076
1172
|
- gcloud run revisions list --project=asdf --region=asia-east1 --service=pan-test-app-stage-app1 --limit=unlimited --sort-by=metadata.creationTimestamp --format="value(name)" --filter='(status.conditions.status=False OR status.conditions.status=Unknown)' | while read -r revisionname; do gcloud run revisions delete --project=asdf --region=asia-east1 --quiet $revisionname ; done
|
|
1077
1173
|
- gcloud artifacts docker images list asia-east1-docker.pkg.dev/asdf/catladder-deploy/pan-test-app/stage/app1 --sort-by=~CREATE_TIME --format="value(version)" | tail -n +2 | while read -r version; do gcloud artifacts docker images delete asia-east1-docker.pkg.dev/asdf/catladder-deploy/pan-test-app/stage/app1@$version --quiet --delete-tags; done
|
|
1078
1174
|
- gcloud artifacts docker images list asia-east1-docker.pkg.dev/asdf/catladder-deploy/pan-test-app/caches/app1 --sort-by=~CREATE_TIME --format="value(version)" | tail -n +2 | while read -r version; do gcloud artifacts docker images delete asia-east1-docker.pkg.dev/asdf/catladder-deploy/pan-test-app/caches/app1@$version --quiet --delete-tags; done
|
|
1079
|
-
-
|
|
1175
|
+
- collapseable_section_end "cleanup"
|
|
1080
1176
|
- echo 'Uploading SBOM to Dependency Track'
|
|
1081
1177
|
- /dtrackuploader https://dep.panter.swiss/ "$DT_KEY_PROD" upload "pan-test-app/app1" "https://$(printf %s "pan-test-app-stage-app1-$CL_stage_app1_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')" "__sbom.json" vex.json || true
|
|
1082
1178
|
- echo "CL_GITLAB_ENVIRONMENT_URL=https://$(printf %s "pan-test-app-stage-app1-$CL_stage_app1_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')" >> gitlab_environment.env
|
|
@@ -1109,9 +1205,9 @@ app1 🧪 test:
|
|
|
1109
1205
|
KUBERNETES_MEMORY_LIMIT: 400Mi
|
|
1110
1206
|
GIT_STRATEGY: none
|
|
1111
1207
|
script:
|
|
1112
|
-
-
|
|
1208
|
+
- collapseable_section_start "injectvars" "Injecting variables"
|
|
1113
1209
|
- export CLOUDSDK_CORE_DISABLE_PROMPTS="1"
|
|
1114
|
-
-
|
|
1210
|
+
- collapseable_section_end "injectvars"
|
|
1115
1211
|
- set +e
|
|
1116
1212
|
- gcloud auth activate-service-account --key-file=<(echo "$CL_stage_app1_GCLOUD_DEPLOY_credentialsKey")
|
|
1117
1213
|
- gcloud run services delete pan-test-app-stage-app1 --project=asdf --region=asia-east1
|
|
@@ -1145,17 +1241,16 @@ app1 🧪 test:
|
|
|
1145
1241
|
KUBERNETES_MEMORY_REQUEST: 1Gi
|
|
1146
1242
|
KUBERNETES_MEMORY_LIMIT: 4Gi
|
|
1147
1243
|
script:
|
|
1148
|
-
-
|
|
1244
|
+
- collapseable_section_start "injectvars" "Injecting variables"
|
|
1149
1245
|
- export ENV_SHORT="prod"
|
|
1150
1246
|
- export APP_DIR="app1"
|
|
1151
1247
|
- export ENV_TYPE="prod"
|
|
1152
1248
|
- export BUILD_INFO_BUILD_ID="$(git describe --tags 2>/dev/null || git rev-parse HEAD)"
|
|
1153
1249
|
- export BUILD_INFO_BUILD_TIME="$CI_JOB_STARTED_AT"
|
|
1154
1250
|
- 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")"
|
|
1155
|
-
- export
|
|
1251
|
+
- export HOSTNAME="$(printf %s "pan-test-app-prod-app1-$CL_prod_app1_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')"
|
|
1156
1252
|
- export ROOT_URL="https://$(printf %s "pan-test-app-prod-app1-$CL_prod_app1_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')"
|
|
1157
|
-
- export
|
|
1158
|
-
- export HOST_CANONICAL="$(printf %s "pan-test-app-prod-app1-$CL_prod_app1_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')"
|
|
1253
|
+
- export HOSTNAME_INTERNAL="$(printf %s "pan-test-app-prod-app1-$CL_prod_app1_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')"
|
|
1159
1254
|
- export ROOT_URL_INTERNAL="https://$(printf %s "pan-test-app-prod-app1-$CL_prod_app1_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')"
|
|
1160
1255
|
- export DEPLOY_CLOUD_RUN_PROJECT_ID="asdf"
|
|
1161
1256
|
- export DEPLOY_CLOUD_RUN_REGION="asia-east1"
|
|
@@ -1173,21 +1268,49 @@ app1 🧪 test:
|
|
|
1173
1268
|
app1 single quote: '
|
|
1174
1269
|
app1 doouble quote: \\"
|
|
1175
1270
|
"
|
|
1176
|
-
- export _ALL_ENV_VAR_KEYS="[\\"ENV_SHORT\\",\\"APP_DIR\\",\\"ENV_TYPE\\",\\"BUILD_INFO_BUILD_ID\\",\\"BUILD_INFO_BUILD_TIME\\",\\"BUILD_INFO_CURRENT_VERSION\\",\\"
|
|
1177
|
-
-
|
|
1271
|
+
- 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\\",\\"DEPLOY_CLOUD_RUN_PROJECT_ID\\",\\"DEPLOY_CLOUD_RUN_REGION\\",\\"GCLOUD_DEPLOY_credentialsKey\\",\\"GCLOUD_RUN_canonicalHostSuffix\\",\\"foo\\",\\"multiline\\"]"
|
|
1272
|
+
- collapseable_section_end "injectvars"
|
|
1273
|
+
- collapseable_section_start "write-dotenv-app1" "write dot env for app1"
|
|
1274
|
+
- |-
|
|
1275
|
+
cat <<EOF > app1/.env
|
|
1276
|
+
ENV_SHORT=prod
|
|
1277
|
+
APP_DIR=app1
|
|
1278
|
+
ENV_TYPE=prod
|
|
1279
|
+
HOSTNAME=$(printf %s "$(printf %s "pan-test-app-prod-app1-$CL_prod_app1_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')" | escapeForDotEnv)
|
|
1280
|
+
ROOT_URL=$(printf %s "https://$(printf %s "pan-test-app-prod-app1-$CL_prod_app1_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')" | escapeForDotEnv)
|
|
1281
|
+
HOSTNAME_INTERNAL=$(printf %s "$(printf %s "pan-test-app-prod-app1-$CL_prod_app1_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')" | escapeForDotEnv)
|
|
1282
|
+
ROOT_URL_INTERNAL=$(printf %s "https://$(printf %s "pan-test-app-prod-app1-$CL_prod_app1_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')" | escapeForDotEnv)
|
|
1283
|
+
DEPLOY_CLOUD_RUN_PROJECT_ID=asdf
|
|
1284
|
+
DEPLOY_CLOUD_RUN_REGION=asia-east1
|
|
1285
|
+
GCLOUD_DEPLOY_credentialsKey=$(printf %s "$CL_prod_app1_GCLOUD_DEPLOY_credentialsKey" | escapeForDotEnv)
|
|
1286
|
+
GCLOUD_RUN_canonicalHostSuffix=$(printf %s "$CL_prod_app1_GCLOUD_RUN_canonicalHostSuffix" | escapeForDotEnv)
|
|
1287
|
+
foo=foo-value
|
|
1288
|
+
multiline=$(printf %s "app1 line1
|
|
1289
|
+
app1 line2
|
|
1290
|
+
app1 line3
|
|
1291
|
+
|
|
1292
|
+
the url of self: \\"https://$(printf %s "pan-test-app-prod-app1-$CL_prod_app1_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')\\"
|
|
1293
|
+
|
|
1294
|
+
|
|
1295
|
+
app1 single quote: '
|
|
1296
|
+
app1 doouble quote: \\"
|
|
1297
|
+
" | escapeForDotEnv)
|
|
1298
|
+
_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","DEPLOY_CLOUD_RUN_PROJECT_ID","DEPLOY_CLOUD_RUN_REGION","GCLOUD_DEPLOY_credentialsKey","GCLOUD_RUN_canonicalHostSuffix","foo","multiline"]
|
|
1299
|
+
EOF
|
|
1300
|
+
- collapseable_section_end "write-dotenv-app1"
|
|
1178
1301
|
- echo '{"id":"$(git describe --tags 2>/dev/null || git rev-parse HEAD)","time":"$CI_JOB_STARTED_AT"}' > app1/__build_info.json
|
|
1179
|
-
-
|
|
1302
|
+
- collapseable_section_start "nodeinstall" "Ensure node version"
|
|
1180
1303
|
- if [ -f ~/.nvm/nvm.sh ]; then source ~/.nvm/nvm.sh; fi
|
|
1181
1304
|
- if command -v nvm &> /dev/null && [ -f ./.nvmrc ]; then nvm install; fi
|
|
1182
|
-
-
|
|
1305
|
+
- collapseable_section_end "nodeinstall"
|
|
1183
1306
|
- cd app1
|
|
1184
|
-
-
|
|
1307
|
+
- collapseable_section_start "nodeinstall" "Ensure node version"
|
|
1185
1308
|
- if [ -f ~/.nvm/nvm.sh ]; then source ~/.nvm/nvm.sh; fi
|
|
1186
1309
|
- if command -v nvm &> /dev/null && [ -f ./.nvmrc ]; then nvm install; fi
|
|
1187
|
-
-
|
|
1188
|
-
-
|
|
1310
|
+
- collapseable_section_end "nodeinstall"
|
|
1311
|
+
- collapseable_section_start "yarninstall" "Yarn install"
|
|
1189
1312
|
- yarn install --immutable
|
|
1190
|
-
-
|
|
1313
|
+
- collapseable_section_end "yarninstall"
|
|
1191
1314
|
- yarn build
|
|
1192
1315
|
cache:
|
|
1193
1316
|
- key: app1-yarn
|
|
@@ -1198,15 +1321,13 @@ app1 🧪 test:
|
|
|
1198
1321
|
policy: pull-push
|
|
1199
1322
|
paths:
|
|
1200
1323
|
- app1/node_modules
|
|
1201
|
-
- key: app1-next-cache
|
|
1202
|
-
policy: pull-push
|
|
1203
|
-
paths:
|
|
1204
|
-
- app1/.next/cache
|
|
1205
1324
|
artifacts:
|
|
1206
1325
|
paths:
|
|
1207
1326
|
- app1/__build_info.json
|
|
1208
1327
|
- app1/.next
|
|
1209
1328
|
- app1/dist
|
|
1329
|
+
exclude:
|
|
1330
|
+
- app1/.env
|
|
1210
1331
|
expire_in: 1 day
|
|
1211
1332
|
when: always
|
|
1212
1333
|
reports: {}
|
|
@@ -1232,7 +1353,7 @@ app1 🧪 test:
|
|
|
1232
1353
|
KUBERNETES_MEMORY_REQUEST: 1Gi
|
|
1233
1354
|
KUBERNETES_MEMORY_LIMIT: 2Gi
|
|
1234
1355
|
script:
|
|
1235
|
-
-
|
|
1356
|
+
- collapseable_section_start "injectvars" "Injecting variables"
|
|
1236
1357
|
- export APP_DIR="app1"
|
|
1237
1358
|
- export DOCKER_BUILD_CONTEXT="."
|
|
1238
1359
|
- export DOCKER_REGISTRY="asia-east1-docker.pkg.dev"
|
|
@@ -1248,20 +1369,20 @@ app1 🧪 test:
|
|
|
1248
1369
|
COPY --chown=node:node app1/yarn.lock /app/app1/yarn.lock
|
|
1249
1370
|
COPY --chown=node:node .yarnrc.yml /app/.yarnrc.yml
|
|
1250
1371
|
COPY --chown=node:node .yarn /app/.yarn"
|
|
1251
|
-
-
|
|
1372
|
+
- collapseable_section_end "injectvars"
|
|
1252
1373
|
- ensureNodeDockerfile
|
|
1253
|
-
-
|
|
1374
|
+
- collapseable_section_start "docker-login" "Docker Login"
|
|
1254
1375
|
- gcloud auth activate-service-account --key-file=<(echo "$CL_prod_app1_GCLOUD_DEPLOY_credentialsKey")
|
|
1255
1376
|
- gcloud auth configure-docker asia-east1-docker.pkg.dev
|
|
1256
|
-
-
|
|
1257
|
-
-
|
|
1377
|
+
- collapseable_section_end "docker-login"
|
|
1378
|
+
- collapseable_section_start "docker-build" "Docker build"
|
|
1258
1379
|
- 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
|
|
1259
|
-
-
|
|
1260
|
-
-
|
|
1380
|
+
- collapseable_section_end "docker-build"
|
|
1381
|
+
- collapseable_section_start "docker-push" "Docker push and tag"
|
|
1261
1382
|
- docker push $DOCKER_IMAGE:$DOCKER_IMAGE_TAG
|
|
1262
1383
|
- docker tag $DOCKER_IMAGE:$DOCKER_IMAGE_TAG $DOCKER_CACHE_IMAGE
|
|
1263
1384
|
- docker push $DOCKER_CACHE_IMAGE
|
|
1264
|
-
-
|
|
1385
|
+
- collapseable_section_end "docker-push"
|
|
1265
1386
|
cache:
|
|
1266
1387
|
- key: app1-yarn
|
|
1267
1388
|
policy: pull
|
|
@@ -1278,8 +1399,8 @@ app1 🧪 test:
|
|
|
1278
1399
|
image: aquasec/trivy:0.38.3
|
|
1279
1400
|
variables: {}
|
|
1280
1401
|
script:
|
|
1281
|
-
-
|
|
1282
|
-
-
|
|
1402
|
+
- collapseable_section_start "injectvars" "Injecting variables"
|
|
1403
|
+
- collapseable_section_end "injectvars"
|
|
1283
1404
|
- trivy fs --quiet --format cyclonedx --output "__sbom.json" app1
|
|
1284
1405
|
artifacts:
|
|
1285
1406
|
paths:
|
|
@@ -1298,17 +1419,16 @@ app1 🧪 test:
|
|
|
1298
1419
|
KUBERNETES_MEMORY_REQUEST: 200Mi
|
|
1299
1420
|
KUBERNETES_MEMORY_LIMIT: 400Mi
|
|
1300
1421
|
script:
|
|
1301
|
-
-
|
|
1422
|
+
- collapseable_section_start "injectvars" "Injecting variables"
|
|
1302
1423
|
- export ENV_SHORT="prod"
|
|
1303
1424
|
- export APP_DIR="app1"
|
|
1304
1425
|
- export ENV_TYPE="prod"
|
|
1305
1426
|
- export BUILD_INFO_BUILD_ID="$(git describe --tags 2>/dev/null || git rev-parse HEAD)"
|
|
1306
1427
|
- export BUILD_INFO_BUILD_TIME="$CI_JOB_STARTED_AT"
|
|
1307
1428
|
- 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")"
|
|
1308
|
-
- export
|
|
1429
|
+
- export HOSTNAME="$(printf %s "pan-test-app-prod-app1-$CL_prod_app1_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')"
|
|
1309
1430
|
- export ROOT_URL="https://$(printf %s "pan-test-app-prod-app1-$CL_prod_app1_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')"
|
|
1310
|
-
- export
|
|
1311
|
-
- export HOST_CANONICAL="$(printf %s "pan-test-app-prod-app1-$CL_prod_app1_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')"
|
|
1431
|
+
- export HOSTNAME_INTERNAL="$(printf %s "pan-test-app-prod-app1-$CL_prod_app1_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')"
|
|
1312
1432
|
- export ROOT_URL_INTERNAL="https://$(printf %s "pan-test-app-prod-app1-$CL_prod_app1_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')"
|
|
1313
1433
|
- export DEPLOY_CLOUD_RUN_PROJECT_ID="asdf"
|
|
1314
1434
|
- export DEPLOY_CLOUD_RUN_REGION="asia-east1"
|
|
@@ -1326,19 +1446,19 @@ app1 🧪 test:
|
|
|
1326
1446
|
app1 single quote: '
|
|
1327
1447
|
app1 doouble quote: \\"
|
|
1328
1448
|
"
|
|
1329
|
-
- export _ALL_ENV_VAR_KEYS="[\\"ENV_SHORT\\",\\"APP_DIR\\",\\"ENV_TYPE\\",\\"BUILD_INFO_BUILD_ID\\",\\"BUILD_INFO_BUILD_TIME\\",\\"BUILD_INFO_CURRENT_VERSION\\",\\"
|
|
1449
|
+
- 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\\",\\"DEPLOY_CLOUD_RUN_PROJECT_ID\\",\\"DEPLOY_CLOUD_RUN_REGION\\",\\"GCLOUD_DEPLOY_credentialsKey\\",\\"GCLOUD_RUN_canonicalHostSuffix\\",\\"foo\\",\\"multiline\\"]"
|
|
1330
1450
|
- export DOCKER_REGISTRY="asia-east1-docker.pkg.dev"
|
|
1331
1451
|
- export DOCKER_IMAGE="asia-east1-docker.pkg.dev/asdf/catladder-deploy/pan-test-app/prod/app1"
|
|
1332
1452
|
- export DOCKER_CACHE_IMAGE="asia-east1-docker.pkg.dev/asdf/catladder-deploy/pan-test-app/caches/app1"
|
|
1333
1453
|
- export DOCKER_IMAGE_TAG="$CI_COMMIT_SHA"
|
|
1334
1454
|
- export CLOUDSDK_CORE_DISABLE_PROMPTS="1"
|
|
1335
|
-
-
|
|
1336
|
-
-
|
|
1455
|
+
- collapseable_section_end "injectvars"
|
|
1456
|
+
- collapseable_section_start "prepare" "Prepare..."
|
|
1337
1457
|
- gcloud auth activate-service-account --key-file=<(echo "$CL_prod_app1_GCLOUD_DEPLOY_credentialsKey")
|
|
1338
1458
|
- export GCLOUD_PROJECT_NUMBER=$(gcloud projects describe asdf --format="value(projectNumber)")
|
|
1339
1459
|
- 'echo "GCLOUD_PROJECT_NUMBER: $GCLOUD_PROJECT_NUMBER"'
|
|
1340
|
-
-
|
|
1341
|
-
-
|
|
1460
|
+
- collapseable_section_end "prepare"
|
|
1461
|
+
- collapseable_section_start "writeenvvars" "Write env vars to file"
|
|
1342
1462
|
- |
|
|
1343
1463
|
cat > ____envvars.yaml <<EOF
|
|
1344
1464
|
ENV_SHORT: |-
|
|
@@ -1348,53 +1468,51 @@ app1 🧪 test:
|
|
|
1348
1468
|
ENV_TYPE: |-
|
|
1349
1469
|
prod
|
|
1350
1470
|
BUILD_INFO_BUILD_ID: |-
|
|
1351
|
-
|
|
1471
|
+
$(printf %s "$(git describe --tags 2>/dev/null || git rev-parse HEAD)" | sed '1!s/^/ /')
|
|
1352
1472
|
BUILD_INFO_BUILD_TIME: |-
|
|
1353
|
-
|
|
1473
|
+
$(printf %s "$CI_JOB_STARTED_AT" | sed '1!s/^/ /')
|
|
1354
1474
|
BUILD_INFO_CURRENT_VERSION: |-
|
|
1355
|
-
|
|
1356
|
-
|
|
1357
|
-
|
|
1475
|
+
$(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/^/ /')
|
|
1476
|
+
HOSTNAME: |-
|
|
1477
|
+
$(printf %s "$(printf %s "pan-test-app-prod-app1-$CL_prod_app1_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')" | sed '1!s/^/ /')
|
|
1358
1478
|
ROOT_URL: |-
|
|
1359
|
-
|
|
1360
|
-
|
|
1361
|
-
|
|
1362
|
-
HOST_CANONICAL: |-
|
|
1363
|
-
$(printf %s "$(printf %s "pan-test-app-prod-app1-$CL_prod_app1_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')" | sed 's/^/ /')
|
|
1479
|
+
$(printf %s "https://$(printf %s "pan-test-app-prod-app1-$CL_prod_app1_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')" | sed '1!s/^/ /')
|
|
1480
|
+
HOSTNAME_INTERNAL: |-
|
|
1481
|
+
$(printf %s "$(printf %s "pan-test-app-prod-app1-$CL_prod_app1_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')" | sed '1!s/^/ /')
|
|
1364
1482
|
ROOT_URL_INTERNAL: |-
|
|
1365
|
-
|
|
1483
|
+
$(printf %s "https://$(printf %s "pan-test-app-prod-app1-$CL_prod_app1_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')" | sed '1!s/^/ /')
|
|
1366
1484
|
DEPLOY_CLOUD_RUN_PROJECT_ID: |-
|
|
1367
1485
|
asdf
|
|
1368
1486
|
DEPLOY_CLOUD_RUN_REGION: |-
|
|
1369
1487
|
asia-east1
|
|
1370
1488
|
GCLOUD_RUN_canonicalHostSuffix: |-
|
|
1371
|
-
|
|
1489
|
+
$(printf %s "$CL_prod_app1_GCLOUD_RUN_canonicalHostSuffix" | sed '1!s/^/ /')
|
|
1372
1490
|
foo: |-
|
|
1373
1491
|
foo-value
|
|
1374
1492
|
multiline: |-
|
|
1375
|
-
|
|
1376
|
-
|
|
1377
|
-
|
|
1378
|
-
|
|
1379
|
-
|
|
1380
|
-
|
|
1381
|
-
|
|
1382
|
-
|
|
1383
|
-
|
|
1384
|
-
|
|
1493
|
+
app1 line1
|
|
1494
|
+
app1 line2
|
|
1495
|
+
app1 line3
|
|
1496
|
+
|
|
1497
|
+
the url of self: "$(printf %s "https://$(printf %s "pan-test-app-prod-app1-$CL_prod_app1_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')" | sed '1!s/^/ /')"
|
|
1498
|
+
|
|
1499
|
+
|
|
1500
|
+
app1 single quote: '
|
|
1501
|
+
app1 doouble quote: "
|
|
1502
|
+
|
|
1385
1503
|
_ALL_ENV_VAR_KEYS: |-
|
|
1386
|
-
["ENV_SHORT","APP_DIR","ENV_TYPE","BUILD_INFO_BUILD_ID","BUILD_INFO_BUILD_TIME","BUILD_INFO_CURRENT_VERSION","
|
|
1504
|
+
["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","DEPLOY_CLOUD_RUN_PROJECT_ID","DEPLOY_CLOUD_RUN_REGION","GCLOUD_DEPLOY_credentialsKey","GCLOUD_RUN_canonicalHostSuffix","foo","multiline"]
|
|
1387
1505
|
|
|
1388
1506
|
EOF
|
|
1389
|
-
-
|
|
1390
|
-
-
|
|
1507
|
+
- collapseable_section_end "writeenvvars"
|
|
1508
|
+
- collapseable_section_start "deploy" "Deploy to cloud run"
|
|
1391
1509
|
- gcloud run deploy pan-test-app-prod-app1 --command="yarn,start" --image=asia-east1-docker.pkg.dev/asdf/catladder-deploy/pan-test-app/prod/app1:$DOCKER_IMAGE_TAG --project=asdf --region=asia-east1 --labels=customer-name=pan,component-name=app1,app-name=test-app,env-type=prod,env-name=prod,build-type=node,cloud-run-service-name=pan-test-app-prod-app1 --env-vars-file=____envvars.yaml --min-instances=0 --max-instances=100 --cpu-throttling --allow-unauthenticated --ingress=all --cpu-boost
|
|
1392
|
-
-
|
|
1393
|
-
-
|
|
1510
|
+
- collapseable_section_end "deploy"
|
|
1511
|
+
- collapseable_section_start "cleanup" "Cleanup"
|
|
1394
1512
|
- gcloud run revisions list --project=asdf --region=asia-east1 --service=pan-test-app-prod-app1 --limit=unlimited --sort-by=metadata.creationTimestamp --format="value(name)" --filter='(status.conditions.status=False OR status.conditions.status=Unknown)' | tail -n +6 | while read -r revisionname; do gcloud run revisions delete --project=asdf --region=asia-east1 --quiet $revisionname ; done
|
|
1395
1513
|
- gcloud artifacts docker images list asia-east1-docker.pkg.dev/asdf/catladder-deploy/pan-test-app/prod/app1 --sort-by=~CREATE_TIME --format="value(version)" | tail -n +7 | while read -r version; do gcloud artifacts docker images delete asia-east1-docker.pkg.dev/asdf/catladder-deploy/pan-test-app/prod/app1@$version --quiet --delete-tags; done
|
|
1396
1514
|
- gcloud artifacts docker images list asia-east1-docker.pkg.dev/asdf/catladder-deploy/pan-test-app/caches/app1 --sort-by=~CREATE_TIME --format="value(version)" | tail -n +2 | while read -r version; do gcloud artifacts docker images delete asia-east1-docker.pkg.dev/asdf/catladder-deploy/pan-test-app/caches/app1@$version --quiet --delete-tags; done
|
|
1397
|
-
-
|
|
1515
|
+
- collapseable_section_end "cleanup"
|
|
1398
1516
|
- echo 'Uploading SBOM to Dependency Track'
|
|
1399
1517
|
- /dtrackuploader https://dep.panter.swiss/ "$DT_KEY_PROD" upload "pan-test-app/app1" "https://$(printf %s "pan-test-app-prod-app1-$CL_prod_app1_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')" "__sbom.json" vex.json || true
|
|
1400
1518
|
- echo "CL_GITLAB_ENVIRONMENT_URL=https://$(printf %s "pan-test-app-prod-app1-$CL_prod_app1_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')" >> gitlab_environment.env
|
|
@@ -1427,9 +1545,9 @@ app1 🧪 test:
|
|
|
1427
1545
|
KUBERNETES_MEMORY_LIMIT: 400Mi
|
|
1428
1546
|
GIT_STRATEGY: none
|
|
1429
1547
|
script:
|
|
1430
|
-
-
|
|
1548
|
+
- collapseable_section_start "injectvars" "Injecting variables"
|
|
1431
1549
|
- export CLOUDSDK_CORE_DISABLE_PROMPTS="1"
|
|
1432
|
-
-
|
|
1550
|
+
- collapseable_section_end "injectvars"
|
|
1433
1551
|
- set +e
|
|
1434
1552
|
- gcloud auth activate-service-account --key-file=<(echo "$CL_prod_app1_GCLOUD_DEPLOY_credentialsKey")
|
|
1435
1553
|
- gcloud run services delete pan-test-app-prod-app1 --project=asdf --region=asia-east1
|
|
@@ -1463,9 +1581,9 @@ app2 🛡 audit:
|
|
|
1463
1581
|
KUBERNETES_MEMORY_REQUEST: 1Gi
|
|
1464
1582
|
KUBERNETES_MEMORY_LIMIT: 4Gi
|
|
1465
1583
|
script:
|
|
1466
|
-
-
|
|
1584
|
+
- collapseable_section_start "injectvars" "Injecting variables"
|
|
1467
1585
|
- export APP_PATH="app2"
|
|
1468
|
-
-
|
|
1586
|
+
- collapseable_section_end "injectvars"
|
|
1469
1587
|
- cd app2
|
|
1470
1588
|
- yarn npm audit --environment production
|
|
1471
1589
|
rules:
|
|
@@ -1485,21 +1603,21 @@ app2 👮 lint:
|
|
|
1485
1603
|
KUBERNETES_MEMORY_REQUEST: 1Gi
|
|
1486
1604
|
KUBERNETES_MEMORY_LIMIT: 4Gi
|
|
1487
1605
|
script:
|
|
1488
|
-
-
|
|
1606
|
+
- collapseable_section_start "injectvars" "Injecting variables"
|
|
1489
1607
|
- export APP_PATH="app2"
|
|
1490
|
-
-
|
|
1491
|
-
-
|
|
1608
|
+
- collapseable_section_end "injectvars"
|
|
1609
|
+
- collapseable_section_start "nodeinstall" "Ensure node version"
|
|
1492
1610
|
- if [ -f ~/.nvm/nvm.sh ]; then source ~/.nvm/nvm.sh; fi
|
|
1493
1611
|
- if command -v nvm &> /dev/null && [ -f ./.nvmrc ]; then nvm install; fi
|
|
1494
|
-
-
|
|
1612
|
+
- collapseable_section_end "nodeinstall"
|
|
1495
1613
|
- cd app2
|
|
1496
|
-
-
|
|
1614
|
+
- collapseable_section_start "nodeinstall" "Ensure node version"
|
|
1497
1615
|
- if [ -f ~/.nvm/nvm.sh ]; then source ~/.nvm/nvm.sh; fi
|
|
1498
1616
|
- if command -v nvm &> /dev/null && [ -f ./.nvmrc ]; then nvm install; fi
|
|
1499
|
-
-
|
|
1500
|
-
-
|
|
1617
|
+
- collapseable_section_end "nodeinstall"
|
|
1618
|
+
- collapseable_section_start "yarninstall" "Yarn install"
|
|
1501
1619
|
- yarn install --immutable
|
|
1502
|
-
-
|
|
1620
|
+
- collapseable_section_end "yarninstall"
|
|
1503
1621
|
- yarn lint
|
|
1504
1622
|
cache:
|
|
1505
1623
|
- key: app2-yarn
|
|
@@ -1526,21 +1644,21 @@ app2 🧪 test:
|
|
|
1526
1644
|
KUBERNETES_MEMORY_REQUEST: 1Gi
|
|
1527
1645
|
KUBERNETES_MEMORY_LIMIT: 4Gi
|
|
1528
1646
|
script:
|
|
1529
|
-
-
|
|
1647
|
+
- collapseable_section_start "injectvars" "Injecting variables"
|
|
1530
1648
|
- export APP_PATH="app2"
|
|
1531
|
-
-
|
|
1532
|
-
-
|
|
1649
|
+
- collapseable_section_end "injectvars"
|
|
1650
|
+
- collapseable_section_start "nodeinstall" "Ensure node version"
|
|
1533
1651
|
- if [ -f ~/.nvm/nvm.sh ]; then source ~/.nvm/nvm.sh; fi
|
|
1534
1652
|
- if command -v nvm &> /dev/null && [ -f ./.nvmrc ]; then nvm install; fi
|
|
1535
|
-
-
|
|
1653
|
+
- collapseable_section_end "nodeinstall"
|
|
1536
1654
|
- cd app2
|
|
1537
|
-
-
|
|
1655
|
+
- collapseable_section_start "nodeinstall" "Ensure node version"
|
|
1538
1656
|
- if [ -f ~/.nvm/nvm.sh ]; then source ~/.nvm/nvm.sh; fi
|
|
1539
1657
|
- if command -v nvm &> /dev/null && [ -f ./.nvmrc ]; then nvm install; fi
|
|
1540
|
-
-
|
|
1541
|
-
-
|
|
1658
|
+
- collapseable_section_end "nodeinstall"
|
|
1659
|
+
- collapseable_section_start "yarninstall" "Yarn install"
|
|
1542
1660
|
- yarn install --immutable
|
|
1543
|
-
-
|
|
1661
|
+
- collapseable_section_end "yarninstall"
|
|
1544
1662
|
- yarn test
|
|
1545
1663
|
cache:
|
|
1546
1664
|
- key: app2-yarn
|
|
@@ -1567,17 +1685,16 @@ app2 🧪 test:
|
|
|
1567
1685
|
KUBERNETES_MEMORY_REQUEST: 1Gi
|
|
1568
1686
|
KUBERNETES_MEMORY_LIMIT: 4Gi
|
|
1569
1687
|
script:
|
|
1570
|
-
-
|
|
1688
|
+
- collapseable_section_start "injectvars" "Injecting variables"
|
|
1571
1689
|
- export ENV_SHORT="dev"
|
|
1572
1690
|
- export APP_DIR="app2"
|
|
1573
1691
|
- export ENV_TYPE="dev"
|
|
1574
1692
|
- export BUILD_INFO_BUILD_ID="$(git describe --tags 2>/dev/null || git rev-parse HEAD)"
|
|
1575
1693
|
- export BUILD_INFO_BUILD_TIME="$CI_JOB_STARTED_AT"
|
|
1576
1694
|
- 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")"
|
|
1577
|
-
- export
|
|
1695
|
+
- export HOSTNAME="$(printf %s "pan-test-app-dev-app2-$CL_dev_app2_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')"
|
|
1578
1696
|
- export ROOT_URL="https://$(printf %s "pan-test-app-dev-app2-$CL_dev_app2_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')"
|
|
1579
|
-
- export
|
|
1580
|
-
- export HOST_CANONICAL="$(printf %s "pan-test-app-dev-app2-$CL_dev_app2_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')"
|
|
1697
|
+
- export HOSTNAME_INTERNAL="$(printf %s "pan-test-app-dev-app2-$CL_dev_app2_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')"
|
|
1581
1698
|
- export ROOT_URL_INTERNAL="https://$(printf %s "pan-test-app-dev-app2-$CL_dev_app2_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')"
|
|
1582
1699
|
- export DEPLOY_CLOUD_RUN_PROJECT_ID="asdf"
|
|
1583
1700
|
- export DEPLOY_CLOUD_RUN_REGION="asia-east1"
|
|
@@ -1597,24 +1714,57 @@ app2 🧪 test:
|
|
|
1597
1714
|
|
|
1598
1715
|
value from app1:
|
|
1599
1716
|
-------
|
|
1600
|
-
\${multiline_from_app1}
|
|
1717
|
+
Unresolvable reference: \${app2:multiline_from_app1}
|
|
1601
1718
|
--------
|
|
1602
1719
|
"
|
|
1603
|
-
- export _ALL_ENV_VAR_KEYS="[\\"ENV_SHORT\\",\\"APP_DIR\\",\\"ENV_TYPE\\",\\"BUILD_INFO_BUILD_ID\\",\\"BUILD_INFO_BUILD_TIME\\",\\"BUILD_INFO_CURRENT_VERSION\\",\\"
|
|
1604
|
-
-
|
|
1720
|
+
- 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\\",\\"DEPLOY_CLOUD_RUN_PROJECT_ID\\",\\"DEPLOY_CLOUD_RUN_REGION\\",\\"GCLOUD_DEPLOY_credentialsKey\\",\\"GCLOUD_RUN_canonicalHostSuffix\\",\\"foo\\",\\"multiline\\"]"
|
|
1721
|
+
- collapseable_section_end "injectvars"
|
|
1722
|
+
- collapseable_section_start "write-dotenv-app2" "write dot env for app2"
|
|
1723
|
+
- |-
|
|
1724
|
+
cat <<EOF > app2/.env
|
|
1725
|
+
ENV_SHORT=dev
|
|
1726
|
+
APP_DIR=app2
|
|
1727
|
+
ENV_TYPE=dev
|
|
1728
|
+
HOSTNAME=$(printf %s "$(printf %s "pan-test-app-dev-app2-$CL_dev_app2_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')" | escapeForDotEnv)
|
|
1729
|
+
ROOT_URL=$(printf %s "https://$(printf %s "pan-test-app-dev-app2-$CL_dev_app2_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')" | escapeForDotEnv)
|
|
1730
|
+
HOSTNAME_INTERNAL=$(printf %s "$(printf %s "pan-test-app-dev-app2-$CL_dev_app2_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')" | escapeForDotEnv)
|
|
1731
|
+
ROOT_URL_INTERNAL=$(printf %s "https://$(printf %s "pan-test-app-dev-app2-$CL_dev_app2_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')" | escapeForDotEnv)
|
|
1732
|
+
DEPLOY_CLOUD_RUN_PROJECT_ID=asdf
|
|
1733
|
+
DEPLOY_CLOUD_RUN_REGION=asia-east1
|
|
1734
|
+
GCLOUD_DEPLOY_credentialsKey=$(printf %s "$CL_dev_app2_GCLOUD_DEPLOY_credentialsKey" | escapeForDotEnv)
|
|
1735
|
+
GCLOUD_RUN_canonicalHostSuffix=$(printf %s "$CL_dev_app2_GCLOUD_RUN_canonicalHostSuffix" | escapeForDotEnv)
|
|
1736
|
+
foo=foo-value
|
|
1737
|
+
multiline=$(printf %s "app2 yeah
|
|
1738
|
+
app2 yeah2
|
|
1739
|
+
app2 yeah3
|
|
1740
|
+
|
|
1741
|
+
app2 single quote: '
|
|
1742
|
+
app2 doouble quote: \\"
|
|
1743
|
+
|
|
1744
|
+
the url of self: \\"https://$(printf %s "pan-test-app-dev-app2-$CL_dev_app2_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')\\"
|
|
1745
|
+
the url of app1: \\"https://$(printf %s "pan-test-app-dev-app1-$CL_dev_app1_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')\\"
|
|
1746
|
+
|
|
1747
|
+
value from app1:
|
|
1748
|
+
-------
|
|
1749
|
+
Unresolvable reference: \${app2:multiline_from_app1}
|
|
1750
|
+
--------
|
|
1751
|
+
" | escapeForDotEnv)
|
|
1752
|
+
_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","DEPLOY_CLOUD_RUN_PROJECT_ID","DEPLOY_CLOUD_RUN_REGION","GCLOUD_DEPLOY_credentialsKey","GCLOUD_RUN_canonicalHostSuffix","foo","multiline"]
|
|
1753
|
+
EOF
|
|
1754
|
+
- collapseable_section_end "write-dotenv-app2"
|
|
1605
1755
|
- echo '{"id":"$(git describe --tags 2>/dev/null || git rev-parse HEAD)","time":"$CI_JOB_STARTED_AT"}' > app2/__build_info.json
|
|
1606
|
-
-
|
|
1756
|
+
- collapseable_section_start "nodeinstall" "Ensure node version"
|
|
1607
1757
|
- if [ -f ~/.nvm/nvm.sh ]; then source ~/.nvm/nvm.sh; fi
|
|
1608
1758
|
- if command -v nvm &> /dev/null && [ -f ./.nvmrc ]; then nvm install; fi
|
|
1609
|
-
-
|
|
1759
|
+
- collapseable_section_end "nodeinstall"
|
|
1610
1760
|
- cd app2
|
|
1611
|
-
-
|
|
1761
|
+
- collapseable_section_start "nodeinstall" "Ensure node version"
|
|
1612
1762
|
- if [ -f ~/.nvm/nvm.sh ]; then source ~/.nvm/nvm.sh; fi
|
|
1613
1763
|
- if command -v nvm &> /dev/null && [ -f ./.nvmrc ]; then nvm install; fi
|
|
1614
|
-
-
|
|
1615
|
-
-
|
|
1764
|
+
- collapseable_section_end "nodeinstall"
|
|
1765
|
+
- collapseable_section_start "yarninstall" "Yarn install"
|
|
1616
1766
|
- yarn install --immutable
|
|
1617
|
-
-
|
|
1767
|
+
- collapseable_section_end "yarninstall"
|
|
1618
1768
|
- yarn build
|
|
1619
1769
|
cache:
|
|
1620
1770
|
- key: app2-yarn
|
|
@@ -1625,15 +1775,13 @@ app2 🧪 test:
|
|
|
1625
1775
|
policy: pull-push
|
|
1626
1776
|
paths:
|
|
1627
1777
|
- app2/node_modules
|
|
1628
|
-
- key: app2-next-cache
|
|
1629
|
-
policy: pull-push
|
|
1630
|
-
paths:
|
|
1631
|
-
- app2/.next/cache
|
|
1632
1778
|
artifacts:
|
|
1633
1779
|
paths:
|
|
1634
1780
|
- app2/__build_info.json
|
|
1635
1781
|
- app2/.next
|
|
1636
1782
|
- app2/dist
|
|
1783
|
+
exclude:
|
|
1784
|
+
- app2/.env
|
|
1637
1785
|
expire_in: 1 day
|
|
1638
1786
|
when: always
|
|
1639
1787
|
reports: {}
|
|
@@ -1661,7 +1809,7 @@ app2 🧪 test:
|
|
|
1661
1809
|
KUBERNETES_MEMORY_REQUEST: 1Gi
|
|
1662
1810
|
KUBERNETES_MEMORY_LIMIT: 2Gi
|
|
1663
1811
|
script:
|
|
1664
|
-
-
|
|
1812
|
+
- collapseable_section_start "injectvars" "Injecting variables"
|
|
1665
1813
|
- export APP_DIR="app2"
|
|
1666
1814
|
- export DOCKER_BUILD_CONTEXT="."
|
|
1667
1815
|
- export DOCKER_REGISTRY="asia-east1-docker.pkg.dev"
|
|
@@ -1677,20 +1825,20 @@ app2 🧪 test:
|
|
|
1677
1825
|
COPY --chown=node:node app2/yarn.lock /app/app2/yarn.lock
|
|
1678
1826
|
COPY --chown=node:node .yarnrc.yml /app/.yarnrc.yml
|
|
1679
1827
|
COPY --chown=node:node .yarn /app/.yarn"
|
|
1680
|
-
-
|
|
1828
|
+
- collapseable_section_end "injectvars"
|
|
1681
1829
|
- ensureNodeDockerfile
|
|
1682
|
-
-
|
|
1830
|
+
- collapseable_section_start "docker-login" "Docker Login"
|
|
1683
1831
|
- gcloud auth activate-service-account --key-file=<(echo "$CL_dev_app2_GCLOUD_DEPLOY_credentialsKey")
|
|
1684
1832
|
- gcloud auth configure-docker asia-east1-docker.pkg.dev
|
|
1685
|
-
-
|
|
1686
|
-
-
|
|
1833
|
+
- collapseable_section_end "docker-login"
|
|
1834
|
+
- collapseable_section_start "docker-build" "Docker build"
|
|
1687
1835
|
- 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
|
|
1688
|
-
-
|
|
1689
|
-
-
|
|
1836
|
+
- collapseable_section_end "docker-build"
|
|
1837
|
+
- collapseable_section_start "docker-push" "Docker push and tag"
|
|
1690
1838
|
- docker push $DOCKER_IMAGE:$DOCKER_IMAGE_TAG
|
|
1691
1839
|
- docker tag $DOCKER_IMAGE:$DOCKER_IMAGE_TAG $DOCKER_CACHE_IMAGE
|
|
1692
1840
|
- docker push $DOCKER_CACHE_IMAGE
|
|
1693
|
-
-
|
|
1841
|
+
- collapseable_section_end "docker-push"
|
|
1694
1842
|
cache:
|
|
1695
1843
|
- key: app2-yarn
|
|
1696
1844
|
policy: pull
|
|
@@ -1709,8 +1857,8 @@ app2 🧪 test:
|
|
|
1709
1857
|
image: aquasec/trivy:0.38.3
|
|
1710
1858
|
variables: {}
|
|
1711
1859
|
script:
|
|
1712
|
-
-
|
|
1713
|
-
-
|
|
1860
|
+
- collapseable_section_start "injectvars" "Injecting variables"
|
|
1861
|
+
- collapseable_section_end "injectvars"
|
|
1714
1862
|
- trivy fs --quiet --format cyclonedx --output "__sbom.json" app2
|
|
1715
1863
|
artifacts:
|
|
1716
1864
|
paths:
|
|
@@ -1731,17 +1879,16 @@ app2 🧪 test:
|
|
|
1731
1879
|
KUBERNETES_MEMORY_REQUEST: 200Mi
|
|
1732
1880
|
KUBERNETES_MEMORY_LIMIT: 400Mi
|
|
1733
1881
|
script:
|
|
1734
|
-
-
|
|
1882
|
+
- collapseable_section_start "injectvars" "Injecting variables"
|
|
1735
1883
|
- export ENV_SHORT="dev"
|
|
1736
1884
|
- export APP_DIR="app2"
|
|
1737
1885
|
- export ENV_TYPE="dev"
|
|
1738
1886
|
- export BUILD_INFO_BUILD_ID="$(git describe --tags 2>/dev/null || git rev-parse HEAD)"
|
|
1739
1887
|
- export BUILD_INFO_BUILD_TIME="$CI_JOB_STARTED_AT"
|
|
1740
1888
|
- 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")"
|
|
1741
|
-
- export
|
|
1889
|
+
- export HOSTNAME="$(printf %s "pan-test-app-dev-app2-$CL_dev_app2_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')"
|
|
1742
1890
|
- export ROOT_URL="https://$(printf %s "pan-test-app-dev-app2-$CL_dev_app2_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')"
|
|
1743
|
-
- export
|
|
1744
|
-
- export HOST_CANONICAL="$(printf %s "pan-test-app-dev-app2-$CL_dev_app2_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')"
|
|
1891
|
+
- export HOSTNAME_INTERNAL="$(printf %s "pan-test-app-dev-app2-$CL_dev_app2_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')"
|
|
1745
1892
|
- export ROOT_URL_INTERNAL="https://$(printf %s "pan-test-app-dev-app2-$CL_dev_app2_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')"
|
|
1746
1893
|
- export DEPLOY_CLOUD_RUN_PROJECT_ID="asdf"
|
|
1747
1894
|
- export DEPLOY_CLOUD_RUN_REGION="asia-east1"
|
|
@@ -1761,22 +1908,22 @@ app2 🧪 test:
|
|
|
1761
1908
|
|
|
1762
1909
|
value from app1:
|
|
1763
1910
|
-------
|
|
1764
|
-
\${multiline_from_app1}
|
|
1911
|
+
Unresolvable reference: \${app2:multiline_from_app1}
|
|
1765
1912
|
--------
|
|
1766
1913
|
"
|
|
1767
|
-
- export _ALL_ENV_VAR_KEYS="[\\"ENV_SHORT\\",\\"APP_DIR\\",\\"ENV_TYPE\\",\\"BUILD_INFO_BUILD_ID\\",\\"BUILD_INFO_BUILD_TIME\\",\\"BUILD_INFO_CURRENT_VERSION\\",\\"
|
|
1914
|
+
- 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\\",\\"DEPLOY_CLOUD_RUN_PROJECT_ID\\",\\"DEPLOY_CLOUD_RUN_REGION\\",\\"GCLOUD_DEPLOY_credentialsKey\\",\\"GCLOUD_RUN_canonicalHostSuffix\\",\\"foo\\",\\"multiline\\"]"
|
|
1768
1915
|
- export DOCKER_REGISTRY="asia-east1-docker.pkg.dev"
|
|
1769
1916
|
- export DOCKER_IMAGE="asia-east1-docker.pkg.dev/asdf/catladder-deploy/pan-test-app/dev/app2"
|
|
1770
1917
|
- export DOCKER_CACHE_IMAGE="asia-east1-docker.pkg.dev/asdf/catladder-deploy/pan-test-app/caches/app2"
|
|
1771
1918
|
- export DOCKER_IMAGE_TAG="$CI_COMMIT_SHA"
|
|
1772
1919
|
- export CLOUDSDK_CORE_DISABLE_PROMPTS="1"
|
|
1773
|
-
-
|
|
1774
|
-
-
|
|
1920
|
+
- collapseable_section_end "injectvars"
|
|
1921
|
+
- collapseable_section_start "prepare" "Prepare..."
|
|
1775
1922
|
- gcloud auth activate-service-account --key-file=<(echo "$CL_dev_app2_GCLOUD_DEPLOY_credentialsKey")
|
|
1776
1923
|
- export GCLOUD_PROJECT_NUMBER=$(gcloud projects describe asdf --format="value(projectNumber)")
|
|
1777
1924
|
- 'echo "GCLOUD_PROJECT_NUMBER: $GCLOUD_PROJECT_NUMBER"'
|
|
1778
|
-
-
|
|
1779
|
-
-
|
|
1925
|
+
- collapseable_section_end "prepare"
|
|
1926
|
+
- collapseable_section_start "writeenvvars" "Write env vars to file"
|
|
1780
1927
|
- |
|
|
1781
1928
|
cat > ____envvars.yaml <<EOF
|
|
1782
1929
|
ENV_SHORT: |-
|
|
@@ -1786,58 +1933,56 @@ app2 🧪 test:
|
|
|
1786
1933
|
ENV_TYPE: |-
|
|
1787
1934
|
dev
|
|
1788
1935
|
BUILD_INFO_BUILD_ID: |-
|
|
1789
|
-
|
|
1936
|
+
$(printf %s "$(git describe --tags 2>/dev/null || git rev-parse HEAD)" | sed '1!s/^/ /')
|
|
1790
1937
|
BUILD_INFO_BUILD_TIME: |-
|
|
1791
|
-
|
|
1938
|
+
$(printf %s "$CI_JOB_STARTED_AT" | sed '1!s/^/ /')
|
|
1792
1939
|
BUILD_INFO_CURRENT_VERSION: |-
|
|
1793
|
-
|
|
1794
|
-
|
|
1795
|
-
|
|
1940
|
+
$(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/^/ /')
|
|
1941
|
+
HOSTNAME: |-
|
|
1942
|
+
$(printf %s "$(printf %s "pan-test-app-dev-app2-$CL_dev_app2_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')" | sed '1!s/^/ /')
|
|
1796
1943
|
ROOT_URL: |-
|
|
1797
|
-
|
|
1798
|
-
|
|
1799
|
-
|
|
1800
|
-
HOST_CANONICAL: |-
|
|
1801
|
-
$(printf %s "$(printf %s "pan-test-app-dev-app2-$CL_dev_app2_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')" | sed 's/^/ /')
|
|
1944
|
+
$(printf %s "https://$(printf %s "pan-test-app-dev-app2-$CL_dev_app2_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')" | sed '1!s/^/ /')
|
|
1945
|
+
HOSTNAME_INTERNAL: |-
|
|
1946
|
+
$(printf %s "$(printf %s "pan-test-app-dev-app2-$CL_dev_app2_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')" | sed '1!s/^/ /')
|
|
1802
1947
|
ROOT_URL_INTERNAL: |-
|
|
1803
|
-
|
|
1948
|
+
$(printf %s "https://$(printf %s "pan-test-app-dev-app2-$CL_dev_app2_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')" | sed '1!s/^/ /')
|
|
1804
1949
|
DEPLOY_CLOUD_RUN_PROJECT_ID: |-
|
|
1805
1950
|
asdf
|
|
1806
1951
|
DEPLOY_CLOUD_RUN_REGION: |-
|
|
1807
1952
|
asia-east1
|
|
1808
1953
|
GCLOUD_RUN_canonicalHostSuffix: |-
|
|
1809
|
-
|
|
1954
|
+
$(printf %s "$CL_dev_app2_GCLOUD_RUN_canonicalHostSuffix" | sed '1!s/^/ /')
|
|
1810
1955
|
foo: |-
|
|
1811
1956
|
foo-value
|
|
1812
1957
|
multiline: |-
|
|
1813
|
-
|
|
1814
|
-
|
|
1815
|
-
|
|
1816
|
-
|
|
1817
|
-
|
|
1818
|
-
|
|
1819
|
-
|
|
1820
|
-
|
|
1821
|
-
|
|
1822
|
-
|
|
1823
|
-
|
|
1824
|
-
|
|
1825
|
-
|
|
1826
|
-
|
|
1827
|
-
|
|
1958
|
+
app2 yeah
|
|
1959
|
+
app2 yeah2
|
|
1960
|
+
app2 yeah3
|
|
1961
|
+
|
|
1962
|
+
app2 single quote: '
|
|
1963
|
+
app2 doouble quote: "
|
|
1964
|
+
|
|
1965
|
+
the url of self: "$(printf %s "https://$(printf %s "pan-test-app-dev-app2-$CL_dev_app2_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')" | sed '1!s/^/ /')"
|
|
1966
|
+
the url of app1: "$(printf %s "https://$(printf %s "pan-test-app-dev-app1-$CL_dev_app1_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')" | sed '1!s/^/ /')"
|
|
1967
|
+
|
|
1968
|
+
value from app1:
|
|
1969
|
+
-------
|
|
1970
|
+
Unresolvable reference: \${app2:multiline_from_app1}
|
|
1971
|
+
--------
|
|
1972
|
+
|
|
1828
1973
|
_ALL_ENV_VAR_KEYS: |-
|
|
1829
|
-
["ENV_SHORT","APP_DIR","ENV_TYPE","BUILD_INFO_BUILD_ID","BUILD_INFO_BUILD_TIME","BUILD_INFO_CURRENT_VERSION","
|
|
1974
|
+
["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","DEPLOY_CLOUD_RUN_PROJECT_ID","DEPLOY_CLOUD_RUN_REGION","GCLOUD_DEPLOY_credentialsKey","GCLOUD_RUN_canonicalHostSuffix","foo","multiline"]
|
|
1830
1975
|
|
|
1831
1976
|
EOF
|
|
1832
|
-
-
|
|
1833
|
-
-
|
|
1977
|
+
- collapseable_section_end "writeenvvars"
|
|
1978
|
+
- collapseable_section_start "deploy" "Deploy to cloud run"
|
|
1834
1979
|
- gcloud run deploy pan-test-app-dev-app2 --command="yarn,start" --image=asia-east1-docker.pkg.dev/asdf/catladder-deploy/pan-test-app/dev/app2:$DOCKER_IMAGE_TAG --project=asdf --region=asia-east1 --labels=customer-name=pan,component-name=app2,app-name=test-app,env-type=dev,env-name=dev,build-type=node,cloud-run-service-name=pan-test-app-dev-app2 --env-vars-file=____envvars.yaml --min-instances=0 --max-instances=100 --cpu-throttling --allow-unauthenticated --ingress=all --cpu-boost
|
|
1835
|
-
-
|
|
1836
|
-
-
|
|
1980
|
+
- collapseable_section_end "deploy"
|
|
1981
|
+
- collapseable_section_start "cleanup" "Cleanup"
|
|
1837
1982
|
- gcloud run revisions list --project=asdf --region=asia-east1 --service=pan-test-app-dev-app2 --limit=unlimited --sort-by=metadata.creationTimestamp --format="value(name)" --filter='(status.conditions.status=False OR status.conditions.status=Unknown)' | while read -r revisionname; do gcloud run revisions delete --project=asdf --region=asia-east1 --quiet $revisionname ; done
|
|
1838
1983
|
- gcloud artifacts docker images list asia-east1-docker.pkg.dev/asdf/catladder-deploy/pan-test-app/dev/app2 --sort-by=~CREATE_TIME --format="value(version)" | tail -n +2 | while read -r version; do gcloud artifacts docker images delete asia-east1-docker.pkg.dev/asdf/catladder-deploy/pan-test-app/dev/app2@$version --quiet --delete-tags; done
|
|
1839
1984
|
- gcloud artifacts docker images list asia-east1-docker.pkg.dev/asdf/catladder-deploy/pan-test-app/caches/app2 --sort-by=~CREATE_TIME --format="value(version)" | tail -n +2 | while read -r version; do gcloud artifacts docker images delete asia-east1-docker.pkg.dev/asdf/catladder-deploy/pan-test-app/caches/app2@$version --quiet --delete-tags; done
|
|
1840
|
-
-
|
|
1985
|
+
- collapseable_section_end "cleanup"
|
|
1841
1986
|
- echo 'Uploading SBOM to Dependency Track'
|
|
1842
1987
|
- /dtrackuploader https://dep.panter.swiss/ "$DT_KEY_PROD" upload "pan-test-app/app2" "https://$(printf %s "pan-test-app-dev-app2-$CL_dev_app2_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')" "__sbom.json" vex.json || true
|
|
1843
1988
|
- echo "CL_GITLAB_ENVIRONMENT_URL=https://$(printf %s "pan-test-app-dev-app2-$CL_dev_app2_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')" >> gitlab_environment.env
|
|
@@ -1879,9 +2024,9 @@ app2 🧪 test:
|
|
|
1879
2024
|
KUBERNETES_MEMORY_LIMIT: 400Mi
|
|
1880
2025
|
GIT_STRATEGY: none
|
|
1881
2026
|
script:
|
|
1882
|
-
-
|
|
2027
|
+
- collapseable_section_start "injectvars" "Injecting variables"
|
|
1883
2028
|
- export CLOUDSDK_CORE_DISABLE_PROMPTS="1"
|
|
1884
|
-
-
|
|
2029
|
+
- collapseable_section_end "injectvars"
|
|
1885
2030
|
- set +e
|
|
1886
2031
|
- gcloud auth activate-service-account --key-file=<(echo "$CL_dev_app2_GCLOUD_DEPLOY_credentialsKey")
|
|
1887
2032
|
- gcloud run services delete pan-test-app-dev-app2 --project=asdf --region=asia-east1
|
|
@@ -1917,17 +2062,16 @@ app2 🧪 test:
|
|
|
1917
2062
|
KUBERNETES_MEMORY_REQUEST: 1Gi
|
|
1918
2063
|
KUBERNETES_MEMORY_LIMIT: 4Gi
|
|
1919
2064
|
script:
|
|
1920
|
-
-
|
|
2065
|
+
- collapseable_section_start "injectvars" "Injecting variables"
|
|
1921
2066
|
- export ENV_SHORT="review"
|
|
1922
2067
|
- export APP_DIR="app2"
|
|
1923
2068
|
- export ENV_TYPE="review"
|
|
1924
2069
|
- export BUILD_INFO_BUILD_ID="$(git describe --tags 2>/dev/null || git rev-parse HEAD)"
|
|
1925
2070
|
- export BUILD_INFO_BUILD_TIME="$CI_JOB_STARTED_AT"
|
|
1926
2071
|
- 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")"
|
|
1927
|
-
- export
|
|
2072
|
+
- export HOSTNAME="$(printf %s "pan-test-app-review-$([ -n "$CI_MERGE_REQUEST_IID" ] && echo "mr$CI_MERGE_REQUEST_IID" || { [ -n "$CI_COMMIT_REF_SLUG" ] && echo "$CI_COMMIT_REF_SLUG" || echo "unknown"; })-app2-$CL_review_app2_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')"
|
|
1928
2073
|
- export ROOT_URL="https://$(printf %s "pan-test-app-review-$([ -n "$CI_MERGE_REQUEST_IID" ] && echo "mr$CI_MERGE_REQUEST_IID" || { [ -n "$CI_COMMIT_REF_SLUG" ] && echo "$CI_COMMIT_REF_SLUG" || echo "unknown"; })-app2-$CL_review_app2_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')"
|
|
1929
|
-
- export
|
|
1930
|
-
- export HOST_CANONICAL="$(printf %s "pan-test-app-review-$([ -n "$CI_MERGE_REQUEST_IID" ] && echo "mr$CI_MERGE_REQUEST_IID" || { [ -n "$CI_COMMIT_REF_SLUG" ] && echo "$CI_COMMIT_REF_SLUG" || echo "unknown"; })-app2-$CL_review_app2_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')"
|
|
2074
|
+
- export HOSTNAME_INTERNAL="$(printf %s "pan-test-app-review-$([ -n "$CI_MERGE_REQUEST_IID" ] && echo "mr$CI_MERGE_REQUEST_IID" || { [ -n "$CI_COMMIT_REF_SLUG" ] && echo "$CI_COMMIT_REF_SLUG" || echo "unknown"; })-app2-$CL_review_app2_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')"
|
|
1931
2075
|
- export ROOT_URL_INTERNAL="https://$(printf %s "pan-test-app-review-$([ -n "$CI_MERGE_REQUEST_IID" ] && echo "mr$CI_MERGE_REQUEST_IID" || { [ -n "$CI_COMMIT_REF_SLUG" ] && echo "$CI_COMMIT_REF_SLUG" || echo "unknown"; })-app2-$CL_review_app2_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')"
|
|
1932
2076
|
- export DEPLOY_CLOUD_RUN_PROJECT_ID="asdf"
|
|
1933
2077
|
- export DEPLOY_CLOUD_RUN_REGION="asia-east1"
|
|
@@ -1947,24 +2091,57 @@ app2 🧪 test:
|
|
|
1947
2091
|
|
|
1948
2092
|
value from app1:
|
|
1949
2093
|
-------
|
|
1950
|
-
\${multiline_from_app1}
|
|
2094
|
+
Unresolvable reference: \${app2:multiline_from_app1}
|
|
1951
2095
|
--------
|
|
1952
2096
|
"
|
|
1953
|
-
- export _ALL_ENV_VAR_KEYS="[\\"ENV_SHORT\\",\\"APP_DIR\\",\\"ENV_TYPE\\",\\"BUILD_INFO_BUILD_ID\\",\\"BUILD_INFO_BUILD_TIME\\",\\"BUILD_INFO_CURRENT_VERSION\\",\\"
|
|
1954
|
-
-
|
|
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\\",\\"DEPLOY_CLOUD_RUN_PROJECT_ID\\",\\"DEPLOY_CLOUD_RUN_REGION\\",\\"GCLOUD_DEPLOY_credentialsKey\\",\\"GCLOUD_RUN_canonicalHostSuffix\\",\\"foo\\",\\"multiline\\"]"
|
|
2098
|
+
- collapseable_section_end "injectvars"
|
|
2099
|
+
- collapseable_section_start "write-dotenv-app2" "write dot env for app2"
|
|
2100
|
+
- |-
|
|
2101
|
+
cat <<EOF > app2/.env
|
|
2102
|
+
ENV_SHORT=review
|
|
2103
|
+
APP_DIR=app2
|
|
2104
|
+
ENV_TYPE=review
|
|
2105
|
+
HOSTNAME=$(printf %s "$(printf %s "pan-test-app-review-$([ -n "$CI_MERGE_REQUEST_IID" ] && echo "mr$CI_MERGE_REQUEST_IID" || { [ -n "$CI_COMMIT_REF_SLUG" ] && echo "$CI_COMMIT_REF_SLUG" || echo "unknown"; })-app2-$CL_review_app2_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')" | escapeForDotEnv)
|
|
2106
|
+
ROOT_URL=$(printf %s "https://$(printf %s "pan-test-app-review-$([ -n "$CI_MERGE_REQUEST_IID" ] && echo "mr$CI_MERGE_REQUEST_IID" || { [ -n "$CI_COMMIT_REF_SLUG" ] && echo "$CI_COMMIT_REF_SLUG" || echo "unknown"; })-app2-$CL_review_app2_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')" | escapeForDotEnv)
|
|
2107
|
+
HOSTNAME_INTERNAL=$(printf %s "$(printf %s "pan-test-app-review-$([ -n "$CI_MERGE_REQUEST_IID" ] && echo "mr$CI_MERGE_REQUEST_IID" || { [ -n "$CI_COMMIT_REF_SLUG" ] && echo "$CI_COMMIT_REF_SLUG" || echo "unknown"; })-app2-$CL_review_app2_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')" | escapeForDotEnv)
|
|
2108
|
+
ROOT_URL_INTERNAL=$(printf %s "https://$(printf %s "pan-test-app-review-$([ -n "$CI_MERGE_REQUEST_IID" ] && echo "mr$CI_MERGE_REQUEST_IID" || { [ -n "$CI_COMMIT_REF_SLUG" ] && echo "$CI_COMMIT_REF_SLUG" || echo "unknown"; })-app2-$CL_review_app2_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')" | escapeForDotEnv)
|
|
2109
|
+
DEPLOY_CLOUD_RUN_PROJECT_ID=asdf
|
|
2110
|
+
DEPLOY_CLOUD_RUN_REGION=asia-east1
|
|
2111
|
+
GCLOUD_DEPLOY_credentialsKey=$(printf %s "$CL_review_app2_GCLOUD_DEPLOY_credentialsKey" | escapeForDotEnv)
|
|
2112
|
+
GCLOUD_RUN_canonicalHostSuffix=$(printf %s "$CL_review_app2_GCLOUD_RUN_canonicalHostSuffix" | escapeForDotEnv)
|
|
2113
|
+
foo=foo-value
|
|
2114
|
+
multiline=$(printf %s "app2 yeah
|
|
2115
|
+
app2 yeah2
|
|
2116
|
+
app2 yeah3
|
|
2117
|
+
|
|
2118
|
+
app2 single quote: '
|
|
2119
|
+
app2 doouble quote: \\"
|
|
2120
|
+
|
|
2121
|
+
the url of self: \\"https://$(printf %s "pan-test-app-review-$([ -n "$CI_MERGE_REQUEST_IID" ] && echo "mr$CI_MERGE_REQUEST_IID" || { [ -n "$CI_COMMIT_REF_SLUG" ] && echo "$CI_COMMIT_REF_SLUG" || echo "unknown"; })-app2-$CL_review_app2_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')\\"
|
|
2122
|
+
the url of app1: \\"https://$(printf %s "pan-test-app-review-$([ -n "$CI_MERGE_REQUEST_IID" ] && echo "mr$CI_MERGE_REQUEST_IID" || { [ -n "$CI_COMMIT_REF_SLUG" ] && echo "$CI_COMMIT_REF_SLUG" || echo "unknown"; })-app1-$CL_review_app1_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')\\"
|
|
2123
|
+
|
|
2124
|
+
value from app1:
|
|
2125
|
+
-------
|
|
2126
|
+
Unresolvable reference: \${app2:multiline_from_app1}
|
|
2127
|
+
--------
|
|
2128
|
+
" | escapeForDotEnv)
|
|
2129
|
+
_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","DEPLOY_CLOUD_RUN_PROJECT_ID","DEPLOY_CLOUD_RUN_REGION","GCLOUD_DEPLOY_credentialsKey","GCLOUD_RUN_canonicalHostSuffix","foo","multiline"]
|
|
2130
|
+
EOF
|
|
2131
|
+
- collapseable_section_end "write-dotenv-app2"
|
|
1955
2132
|
- echo '{"id":"$(git describe --tags 2>/dev/null || git rev-parse HEAD)","time":"$CI_JOB_STARTED_AT"}' > app2/__build_info.json
|
|
1956
|
-
-
|
|
2133
|
+
- collapseable_section_start "nodeinstall" "Ensure node version"
|
|
1957
2134
|
- if [ -f ~/.nvm/nvm.sh ]; then source ~/.nvm/nvm.sh; fi
|
|
1958
2135
|
- if command -v nvm &> /dev/null && [ -f ./.nvmrc ]; then nvm install; fi
|
|
1959
|
-
-
|
|
2136
|
+
- collapseable_section_end "nodeinstall"
|
|
1960
2137
|
- cd app2
|
|
1961
|
-
-
|
|
2138
|
+
- collapseable_section_start "nodeinstall" "Ensure node version"
|
|
1962
2139
|
- if [ -f ~/.nvm/nvm.sh ]; then source ~/.nvm/nvm.sh; fi
|
|
1963
2140
|
- if command -v nvm &> /dev/null && [ -f ./.nvmrc ]; then nvm install; fi
|
|
1964
|
-
-
|
|
1965
|
-
-
|
|
2141
|
+
- collapseable_section_end "nodeinstall"
|
|
2142
|
+
- collapseable_section_start "yarninstall" "Yarn install"
|
|
1966
2143
|
- yarn install --immutable
|
|
1967
|
-
-
|
|
2144
|
+
- collapseable_section_end "yarninstall"
|
|
1968
2145
|
- yarn build
|
|
1969
2146
|
cache:
|
|
1970
2147
|
- key: app2-yarn
|
|
@@ -1975,15 +2152,13 @@ app2 🧪 test:
|
|
|
1975
2152
|
policy: pull-push
|
|
1976
2153
|
paths:
|
|
1977
2154
|
- app2/node_modules
|
|
1978
|
-
- key: app2-next-cache
|
|
1979
|
-
policy: pull-push
|
|
1980
|
-
paths:
|
|
1981
|
-
- app2/.next/cache
|
|
1982
2155
|
artifacts:
|
|
1983
2156
|
paths:
|
|
1984
2157
|
- app2/__build_info.json
|
|
1985
2158
|
- app2/.next
|
|
1986
2159
|
- app2/dist
|
|
2160
|
+
exclude:
|
|
2161
|
+
- app2/.env
|
|
1987
2162
|
expire_in: 1 day
|
|
1988
2163
|
when: always
|
|
1989
2164
|
reports: {}
|
|
@@ -2009,7 +2184,7 @@ app2 🧪 test:
|
|
|
2009
2184
|
KUBERNETES_MEMORY_REQUEST: 1Gi
|
|
2010
2185
|
KUBERNETES_MEMORY_LIMIT: 2Gi
|
|
2011
2186
|
script:
|
|
2012
|
-
-
|
|
2187
|
+
- collapseable_section_start "injectvars" "Injecting variables"
|
|
2013
2188
|
- export APP_DIR="app2"
|
|
2014
2189
|
- export DOCKER_BUILD_CONTEXT="."
|
|
2015
2190
|
- export DOCKER_REGISTRY="asia-east1-docker.pkg.dev"
|
|
@@ -2025,20 +2200,20 @@ app2 🧪 test:
|
|
|
2025
2200
|
COPY --chown=node:node app2/yarn.lock /app/app2/yarn.lock
|
|
2026
2201
|
COPY --chown=node:node .yarnrc.yml /app/.yarnrc.yml
|
|
2027
2202
|
COPY --chown=node:node .yarn /app/.yarn"
|
|
2028
|
-
-
|
|
2203
|
+
- collapseable_section_end "injectvars"
|
|
2029
2204
|
- ensureNodeDockerfile
|
|
2030
|
-
-
|
|
2205
|
+
- collapseable_section_start "docker-login" "Docker Login"
|
|
2031
2206
|
- gcloud auth activate-service-account --key-file=<(echo "$CL_review_app2_GCLOUD_DEPLOY_credentialsKey")
|
|
2032
2207
|
- gcloud auth configure-docker asia-east1-docker.pkg.dev
|
|
2033
|
-
-
|
|
2034
|
-
-
|
|
2208
|
+
- collapseable_section_end "docker-login"
|
|
2209
|
+
- collapseable_section_start "docker-build" "Docker build"
|
|
2035
2210
|
- 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
|
|
2036
|
-
-
|
|
2037
|
-
-
|
|
2211
|
+
- collapseable_section_end "docker-build"
|
|
2212
|
+
- collapseable_section_start "docker-push" "Docker push and tag"
|
|
2038
2213
|
- docker push $DOCKER_IMAGE:$DOCKER_IMAGE_TAG
|
|
2039
2214
|
- docker tag $DOCKER_IMAGE:$DOCKER_IMAGE_TAG $DOCKER_CACHE_IMAGE
|
|
2040
2215
|
- docker push $DOCKER_CACHE_IMAGE
|
|
2041
|
-
-
|
|
2216
|
+
- collapseable_section_end "docker-push"
|
|
2042
2217
|
cache:
|
|
2043
2218
|
- key: app2-yarn
|
|
2044
2219
|
policy: pull
|
|
@@ -2055,8 +2230,8 @@ app2 🧪 test:
|
|
|
2055
2230
|
image: aquasec/trivy:0.38.3
|
|
2056
2231
|
variables: {}
|
|
2057
2232
|
script:
|
|
2058
|
-
-
|
|
2059
|
-
-
|
|
2233
|
+
- collapseable_section_start "injectvars" "Injecting variables"
|
|
2234
|
+
- collapseable_section_end "injectvars"
|
|
2060
2235
|
- trivy fs --quiet --format cyclonedx --output "__sbom.json" app2
|
|
2061
2236
|
artifacts:
|
|
2062
2237
|
paths:
|
|
@@ -2075,17 +2250,16 @@ app2 🧪 test:
|
|
|
2075
2250
|
KUBERNETES_MEMORY_REQUEST: 200Mi
|
|
2076
2251
|
KUBERNETES_MEMORY_LIMIT: 400Mi
|
|
2077
2252
|
script:
|
|
2078
|
-
-
|
|
2253
|
+
- collapseable_section_start "injectvars" "Injecting variables"
|
|
2079
2254
|
- export ENV_SHORT="review"
|
|
2080
2255
|
- export APP_DIR="app2"
|
|
2081
2256
|
- export ENV_TYPE="review"
|
|
2082
2257
|
- export BUILD_INFO_BUILD_ID="$(git describe --tags 2>/dev/null || git rev-parse HEAD)"
|
|
2083
2258
|
- export BUILD_INFO_BUILD_TIME="$CI_JOB_STARTED_AT"
|
|
2084
2259
|
- 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")"
|
|
2085
|
-
- export
|
|
2260
|
+
- export HOSTNAME="$(printf %s "pan-test-app-review-$([ -n "$CI_MERGE_REQUEST_IID" ] && echo "mr$CI_MERGE_REQUEST_IID" || { [ -n "$CI_COMMIT_REF_SLUG" ] && echo "$CI_COMMIT_REF_SLUG" || echo "unknown"; })-app2-$CL_review_app2_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')"
|
|
2086
2261
|
- export ROOT_URL="https://$(printf %s "pan-test-app-review-$([ -n "$CI_MERGE_REQUEST_IID" ] && echo "mr$CI_MERGE_REQUEST_IID" || { [ -n "$CI_COMMIT_REF_SLUG" ] && echo "$CI_COMMIT_REF_SLUG" || echo "unknown"; })-app2-$CL_review_app2_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')"
|
|
2087
|
-
- export
|
|
2088
|
-
- export HOST_CANONICAL="$(printf %s "pan-test-app-review-$([ -n "$CI_MERGE_REQUEST_IID" ] && echo "mr$CI_MERGE_REQUEST_IID" || { [ -n "$CI_COMMIT_REF_SLUG" ] && echo "$CI_COMMIT_REF_SLUG" || echo "unknown"; })-app2-$CL_review_app2_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')"
|
|
2262
|
+
- export HOSTNAME_INTERNAL="$(printf %s "pan-test-app-review-$([ -n "$CI_MERGE_REQUEST_IID" ] && echo "mr$CI_MERGE_REQUEST_IID" || { [ -n "$CI_COMMIT_REF_SLUG" ] && echo "$CI_COMMIT_REF_SLUG" || echo "unknown"; })-app2-$CL_review_app2_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')"
|
|
2089
2263
|
- export ROOT_URL_INTERNAL="https://$(printf %s "pan-test-app-review-$([ -n "$CI_MERGE_REQUEST_IID" ] && echo "mr$CI_MERGE_REQUEST_IID" || { [ -n "$CI_COMMIT_REF_SLUG" ] && echo "$CI_COMMIT_REF_SLUG" || echo "unknown"; })-app2-$CL_review_app2_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')"
|
|
2090
2264
|
- export DEPLOY_CLOUD_RUN_PROJECT_ID="asdf"
|
|
2091
2265
|
- export DEPLOY_CLOUD_RUN_REGION="asia-east1"
|
|
@@ -2105,22 +2279,22 @@ app2 🧪 test:
|
|
|
2105
2279
|
|
|
2106
2280
|
value from app1:
|
|
2107
2281
|
-------
|
|
2108
|
-
\${multiline_from_app1}
|
|
2282
|
+
Unresolvable reference: \${app2:multiline_from_app1}
|
|
2109
2283
|
--------
|
|
2110
2284
|
"
|
|
2111
|
-
- export _ALL_ENV_VAR_KEYS="[\\"ENV_SHORT\\",\\"APP_DIR\\",\\"ENV_TYPE\\",\\"BUILD_INFO_BUILD_ID\\",\\"BUILD_INFO_BUILD_TIME\\",\\"BUILD_INFO_CURRENT_VERSION\\",\\"
|
|
2285
|
+
- 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\\",\\"DEPLOY_CLOUD_RUN_PROJECT_ID\\",\\"DEPLOY_CLOUD_RUN_REGION\\",\\"GCLOUD_DEPLOY_credentialsKey\\",\\"GCLOUD_RUN_canonicalHostSuffix\\",\\"foo\\",\\"multiline\\"]"
|
|
2112
2286
|
- export DOCKER_REGISTRY="asia-east1-docker.pkg.dev"
|
|
2113
2287
|
- export DOCKER_IMAGE="asia-east1-docker.pkg.dev/asdf/catladder-deploy/pan-test-app/review/app2/$([ -n "$CI_MERGE_REQUEST_IID" ] && echo "mr$CI_MERGE_REQUEST_IID" || { [ -n "$CI_COMMIT_REF_SLUG" ] && echo "$CI_COMMIT_REF_SLUG" || echo "unknown"; })"
|
|
2114
2288
|
- export DOCKER_CACHE_IMAGE="asia-east1-docker.pkg.dev/asdf/catladder-deploy/pan-test-app/caches/app2"
|
|
2115
2289
|
- export DOCKER_IMAGE_TAG="$CI_COMMIT_SHA"
|
|
2116
2290
|
- export CLOUDSDK_CORE_DISABLE_PROMPTS="1"
|
|
2117
|
-
-
|
|
2118
|
-
-
|
|
2291
|
+
- collapseable_section_end "injectvars"
|
|
2292
|
+
- collapseable_section_start "prepare" "Prepare..."
|
|
2119
2293
|
- gcloud auth activate-service-account --key-file=<(echo "$CL_review_app2_GCLOUD_DEPLOY_credentialsKey")
|
|
2120
2294
|
- export GCLOUD_PROJECT_NUMBER=$(gcloud projects describe asdf --format="value(projectNumber)")
|
|
2121
2295
|
- 'echo "GCLOUD_PROJECT_NUMBER: $GCLOUD_PROJECT_NUMBER"'
|
|
2122
|
-
-
|
|
2123
|
-
-
|
|
2296
|
+
- collapseable_section_end "prepare"
|
|
2297
|
+
- collapseable_section_start "writeenvvars" "Write env vars to file"
|
|
2124
2298
|
- |
|
|
2125
2299
|
cat > ____envvars.yaml <<EOF
|
|
2126
2300
|
ENV_SHORT: |-
|
|
@@ -2130,61 +2304,59 @@ app2 🧪 test:
|
|
|
2130
2304
|
ENV_TYPE: |-
|
|
2131
2305
|
review
|
|
2132
2306
|
BUILD_INFO_BUILD_ID: |-
|
|
2133
|
-
|
|
2307
|
+
$(printf %s "$(git describe --tags 2>/dev/null || git rev-parse HEAD)" | sed '1!s/^/ /')
|
|
2134
2308
|
BUILD_INFO_BUILD_TIME: |-
|
|
2135
|
-
|
|
2309
|
+
$(printf %s "$CI_JOB_STARTED_AT" | sed '1!s/^/ /')
|
|
2136
2310
|
BUILD_INFO_CURRENT_VERSION: |-
|
|
2137
|
-
|
|
2138
|
-
|
|
2139
|
-
|
|
2311
|
+
$(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/^/ /')
|
|
2312
|
+
HOSTNAME: |-
|
|
2313
|
+
$(printf %s "$(printf %s "pan-test-app-review-$([ -n "$CI_MERGE_REQUEST_IID" ] && echo "mr$CI_MERGE_REQUEST_IID" || { [ -n "$CI_COMMIT_REF_SLUG" ] && echo "$CI_COMMIT_REF_SLUG" || echo "unknown"; })-app2-$CL_review_app2_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')" | sed '1!s/^/ /')
|
|
2140
2314
|
ROOT_URL: |-
|
|
2141
|
-
|
|
2142
|
-
|
|
2143
|
-
|
|
2144
|
-
HOST_CANONICAL: |-
|
|
2145
|
-
$(printf %s "$(printf %s "pan-test-app-review-$([ -n "$CI_MERGE_REQUEST_IID" ] && echo "mr$CI_MERGE_REQUEST_IID" || { [ -n "$CI_COMMIT_REF_SLUG" ] && echo "$CI_COMMIT_REF_SLUG" || echo "unknown"; })-app2-$CL_review_app2_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')" | sed 's/^/ /')
|
|
2315
|
+
$(printf %s "https://$(printf %s "pan-test-app-review-$([ -n "$CI_MERGE_REQUEST_IID" ] && echo "mr$CI_MERGE_REQUEST_IID" || { [ -n "$CI_COMMIT_REF_SLUG" ] && echo "$CI_COMMIT_REF_SLUG" || echo "unknown"; })-app2-$CL_review_app2_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')" | sed '1!s/^/ /')
|
|
2316
|
+
HOSTNAME_INTERNAL: |-
|
|
2317
|
+
$(printf %s "$(printf %s "pan-test-app-review-$([ -n "$CI_MERGE_REQUEST_IID" ] && echo "mr$CI_MERGE_REQUEST_IID" || { [ -n "$CI_COMMIT_REF_SLUG" ] && echo "$CI_COMMIT_REF_SLUG" || echo "unknown"; })-app2-$CL_review_app2_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')" | sed '1!s/^/ /')
|
|
2146
2318
|
ROOT_URL_INTERNAL: |-
|
|
2147
|
-
|
|
2319
|
+
$(printf %s "https://$(printf %s "pan-test-app-review-$([ -n "$CI_MERGE_REQUEST_IID" ] && echo "mr$CI_MERGE_REQUEST_IID" || { [ -n "$CI_COMMIT_REF_SLUG" ] && echo "$CI_COMMIT_REF_SLUG" || echo "unknown"; })-app2-$CL_review_app2_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')" | sed '1!s/^/ /')
|
|
2148
2320
|
DEPLOY_CLOUD_RUN_PROJECT_ID: |-
|
|
2149
2321
|
asdf
|
|
2150
2322
|
DEPLOY_CLOUD_RUN_REGION: |-
|
|
2151
2323
|
asia-east1
|
|
2152
2324
|
GCLOUD_RUN_canonicalHostSuffix: |-
|
|
2153
|
-
|
|
2325
|
+
$(printf %s "$CL_review_app2_GCLOUD_RUN_canonicalHostSuffix" | sed '1!s/^/ /')
|
|
2154
2326
|
foo: |-
|
|
2155
2327
|
foo-value
|
|
2156
2328
|
multiline: |-
|
|
2157
|
-
|
|
2158
|
-
|
|
2159
|
-
|
|
2160
|
-
|
|
2161
|
-
|
|
2162
|
-
|
|
2163
|
-
|
|
2164
|
-
|
|
2165
|
-
|
|
2166
|
-
|
|
2167
|
-
|
|
2168
|
-
|
|
2169
|
-
|
|
2170
|
-
|
|
2171
|
-
|
|
2329
|
+
app2 yeah
|
|
2330
|
+
app2 yeah2
|
|
2331
|
+
app2 yeah3
|
|
2332
|
+
|
|
2333
|
+
app2 single quote: '
|
|
2334
|
+
app2 doouble quote: "
|
|
2335
|
+
|
|
2336
|
+
the url of self: "$(printf %s "https://$(printf %s "pan-test-app-review-$([ -n "$CI_MERGE_REQUEST_IID" ] && echo "mr$CI_MERGE_REQUEST_IID" || { [ -n "$CI_COMMIT_REF_SLUG" ] && echo "$CI_COMMIT_REF_SLUG" || echo "unknown"; })-app2-$CL_review_app2_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')" | sed '1!s/^/ /')"
|
|
2337
|
+
the url of app1: "$(printf %s "https://$(printf %s "pan-test-app-review-$([ -n "$CI_MERGE_REQUEST_IID" ] && echo "mr$CI_MERGE_REQUEST_IID" || { [ -n "$CI_COMMIT_REF_SLUG" ] && echo "$CI_COMMIT_REF_SLUG" || echo "unknown"; })-app1-$CL_review_app1_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')" | sed '1!s/^/ /')"
|
|
2338
|
+
|
|
2339
|
+
value from app1:
|
|
2340
|
+
-------
|
|
2341
|
+
Unresolvable reference: \${app2:multiline_from_app1}
|
|
2342
|
+
--------
|
|
2343
|
+
|
|
2172
2344
|
_ALL_ENV_VAR_KEYS: |-
|
|
2173
|
-
["ENV_SHORT","APP_DIR","ENV_TYPE","BUILD_INFO_BUILD_ID","BUILD_INFO_BUILD_TIME","BUILD_INFO_CURRENT_VERSION","
|
|
2345
|
+
["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","DEPLOY_CLOUD_RUN_PROJECT_ID","DEPLOY_CLOUD_RUN_REGION","GCLOUD_DEPLOY_credentialsKey","GCLOUD_RUN_canonicalHostSuffix","foo","multiline"]
|
|
2174
2346
|
|
|
2175
2347
|
EOF
|
|
2176
|
-
-
|
|
2177
|
-
-
|
|
2348
|
+
- collapseable_section_end "writeenvvars"
|
|
2349
|
+
- collapseable_section_start "deploy" "Deploy to cloud run"
|
|
2178
2350
|
- gcloud run deploy $(printf %s "pan-test-app-review-$([ -n "$CI_MERGE_REQUEST_IID" ] && echo "mr$CI_MERGE_REQUEST_IID" || { [ -n "$CI_COMMIT_REF_SLUG" ] && echo "$CI_COMMIT_REF_SLUG" || echo "unknown"; })-app2" | awk '{print tolower($0)}') --command="yarn,start" --image=asia-east1-docker.pkg.dev/asdf/catladder-deploy/pan-test-app/review/app2/$([ -n "$CI_MERGE_REQUEST_IID" ] && echo "mr$CI_MERGE_REQUEST_IID" || { [ -n "$CI_COMMIT_REF_SLUG" ] && echo "$CI_COMMIT_REF_SLUG" || echo "unknown"; }):$DOCKER_IMAGE_TAG --project=asdf --region=asia-east1 --labels=customer-name=pan,component-name=app2,app-name=test-app,env-type=review,env-name=review,build-type=node,cloud-run-service-name=$(printf %s "pan-test-app-review-$([ -n "$CI_MERGE_REQUEST_IID" ] && echo "mr$CI_MERGE_REQUEST_IID" || { [ -n "$CI_COMMIT_REF_SLUG" ] && echo "$CI_COMMIT_REF_SLUG" || echo "unknown"; })-app2" | awk '{print tolower($0)}') --env-vars-file=____envvars.yaml --min-instances=0 --max-instances=100 --cpu-throttling --allow-unauthenticated --ingress=all --cpu-boost
|
|
2179
|
-
-
|
|
2180
|
-
-
|
|
2351
|
+
- collapseable_section_end "deploy"
|
|
2352
|
+
- collapseable_section_start "cleanup" "Cleanup"
|
|
2181
2353
|
- gcloud run revisions list --project=asdf --region=asia-east1 --service=$(printf %s "pan-test-app-review-$([ -n "$CI_MERGE_REQUEST_IID" ] && echo "mr$CI_MERGE_REQUEST_IID" || { [ -n "$CI_COMMIT_REF_SLUG" ] && echo "$CI_COMMIT_REF_SLUG" || echo "unknown"; })-app2" | awk '{print tolower($0)}') --limit=unlimited --sort-by=metadata.creationTimestamp --format="value(name)" --filter='(status.conditions.status=False OR status.conditions.status=Unknown)' | while read -r revisionname; do gcloud run revisions delete --project=asdf --region=asia-east1 --quiet $revisionname ; done
|
|
2182
2354
|
- gcloud artifacts docker images list asia-east1-docker.pkg.dev/asdf/catladder-deploy/pan-test-app/review/app2/$([ -n "$CI_MERGE_REQUEST_IID" ] && echo "mr$CI_MERGE_REQUEST_IID" || { [ -n "$CI_COMMIT_REF_SLUG" ] && echo "$CI_COMMIT_REF_SLUG" || echo "unknown"; }) --sort-by=~CREATE_TIME --format="value(version)" | tail -n +2 | while read -r version; do gcloud artifacts docker images delete asia-east1-docker.pkg.dev/asdf/catladder-deploy/pan-test-app/review/app2/$([ -n "$CI_MERGE_REQUEST_IID" ] && echo "mr$CI_MERGE_REQUEST_IID" || { [ -n "$CI_COMMIT_REF_SLUG" ] && echo "$CI_COMMIT_REF_SLUG" || echo "unknown"; })@$version --quiet --delete-tags; done
|
|
2183
2355
|
- gcloud artifacts docker images list asia-east1-docker.pkg.dev/asdf/catladder-deploy/pan-test-app/caches/app2 --sort-by=~CREATE_TIME --format="value(version)" | tail -n +2 | while read -r version; do gcloud artifacts docker images delete asia-east1-docker.pkg.dev/asdf/catladder-deploy/pan-test-app/caches/app2@$version --quiet --delete-tags; done
|
|
2184
2356
|
- set +e
|
|
2185
2357
|
- gcloud artifacts docker images delete asia-east1-docker.pkg.dev/asdf/catladder-deploy/pan-test-app/review/app2 --quiet --delete-tags
|
|
2186
2358
|
- set -e
|
|
2187
|
-
-
|
|
2359
|
+
- collapseable_section_end "cleanup"
|
|
2188
2360
|
- echo 'Uploading SBOM to Dependency Track'
|
|
2189
2361
|
- /dtrackuploader https://dep.panter.swiss/ "$DT_KEY_PROD" upload "pan-test-app/app2" "https://$(printf %s "pan-test-app-review-$([ -n "$CI_MERGE_REQUEST_IID" ] && echo "mr$CI_MERGE_REQUEST_IID" || { [ -n "$CI_COMMIT_REF_SLUG" ] && echo "$CI_COMMIT_REF_SLUG" || echo "unknown"; })-app2-$CL_review_app2_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')" "__sbom.json" vex.json || true
|
|
2190
2362
|
- echo "CL_GITLAB_ENVIRONMENT_URL=https://$(printf %s "pan-test-app-review-$([ -n "$CI_MERGE_REQUEST_IID" ] && echo "mr$CI_MERGE_REQUEST_IID" || { [ -n "$CI_COMMIT_REF_SLUG" ] && echo "$CI_COMMIT_REF_SLUG" || echo "unknown"; })-app2-$CL_review_app2_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')" >> gitlab_environment.env
|
|
@@ -2224,9 +2396,9 @@ app2 🧪 test:
|
|
|
2224
2396
|
KUBERNETES_MEMORY_LIMIT: 400Mi
|
|
2225
2397
|
GIT_STRATEGY: none
|
|
2226
2398
|
script:
|
|
2227
|
-
-
|
|
2399
|
+
- collapseable_section_start "injectvars" "Injecting variables"
|
|
2228
2400
|
- export CLOUDSDK_CORE_DISABLE_PROMPTS="1"
|
|
2229
|
-
-
|
|
2401
|
+
- collapseable_section_end "injectvars"
|
|
2230
2402
|
- set +e
|
|
2231
2403
|
- gcloud auth activate-service-account --key-file=<(echo "$CL_review_app2_GCLOUD_DEPLOY_credentialsKey")
|
|
2232
2404
|
- gcloud run services delete $(printf %s "pan-test-app-review-$([ -n "$CI_MERGE_REQUEST_IID" ] && echo "mr$CI_MERGE_REQUEST_IID" || { [ -n "$CI_COMMIT_REF_SLUG" ] && echo "$CI_COMMIT_REF_SLUG" || echo "unknown"; })-app2" | awk '{print tolower($0)}') --project=asdf --region=asia-east1
|
|
@@ -2263,17 +2435,16 @@ app2 🧪 test:
|
|
|
2263
2435
|
KUBERNETES_MEMORY_REQUEST: 1Gi
|
|
2264
2436
|
KUBERNETES_MEMORY_LIMIT: 4Gi
|
|
2265
2437
|
script:
|
|
2266
|
-
-
|
|
2438
|
+
- collapseable_section_start "injectvars" "Injecting variables"
|
|
2267
2439
|
- export ENV_SHORT="stage"
|
|
2268
2440
|
- export APP_DIR="app2"
|
|
2269
2441
|
- export ENV_TYPE="stage"
|
|
2270
2442
|
- export BUILD_INFO_BUILD_ID="$(git describe --tags 2>/dev/null || git rev-parse HEAD)"
|
|
2271
2443
|
- export BUILD_INFO_BUILD_TIME="$CI_JOB_STARTED_AT"
|
|
2272
2444
|
- 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")"
|
|
2273
|
-
- export
|
|
2445
|
+
- export HOSTNAME="$(printf %s "pan-test-app-stage-app2-$CL_stage_app2_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')"
|
|
2274
2446
|
- export ROOT_URL="https://$(printf %s "pan-test-app-stage-app2-$CL_stage_app2_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')"
|
|
2275
|
-
- export
|
|
2276
|
-
- export HOST_CANONICAL="$(printf %s "pan-test-app-stage-app2-$CL_stage_app2_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')"
|
|
2447
|
+
- export HOSTNAME_INTERNAL="$(printf %s "pan-test-app-stage-app2-$CL_stage_app2_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')"
|
|
2277
2448
|
- export ROOT_URL_INTERNAL="https://$(printf %s "pan-test-app-stage-app2-$CL_stage_app2_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')"
|
|
2278
2449
|
- export DEPLOY_CLOUD_RUN_PROJECT_ID="asdf"
|
|
2279
2450
|
- export DEPLOY_CLOUD_RUN_REGION="asia-east1"
|
|
@@ -2293,24 +2464,57 @@ app2 🧪 test:
|
|
|
2293
2464
|
|
|
2294
2465
|
value from app1:
|
|
2295
2466
|
-------
|
|
2296
|
-
\${multiline_from_app1}
|
|
2467
|
+
Unresolvable reference: \${app2:multiline_from_app1}
|
|
2297
2468
|
--------
|
|
2298
2469
|
"
|
|
2299
|
-
- export _ALL_ENV_VAR_KEYS="[\\"ENV_SHORT\\",\\"APP_DIR\\",\\"ENV_TYPE\\",\\"BUILD_INFO_BUILD_ID\\",\\"BUILD_INFO_BUILD_TIME\\",\\"BUILD_INFO_CURRENT_VERSION\\",\\"
|
|
2300
|
-
-
|
|
2470
|
+
- 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\\",\\"DEPLOY_CLOUD_RUN_PROJECT_ID\\",\\"DEPLOY_CLOUD_RUN_REGION\\",\\"GCLOUD_DEPLOY_credentialsKey\\",\\"GCLOUD_RUN_canonicalHostSuffix\\",\\"foo\\",\\"multiline\\"]"
|
|
2471
|
+
- collapseable_section_end "injectvars"
|
|
2472
|
+
- collapseable_section_start "write-dotenv-app2" "write dot env for app2"
|
|
2473
|
+
- |-
|
|
2474
|
+
cat <<EOF > app2/.env
|
|
2475
|
+
ENV_SHORT=stage
|
|
2476
|
+
APP_DIR=app2
|
|
2477
|
+
ENV_TYPE=stage
|
|
2478
|
+
HOSTNAME=$(printf %s "$(printf %s "pan-test-app-stage-app2-$CL_stage_app2_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')" | escapeForDotEnv)
|
|
2479
|
+
ROOT_URL=$(printf %s "https://$(printf %s "pan-test-app-stage-app2-$CL_stage_app2_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')" | escapeForDotEnv)
|
|
2480
|
+
HOSTNAME_INTERNAL=$(printf %s "$(printf %s "pan-test-app-stage-app2-$CL_stage_app2_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')" | escapeForDotEnv)
|
|
2481
|
+
ROOT_URL_INTERNAL=$(printf %s "https://$(printf %s "pan-test-app-stage-app2-$CL_stage_app2_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')" | escapeForDotEnv)
|
|
2482
|
+
DEPLOY_CLOUD_RUN_PROJECT_ID=asdf
|
|
2483
|
+
DEPLOY_CLOUD_RUN_REGION=asia-east1
|
|
2484
|
+
GCLOUD_DEPLOY_credentialsKey=$(printf %s "$CL_stage_app2_GCLOUD_DEPLOY_credentialsKey" | escapeForDotEnv)
|
|
2485
|
+
GCLOUD_RUN_canonicalHostSuffix=$(printf %s "$CL_stage_app2_GCLOUD_RUN_canonicalHostSuffix" | escapeForDotEnv)
|
|
2486
|
+
foo=foo-value
|
|
2487
|
+
multiline=$(printf %s "app2 yeah
|
|
2488
|
+
app2 yeah2
|
|
2489
|
+
app2 yeah3
|
|
2490
|
+
|
|
2491
|
+
app2 single quote: '
|
|
2492
|
+
app2 doouble quote: \\"
|
|
2493
|
+
|
|
2494
|
+
the url of self: \\"https://$(printf %s "pan-test-app-stage-app2-$CL_stage_app2_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')\\"
|
|
2495
|
+
the url of app1: \\"https://$(printf %s "pan-test-app-stage-app1-$CL_stage_app1_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')\\"
|
|
2496
|
+
|
|
2497
|
+
value from app1:
|
|
2498
|
+
-------
|
|
2499
|
+
Unresolvable reference: \${app2:multiline_from_app1}
|
|
2500
|
+
--------
|
|
2501
|
+
" | escapeForDotEnv)
|
|
2502
|
+
_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","DEPLOY_CLOUD_RUN_PROJECT_ID","DEPLOY_CLOUD_RUN_REGION","GCLOUD_DEPLOY_credentialsKey","GCLOUD_RUN_canonicalHostSuffix","foo","multiline"]
|
|
2503
|
+
EOF
|
|
2504
|
+
- collapseable_section_end "write-dotenv-app2"
|
|
2301
2505
|
- echo '{"id":"$(git describe --tags 2>/dev/null || git rev-parse HEAD)","time":"$CI_JOB_STARTED_AT"}' > app2/__build_info.json
|
|
2302
|
-
-
|
|
2506
|
+
- collapseable_section_start "nodeinstall" "Ensure node version"
|
|
2303
2507
|
- if [ -f ~/.nvm/nvm.sh ]; then source ~/.nvm/nvm.sh; fi
|
|
2304
2508
|
- if command -v nvm &> /dev/null && [ -f ./.nvmrc ]; then nvm install; fi
|
|
2305
|
-
-
|
|
2509
|
+
- collapseable_section_end "nodeinstall"
|
|
2306
2510
|
- cd app2
|
|
2307
|
-
-
|
|
2511
|
+
- collapseable_section_start "nodeinstall" "Ensure node version"
|
|
2308
2512
|
- if [ -f ~/.nvm/nvm.sh ]; then source ~/.nvm/nvm.sh; fi
|
|
2309
2513
|
- if command -v nvm &> /dev/null && [ -f ./.nvmrc ]; then nvm install; fi
|
|
2310
|
-
-
|
|
2311
|
-
-
|
|
2514
|
+
- collapseable_section_end "nodeinstall"
|
|
2515
|
+
- collapseable_section_start "yarninstall" "Yarn install"
|
|
2312
2516
|
- yarn install --immutable
|
|
2313
|
-
-
|
|
2517
|
+
- collapseable_section_end "yarninstall"
|
|
2314
2518
|
- yarn build
|
|
2315
2519
|
cache:
|
|
2316
2520
|
- key: app2-yarn
|
|
@@ -2321,15 +2525,13 @@ app2 🧪 test:
|
|
|
2321
2525
|
policy: pull-push
|
|
2322
2526
|
paths:
|
|
2323
2527
|
- app2/node_modules
|
|
2324
|
-
- key: app2-next-cache
|
|
2325
|
-
policy: pull-push
|
|
2326
|
-
paths:
|
|
2327
|
-
- app2/.next/cache
|
|
2328
2528
|
artifacts:
|
|
2329
2529
|
paths:
|
|
2330
2530
|
- app2/__build_info.json
|
|
2331
2531
|
- app2/.next
|
|
2332
2532
|
- app2/dist
|
|
2533
|
+
exclude:
|
|
2534
|
+
- app2/.env
|
|
2333
2535
|
expire_in: 1 day
|
|
2334
2536
|
when: always
|
|
2335
2537
|
reports: {}
|
|
@@ -2355,7 +2557,7 @@ app2 🧪 test:
|
|
|
2355
2557
|
KUBERNETES_MEMORY_REQUEST: 1Gi
|
|
2356
2558
|
KUBERNETES_MEMORY_LIMIT: 2Gi
|
|
2357
2559
|
script:
|
|
2358
|
-
-
|
|
2560
|
+
- collapseable_section_start "injectvars" "Injecting variables"
|
|
2359
2561
|
- export APP_DIR="app2"
|
|
2360
2562
|
- export DOCKER_BUILD_CONTEXT="."
|
|
2361
2563
|
- export DOCKER_REGISTRY="asia-east1-docker.pkg.dev"
|
|
@@ -2371,20 +2573,20 @@ app2 🧪 test:
|
|
|
2371
2573
|
COPY --chown=node:node app2/yarn.lock /app/app2/yarn.lock
|
|
2372
2574
|
COPY --chown=node:node .yarnrc.yml /app/.yarnrc.yml
|
|
2373
2575
|
COPY --chown=node:node .yarn /app/.yarn"
|
|
2374
|
-
-
|
|
2576
|
+
- collapseable_section_end "injectvars"
|
|
2375
2577
|
- ensureNodeDockerfile
|
|
2376
|
-
-
|
|
2578
|
+
- collapseable_section_start "docker-login" "Docker Login"
|
|
2377
2579
|
- gcloud auth activate-service-account --key-file=<(echo "$CL_stage_app2_GCLOUD_DEPLOY_credentialsKey")
|
|
2378
2580
|
- gcloud auth configure-docker asia-east1-docker.pkg.dev
|
|
2379
|
-
-
|
|
2380
|
-
-
|
|
2581
|
+
- collapseable_section_end "docker-login"
|
|
2582
|
+
- collapseable_section_start "docker-build" "Docker build"
|
|
2381
2583
|
- 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
|
|
2382
|
-
-
|
|
2383
|
-
-
|
|
2584
|
+
- collapseable_section_end "docker-build"
|
|
2585
|
+
- collapseable_section_start "docker-push" "Docker push and tag"
|
|
2384
2586
|
- docker push $DOCKER_IMAGE:$DOCKER_IMAGE_TAG
|
|
2385
2587
|
- docker tag $DOCKER_IMAGE:$DOCKER_IMAGE_TAG $DOCKER_CACHE_IMAGE
|
|
2386
2588
|
- docker push $DOCKER_CACHE_IMAGE
|
|
2387
|
-
-
|
|
2589
|
+
- collapseable_section_end "docker-push"
|
|
2388
2590
|
cache:
|
|
2389
2591
|
- key: app2-yarn
|
|
2390
2592
|
policy: pull
|
|
@@ -2401,8 +2603,8 @@ app2 🧪 test:
|
|
|
2401
2603
|
image: aquasec/trivy:0.38.3
|
|
2402
2604
|
variables: {}
|
|
2403
2605
|
script:
|
|
2404
|
-
-
|
|
2405
|
-
-
|
|
2606
|
+
- collapseable_section_start "injectvars" "Injecting variables"
|
|
2607
|
+
- collapseable_section_end "injectvars"
|
|
2406
2608
|
- trivy fs --quiet --format cyclonedx --output "__sbom.json" app2
|
|
2407
2609
|
artifacts:
|
|
2408
2610
|
paths:
|
|
@@ -2421,17 +2623,16 @@ app2 🧪 test:
|
|
|
2421
2623
|
KUBERNETES_MEMORY_REQUEST: 200Mi
|
|
2422
2624
|
KUBERNETES_MEMORY_LIMIT: 400Mi
|
|
2423
2625
|
script:
|
|
2424
|
-
-
|
|
2626
|
+
- collapseable_section_start "injectvars" "Injecting variables"
|
|
2425
2627
|
- export ENV_SHORT="stage"
|
|
2426
2628
|
- export APP_DIR="app2"
|
|
2427
2629
|
- export ENV_TYPE="stage"
|
|
2428
2630
|
- export BUILD_INFO_BUILD_ID="$(git describe --tags 2>/dev/null || git rev-parse HEAD)"
|
|
2429
2631
|
- export BUILD_INFO_BUILD_TIME="$CI_JOB_STARTED_AT"
|
|
2430
2632
|
- 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")"
|
|
2431
|
-
- export
|
|
2633
|
+
- export HOSTNAME="$(printf %s "pan-test-app-stage-app2-$CL_stage_app2_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')"
|
|
2432
2634
|
- export ROOT_URL="https://$(printf %s "pan-test-app-stage-app2-$CL_stage_app2_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')"
|
|
2433
|
-
- export
|
|
2434
|
-
- export HOST_CANONICAL="$(printf %s "pan-test-app-stage-app2-$CL_stage_app2_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')"
|
|
2635
|
+
- export HOSTNAME_INTERNAL="$(printf %s "pan-test-app-stage-app2-$CL_stage_app2_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')"
|
|
2435
2636
|
- export ROOT_URL_INTERNAL="https://$(printf %s "pan-test-app-stage-app2-$CL_stage_app2_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')"
|
|
2436
2637
|
- export DEPLOY_CLOUD_RUN_PROJECT_ID="asdf"
|
|
2437
2638
|
- export DEPLOY_CLOUD_RUN_REGION="asia-east1"
|
|
@@ -2451,22 +2652,22 @@ app2 🧪 test:
|
|
|
2451
2652
|
|
|
2452
2653
|
value from app1:
|
|
2453
2654
|
-------
|
|
2454
|
-
\${multiline_from_app1}
|
|
2655
|
+
Unresolvable reference: \${app2:multiline_from_app1}
|
|
2455
2656
|
--------
|
|
2456
2657
|
"
|
|
2457
|
-
- export _ALL_ENV_VAR_KEYS="[\\"ENV_SHORT\\",\\"APP_DIR\\",\\"ENV_TYPE\\",\\"BUILD_INFO_BUILD_ID\\",\\"BUILD_INFO_BUILD_TIME\\",\\"BUILD_INFO_CURRENT_VERSION\\",\\"
|
|
2658
|
+
- 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\\",\\"DEPLOY_CLOUD_RUN_PROJECT_ID\\",\\"DEPLOY_CLOUD_RUN_REGION\\",\\"GCLOUD_DEPLOY_credentialsKey\\",\\"GCLOUD_RUN_canonicalHostSuffix\\",\\"foo\\",\\"multiline\\"]"
|
|
2458
2659
|
- export DOCKER_REGISTRY="asia-east1-docker.pkg.dev"
|
|
2459
2660
|
- export DOCKER_IMAGE="asia-east1-docker.pkg.dev/asdf/catladder-deploy/pan-test-app/stage/app2"
|
|
2460
2661
|
- export DOCKER_CACHE_IMAGE="asia-east1-docker.pkg.dev/asdf/catladder-deploy/pan-test-app/caches/app2"
|
|
2461
2662
|
- export DOCKER_IMAGE_TAG="$CI_COMMIT_SHA"
|
|
2462
2663
|
- export CLOUDSDK_CORE_DISABLE_PROMPTS="1"
|
|
2463
|
-
-
|
|
2464
|
-
-
|
|
2664
|
+
- collapseable_section_end "injectvars"
|
|
2665
|
+
- collapseable_section_start "prepare" "Prepare..."
|
|
2465
2666
|
- gcloud auth activate-service-account --key-file=<(echo "$CL_stage_app2_GCLOUD_DEPLOY_credentialsKey")
|
|
2466
2667
|
- export GCLOUD_PROJECT_NUMBER=$(gcloud projects describe asdf --format="value(projectNumber)")
|
|
2467
2668
|
- 'echo "GCLOUD_PROJECT_NUMBER: $GCLOUD_PROJECT_NUMBER"'
|
|
2468
|
-
-
|
|
2469
|
-
-
|
|
2669
|
+
- collapseable_section_end "prepare"
|
|
2670
|
+
- collapseable_section_start "writeenvvars" "Write env vars to file"
|
|
2470
2671
|
- |
|
|
2471
2672
|
cat > ____envvars.yaml <<EOF
|
|
2472
2673
|
ENV_SHORT: |-
|
|
@@ -2476,58 +2677,56 @@ app2 🧪 test:
|
|
|
2476
2677
|
ENV_TYPE: |-
|
|
2477
2678
|
stage
|
|
2478
2679
|
BUILD_INFO_BUILD_ID: |-
|
|
2479
|
-
|
|
2680
|
+
$(printf %s "$(git describe --tags 2>/dev/null || git rev-parse HEAD)" | sed '1!s/^/ /')
|
|
2480
2681
|
BUILD_INFO_BUILD_TIME: |-
|
|
2481
|
-
|
|
2682
|
+
$(printf %s "$CI_JOB_STARTED_AT" | sed '1!s/^/ /')
|
|
2482
2683
|
BUILD_INFO_CURRENT_VERSION: |-
|
|
2483
|
-
|
|
2484
|
-
|
|
2485
|
-
|
|
2684
|
+
$(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/^/ /')
|
|
2685
|
+
HOSTNAME: |-
|
|
2686
|
+
$(printf %s "$(printf %s "pan-test-app-stage-app2-$CL_stage_app2_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')" | sed '1!s/^/ /')
|
|
2486
2687
|
ROOT_URL: |-
|
|
2487
|
-
|
|
2488
|
-
|
|
2489
|
-
|
|
2490
|
-
HOST_CANONICAL: |-
|
|
2491
|
-
$(printf %s "$(printf %s "pan-test-app-stage-app2-$CL_stage_app2_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')" | sed 's/^/ /')
|
|
2688
|
+
$(printf %s "https://$(printf %s "pan-test-app-stage-app2-$CL_stage_app2_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')" | sed '1!s/^/ /')
|
|
2689
|
+
HOSTNAME_INTERNAL: |-
|
|
2690
|
+
$(printf %s "$(printf %s "pan-test-app-stage-app2-$CL_stage_app2_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')" | sed '1!s/^/ /')
|
|
2492
2691
|
ROOT_URL_INTERNAL: |-
|
|
2493
|
-
|
|
2692
|
+
$(printf %s "https://$(printf %s "pan-test-app-stage-app2-$CL_stage_app2_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')" | sed '1!s/^/ /')
|
|
2494
2693
|
DEPLOY_CLOUD_RUN_PROJECT_ID: |-
|
|
2495
2694
|
asdf
|
|
2496
2695
|
DEPLOY_CLOUD_RUN_REGION: |-
|
|
2497
2696
|
asia-east1
|
|
2498
2697
|
GCLOUD_RUN_canonicalHostSuffix: |-
|
|
2499
|
-
|
|
2698
|
+
$(printf %s "$CL_stage_app2_GCLOUD_RUN_canonicalHostSuffix" | sed '1!s/^/ /')
|
|
2500
2699
|
foo: |-
|
|
2501
2700
|
foo-value
|
|
2502
2701
|
multiline: |-
|
|
2503
|
-
|
|
2504
|
-
|
|
2505
|
-
|
|
2506
|
-
|
|
2507
|
-
|
|
2508
|
-
|
|
2509
|
-
|
|
2510
|
-
|
|
2511
|
-
|
|
2512
|
-
|
|
2513
|
-
|
|
2514
|
-
|
|
2515
|
-
|
|
2516
|
-
|
|
2517
|
-
|
|
2702
|
+
app2 yeah
|
|
2703
|
+
app2 yeah2
|
|
2704
|
+
app2 yeah3
|
|
2705
|
+
|
|
2706
|
+
app2 single quote: '
|
|
2707
|
+
app2 doouble quote: "
|
|
2708
|
+
|
|
2709
|
+
the url of self: "$(printf %s "https://$(printf %s "pan-test-app-stage-app2-$CL_stage_app2_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')" | sed '1!s/^/ /')"
|
|
2710
|
+
the url of app1: "$(printf %s "https://$(printf %s "pan-test-app-stage-app1-$CL_stage_app1_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')" | sed '1!s/^/ /')"
|
|
2711
|
+
|
|
2712
|
+
value from app1:
|
|
2713
|
+
-------
|
|
2714
|
+
Unresolvable reference: \${app2:multiline_from_app1}
|
|
2715
|
+
--------
|
|
2716
|
+
|
|
2518
2717
|
_ALL_ENV_VAR_KEYS: |-
|
|
2519
|
-
["ENV_SHORT","APP_DIR","ENV_TYPE","BUILD_INFO_BUILD_ID","BUILD_INFO_BUILD_TIME","BUILD_INFO_CURRENT_VERSION","
|
|
2718
|
+
["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","DEPLOY_CLOUD_RUN_PROJECT_ID","DEPLOY_CLOUD_RUN_REGION","GCLOUD_DEPLOY_credentialsKey","GCLOUD_RUN_canonicalHostSuffix","foo","multiline"]
|
|
2520
2719
|
|
|
2521
2720
|
EOF
|
|
2522
|
-
-
|
|
2523
|
-
-
|
|
2721
|
+
- collapseable_section_end "writeenvvars"
|
|
2722
|
+
- collapseable_section_start "deploy" "Deploy to cloud run"
|
|
2524
2723
|
- gcloud run deploy pan-test-app-stage-app2 --command="yarn,start" --image=asia-east1-docker.pkg.dev/asdf/catladder-deploy/pan-test-app/stage/app2:$DOCKER_IMAGE_TAG --project=asdf --region=asia-east1 --labels=customer-name=pan,component-name=app2,app-name=test-app,env-type=stage,env-name=stage,build-type=node,cloud-run-service-name=pan-test-app-stage-app2 --env-vars-file=____envvars.yaml --min-instances=0 --max-instances=100 --cpu-throttling --allow-unauthenticated --ingress=all --cpu-boost
|
|
2525
|
-
-
|
|
2526
|
-
-
|
|
2724
|
+
- collapseable_section_end "deploy"
|
|
2725
|
+
- collapseable_section_start "cleanup" "Cleanup"
|
|
2527
2726
|
- gcloud run revisions list --project=asdf --region=asia-east1 --service=pan-test-app-stage-app2 --limit=unlimited --sort-by=metadata.creationTimestamp --format="value(name)" --filter='(status.conditions.status=False OR status.conditions.status=Unknown)' | while read -r revisionname; do gcloud run revisions delete --project=asdf --region=asia-east1 --quiet $revisionname ; done
|
|
2528
2727
|
- gcloud artifacts docker images list asia-east1-docker.pkg.dev/asdf/catladder-deploy/pan-test-app/stage/app2 --sort-by=~CREATE_TIME --format="value(version)" | tail -n +2 | while read -r version; do gcloud artifacts docker images delete asia-east1-docker.pkg.dev/asdf/catladder-deploy/pan-test-app/stage/app2@$version --quiet --delete-tags; done
|
|
2529
2728
|
- gcloud artifacts docker images list asia-east1-docker.pkg.dev/asdf/catladder-deploy/pan-test-app/caches/app2 --sort-by=~CREATE_TIME --format="value(version)" | tail -n +2 | while read -r version; do gcloud artifacts docker images delete asia-east1-docker.pkg.dev/asdf/catladder-deploy/pan-test-app/caches/app2@$version --quiet --delete-tags; done
|
|
2530
|
-
-
|
|
2729
|
+
- collapseable_section_end "cleanup"
|
|
2531
2730
|
- echo 'Uploading SBOM to Dependency Track'
|
|
2532
2731
|
- /dtrackuploader https://dep.panter.swiss/ "$DT_KEY_PROD" upload "pan-test-app/app2" "https://$(printf %s "pan-test-app-stage-app2-$CL_stage_app2_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')" "__sbom.json" vex.json || true
|
|
2533
2732
|
- echo "CL_GITLAB_ENVIRONMENT_URL=https://$(printf %s "pan-test-app-stage-app2-$CL_stage_app2_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')" >> gitlab_environment.env
|
|
@@ -2560,9 +2759,9 @@ app2 🧪 test:
|
|
|
2560
2759
|
KUBERNETES_MEMORY_LIMIT: 400Mi
|
|
2561
2760
|
GIT_STRATEGY: none
|
|
2562
2761
|
script:
|
|
2563
|
-
-
|
|
2762
|
+
- collapseable_section_start "injectvars" "Injecting variables"
|
|
2564
2763
|
- export CLOUDSDK_CORE_DISABLE_PROMPTS="1"
|
|
2565
|
-
-
|
|
2764
|
+
- collapseable_section_end "injectvars"
|
|
2566
2765
|
- set +e
|
|
2567
2766
|
- gcloud auth activate-service-account --key-file=<(echo "$CL_stage_app2_GCLOUD_DEPLOY_credentialsKey")
|
|
2568
2767
|
- gcloud run services delete pan-test-app-stage-app2 --project=asdf --region=asia-east1
|
|
@@ -2596,17 +2795,16 @@ app2 🧪 test:
|
|
|
2596
2795
|
KUBERNETES_MEMORY_REQUEST: 1Gi
|
|
2597
2796
|
KUBERNETES_MEMORY_LIMIT: 4Gi
|
|
2598
2797
|
script:
|
|
2599
|
-
-
|
|
2798
|
+
- collapseable_section_start "injectvars" "Injecting variables"
|
|
2600
2799
|
- export ENV_SHORT="prod"
|
|
2601
2800
|
- export APP_DIR="app2"
|
|
2602
2801
|
- export ENV_TYPE="prod"
|
|
2603
2802
|
- export BUILD_INFO_BUILD_ID="$(git describe --tags 2>/dev/null || git rev-parse HEAD)"
|
|
2604
2803
|
- export BUILD_INFO_BUILD_TIME="$CI_JOB_STARTED_AT"
|
|
2605
2804
|
- 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")"
|
|
2606
|
-
- export
|
|
2805
|
+
- export HOSTNAME="$(printf %s "pan-test-app-prod-app2-$CL_prod_app2_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')"
|
|
2607
2806
|
- export ROOT_URL="https://$(printf %s "pan-test-app-prod-app2-$CL_prod_app2_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')"
|
|
2608
|
-
- export
|
|
2609
|
-
- export HOST_CANONICAL="$(printf %s "pan-test-app-prod-app2-$CL_prod_app2_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')"
|
|
2807
|
+
- export HOSTNAME_INTERNAL="$(printf %s "pan-test-app-prod-app2-$CL_prod_app2_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')"
|
|
2610
2808
|
- export ROOT_URL_INTERNAL="https://$(printf %s "pan-test-app-prod-app2-$CL_prod_app2_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')"
|
|
2611
2809
|
- export DEPLOY_CLOUD_RUN_PROJECT_ID="asdf"
|
|
2612
2810
|
- export DEPLOY_CLOUD_RUN_REGION="asia-east1"
|
|
@@ -2626,24 +2824,57 @@ app2 🧪 test:
|
|
|
2626
2824
|
|
|
2627
2825
|
value from app1:
|
|
2628
2826
|
-------
|
|
2629
|
-
\${multiline_from_app1}
|
|
2827
|
+
Unresolvable reference: \${app2:multiline_from_app1}
|
|
2630
2828
|
--------
|
|
2631
2829
|
"
|
|
2632
|
-
- export _ALL_ENV_VAR_KEYS="[\\"ENV_SHORT\\",\\"APP_DIR\\",\\"ENV_TYPE\\",\\"BUILD_INFO_BUILD_ID\\",\\"BUILD_INFO_BUILD_TIME\\",\\"BUILD_INFO_CURRENT_VERSION\\",\\"
|
|
2633
|
-
-
|
|
2830
|
+
- 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\\",\\"DEPLOY_CLOUD_RUN_PROJECT_ID\\",\\"DEPLOY_CLOUD_RUN_REGION\\",\\"GCLOUD_DEPLOY_credentialsKey\\",\\"GCLOUD_RUN_canonicalHostSuffix\\",\\"foo\\",\\"multiline\\"]"
|
|
2831
|
+
- collapseable_section_end "injectvars"
|
|
2832
|
+
- collapseable_section_start "write-dotenv-app2" "write dot env for app2"
|
|
2833
|
+
- |-
|
|
2834
|
+
cat <<EOF > app2/.env
|
|
2835
|
+
ENV_SHORT=prod
|
|
2836
|
+
APP_DIR=app2
|
|
2837
|
+
ENV_TYPE=prod
|
|
2838
|
+
HOSTNAME=$(printf %s "$(printf %s "pan-test-app-prod-app2-$CL_prod_app2_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')" | escapeForDotEnv)
|
|
2839
|
+
ROOT_URL=$(printf %s "https://$(printf %s "pan-test-app-prod-app2-$CL_prod_app2_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')" | escapeForDotEnv)
|
|
2840
|
+
HOSTNAME_INTERNAL=$(printf %s "$(printf %s "pan-test-app-prod-app2-$CL_prod_app2_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')" | escapeForDotEnv)
|
|
2841
|
+
ROOT_URL_INTERNAL=$(printf %s "https://$(printf %s "pan-test-app-prod-app2-$CL_prod_app2_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')" | escapeForDotEnv)
|
|
2842
|
+
DEPLOY_CLOUD_RUN_PROJECT_ID=asdf
|
|
2843
|
+
DEPLOY_CLOUD_RUN_REGION=asia-east1
|
|
2844
|
+
GCLOUD_DEPLOY_credentialsKey=$(printf %s "$CL_prod_app2_GCLOUD_DEPLOY_credentialsKey" | escapeForDotEnv)
|
|
2845
|
+
GCLOUD_RUN_canonicalHostSuffix=$(printf %s "$CL_prod_app2_GCLOUD_RUN_canonicalHostSuffix" | escapeForDotEnv)
|
|
2846
|
+
foo=foo-value
|
|
2847
|
+
multiline=$(printf %s "app2 yeah
|
|
2848
|
+
app2 yeah2
|
|
2849
|
+
app2 yeah3
|
|
2850
|
+
|
|
2851
|
+
app2 single quote: '
|
|
2852
|
+
app2 doouble quote: \\"
|
|
2853
|
+
|
|
2854
|
+
the url of self: \\"https://$(printf %s "pan-test-app-prod-app2-$CL_prod_app2_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')\\"
|
|
2855
|
+
the url of app1: \\"https://$(printf %s "pan-test-app-prod-app1-$CL_prod_app1_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')\\"
|
|
2856
|
+
|
|
2857
|
+
value from app1:
|
|
2858
|
+
-------
|
|
2859
|
+
Unresolvable reference: \${app2:multiline_from_app1}
|
|
2860
|
+
--------
|
|
2861
|
+
" | escapeForDotEnv)
|
|
2862
|
+
_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","DEPLOY_CLOUD_RUN_PROJECT_ID","DEPLOY_CLOUD_RUN_REGION","GCLOUD_DEPLOY_credentialsKey","GCLOUD_RUN_canonicalHostSuffix","foo","multiline"]
|
|
2863
|
+
EOF
|
|
2864
|
+
- collapseable_section_end "write-dotenv-app2"
|
|
2634
2865
|
- echo '{"id":"$(git describe --tags 2>/dev/null || git rev-parse HEAD)","time":"$CI_JOB_STARTED_AT"}' > app2/__build_info.json
|
|
2635
|
-
-
|
|
2866
|
+
- collapseable_section_start "nodeinstall" "Ensure node version"
|
|
2636
2867
|
- if [ -f ~/.nvm/nvm.sh ]; then source ~/.nvm/nvm.sh; fi
|
|
2637
2868
|
- if command -v nvm &> /dev/null && [ -f ./.nvmrc ]; then nvm install; fi
|
|
2638
|
-
-
|
|
2869
|
+
- collapseable_section_end "nodeinstall"
|
|
2639
2870
|
- cd app2
|
|
2640
|
-
-
|
|
2871
|
+
- collapseable_section_start "nodeinstall" "Ensure node version"
|
|
2641
2872
|
- if [ -f ~/.nvm/nvm.sh ]; then source ~/.nvm/nvm.sh; fi
|
|
2642
2873
|
- if command -v nvm &> /dev/null && [ -f ./.nvmrc ]; then nvm install; fi
|
|
2643
|
-
-
|
|
2644
|
-
-
|
|
2874
|
+
- collapseable_section_end "nodeinstall"
|
|
2875
|
+
- collapseable_section_start "yarninstall" "Yarn install"
|
|
2645
2876
|
- yarn install --immutable
|
|
2646
|
-
-
|
|
2877
|
+
- collapseable_section_end "yarninstall"
|
|
2647
2878
|
- yarn build
|
|
2648
2879
|
cache:
|
|
2649
2880
|
- key: app2-yarn
|
|
@@ -2654,15 +2885,13 @@ app2 🧪 test:
|
|
|
2654
2885
|
policy: pull-push
|
|
2655
2886
|
paths:
|
|
2656
2887
|
- app2/node_modules
|
|
2657
|
-
- key: app2-next-cache
|
|
2658
|
-
policy: pull-push
|
|
2659
|
-
paths:
|
|
2660
|
-
- app2/.next/cache
|
|
2661
2888
|
artifacts:
|
|
2662
2889
|
paths:
|
|
2663
2890
|
- app2/__build_info.json
|
|
2664
2891
|
- app2/.next
|
|
2665
2892
|
- app2/dist
|
|
2893
|
+
exclude:
|
|
2894
|
+
- app2/.env
|
|
2666
2895
|
expire_in: 1 day
|
|
2667
2896
|
when: always
|
|
2668
2897
|
reports: {}
|
|
@@ -2688,7 +2917,7 @@ app2 🧪 test:
|
|
|
2688
2917
|
KUBERNETES_MEMORY_REQUEST: 1Gi
|
|
2689
2918
|
KUBERNETES_MEMORY_LIMIT: 2Gi
|
|
2690
2919
|
script:
|
|
2691
|
-
-
|
|
2920
|
+
- collapseable_section_start "injectvars" "Injecting variables"
|
|
2692
2921
|
- export APP_DIR="app2"
|
|
2693
2922
|
- export DOCKER_BUILD_CONTEXT="."
|
|
2694
2923
|
- export DOCKER_REGISTRY="asia-east1-docker.pkg.dev"
|
|
@@ -2704,20 +2933,20 @@ app2 🧪 test:
|
|
|
2704
2933
|
COPY --chown=node:node app2/yarn.lock /app/app2/yarn.lock
|
|
2705
2934
|
COPY --chown=node:node .yarnrc.yml /app/.yarnrc.yml
|
|
2706
2935
|
COPY --chown=node:node .yarn /app/.yarn"
|
|
2707
|
-
-
|
|
2936
|
+
- collapseable_section_end "injectvars"
|
|
2708
2937
|
- ensureNodeDockerfile
|
|
2709
|
-
-
|
|
2938
|
+
- collapseable_section_start "docker-login" "Docker Login"
|
|
2710
2939
|
- gcloud auth activate-service-account --key-file=<(echo "$CL_prod_app2_GCLOUD_DEPLOY_credentialsKey")
|
|
2711
2940
|
- gcloud auth configure-docker asia-east1-docker.pkg.dev
|
|
2712
|
-
-
|
|
2713
|
-
-
|
|
2941
|
+
- collapseable_section_end "docker-login"
|
|
2942
|
+
- collapseable_section_start "docker-build" "Docker build"
|
|
2714
2943
|
- 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
|
|
2715
|
-
-
|
|
2716
|
-
-
|
|
2944
|
+
- collapseable_section_end "docker-build"
|
|
2945
|
+
- collapseable_section_start "docker-push" "Docker push and tag"
|
|
2717
2946
|
- docker push $DOCKER_IMAGE:$DOCKER_IMAGE_TAG
|
|
2718
2947
|
- docker tag $DOCKER_IMAGE:$DOCKER_IMAGE_TAG $DOCKER_CACHE_IMAGE
|
|
2719
2948
|
- docker push $DOCKER_CACHE_IMAGE
|
|
2720
|
-
-
|
|
2949
|
+
- collapseable_section_end "docker-push"
|
|
2721
2950
|
cache:
|
|
2722
2951
|
- key: app2-yarn
|
|
2723
2952
|
policy: pull
|
|
@@ -2734,8 +2963,8 @@ app2 🧪 test:
|
|
|
2734
2963
|
image: aquasec/trivy:0.38.3
|
|
2735
2964
|
variables: {}
|
|
2736
2965
|
script:
|
|
2737
|
-
-
|
|
2738
|
-
-
|
|
2966
|
+
- collapseable_section_start "injectvars" "Injecting variables"
|
|
2967
|
+
- collapseable_section_end "injectvars"
|
|
2739
2968
|
- trivy fs --quiet --format cyclonedx --output "__sbom.json" app2
|
|
2740
2969
|
artifacts:
|
|
2741
2970
|
paths:
|
|
@@ -2754,17 +2983,16 @@ app2 🧪 test:
|
|
|
2754
2983
|
KUBERNETES_MEMORY_REQUEST: 200Mi
|
|
2755
2984
|
KUBERNETES_MEMORY_LIMIT: 400Mi
|
|
2756
2985
|
script:
|
|
2757
|
-
-
|
|
2986
|
+
- collapseable_section_start "injectvars" "Injecting variables"
|
|
2758
2987
|
- export ENV_SHORT="prod"
|
|
2759
2988
|
- export APP_DIR="app2"
|
|
2760
2989
|
- export ENV_TYPE="prod"
|
|
2761
2990
|
- export BUILD_INFO_BUILD_ID="$(git describe --tags 2>/dev/null || git rev-parse HEAD)"
|
|
2762
2991
|
- export BUILD_INFO_BUILD_TIME="$CI_JOB_STARTED_AT"
|
|
2763
2992
|
- 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")"
|
|
2764
|
-
- export
|
|
2993
|
+
- export HOSTNAME="$(printf %s "pan-test-app-prod-app2-$CL_prod_app2_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')"
|
|
2765
2994
|
- export ROOT_URL="https://$(printf %s "pan-test-app-prod-app2-$CL_prod_app2_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')"
|
|
2766
|
-
- export
|
|
2767
|
-
- export HOST_CANONICAL="$(printf %s "pan-test-app-prod-app2-$CL_prod_app2_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')"
|
|
2995
|
+
- export HOSTNAME_INTERNAL="$(printf %s "pan-test-app-prod-app2-$CL_prod_app2_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')"
|
|
2768
2996
|
- export ROOT_URL_INTERNAL="https://$(printf %s "pan-test-app-prod-app2-$CL_prod_app2_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')"
|
|
2769
2997
|
- export DEPLOY_CLOUD_RUN_PROJECT_ID="asdf"
|
|
2770
2998
|
- export DEPLOY_CLOUD_RUN_REGION="asia-east1"
|
|
@@ -2784,22 +3012,22 @@ app2 🧪 test:
|
|
|
2784
3012
|
|
|
2785
3013
|
value from app1:
|
|
2786
3014
|
-------
|
|
2787
|
-
\${multiline_from_app1}
|
|
3015
|
+
Unresolvable reference: \${app2:multiline_from_app1}
|
|
2788
3016
|
--------
|
|
2789
3017
|
"
|
|
2790
|
-
- export _ALL_ENV_VAR_KEYS="[\\"ENV_SHORT\\",\\"APP_DIR\\",\\"ENV_TYPE\\",\\"BUILD_INFO_BUILD_ID\\",\\"BUILD_INFO_BUILD_TIME\\",\\"BUILD_INFO_CURRENT_VERSION\\",\\"
|
|
3018
|
+
- 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\\",\\"DEPLOY_CLOUD_RUN_PROJECT_ID\\",\\"DEPLOY_CLOUD_RUN_REGION\\",\\"GCLOUD_DEPLOY_credentialsKey\\",\\"GCLOUD_RUN_canonicalHostSuffix\\",\\"foo\\",\\"multiline\\"]"
|
|
2791
3019
|
- export DOCKER_REGISTRY="asia-east1-docker.pkg.dev"
|
|
2792
3020
|
- export DOCKER_IMAGE="asia-east1-docker.pkg.dev/asdf/catladder-deploy/pan-test-app/prod/app2"
|
|
2793
3021
|
- export DOCKER_CACHE_IMAGE="asia-east1-docker.pkg.dev/asdf/catladder-deploy/pan-test-app/caches/app2"
|
|
2794
3022
|
- export DOCKER_IMAGE_TAG="$CI_COMMIT_SHA"
|
|
2795
3023
|
- export CLOUDSDK_CORE_DISABLE_PROMPTS="1"
|
|
2796
|
-
-
|
|
2797
|
-
-
|
|
3024
|
+
- collapseable_section_end "injectvars"
|
|
3025
|
+
- collapseable_section_start "prepare" "Prepare..."
|
|
2798
3026
|
- gcloud auth activate-service-account --key-file=<(echo "$CL_prod_app2_GCLOUD_DEPLOY_credentialsKey")
|
|
2799
3027
|
- export GCLOUD_PROJECT_NUMBER=$(gcloud projects describe asdf --format="value(projectNumber)")
|
|
2800
3028
|
- 'echo "GCLOUD_PROJECT_NUMBER: $GCLOUD_PROJECT_NUMBER"'
|
|
2801
|
-
-
|
|
2802
|
-
-
|
|
3029
|
+
- collapseable_section_end "prepare"
|
|
3030
|
+
- collapseable_section_start "writeenvvars" "Write env vars to file"
|
|
2803
3031
|
- |
|
|
2804
3032
|
cat > ____envvars.yaml <<EOF
|
|
2805
3033
|
ENV_SHORT: |-
|
|
@@ -2809,58 +3037,56 @@ app2 🧪 test:
|
|
|
2809
3037
|
ENV_TYPE: |-
|
|
2810
3038
|
prod
|
|
2811
3039
|
BUILD_INFO_BUILD_ID: |-
|
|
2812
|
-
|
|
3040
|
+
$(printf %s "$(git describe --tags 2>/dev/null || git rev-parse HEAD)" | sed '1!s/^/ /')
|
|
2813
3041
|
BUILD_INFO_BUILD_TIME: |-
|
|
2814
|
-
|
|
3042
|
+
$(printf %s "$CI_JOB_STARTED_AT" | sed '1!s/^/ /')
|
|
2815
3043
|
BUILD_INFO_CURRENT_VERSION: |-
|
|
2816
|
-
|
|
2817
|
-
|
|
2818
|
-
|
|
3044
|
+
$(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/^/ /')
|
|
3045
|
+
HOSTNAME: |-
|
|
3046
|
+
$(printf %s "$(printf %s "pan-test-app-prod-app2-$CL_prod_app2_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')" | sed '1!s/^/ /')
|
|
2819
3047
|
ROOT_URL: |-
|
|
2820
|
-
|
|
2821
|
-
|
|
2822
|
-
|
|
2823
|
-
HOST_CANONICAL: |-
|
|
2824
|
-
$(printf %s "$(printf %s "pan-test-app-prod-app2-$CL_prod_app2_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')" | sed 's/^/ /')
|
|
3048
|
+
$(printf %s "https://$(printf %s "pan-test-app-prod-app2-$CL_prod_app2_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')" | sed '1!s/^/ /')
|
|
3049
|
+
HOSTNAME_INTERNAL: |-
|
|
3050
|
+
$(printf %s "$(printf %s "pan-test-app-prod-app2-$CL_prod_app2_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')" | sed '1!s/^/ /')
|
|
2825
3051
|
ROOT_URL_INTERNAL: |-
|
|
2826
|
-
|
|
3052
|
+
$(printf %s "https://$(printf %s "pan-test-app-prod-app2-$CL_prod_app2_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')" | sed '1!s/^/ /')
|
|
2827
3053
|
DEPLOY_CLOUD_RUN_PROJECT_ID: |-
|
|
2828
3054
|
asdf
|
|
2829
3055
|
DEPLOY_CLOUD_RUN_REGION: |-
|
|
2830
3056
|
asia-east1
|
|
2831
3057
|
GCLOUD_RUN_canonicalHostSuffix: |-
|
|
2832
|
-
|
|
3058
|
+
$(printf %s "$CL_prod_app2_GCLOUD_RUN_canonicalHostSuffix" | sed '1!s/^/ /')
|
|
2833
3059
|
foo: |-
|
|
2834
3060
|
foo-value
|
|
2835
3061
|
multiline: |-
|
|
2836
|
-
|
|
2837
|
-
|
|
2838
|
-
|
|
2839
|
-
|
|
2840
|
-
|
|
2841
|
-
|
|
2842
|
-
|
|
2843
|
-
|
|
2844
|
-
|
|
2845
|
-
|
|
2846
|
-
|
|
2847
|
-
|
|
2848
|
-
|
|
2849
|
-
|
|
2850
|
-
|
|
3062
|
+
app2 yeah
|
|
3063
|
+
app2 yeah2
|
|
3064
|
+
app2 yeah3
|
|
3065
|
+
|
|
3066
|
+
app2 single quote: '
|
|
3067
|
+
app2 doouble quote: "
|
|
3068
|
+
|
|
3069
|
+
the url of self: "$(printf %s "https://$(printf %s "pan-test-app-prod-app2-$CL_prod_app2_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')" | sed '1!s/^/ /')"
|
|
3070
|
+
the url of app1: "$(printf %s "https://$(printf %s "pan-test-app-prod-app1-$CL_prod_app1_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')" | sed '1!s/^/ /')"
|
|
3071
|
+
|
|
3072
|
+
value from app1:
|
|
3073
|
+
-------
|
|
3074
|
+
Unresolvable reference: \${app2:multiline_from_app1}
|
|
3075
|
+
--------
|
|
3076
|
+
|
|
2851
3077
|
_ALL_ENV_VAR_KEYS: |-
|
|
2852
|
-
["ENV_SHORT","APP_DIR","ENV_TYPE","BUILD_INFO_BUILD_ID","BUILD_INFO_BUILD_TIME","BUILD_INFO_CURRENT_VERSION","
|
|
3078
|
+
["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","DEPLOY_CLOUD_RUN_PROJECT_ID","DEPLOY_CLOUD_RUN_REGION","GCLOUD_DEPLOY_credentialsKey","GCLOUD_RUN_canonicalHostSuffix","foo","multiline"]
|
|
2853
3079
|
|
|
2854
3080
|
EOF
|
|
2855
|
-
-
|
|
2856
|
-
-
|
|
3081
|
+
- collapseable_section_end "writeenvvars"
|
|
3082
|
+
- collapseable_section_start "deploy" "Deploy to cloud run"
|
|
2857
3083
|
- gcloud run deploy pan-test-app-prod-app2 --command="yarn,start" --image=asia-east1-docker.pkg.dev/asdf/catladder-deploy/pan-test-app/prod/app2:$DOCKER_IMAGE_TAG --project=asdf --region=asia-east1 --labels=customer-name=pan,component-name=app2,app-name=test-app,env-type=prod,env-name=prod,build-type=node,cloud-run-service-name=pan-test-app-prod-app2 --env-vars-file=____envvars.yaml --min-instances=0 --max-instances=100 --cpu-throttling --allow-unauthenticated --ingress=all --cpu-boost
|
|
2858
|
-
-
|
|
2859
|
-
-
|
|
3084
|
+
- collapseable_section_end "deploy"
|
|
3085
|
+
- collapseable_section_start "cleanup" "Cleanup"
|
|
2860
3086
|
- gcloud run revisions list --project=asdf --region=asia-east1 --service=pan-test-app-prod-app2 --limit=unlimited --sort-by=metadata.creationTimestamp --format="value(name)" --filter='(status.conditions.status=False OR status.conditions.status=Unknown)' | tail -n +6 | while read -r revisionname; do gcloud run revisions delete --project=asdf --region=asia-east1 --quiet $revisionname ; done
|
|
2861
3087
|
- gcloud artifacts docker images list asia-east1-docker.pkg.dev/asdf/catladder-deploy/pan-test-app/prod/app2 --sort-by=~CREATE_TIME --format="value(version)" | tail -n +7 | while read -r version; do gcloud artifacts docker images delete asia-east1-docker.pkg.dev/asdf/catladder-deploy/pan-test-app/prod/app2@$version --quiet --delete-tags; done
|
|
2862
3088
|
- gcloud artifacts docker images list asia-east1-docker.pkg.dev/asdf/catladder-deploy/pan-test-app/caches/app2 --sort-by=~CREATE_TIME --format="value(version)" | tail -n +2 | while read -r version; do gcloud artifacts docker images delete asia-east1-docker.pkg.dev/asdf/catladder-deploy/pan-test-app/caches/app2@$version --quiet --delete-tags; done
|
|
2863
|
-
-
|
|
3089
|
+
- collapseable_section_end "cleanup"
|
|
2864
3090
|
- echo 'Uploading SBOM to Dependency Track'
|
|
2865
3091
|
- /dtrackuploader https://dep.panter.swiss/ "$DT_KEY_PROD" upload "pan-test-app/app2" "https://$(printf %s "pan-test-app-prod-app2-$CL_prod_app2_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')" "__sbom.json" vex.json || true
|
|
2866
3092
|
- echo "CL_GITLAB_ENVIRONMENT_URL=https://$(printf %s "pan-test-app-prod-app2-$CL_prod_app2_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')" >> gitlab_environment.env
|
|
@@ -2893,9 +3119,9 @@ app2 🧪 test:
|
|
|
2893
3119
|
KUBERNETES_MEMORY_LIMIT: 400Mi
|
|
2894
3120
|
GIT_STRATEGY: none
|
|
2895
3121
|
script:
|
|
2896
|
-
-
|
|
3122
|
+
- collapseable_section_start "injectvars" "Injecting variables"
|
|
2897
3123
|
- export CLOUDSDK_CORE_DISABLE_PROMPTS="1"
|
|
2898
|
-
-
|
|
3124
|
+
- collapseable_section_end "injectvars"
|
|
2899
3125
|
- set +e
|
|
2900
3126
|
- gcloud auth activate-service-account --key-file=<(echo "$CL_prod_app2_GCLOUD_DEPLOY_credentialsKey")
|
|
2901
3127
|
- gcloud run services delete pan-test-app-prod-app2 --project=asdf --region=asia-east1
|
|
@@ -2929,9 +3155,9 @@ kube 🛡 audit:
|
|
|
2929
3155
|
KUBERNETES_MEMORY_REQUEST: 1Gi
|
|
2930
3156
|
KUBERNETES_MEMORY_LIMIT: 4Gi
|
|
2931
3157
|
script:
|
|
2932
|
-
-
|
|
3158
|
+
- collapseable_section_start "injectvars" "Injecting variables"
|
|
2933
3159
|
- export APP_PATH="kube"
|
|
2934
|
-
-
|
|
3160
|
+
- collapseable_section_end "injectvars"
|
|
2935
3161
|
- cd kube
|
|
2936
3162
|
- yarn npm audit --environment production
|
|
2937
3163
|
rules:
|
|
@@ -2951,21 +3177,21 @@ kube 👮 lint:
|
|
|
2951
3177
|
KUBERNETES_MEMORY_REQUEST: 1Gi
|
|
2952
3178
|
KUBERNETES_MEMORY_LIMIT: 4Gi
|
|
2953
3179
|
script:
|
|
2954
|
-
-
|
|
3180
|
+
- collapseable_section_start "injectvars" "Injecting variables"
|
|
2955
3181
|
- export APP_PATH="kube"
|
|
2956
|
-
-
|
|
2957
|
-
-
|
|
3182
|
+
- collapseable_section_end "injectvars"
|
|
3183
|
+
- collapseable_section_start "nodeinstall" "Ensure node version"
|
|
2958
3184
|
- if [ -f ~/.nvm/nvm.sh ]; then source ~/.nvm/nvm.sh; fi
|
|
2959
3185
|
- if command -v nvm &> /dev/null && [ -f ./.nvmrc ]; then nvm install; fi
|
|
2960
|
-
-
|
|
3186
|
+
- collapseable_section_end "nodeinstall"
|
|
2961
3187
|
- cd kube
|
|
2962
|
-
-
|
|
3188
|
+
- collapseable_section_start "nodeinstall" "Ensure node version"
|
|
2963
3189
|
- if [ -f ~/.nvm/nvm.sh ]; then source ~/.nvm/nvm.sh; fi
|
|
2964
3190
|
- if command -v nvm &> /dev/null && [ -f ./.nvmrc ]; then nvm install; fi
|
|
2965
|
-
-
|
|
2966
|
-
-
|
|
3191
|
+
- collapseable_section_end "nodeinstall"
|
|
3192
|
+
- collapseable_section_start "yarninstall" "Yarn install"
|
|
2967
3193
|
- yarn install --immutable
|
|
2968
|
-
-
|
|
3194
|
+
- collapseable_section_end "yarninstall"
|
|
2969
3195
|
- yarn lint
|
|
2970
3196
|
cache:
|
|
2971
3197
|
- key: kube-yarn
|
|
@@ -2992,21 +3218,21 @@ kube 🧪 test:
|
|
|
2992
3218
|
KUBERNETES_MEMORY_REQUEST: 1Gi
|
|
2993
3219
|
KUBERNETES_MEMORY_LIMIT: 4Gi
|
|
2994
3220
|
script:
|
|
2995
|
-
-
|
|
3221
|
+
- collapseable_section_start "injectvars" "Injecting variables"
|
|
2996
3222
|
- export APP_PATH="kube"
|
|
2997
|
-
-
|
|
2998
|
-
-
|
|
3223
|
+
- collapseable_section_end "injectvars"
|
|
3224
|
+
- collapseable_section_start "nodeinstall" "Ensure node version"
|
|
2999
3225
|
- if [ -f ~/.nvm/nvm.sh ]; then source ~/.nvm/nvm.sh; fi
|
|
3000
3226
|
- if command -v nvm &> /dev/null && [ -f ./.nvmrc ]; then nvm install; fi
|
|
3001
|
-
-
|
|
3227
|
+
- collapseable_section_end "nodeinstall"
|
|
3002
3228
|
- cd kube
|
|
3003
|
-
-
|
|
3229
|
+
- collapseable_section_start "nodeinstall" "Ensure node version"
|
|
3004
3230
|
- if [ -f ~/.nvm/nvm.sh ]; then source ~/.nvm/nvm.sh; fi
|
|
3005
3231
|
- if command -v nvm &> /dev/null && [ -f ./.nvmrc ]; then nvm install; fi
|
|
3006
|
-
-
|
|
3007
|
-
-
|
|
3232
|
+
- collapseable_section_end "nodeinstall"
|
|
3233
|
+
- collapseable_section_start "yarninstall" "Yarn install"
|
|
3008
3234
|
- yarn install --immutable
|
|
3009
|
-
-
|
|
3235
|
+
- collapseable_section_end "yarninstall"
|
|
3010
3236
|
- yarn test
|
|
3011
3237
|
cache:
|
|
3012
3238
|
- key: kube-yarn
|
|
@@ -3033,17 +3259,16 @@ kube 🧪 test:
|
|
|
3033
3259
|
KUBERNETES_MEMORY_REQUEST: 1Gi
|
|
3034
3260
|
KUBERNETES_MEMORY_LIMIT: 4Gi
|
|
3035
3261
|
script:
|
|
3036
|
-
-
|
|
3262
|
+
- collapseable_section_start "injectvars" "Injecting variables"
|
|
3037
3263
|
- export ENV_SHORT="dev"
|
|
3038
3264
|
- export APP_DIR="kube"
|
|
3039
3265
|
- export ENV_TYPE="dev"
|
|
3040
3266
|
- export BUILD_INFO_BUILD_ID="$(git describe --tags 2>/dev/null || git rev-parse HEAD)"
|
|
3041
3267
|
- export BUILD_INFO_BUILD_TIME="$CI_JOB_STARTED_AT"
|
|
3042
3268
|
- 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")"
|
|
3043
|
-
- export
|
|
3269
|
+
- export HOSTNAME="kube.dev.test-app.pan.panter.cloud"
|
|
3044
3270
|
- export ROOT_URL="https://kube.dev.test-app.pan.panter.cloud"
|
|
3045
|
-
- export
|
|
3046
|
-
- export HOST_CANONICAL="kube.dev.test-app.pan.panter.cloud"
|
|
3271
|
+
- export HOSTNAME_INTERNAL="kube.dev.test-app.pan.panter.cloud"
|
|
3047
3272
|
- export ROOT_URL_INTERNAL="https://kube.dev.test-app.pan.panter.cloud"
|
|
3048
3273
|
- export KUBE_NAMESPACE="pan-test-app-dev"
|
|
3049
3274
|
- export KUBE_APP_NAME="kube"
|
|
@@ -3084,21 +3309,71 @@ kube 🧪 test:
|
|
|
3084
3309
|
|
|
3085
3310
|
--------
|
|
3086
3311
|
"
|
|
3087
|
-
- export _ALL_ENV_VAR_KEYS="[\\"ENV_SHORT\\",\\"APP_DIR\\",\\"ENV_TYPE\\",\\"BUILD_INFO_BUILD_ID\\",\\"BUILD_INFO_BUILD_TIME\\",\\"BUILD_INFO_CURRENT_VERSION\\",\\"
|
|
3088
|
-
-
|
|
3312
|
+
- 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\\",\\"multiline_from_app1\\",\\"multiline\\"]"
|
|
3313
|
+
- collapseable_section_end "injectvars"
|
|
3314
|
+
- collapseable_section_start "write-dotenv-kube" "write dot env for kube"
|
|
3315
|
+
- |-
|
|
3316
|
+
cat <<EOF > kube/.env
|
|
3317
|
+
ENV_SHORT=dev
|
|
3318
|
+
APP_DIR=kube
|
|
3319
|
+
ENV_TYPE=dev
|
|
3320
|
+
HOSTNAME=kube.dev.test-app.pan.panter.cloud
|
|
3321
|
+
ROOT_URL=https://kube.dev.test-app.pan.panter.cloud
|
|
3322
|
+
HOSTNAME_INTERNAL=kube.dev.test-app.pan.panter.cloud
|
|
3323
|
+
ROOT_URL_INTERNAL=https://kube.dev.test-app.pan.panter.cloud
|
|
3324
|
+
KUBE_NAMESPACE=pan-test-app-dev
|
|
3325
|
+
KUBE_APP_NAME=kube
|
|
3326
|
+
KUBE_APP_NAME_PREFIX=
|
|
3327
|
+
multiline_from_app1=$(printf %s "app1 line1
|
|
3328
|
+
app1 line2
|
|
3329
|
+
app1 line3
|
|
3330
|
+
|
|
3331
|
+
the url of self: \\"https://$(printf %s "pan-test-app-dev-app1-$CL_dev_app1_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')\\"
|
|
3332
|
+
|
|
3333
|
+
|
|
3334
|
+
app1 single quote: '
|
|
3335
|
+
app1 doouble quote: \\"
|
|
3336
|
+
" | escapeForDotEnv)
|
|
3337
|
+
multiline=$(printf %s "kube yeah
|
|
3338
|
+
kube yeah2
|
|
3339
|
+
kube yeah3
|
|
3340
|
+
|
|
3341
|
+
kube single quote: '
|
|
3342
|
+
kube doouble quote: \\"
|
|
3343
|
+
|
|
3344
|
+
the url of self: \\"https://kube.dev.test-app.pan.panter.cloud\\"
|
|
3345
|
+
the url of app1: \\"https://$(printf %s "pan-test-app-dev-app1-$CL_dev_app1_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')\\"
|
|
3346
|
+
|
|
3347
|
+
value from app1:
|
|
3348
|
+
-------
|
|
3349
|
+
app1 line1
|
|
3350
|
+
app1 line2
|
|
3351
|
+
app1 line3
|
|
3352
|
+
|
|
3353
|
+
the url of self: \\"https://$(printf %s "pan-test-app-dev-app1-$CL_dev_app1_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')\\"
|
|
3354
|
+
|
|
3355
|
+
|
|
3356
|
+
app1 single quote: '
|
|
3357
|
+
app1 doouble quote: \\"
|
|
3358
|
+
|
|
3359
|
+
--------
|
|
3360
|
+
" | escapeForDotEnv)
|
|
3361
|
+
_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","multiline_from_app1","multiline"]
|
|
3362
|
+
EOF
|
|
3363
|
+
- collapseable_section_end "write-dotenv-kube"
|
|
3089
3364
|
- echo '{"id":"$(git describe --tags 2>/dev/null || git rev-parse HEAD)","time":"$CI_JOB_STARTED_AT"}' > kube/__build_info.json
|
|
3090
|
-
-
|
|
3365
|
+
- collapseable_section_start "nodeinstall" "Ensure node version"
|
|
3091
3366
|
- if [ -f ~/.nvm/nvm.sh ]; then source ~/.nvm/nvm.sh; fi
|
|
3092
3367
|
- if command -v nvm &> /dev/null && [ -f ./.nvmrc ]; then nvm install; fi
|
|
3093
|
-
-
|
|
3368
|
+
- collapseable_section_end "nodeinstall"
|
|
3094
3369
|
- cd kube
|
|
3095
|
-
-
|
|
3370
|
+
- collapseable_section_start "nodeinstall" "Ensure node version"
|
|
3096
3371
|
- if [ -f ~/.nvm/nvm.sh ]; then source ~/.nvm/nvm.sh; fi
|
|
3097
3372
|
- if command -v nvm &> /dev/null && [ -f ./.nvmrc ]; then nvm install; fi
|
|
3098
|
-
-
|
|
3099
|
-
-
|
|
3373
|
+
- collapseable_section_end "nodeinstall"
|
|
3374
|
+
- collapseable_section_start "yarninstall" "Yarn install"
|
|
3100
3375
|
- yarn install --immutable
|
|
3101
|
-
-
|
|
3376
|
+
- collapseable_section_end "yarninstall"
|
|
3102
3377
|
- yarn build
|
|
3103
3378
|
cache:
|
|
3104
3379
|
- key: kube-yarn
|
|
@@ -3109,15 +3384,13 @@ kube 🧪 test:
|
|
|
3109
3384
|
policy: pull-push
|
|
3110
3385
|
paths:
|
|
3111
3386
|
- kube/node_modules
|
|
3112
|
-
- key: kube-next-cache
|
|
3113
|
-
policy: pull-push
|
|
3114
|
-
paths:
|
|
3115
|
-
- kube/.next/cache
|
|
3116
3387
|
artifacts:
|
|
3117
3388
|
paths:
|
|
3118
3389
|
- kube/__build_info.json
|
|
3119
3390
|
- kube/.next
|
|
3120
3391
|
- kube/dist
|
|
3392
|
+
exclude:
|
|
3393
|
+
- kube/.env
|
|
3121
3394
|
expire_in: 1 day
|
|
3122
3395
|
when: always
|
|
3123
3396
|
reports: {}
|
|
@@ -3145,7 +3418,7 @@ kube 🧪 test:
|
|
|
3145
3418
|
KUBERNETES_MEMORY_REQUEST: 1Gi
|
|
3146
3419
|
KUBERNETES_MEMORY_LIMIT: 2Gi
|
|
3147
3420
|
script:
|
|
3148
|
-
-
|
|
3421
|
+
- collapseable_section_start "injectvars" "Injecting variables"
|
|
3149
3422
|
- export APP_DIR="kube"
|
|
3150
3423
|
- export DOCKER_BUILD_CONTEXT="."
|
|
3151
3424
|
- export DOCKER_REGISTRY="$CI_REGISTRY"
|
|
@@ -3162,19 +3435,19 @@ kube 🧪 test:
|
|
|
3162
3435
|
COPY --chown=node:node kube/yarn.lock /app/kube/yarn.lock
|
|
3163
3436
|
COPY --chown=node:node .yarnrc.yml /app/.yarnrc.yml
|
|
3164
3437
|
COPY --chown=node:node .yarn /app/.yarn"
|
|
3165
|
-
-
|
|
3438
|
+
- collapseable_section_end "injectvars"
|
|
3166
3439
|
- ensureNodeDockerfile
|
|
3167
|
-
-
|
|
3440
|
+
- collapseable_section_start "docker-login" "Docker Login"
|
|
3168
3441
|
- docker login --username gitlab-ci-token --password $CI_JOB_TOKEN $CI_REGISTRY
|
|
3169
|
-
-
|
|
3170
|
-
-
|
|
3442
|
+
- collapseable_section_end "docker-login"
|
|
3443
|
+
- collapseable_section_start "docker-build" "Docker build"
|
|
3171
3444
|
- 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
|
|
3172
|
-
-
|
|
3173
|
-
-
|
|
3445
|
+
- collapseable_section_end "docker-build"
|
|
3446
|
+
- collapseable_section_start "docker-push" "Docker push and tag"
|
|
3174
3447
|
- docker push $DOCKER_IMAGE:$DOCKER_IMAGE_TAG
|
|
3175
3448
|
- docker tag $DOCKER_IMAGE:$DOCKER_IMAGE_TAG $DOCKER_CACHE_IMAGE
|
|
3176
3449
|
- docker push $DOCKER_CACHE_IMAGE
|
|
3177
|
-
-
|
|
3450
|
+
- collapseable_section_end "docker-push"
|
|
3178
3451
|
cache:
|
|
3179
3452
|
- key: kube-yarn
|
|
3180
3453
|
policy: pull
|
|
@@ -3193,8 +3466,8 @@ kube 🧪 test:
|
|
|
3193
3466
|
image: aquasec/trivy:0.38.3
|
|
3194
3467
|
variables: {}
|
|
3195
3468
|
script:
|
|
3196
|
-
-
|
|
3197
|
-
-
|
|
3469
|
+
- collapseable_section_start "injectvars" "Injecting variables"
|
|
3470
|
+
- collapseable_section_end "injectvars"
|
|
3198
3471
|
- trivy fs --quiet --format cyclonedx --output "__sbom.json" kube
|
|
3199
3472
|
artifacts:
|
|
3200
3473
|
paths:
|
|
@@ -3215,17 +3488,16 @@ kube 🧪 test:
|
|
|
3215
3488
|
KUBERNETES_MEMORY_REQUEST: 200Mi
|
|
3216
3489
|
KUBERNETES_MEMORY_LIMIT: 400Mi
|
|
3217
3490
|
script:
|
|
3218
|
-
-
|
|
3491
|
+
- collapseable_section_start "injectvars" "Injecting variables"
|
|
3219
3492
|
- export ENV_SHORT="dev"
|
|
3220
3493
|
- export APP_DIR="kube"
|
|
3221
3494
|
- export ENV_TYPE="dev"
|
|
3222
3495
|
- export BUILD_INFO_BUILD_ID="$(git describe --tags 2>/dev/null || git rev-parse HEAD)"
|
|
3223
3496
|
- export BUILD_INFO_BUILD_TIME="$CI_JOB_STARTED_AT"
|
|
3224
3497
|
- 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")"
|
|
3225
|
-
- export
|
|
3498
|
+
- export HOSTNAME="kube.dev.test-app.pan.panter.cloud"
|
|
3226
3499
|
- export ROOT_URL="https://kube.dev.test-app.pan.panter.cloud"
|
|
3227
|
-
- export
|
|
3228
|
-
- export HOST_CANONICAL="kube.dev.test-app.pan.panter.cloud"
|
|
3500
|
+
- export HOSTNAME_INTERNAL="kube.dev.test-app.pan.panter.cloud"
|
|
3229
3501
|
- export ROOT_URL_INTERNAL="https://kube.dev.test-app.pan.panter.cloud"
|
|
3230
3502
|
- export KUBE_NAMESPACE="pan-test-app-dev"
|
|
3231
3503
|
- export KUBE_APP_NAME="kube"
|
|
@@ -3266,7 +3538,7 @@ kube 🧪 test:
|
|
|
3266
3538
|
|
|
3267
3539
|
--------
|
|
3268
3540
|
"
|
|
3269
|
-
- export _ALL_ENV_VAR_KEYS="[\\"ENV_SHORT\\",\\"APP_DIR\\",\\"ENV_TYPE\\",\\"BUILD_INFO_BUILD_ID\\",\\"BUILD_INFO_BUILD_TIME\\",\\"BUILD_INFO_CURRENT_VERSION\\",\\"
|
|
3541
|
+
- 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\\",\\"multiline_from_app1\\",\\"multiline\\"]"
|
|
3270
3542
|
- export DOCKER_REGISTRY="$CI_REGISTRY"
|
|
3271
3543
|
- export DOCKER_CACHE_IMAGE="$CI_REGISTRY_IMAGE/caches/kube"
|
|
3272
3544
|
- export DOCKER_IMAGE_NAME="dev/kube"
|
|
@@ -3278,53 +3550,52 @@ kube 🧪 test:
|
|
|
3278
3550
|
- export HELM_GITLAB_CHART_NAME="/helm-charts/the-panter-chart"
|
|
3279
3551
|
- export HELM_ARGS=""
|
|
3280
3552
|
- export COMPONENT_NAME="kube"
|
|
3281
|
-
-
|
|
3282
|
-
- echo -e "\\e[0Ksection_end:$(date +%s):injectvars\\r\\e[0K"
|
|
3553
|
+
- collapseable_section_end "injectvars"
|
|
3283
3554
|
- kubectl config set-cluster "kube-pan-test-app-dev-kube" --server="$CL_dev_kube_KUBE_URL" --certificate-authority <(echo $CL_dev_kube_KUBE_CA_PEM | base64 -d) --embed-certs=true
|
|
3284
3555
|
- kubectl config set-credentials "kube-pan-test-app-dev-kube" --token="$CL_dev_kube_KUBE_TOKEN"
|
|
3285
3556
|
- kubectl config set-context "kube-pan-test-app-dev-kube" --cluster="kube-pan-test-app-dev-kube" --user="kube-pan-test-app-dev-kube" --namespace="pan-test-app-dev"
|
|
3286
3557
|
- kubectl config use-context "kube-pan-test-app-dev-kube"
|
|
3287
|
-
-
|
|
3558
|
+
- collapseable_section_start "writeallvalues" "Write __all_values.yml for helm deployment"
|
|
3288
3559
|
- |
|
|
3289
3560
|
cat > __all_values.yml <<EOF
|
|
3290
3561
|
env:
|
|
3291
3562
|
secret:
|
|
3292
3563
|
multiline_from_app1: |-
|
|
3293
|
-
|
|
3294
|
-
|
|
3295
|
-
|
|
3296
|
-
|
|
3297
|
-
|
|
3298
|
-
|
|
3299
|
-
|
|
3300
|
-
|
|
3301
|
-
|
|
3302
|
-
|
|
3564
|
+
app1 line1
|
|
3565
|
+
app1 line2
|
|
3566
|
+
app1 line3
|
|
3567
|
+
|
|
3568
|
+
the url of self: "$(printf %s "https://$(printf %s "pan-test-app-dev-app1-$CL_dev_app1_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')" | sed '1!s/^/ /')"
|
|
3569
|
+
|
|
3570
|
+
|
|
3571
|
+
app1 single quote: '
|
|
3572
|
+
app1 doouble quote: "
|
|
3573
|
+
|
|
3303
3574
|
multiline: |-
|
|
3304
|
-
|
|
3305
|
-
|
|
3306
|
-
|
|
3307
|
-
|
|
3308
|
-
|
|
3309
|
-
|
|
3310
|
-
|
|
3311
|
-
|
|
3312
|
-
|
|
3313
|
-
|
|
3314
|
-
|
|
3315
|
-
|
|
3316
|
-
|
|
3317
|
-
|
|
3318
|
-
|
|
3319
|
-
|
|
3320
|
-
|
|
3321
|
-
|
|
3322
|
-
|
|
3323
|
-
|
|
3324
|
-
|
|
3325
|
-
|
|
3326
|
-
|
|
3327
|
-
|
|
3575
|
+
kube yeah
|
|
3576
|
+
kube yeah2
|
|
3577
|
+
kube yeah3
|
|
3578
|
+
|
|
3579
|
+
kube single quote: '
|
|
3580
|
+
kube doouble quote: "
|
|
3581
|
+
|
|
3582
|
+
the url of self: "https://kube.dev.test-app.pan.panter.cloud"
|
|
3583
|
+
the url of app1: "$(printf %s "https://$(printf %s "pan-test-app-dev-app1-$CL_dev_app1_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')" | sed '1!s/^/ /')"
|
|
3584
|
+
|
|
3585
|
+
value from app1:
|
|
3586
|
+
-------
|
|
3587
|
+
app1 line1
|
|
3588
|
+
app1 line2
|
|
3589
|
+
app1 line3
|
|
3590
|
+
|
|
3591
|
+
the url of self: "$(printf %s "https://$(printf %s "pan-test-app-dev-app1-$CL_dev_app1_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')" | sed '1!s/^/ /')"
|
|
3592
|
+
|
|
3593
|
+
|
|
3594
|
+
app1 single quote: '
|
|
3595
|
+
app1 doouble quote: "
|
|
3596
|
+
|
|
3597
|
+
--------
|
|
3598
|
+
|
|
3328
3599
|
public:
|
|
3329
3600
|
ENV_SHORT: |-
|
|
3330
3601
|
dev
|
|
@@ -3333,18 +3604,16 @@ kube 🧪 test:
|
|
|
3333
3604
|
ENV_TYPE: |-
|
|
3334
3605
|
dev
|
|
3335
3606
|
BUILD_INFO_BUILD_ID: |-
|
|
3336
|
-
|
|
3607
|
+
$(printf %s "$(git describe --tags 2>/dev/null || git rev-parse HEAD)" | sed '1!s/^/ /')
|
|
3337
3608
|
BUILD_INFO_BUILD_TIME: |-
|
|
3338
|
-
|
|
3609
|
+
$(printf %s "$CI_JOB_STARTED_AT" | sed '1!s/^/ /')
|
|
3339
3610
|
BUILD_INFO_CURRENT_VERSION: |-
|
|
3340
|
-
|
|
3341
|
-
|
|
3611
|
+
$(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/^/ /')
|
|
3612
|
+
HOSTNAME: |-
|
|
3342
3613
|
kube.dev.test-app.pan.panter.cloud
|
|
3343
3614
|
ROOT_URL: |-
|
|
3344
3615
|
https://kube.dev.test-app.pan.panter.cloud
|
|
3345
|
-
|
|
3346
|
-
kube.dev.test-app.pan.panter.cloud
|
|
3347
|
-
HOST_CANONICAL: |-
|
|
3616
|
+
HOSTNAME_INTERNAL: |-
|
|
3348
3617
|
kube.dev.test-app.pan.panter.cloud
|
|
3349
3618
|
ROOT_URL_INTERNAL: |-
|
|
3350
3619
|
https://kube.dev.test-app.pan.panter.cloud
|
|
@@ -3354,7 +3623,7 @@ kube 🧪 test:
|
|
|
3354
3623
|
kube
|
|
3355
3624
|
KUBE_APP_NAME_PREFIX: ""
|
|
3356
3625
|
_ALL_ENV_VAR_KEYS: |-
|
|
3357
|
-
["ENV_SHORT","APP_DIR","ENV_TYPE","BUILD_INFO_BUILD_ID","BUILD_INFO_BUILD_TIME","BUILD_INFO_CURRENT_VERSION","
|
|
3626
|
+
["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","multiline_from_app1","multiline"]
|
|
3358
3627
|
application:
|
|
3359
3628
|
host: |-
|
|
3360
3629
|
kube.dev.test-app.pan.panter.cloud
|
|
@@ -3374,7 +3643,7 @@ kube 🧪 test:
|
|
|
3374
3643
|
__health
|
|
3375
3644
|
|
|
3376
3645
|
EOF
|
|
3377
|
-
-
|
|
3646
|
+
- collapseable_section_end "writeallvalues"
|
|
3378
3647
|
- kubernetesCreateSecret
|
|
3379
3648
|
- kubernetesDeploy
|
|
3380
3649
|
- echo 'Uploading SBOM to Dependency Track'
|
|
@@ -3419,17 +3688,16 @@ kube 🧪 test:
|
|
|
3419
3688
|
KUBERNETES_MEMORY_LIMIT: 400Mi
|
|
3420
3689
|
GIT_STRATEGY: none
|
|
3421
3690
|
script:
|
|
3422
|
-
-
|
|
3691
|
+
- collapseable_section_start "injectvars" "Injecting variables"
|
|
3423
3692
|
- export ENV_SHORT="dev"
|
|
3424
3693
|
- export APP_DIR="kube"
|
|
3425
3694
|
- export ENV_TYPE="dev"
|
|
3426
3695
|
- export BUILD_INFO_BUILD_ID="$(git describe --tags 2>/dev/null || git rev-parse HEAD)"
|
|
3427
3696
|
- export BUILD_INFO_BUILD_TIME="$CI_JOB_STARTED_AT"
|
|
3428
3697
|
- 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")"
|
|
3429
|
-
- export
|
|
3698
|
+
- export HOSTNAME="kube.dev.test-app.pan.panter.cloud"
|
|
3430
3699
|
- export ROOT_URL="https://kube.dev.test-app.pan.panter.cloud"
|
|
3431
|
-
- export
|
|
3432
|
-
- export HOST_CANONICAL="kube.dev.test-app.pan.panter.cloud"
|
|
3700
|
+
- export HOSTNAME_INTERNAL="kube.dev.test-app.pan.panter.cloud"
|
|
3433
3701
|
- export ROOT_URL_INTERNAL="https://kube.dev.test-app.pan.panter.cloud"
|
|
3434
3702
|
- export KUBE_NAMESPACE="pan-test-app-dev"
|
|
3435
3703
|
- export KUBE_APP_NAME="kube"
|
|
@@ -3470,15 +3738,14 @@ kube 🧪 test:
|
|
|
3470
3738
|
|
|
3471
3739
|
--------
|
|
3472
3740
|
"
|
|
3473
|
-
- export _ALL_ENV_VAR_KEYS="[\\"ENV_SHORT\\",\\"APP_DIR\\",\\"ENV_TYPE\\",\\"BUILD_INFO_BUILD_ID\\",\\"BUILD_INFO_BUILD_TIME\\",\\"BUILD_INFO_CURRENT_VERSION\\",\\"
|
|
3741
|
+
- 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\\",\\"multiline_from_app1\\",\\"multiline\\"]"
|
|
3474
3742
|
- export RELEASE_NAME="pan-test-app-dev-kube"
|
|
3475
3743
|
- export HELM_EXPERIMENTAL_OCI="1"
|
|
3476
3744
|
- export KUBE_DOCKER_IMAGE_PULL_SECRET="gitlab-registry-kube"
|
|
3477
3745
|
- export HELM_GITLAB_CHART_NAME="/helm-charts/the-panter-chart"
|
|
3478
3746
|
- export HELM_ARGS=""
|
|
3479
3747
|
- export COMPONENT_NAME="kube"
|
|
3480
|
-
-
|
|
3481
|
-
- echo -e "\\e[0Ksection_end:$(date +%s):injectvars\\r\\e[0K"
|
|
3748
|
+
- collapseable_section_end "injectvars"
|
|
3482
3749
|
- kubectl config set-cluster "kube-pan-test-app-dev-kube" --server="$CL_dev_kube_KUBE_URL" --certificate-authority <(echo $CL_dev_kube_KUBE_CA_PEM | base64 -d) --embed-certs=true
|
|
3483
3750
|
- kubectl config set-credentials "kube-pan-test-app-dev-kube" --token="$CL_dev_kube_KUBE_TOKEN"
|
|
3484
3751
|
- kubectl config set-context "kube-pan-test-app-dev-kube" --cluster="kube-pan-test-app-dev-kube" --user="kube-pan-test-app-dev-kube" --namespace="pan-test-app-dev"
|
|
@@ -3514,17 +3781,16 @@ kube 🧪 test:
|
|
|
3514
3781
|
KUBERNETES_MEMORY_LIMIT: 400Mi
|
|
3515
3782
|
GIT_STRATEGY: none
|
|
3516
3783
|
script:
|
|
3517
|
-
-
|
|
3784
|
+
- collapseable_section_start "injectvars" "Injecting variables"
|
|
3518
3785
|
- export ENV_SHORT="dev"
|
|
3519
3786
|
- export APP_DIR="kube"
|
|
3520
3787
|
- export ENV_TYPE="dev"
|
|
3521
3788
|
- export BUILD_INFO_BUILD_ID="$(git describe --tags 2>/dev/null || git rev-parse HEAD)"
|
|
3522
3789
|
- export BUILD_INFO_BUILD_TIME="$CI_JOB_STARTED_AT"
|
|
3523
3790
|
- 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")"
|
|
3524
|
-
- export
|
|
3791
|
+
- export HOSTNAME="kube.dev.test-app.pan.panter.cloud"
|
|
3525
3792
|
- export ROOT_URL="https://kube.dev.test-app.pan.panter.cloud"
|
|
3526
|
-
- export
|
|
3527
|
-
- export HOST_CANONICAL="kube.dev.test-app.pan.panter.cloud"
|
|
3793
|
+
- export HOSTNAME_INTERNAL="kube.dev.test-app.pan.panter.cloud"
|
|
3528
3794
|
- export ROOT_URL_INTERNAL="https://kube.dev.test-app.pan.panter.cloud"
|
|
3529
3795
|
- export KUBE_NAMESPACE="pan-test-app-dev"
|
|
3530
3796
|
- export KUBE_APP_NAME="kube"
|
|
@@ -3565,15 +3831,14 @@ kube 🧪 test:
|
|
|
3565
3831
|
|
|
3566
3832
|
--------
|
|
3567
3833
|
"
|
|
3568
|
-
- export _ALL_ENV_VAR_KEYS="[\\"ENV_SHORT\\",\\"APP_DIR\\",\\"ENV_TYPE\\",\\"BUILD_INFO_BUILD_ID\\",\\"BUILD_INFO_BUILD_TIME\\",\\"BUILD_INFO_CURRENT_VERSION\\",\\"
|
|
3834
|
+
- 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\\",\\"multiline_from_app1\\",\\"multiline\\"]"
|
|
3569
3835
|
- export RELEASE_NAME="pan-test-app-dev-kube"
|
|
3570
3836
|
- export HELM_EXPERIMENTAL_OCI="1"
|
|
3571
3837
|
- export KUBE_DOCKER_IMAGE_PULL_SECRET="gitlab-registry-kube"
|
|
3572
3838
|
- export HELM_GITLAB_CHART_NAME="/helm-charts/the-panter-chart"
|
|
3573
3839
|
- export HELM_ARGS=""
|
|
3574
3840
|
- export COMPONENT_NAME="kube"
|
|
3575
|
-
-
|
|
3576
|
-
- echo -e "\\e[0Ksection_end:$(date +%s):injectvars\\r\\e[0K"
|
|
3841
|
+
- collapseable_section_end "injectvars"
|
|
3577
3842
|
- kubectl config set-cluster "kube-pan-test-app-dev-kube" --server="$CL_dev_kube_KUBE_URL" --certificate-authority <(echo $CL_dev_kube_KUBE_CA_PEM | base64 -d) --embed-certs=true
|
|
3578
3843
|
- kubectl config set-credentials "kube-pan-test-app-dev-kube" --token="$CL_dev_kube_KUBE_TOKEN"
|
|
3579
3844
|
- kubectl config set-context "kube-pan-test-app-dev-kube" --cluster="kube-pan-test-app-dev-kube" --user="kube-pan-test-app-dev-kube" --namespace="pan-test-app-dev"
|
|
@@ -3604,17 +3869,16 @@ kube 🧪 test:
|
|
|
3604
3869
|
KUBERNETES_MEMORY_REQUEST: 1Gi
|
|
3605
3870
|
KUBERNETES_MEMORY_LIMIT: 4Gi
|
|
3606
3871
|
script:
|
|
3607
|
-
-
|
|
3872
|
+
- collapseable_section_start "injectvars" "Injecting variables"
|
|
3608
3873
|
- export ENV_SHORT="review"
|
|
3609
3874
|
- export APP_DIR="kube"
|
|
3610
3875
|
- export ENV_TYPE="review"
|
|
3611
3876
|
- export BUILD_INFO_BUILD_ID="$(git describe --tags 2>/dev/null || git rev-parse HEAD)"
|
|
3612
3877
|
- export BUILD_INFO_BUILD_TIME="$CI_JOB_STARTED_AT"
|
|
3613
3878
|
- 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")"
|
|
3614
|
-
- export
|
|
3879
|
+
- export HOSTNAME="kube.$([ -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"
|
|
3615
3880
|
- export ROOT_URL="https://kube.$([ -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"
|
|
3616
|
-
- export
|
|
3617
|
-
- export HOST_CANONICAL="kube.$([ -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"
|
|
3881
|
+
- export HOSTNAME_INTERNAL="kube.$([ -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"
|
|
3618
3882
|
- export ROOT_URL_INTERNAL="https://kube.$([ -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"
|
|
3619
3883
|
- export KUBE_NAMESPACE="pan-test-app-review"
|
|
3620
3884
|
- 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"; })-kube"
|
|
@@ -3655,21 +3919,71 @@ kube 🧪 test:
|
|
|
3655
3919
|
|
|
3656
3920
|
--------
|
|
3657
3921
|
"
|
|
3658
|
-
- export _ALL_ENV_VAR_KEYS="[\\"ENV_SHORT\\",\\"APP_DIR\\",\\"ENV_TYPE\\",\\"BUILD_INFO_BUILD_ID\\",\\"BUILD_INFO_BUILD_TIME\\",\\"BUILD_INFO_CURRENT_VERSION\\",\\"
|
|
3659
|
-
-
|
|
3922
|
+
- 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\\",\\"multiline_from_app1\\",\\"multiline\\"]"
|
|
3923
|
+
- collapseable_section_end "injectvars"
|
|
3924
|
+
- collapseable_section_start "write-dotenv-kube" "write dot env for kube"
|
|
3925
|
+
- |-
|
|
3926
|
+
cat <<EOF > kube/.env
|
|
3927
|
+
ENV_SHORT=review
|
|
3928
|
+
APP_DIR=kube
|
|
3929
|
+
ENV_TYPE=review
|
|
3930
|
+
HOSTNAME=$(printf %s "kube.$([ -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)
|
|
3931
|
+
ROOT_URL=$(printf %s "https://kube.$([ -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)
|
|
3932
|
+
HOSTNAME_INTERNAL=$(printf %s "kube.$([ -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)
|
|
3933
|
+
ROOT_URL_INTERNAL=$(printf %s "https://kube.$([ -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)
|
|
3934
|
+
KUBE_NAMESPACE=pan-test-app-review
|
|
3935
|
+
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"; })-kube" | escapeForDotEnv)
|
|
3936
|
+
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)
|
|
3937
|
+
multiline_from_app1=$(printf %s "app1 line1
|
|
3938
|
+
app1 line2
|
|
3939
|
+
app1 line3
|
|
3940
|
+
|
|
3941
|
+
the url of self: \\"https://$(printf %s "pan-test-app-review-$([ -n "$CI_MERGE_REQUEST_IID" ] && echo "mr$CI_MERGE_REQUEST_IID" || { [ -n "$CI_COMMIT_REF_SLUG" ] && echo "$CI_COMMIT_REF_SLUG" || echo "unknown"; })-app1-$CL_review_app1_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')\\"
|
|
3942
|
+
|
|
3943
|
+
|
|
3944
|
+
app1 single quote: '
|
|
3945
|
+
app1 doouble quote: \\"
|
|
3946
|
+
" | escapeForDotEnv)
|
|
3947
|
+
multiline=$(printf %s "kube yeah
|
|
3948
|
+
kube yeah2
|
|
3949
|
+
kube yeah3
|
|
3950
|
+
|
|
3951
|
+
kube single quote: '
|
|
3952
|
+
kube doouble quote: \\"
|
|
3953
|
+
|
|
3954
|
+
the url of self: \\"https://kube.$([ -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\\"
|
|
3955
|
+
the url of app1: \\"https://$(printf %s "pan-test-app-review-$([ -n "$CI_MERGE_REQUEST_IID" ] && echo "mr$CI_MERGE_REQUEST_IID" || { [ -n "$CI_COMMIT_REF_SLUG" ] && echo "$CI_COMMIT_REF_SLUG" || echo "unknown"; })-app1-$CL_review_app1_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')\\"
|
|
3956
|
+
|
|
3957
|
+
value from app1:
|
|
3958
|
+
-------
|
|
3959
|
+
app1 line1
|
|
3960
|
+
app1 line2
|
|
3961
|
+
app1 line3
|
|
3962
|
+
|
|
3963
|
+
the url of self: \\"https://$(printf %s "pan-test-app-review-$([ -n "$CI_MERGE_REQUEST_IID" ] && echo "mr$CI_MERGE_REQUEST_IID" || { [ -n "$CI_COMMIT_REF_SLUG" ] && echo "$CI_COMMIT_REF_SLUG" || echo "unknown"; })-app1-$CL_review_app1_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')\\"
|
|
3964
|
+
|
|
3965
|
+
|
|
3966
|
+
app1 single quote: '
|
|
3967
|
+
app1 doouble quote: \\"
|
|
3968
|
+
|
|
3969
|
+
--------
|
|
3970
|
+
" | escapeForDotEnv)
|
|
3971
|
+
_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","multiline_from_app1","multiline"]
|
|
3972
|
+
EOF
|
|
3973
|
+
- collapseable_section_end "write-dotenv-kube"
|
|
3660
3974
|
- echo '{"id":"$(git describe --tags 2>/dev/null || git rev-parse HEAD)","time":"$CI_JOB_STARTED_AT"}' > kube/__build_info.json
|
|
3661
|
-
-
|
|
3975
|
+
- collapseable_section_start "nodeinstall" "Ensure node version"
|
|
3662
3976
|
- if [ -f ~/.nvm/nvm.sh ]; then source ~/.nvm/nvm.sh; fi
|
|
3663
3977
|
- if command -v nvm &> /dev/null && [ -f ./.nvmrc ]; then nvm install; fi
|
|
3664
|
-
-
|
|
3978
|
+
- collapseable_section_end "nodeinstall"
|
|
3665
3979
|
- cd kube
|
|
3666
|
-
-
|
|
3980
|
+
- collapseable_section_start "nodeinstall" "Ensure node version"
|
|
3667
3981
|
- if [ -f ~/.nvm/nvm.sh ]; then source ~/.nvm/nvm.sh; fi
|
|
3668
3982
|
- if command -v nvm &> /dev/null && [ -f ./.nvmrc ]; then nvm install; fi
|
|
3669
|
-
-
|
|
3670
|
-
-
|
|
3983
|
+
- collapseable_section_end "nodeinstall"
|
|
3984
|
+
- collapseable_section_start "yarninstall" "Yarn install"
|
|
3671
3985
|
- yarn install --immutable
|
|
3672
|
-
-
|
|
3986
|
+
- collapseable_section_end "yarninstall"
|
|
3673
3987
|
- yarn build
|
|
3674
3988
|
cache:
|
|
3675
3989
|
- key: kube-yarn
|
|
@@ -3680,15 +3994,13 @@ kube 🧪 test:
|
|
|
3680
3994
|
policy: pull-push
|
|
3681
3995
|
paths:
|
|
3682
3996
|
- kube/node_modules
|
|
3683
|
-
- key: kube-next-cache
|
|
3684
|
-
policy: pull-push
|
|
3685
|
-
paths:
|
|
3686
|
-
- kube/.next/cache
|
|
3687
3997
|
artifacts:
|
|
3688
3998
|
paths:
|
|
3689
3999
|
- kube/__build_info.json
|
|
3690
4000
|
- kube/.next
|
|
3691
4001
|
- kube/dist
|
|
4002
|
+
exclude:
|
|
4003
|
+
- kube/.env
|
|
3692
4004
|
expire_in: 1 day
|
|
3693
4005
|
when: always
|
|
3694
4006
|
reports: {}
|
|
@@ -3714,7 +4026,7 @@ kube 🧪 test:
|
|
|
3714
4026
|
KUBERNETES_MEMORY_REQUEST: 1Gi
|
|
3715
4027
|
KUBERNETES_MEMORY_LIMIT: 2Gi
|
|
3716
4028
|
script:
|
|
3717
|
-
-
|
|
4029
|
+
- collapseable_section_start "injectvars" "Injecting variables"
|
|
3718
4030
|
- export APP_DIR="kube"
|
|
3719
4031
|
- export DOCKER_BUILD_CONTEXT="."
|
|
3720
4032
|
- export DOCKER_REGISTRY="$CI_REGISTRY"
|
|
@@ -3731,19 +4043,19 @@ kube 🧪 test:
|
|
|
3731
4043
|
COPY --chown=node:node kube/yarn.lock /app/kube/yarn.lock
|
|
3732
4044
|
COPY --chown=node:node .yarnrc.yml /app/.yarnrc.yml
|
|
3733
4045
|
COPY --chown=node:node .yarn /app/.yarn"
|
|
3734
|
-
-
|
|
4046
|
+
- collapseable_section_end "injectvars"
|
|
3735
4047
|
- ensureNodeDockerfile
|
|
3736
|
-
-
|
|
4048
|
+
- collapseable_section_start "docker-login" "Docker Login"
|
|
3737
4049
|
- docker login --username gitlab-ci-token --password $CI_JOB_TOKEN $CI_REGISTRY
|
|
3738
|
-
-
|
|
3739
|
-
-
|
|
4050
|
+
- collapseable_section_end "docker-login"
|
|
4051
|
+
- collapseable_section_start "docker-build" "Docker build"
|
|
3740
4052
|
- 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
|
|
3741
|
-
-
|
|
3742
|
-
-
|
|
4053
|
+
- collapseable_section_end "docker-build"
|
|
4054
|
+
- collapseable_section_start "docker-push" "Docker push and tag"
|
|
3743
4055
|
- docker push $DOCKER_IMAGE:$DOCKER_IMAGE_TAG
|
|
3744
4056
|
- docker tag $DOCKER_IMAGE:$DOCKER_IMAGE_TAG $DOCKER_CACHE_IMAGE
|
|
3745
4057
|
- docker push $DOCKER_CACHE_IMAGE
|
|
3746
|
-
-
|
|
4058
|
+
- collapseable_section_end "docker-push"
|
|
3747
4059
|
cache:
|
|
3748
4060
|
- key: kube-yarn
|
|
3749
4061
|
policy: pull
|
|
@@ -3760,8 +4072,8 @@ kube 🧪 test:
|
|
|
3760
4072
|
image: aquasec/trivy:0.38.3
|
|
3761
4073
|
variables: {}
|
|
3762
4074
|
script:
|
|
3763
|
-
-
|
|
3764
|
-
-
|
|
4075
|
+
- collapseable_section_start "injectvars" "Injecting variables"
|
|
4076
|
+
- collapseable_section_end "injectvars"
|
|
3765
4077
|
- trivy fs --quiet --format cyclonedx --output "__sbom.json" kube
|
|
3766
4078
|
artifacts:
|
|
3767
4079
|
paths:
|
|
@@ -3780,17 +4092,16 @@ kube 🧪 test:
|
|
|
3780
4092
|
KUBERNETES_MEMORY_REQUEST: 200Mi
|
|
3781
4093
|
KUBERNETES_MEMORY_LIMIT: 400Mi
|
|
3782
4094
|
script:
|
|
3783
|
-
-
|
|
4095
|
+
- collapseable_section_start "injectvars" "Injecting variables"
|
|
3784
4096
|
- export ENV_SHORT="review"
|
|
3785
4097
|
- export APP_DIR="kube"
|
|
3786
4098
|
- export ENV_TYPE="review"
|
|
3787
4099
|
- export BUILD_INFO_BUILD_ID="$(git describe --tags 2>/dev/null || git rev-parse HEAD)"
|
|
3788
4100
|
- export BUILD_INFO_BUILD_TIME="$CI_JOB_STARTED_AT"
|
|
3789
4101
|
- 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")"
|
|
3790
|
-
- export
|
|
4102
|
+
- export HOSTNAME="kube.$([ -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"
|
|
3791
4103
|
- export ROOT_URL="https://kube.$([ -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"
|
|
3792
|
-
- export
|
|
3793
|
-
- export HOST_CANONICAL="kube.$([ -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"
|
|
4104
|
+
- export HOSTNAME_INTERNAL="kube.$([ -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"
|
|
3794
4105
|
- export ROOT_URL_INTERNAL="https://kube.$([ -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"
|
|
3795
4106
|
- export KUBE_NAMESPACE="pan-test-app-review"
|
|
3796
4107
|
- 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"; })-kube"
|
|
@@ -3831,7 +4142,7 @@ kube 🧪 test:
|
|
|
3831
4142
|
|
|
3832
4143
|
--------
|
|
3833
4144
|
"
|
|
3834
|
-
- export _ALL_ENV_VAR_KEYS="[\\"ENV_SHORT\\",\\"APP_DIR\\",\\"ENV_TYPE\\",\\"BUILD_INFO_BUILD_ID\\",\\"BUILD_INFO_BUILD_TIME\\",\\"BUILD_INFO_CURRENT_VERSION\\",\\"
|
|
4145
|
+
- 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\\",\\"multiline_from_app1\\",\\"multiline\\"]"
|
|
3835
4146
|
- export DOCKER_REGISTRY="$CI_REGISTRY"
|
|
3836
4147
|
- export DOCKER_CACHE_IMAGE="$CI_REGISTRY_IMAGE/caches/kube"
|
|
3837
4148
|
- export DOCKER_IMAGE_NAME="review/kube"
|
|
@@ -3843,53 +4154,52 @@ kube 🧪 test:
|
|
|
3843
4154
|
- export HELM_GITLAB_CHART_NAME="/helm-charts/the-panter-chart"
|
|
3844
4155
|
- export HELM_ARGS=""
|
|
3845
4156
|
- export COMPONENT_NAME="kube"
|
|
3846
|
-
-
|
|
3847
|
-
- echo -e "\\e[0Ksection_end:$(date +%s):injectvars\\r\\e[0K"
|
|
4157
|
+
- collapseable_section_end "injectvars"
|
|
3848
4158
|
- 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"; })-kube" --server="$CL_review_kube_KUBE_URL" --certificate-authority <(echo $CL_review_kube_KUBE_CA_PEM | base64 -d) --embed-certs=true
|
|
3849
4159
|
- 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"; })-kube" --token="$CL_review_kube_KUBE_TOKEN"
|
|
3850
4160
|
- 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"; })-kube" --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"; })-kube" --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"; })-kube" --namespace="pan-test-app-review"
|
|
3851
4161
|
- 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"; })-kube"
|
|
3852
|
-
-
|
|
4162
|
+
- collapseable_section_start "writeallvalues" "Write __all_values.yml for helm deployment"
|
|
3853
4163
|
- |
|
|
3854
4164
|
cat > __all_values.yml <<EOF
|
|
3855
4165
|
env:
|
|
3856
4166
|
secret:
|
|
3857
4167
|
multiline_from_app1: |-
|
|
3858
|
-
|
|
3859
|
-
|
|
3860
|
-
|
|
3861
|
-
|
|
3862
|
-
|
|
3863
|
-
|
|
3864
|
-
|
|
3865
|
-
|
|
3866
|
-
|
|
3867
|
-
|
|
4168
|
+
app1 line1
|
|
4169
|
+
app1 line2
|
|
4170
|
+
app1 line3
|
|
4171
|
+
|
|
4172
|
+
the url of self: "$(printf %s "https://$(printf %s "pan-test-app-review-$([ -n "$CI_MERGE_REQUEST_IID" ] && echo "mr$CI_MERGE_REQUEST_IID" || { [ -n "$CI_COMMIT_REF_SLUG" ] && echo "$CI_COMMIT_REF_SLUG" || echo "unknown"; })-app1-$CL_review_app1_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')" | sed '1!s/^/ /')"
|
|
4173
|
+
|
|
4174
|
+
|
|
4175
|
+
app1 single quote: '
|
|
4176
|
+
app1 doouble quote: "
|
|
4177
|
+
|
|
3868
4178
|
multiline: |-
|
|
3869
|
-
|
|
3870
|
-
|
|
3871
|
-
|
|
3872
|
-
|
|
3873
|
-
|
|
3874
|
-
|
|
3875
|
-
|
|
3876
|
-
|
|
3877
|
-
|
|
3878
|
-
|
|
3879
|
-
|
|
3880
|
-
|
|
3881
|
-
|
|
3882
|
-
|
|
3883
|
-
|
|
3884
|
-
|
|
3885
|
-
|
|
3886
|
-
|
|
3887
|
-
|
|
3888
|
-
|
|
3889
|
-
|
|
3890
|
-
|
|
3891
|
-
|
|
3892
|
-
|
|
4179
|
+
kube yeah
|
|
4180
|
+
kube yeah2
|
|
4181
|
+
kube yeah3
|
|
4182
|
+
|
|
4183
|
+
kube single quote: '
|
|
4184
|
+
kube doouble quote: "
|
|
4185
|
+
|
|
4186
|
+
the url of self: "$(printf %s "https://kube.$([ -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/^/ /')"
|
|
4187
|
+
the url of app1: "$(printf %s "https://$(printf %s "pan-test-app-review-$([ -n "$CI_MERGE_REQUEST_IID" ] && echo "mr$CI_MERGE_REQUEST_IID" || { [ -n "$CI_COMMIT_REF_SLUG" ] && echo "$CI_COMMIT_REF_SLUG" || echo "unknown"; })-app1-$CL_review_app1_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')" | sed '1!s/^/ /')"
|
|
4188
|
+
|
|
4189
|
+
value from app1:
|
|
4190
|
+
-------
|
|
4191
|
+
app1 line1
|
|
4192
|
+
app1 line2
|
|
4193
|
+
app1 line3
|
|
4194
|
+
|
|
4195
|
+
the url of self: "$(printf %s "https://$(printf %s "pan-test-app-review-$([ -n "$CI_MERGE_REQUEST_IID" ] && echo "mr$CI_MERGE_REQUEST_IID" || { [ -n "$CI_COMMIT_REF_SLUG" ] && echo "$CI_COMMIT_REF_SLUG" || echo "unknown"; })-app1-$CL_review_app1_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')" | sed '1!s/^/ /')"
|
|
4196
|
+
|
|
4197
|
+
|
|
4198
|
+
app1 single quote: '
|
|
4199
|
+
app1 doouble quote: "
|
|
4200
|
+
|
|
4201
|
+
--------
|
|
4202
|
+
|
|
3893
4203
|
public:
|
|
3894
4204
|
ENV_SHORT: |-
|
|
3895
4205
|
review
|
|
@@ -3898,32 +4208,30 @@ kube 🧪 test:
|
|
|
3898
4208
|
ENV_TYPE: |-
|
|
3899
4209
|
review
|
|
3900
4210
|
BUILD_INFO_BUILD_ID: |-
|
|
3901
|
-
|
|
4211
|
+
$(printf %s "$(git describe --tags 2>/dev/null || git rev-parse HEAD)" | sed '1!s/^/ /')
|
|
3902
4212
|
BUILD_INFO_BUILD_TIME: |-
|
|
3903
|
-
|
|
4213
|
+
$(printf %s "$CI_JOB_STARTED_AT" | sed '1!s/^/ /')
|
|
3904
4214
|
BUILD_INFO_CURRENT_VERSION: |-
|
|
3905
|
-
|
|
3906
|
-
|
|
3907
|
-
|
|
4215
|
+
$(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/^/ /')
|
|
4216
|
+
HOSTNAME: |-
|
|
4217
|
+
$(printf %s "kube.$([ -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/^/ /')
|
|
3908
4218
|
ROOT_URL: |-
|
|
3909
|
-
|
|
3910
|
-
|
|
3911
|
-
|
|
3912
|
-
HOST_CANONICAL: |-
|
|
3913
|
-
$(printf %s "kube.$([ -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/^/ /')
|
|
4219
|
+
$(printf %s "https://kube.$([ -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/^/ /')
|
|
4220
|
+
HOSTNAME_INTERNAL: |-
|
|
4221
|
+
$(printf %s "kube.$([ -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/^/ /')
|
|
3914
4222
|
ROOT_URL_INTERNAL: |-
|
|
3915
|
-
|
|
4223
|
+
$(printf %s "https://kube.$([ -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/^/ /')
|
|
3916
4224
|
KUBE_NAMESPACE: |-
|
|
3917
4225
|
pan-test-app-review
|
|
3918
4226
|
KUBE_APP_NAME: |-
|
|
3919
|
-
|
|
4227
|
+
$(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"; })-kube" | sed '1!s/^/ /')
|
|
3920
4228
|
KUBE_APP_NAME_PREFIX: |-
|
|
3921
|
-
|
|
4229
|
+
$(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/^/ /')
|
|
3922
4230
|
_ALL_ENV_VAR_KEYS: |-
|
|
3923
|
-
["ENV_SHORT","APP_DIR","ENV_TYPE","BUILD_INFO_BUILD_ID","BUILD_INFO_BUILD_TIME","BUILD_INFO_CURRENT_VERSION","
|
|
4231
|
+
["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","multiline_from_app1","multiline"]
|
|
3924
4232
|
application:
|
|
3925
4233
|
host: |-
|
|
3926
|
-
|
|
4234
|
+
$(printf %s "kube.$([ -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/^/ /')
|
|
3927
4235
|
command: |-
|
|
3928
4236
|
yarn start
|
|
3929
4237
|
livenessProbe:
|
|
@@ -3940,7 +4248,7 @@ kube 🧪 test:
|
|
|
3940
4248
|
__health
|
|
3941
4249
|
|
|
3942
4250
|
EOF
|
|
3943
|
-
-
|
|
4251
|
+
- collapseable_section_end "writeallvalues"
|
|
3944
4252
|
- kubernetesCreateSecret
|
|
3945
4253
|
- kubernetesDeploy
|
|
3946
4254
|
- echo 'Uploading SBOM to Dependency Track'
|
|
@@ -3983,17 +4291,16 @@ kube 🧪 test:
|
|
|
3983
4291
|
KUBERNETES_MEMORY_LIMIT: 400Mi
|
|
3984
4292
|
GIT_STRATEGY: none
|
|
3985
4293
|
script:
|
|
3986
|
-
-
|
|
4294
|
+
- collapseable_section_start "injectvars" "Injecting variables"
|
|
3987
4295
|
- export ENV_SHORT="review"
|
|
3988
4296
|
- export APP_DIR="kube"
|
|
3989
4297
|
- export ENV_TYPE="review"
|
|
3990
4298
|
- export BUILD_INFO_BUILD_ID="$(git describe --tags 2>/dev/null || git rev-parse HEAD)"
|
|
3991
4299
|
- export BUILD_INFO_BUILD_TIME="$CI_JOB_STARTED_AT"
|
|
3992
4300
|
- 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")"
|
|
3993
|
-
- export
|
|
4301
|
+
- export HOSTNAME="kube.$([ -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"
|
|
3994
4302
|
- export ROOT_URL="https://kube.$([ -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"
|
|
3995
|
-
- export
|
|
3996
|
-
- export HOST_CANONICAL="kube.$([ -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"
|
|
4303
|
+
- export HOSTNAME_INTERNAL="kube.$([ -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"
|
|
3997
4304
|
- export ROOT_URL_INTERNAL="https://kube.$([ -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"
|
|
3998
4305
|
- export KUBE_NAMESPACE="pan-test-app-review"
|
|
3999
4306
|
- 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"; })-kube"
|
|
@@ -4034,15 +4341,14 @@ kube 🧪 test:
|
|
|
4034
4341
|
|
|
4035
4342
|
--------
|
|
4036
4343
|
"
|
|
4037
|
-
- export _ALL_ENV_VAR_KEYS="[\\"ENV_SHORT\\",\\"APP_DIR\\",\\"ENV_TYPE\\",\\"BUILD_INFO_BUILD_ID\\",\\"BUILD_INFO_BUILD_TIME\\",\\"BUILD_INFO_CURRENT_VERSION\\",\\"
|
|
4344
|
+
- 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\\",\\"multiline_from_app1\\",\\"multiline\\"]"
|
|
4038
4345
|
- 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"; })-kube"
|
|
4039
4346
|
- export HELM_EXPERIMENTAL_OCI="1"
|
|
4040
4347
|
- export KUBE_DOCKER_IMAGE_PULL_SECRET="gitlab-registry-kube"
|
|
4041
4348
|
- export HELM_GITLAB_CHART_NAME="/helm-charts/the-panter-chart"
|
|
4042
4349
|
- export HELM_ARGS=""
|
|
4043
4350
|
- export COMPONENT_NAME="kube"
|
|
4044
|
-
-
|
|
4045
|
-
- echo -e "\\e[0Ksection_end:$(date +%s):injectvars\\r\\e[0K"
|
|
4351
|
+
- collapseable_section_end "injectvars"
|
|
4046
4352
|
- 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"; })-kube" --server="$CL_review_kube_KUBE_URL" --certificate-authority <(echo $CL_review_kube_KUBE_CA_PEM | base64 -d) --embed-certs=true
|
|
4047
4353
|
- 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"; })-kube" --token="$CL_review_kube_KUBE_TOKEN"
|
|
4048
4354
|
- 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"; })-kube" --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"; })-kube" --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"; })-kube" --namespace="pan-test-app-review"
|
|
@@ -4076,17 +4382,16 @@ kube 🧪 test:
|
|
|
4076
4382
|
KUBERNETES_MEMORY_LIMIT: 400Mi
|
|
4077
4383
|
GIT_STRATEGY: none
|
|
4078
4384
|
script:
|
|
4079
|
-
-
|
|
4385
|
+
- collapseable_section_start "injectvars" "Injecting variables"
|
|
4080
4386
|
- export ENV_SHORT="review"
|
|
4081
4387
|
- export APP_DIR="kube"
|
|
4082
4388
|
- export ENV_TYPE="review"
|
|
4083
4389
|
- export BUILD_INFO_BUILD_ID="$(git describe --tags 2>/dev/null || git rev-parse HEAD)"
|
|
4084
4390
|
- export BUILD_INFO_BUILD_TIME="$CI_JOB_STARTED_AT"
|
|
4085
4391
|
- 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")"
|
|
4086
|
-
- export
|
|
4392
|
+
- export HOSTNAME="kube.$([ -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"
|
|
4087
4393
|
- export ROOT_URL="https://kube.$([ -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"
|
|
4088
|
-
- export
|
|
4089
|
-
- export HOST_CANONICAL="kube.$([ -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"
|
|
4394
|
+
- export HOSTNAME_INTERNAL="kube.$([ -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"
|
|
4090
4395
|
- export ROOT_URL_INTERNAL="https://kube.$([ -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"
|
|
4091
4396
|
- export KUBE_NAMESPACE="pan-test-app-review"
|
|
4092
4397
|
- 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"; })-kube"
|
|
@@ -4127,15 +4432,14 @@ kube 🧪 test:
|
|
|
4127
4432
|
|
|
4128
4433
|
--------
|
|
4129
4434
|
"
|
|
4130
|
-
- export _ALL_ENV_VAR_KEYS="[\\"ENV_SHORT\\",\\"APP_DIR\\",\\"ENV_TYPE\\",\\"BUILD_INFO_BUILD_ID\\",\\"BUILD_INFO_BUILD_TIME\\",\\"BUILD_INFO_CURRENT_VERSION\\",\\"
|
|
4435
|
+
- 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\\",\\"multiline_from_app1\\",\\"multiline\\"]"
|
|
4131
4436
|
- 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"; })-kube"
|
|
4132
4437
|
- export HELM_EXPERIMENTAL_OCI="1"
|
|
4133
4438
|
- export KUBE_DOCKER_IMAGE_PULL_SECRET="gitlab-registry-kube"
|
|
4134
4439
|
- export HELM_GITLAB_CHART_NAME="/helm-charts/the-panter-chart"
|
|
4135
4440
|
- export HELM_ARGS=""
|
|
4136
4441
|
- export COMPONENT_NAME="kube"
|
|
4137
|
-
-
|
|
4138
|
-
- echo -e "\\e[0Ksection_end:$(date +%s):injectvars\\r\\e[0K"
|
|
4442
|
+
- collapseable_section_end "injectvars"
|
|
4139
4443
|
- 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"; })-kube" --server="$CL_review_kube_KUBE_URL" --certificate-authority <(echo $CL_review_kube_KUBE_CA_PEM | base64 -d) --embed-certs=true
|
|
4140
4444
|
- 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"; })-kube" --token="$CL_review_kube_KUBE_TOKEN"
|
|
4141
4445
|
- 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"; })-kube" --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"; })-kube" --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"; })-kube" --namespace="pan-test-app-review"
|
|
@@ -4164,17 +4468,16 @@ kube 🧪 test:
|
|
|
4164
4468
|
KUBERNETES_MEMORY_REQUEST: 1Gi
|
|
4165
4469
|
KUBERNETES_MEMORY_LIMIT: 4Gi
|
|
4166
4470
|
script:
|
|
4167
|
-
-
|
|
4471
|
+
- collapseable_section_start "injectvars" "Injecting variables"
|
|
4168
4472
|
- export ENV_SHORT="stage"
|
|
4169
4473
|
- export APP_DIR="kube"
|
|
4170
4474
|
- export ENV_TYPE="stage"
|
|
4171
4475
|
- export BUILD_INFO_BUILD_ID="$(git describe --tags 2>/dev/null || git rev-parse HEAD)"
|
|
4172
4476
|
- export BUILD_INFO_BUILD_TIME="$CI_JOB_STARTED_AT"
|
|
4173
4477
|
- 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")"
|
|
4174
|
-
- export
|
|
4478
|
+
- export HOSTNAME="kube.stage.test-app.pan.panter.cloud"
|
|
4175
4479
|
- export ROOT_URL="https://kube.stage.test-app.pan.panter.cloud"
|
|
4176
|
-
- export
|
|
4177
|
-
- export HOST_CANONICAL="kube.stage.test-app.pan.panter.cloud"
|
|
4480
|
+
- export HOSTNAME_INTERNAL="kube.stage.test-app.pan.panter.cloud"
|
|
4178
4481
|
- export ROOT_URL_INTERNAL="https://kube.stage.test-app.pan.panter.cloud"
|
|
4179
4482
|
- export KUBE_NAMESPACE="pan-test-app-stage"
|
|
4180
4483
|
- export KUBE_APP_NAME="kube"
|
|
@@ -4215,21 +4518,71 @@ kube 🧪 test:
|
|
|
4215
4518
|
|
|
4216
4519
|
--------
|
|
4217
4520
|
"
|
|
4218
|
-
- export _ALL_ENV_VAR_KEYS="[\\"ENV_SHORT\\",\\"APP_DIR\\",\\"ENV_TYPE\\",\\"BUILD_INFO_BUILD_ID\\",\\"BUILD_INFO_BUILD_TIME\\",\\"BUILD_INFO_CURRENT_VERSION\\",\\"
|
|
4219
|
-
-
|
|
4521
|
+
- 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\\",\\"multiline_from_app1\\",\\"multiline\\"]"
|
|
4522
|
+
- collapseable_section_end "injectvars"
|
|
4523
|
+
- collapseable_section_start "write-dotenv-kube" "write dot env for kube"
|
|
4524
|
+
- |-
|
|
4525
|
+
cat <<EOF > kube/.env
|
|
4526
|
+
ENV_SHORT=stage
|
|
4527
|
+
APP_DIR=kube
|
|
4528
|
+
ENV_TYPE=stage
|
|
4529
|
+
HOSTNAME=kube.stage.test-app.pan.panter.cloud
|
|
4530
|
+
ROOT_URL=https://kube.stage.test-app.pan.panter.cloud
|
|
4531
|
+
HOSTNAME_INTERNAL=kube.stage.test-app.pan.panter.cloud
|
|
4532
|
+
ROOT_URL_INTERNAL=https://kube.stage.test-app.pan.panter.cloud
|
|
4533
|
+
KUBE_NAMESPACE=pan-test-app-stage
|
|
4534
|
+
KUBE_APP_NAME=kube
|
|
4535
|
+
KUBE_APP_NAME_PREFIX=
|
|
4536
|
+
multiline_from_app1=$(printf %s "app1 line1
|
|
4537
|
+
app1 line2
|
|
4538
|
+
app1 line3
|
|
4539
|
+
|
|
4540
|
+
the url of self: \\"https://$(printf %s "pan-test-app-stage-app1-$CL_stage_app1_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')\\"
|
|
4541
|
+
|
|
4542
|
+
|
|
4543
|
+
app1 single quote: '
|
|
4544
|
+
app1 doouble quote: \\"
|
|
4545
|
+
" | escapeForDotEnv)
|
|
4546
|
+
multiline=$(printf %s "kube yeah
|
|
4547
|
+
kube yeah2
|
|
4548
|
+
kube yeah3
|
|
4549
|
+
|
|
4550
|
+
kube single quote: '
|
|
4551
|
+
kube doouble quote: \\"
|
|
4552
|
+
|
|
4553
|
+
the url of self: \\"https://kube.stage.test-app.pan.panter.cloud\\"
|
|
4554
|
+
the url of app1: \\"https://$(printf %s "pan-test-app-stage-app1-$CL_stage_app1_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')\\"
|
|
4555
|
+
|
|
4556
|
+
value from app1:
|
|
4557
|
+
-------
|
|
4558
|
+
app1 line1
|
|
4559
|
+
app1 line2
|
|
4560
|
+
app1 line3
|
|
4561
|
+
|
|
4562
|
+
the url of self: \\"https://$(printf %s "pan-test-app-stage-app1-$CL_stage_app1_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')\\"
|
|
4563
|
+
|
|
4564
|
+
|
|
4565
|
+
app1 single quote: '
|
|
4566
|
+
app1 doouble quote: \\"
|
|
4567
|
+
|
|
4568
|
+
--------
|
|
4569
|
+
" | escapeForDotEnv)
|
|
4570
|
+
_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","multiline_from_app1","multiline"]
|
|
4571
|
+
EOF
|
|
4572
|
+
- collapseable_section_end "write-dotenv-kube"
|
|
4220
4573
|
- echo '{"id":"$(git describe --tags 2>/dev/null || git rev-parse HEAD)","time":"$CI_JOB_STARTED_AT"}' > kube/__build_info.json
|
|
4221
|
-
-
|
|
4574
|
+
- collapseable_section_start "nodeinstall" "Ensure node version"
|
|
4222
4575
|
- if [ -f ~/.nvm/nvm.sh ]; then source ~/.nvm/nvm.sh; fi
|
|
4223
4576
|
- if command -v nvm &> /dev/null && [ -f ./.nvmrc ]; then nvm install; fi
|
|
4224
|
-
-
|
|
4577
|
+
- collapseable_section_end "nodeinstall"
|
|
4225
4578
|
- cd kube
|
|
4226
|
-
-
|
|
4579
|
+
- collapseable_section_start "nodeinstall" "Ensure node version"
|
|
4227
4580
|
- if [ -f ~/.nvm/nvm.sh ]; then source ~/.nvm/nvm.sh; fi
|
|
4228
4581
|
- if command -v nvm &> /dev/null && [ -f ./.nvmrc ]; then nvm install; fi
|
|
4229
|
-
-
|
|
4230
|
-
-
|
|
4582
|
+
- collapseable_section_end "nodeinstall"
|
|
4583
|
+
- collapseable_section_start "yarninstall" "Yarn install"
|
|
4231
4584
|
- yarn install --immutable
|
|
4232
|
-
-
|
|
4585
|
+
- collapseable_section_end "yarninstall"
|
|
4233
4586
|
- yarn build
|
|
4234
4587
|
cache:
|
|
4235
4588
|
- key: kube-yarn
|
|
@@ -4240,15 +4593,13 @@ kube 🧪 test:
|
|
|
4240
4593
|
policy: pull-push
|
|
4241
4594
|
paths:
|
|
4242
4595
|
- kube/node_modules
|
|
4243
|
-
- key: kube-next-cache
|
|
4244
|
-
policy: pull-push
|
|
4245
|
-
paths:
|
|
4246
|
-
- kube/.next/cache
|
|
4247
4596
|
artifacts:
|
|
4248
4597
|
paths:
|
|
4249
4598
|
- kube/__build_info.json
|
|
4250
4599
|
- kube/.next
|
|
4251
4600
|
- kube/dist
|
|
4601
|
+
exclude:
|
|
4602
|
+
- kube/.env
|
|
4252
4603
|
expire_in: 1 day
|
|
4253
4604
|
when: always
|
|
4254
4605
|
reports: {}
|
|
@@ -4274,7 +4625,7 @@ kube 🧪 test:
|
|
|
4274
4625
|
KUBERNETES_MEMORY_REQUEST: 1Gi
|
|
4275
4626
|
KUBERNETES_MEMORY_LIMIT: 2Gi
|
|
4276
4627
|
script:
|
|
4277
|
-
-
|
|
4628
|
+
- collapseable_section_start "injectvars" "Injecting variables"
|
|
4278
4629
|
- export APP_DIR="kube"
|
|
4279
4630
|
- export DOCKER_BUILD_CONTEXT="."
|
|
4280
4631
|
- export DOCKER_REGISTRY="$CI_REGISTRY"
|
|
@@ -4291,19 +4642,19 @@ kube 🧪 test:
|
|
|
4291
4642
|
COPY --chown=node:node kube/yarn.lock /app/kube/yarn.lock
|
|
4292
4643
|
COPY --chown=node:node .yarnrc.yml /app/.yarnrc.yml
|
|
4293
4644
|
COPY --chown=node:node .yarn /app/.yarn"
|
|
4294
|
-
-
|
|
4645
|
+
- collapseable_section_end "injectvars"
|
|
4295
4646
|
- ensureNodeDockerfile
|
|
4296
|
-
-
|
|
4647
|
+
- collapseable_section_start "docker-login" "Docker Login"
|
|
4297
4648
|
- docker login --username gitlab-ci-token --password $CI_JOB_TOKEN $CI_REGISTRY
|
|
4298
|
-
-
|
|
4299
|
-
-
|
|
4649
|
+
- collapseable_section_end "docker-login"
|
|
4650
|
+
- collapseable_section_start "docker-build" "Docker build"
|
|
4300
4651
|
- 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
|
|
4301
|
-
-
|
|
4302
|
-
-
|
|
4652
|
+
- collapseable_section_end "docker-build"
|
|
4653
|
+
- collapseable_section_start "docker-push" "Docker push and tag"
|
|
4303
4654
|
- docker push $DOCKER_IMAGE:$DOCKER_IMAGE_TAG
|
|
4304
4655
|
- docker tag $DOCKER_IMAGE:$DOCKER_IMAGE_TAG $DOCKER_CACHE_IMAGE
|
|
4305
4656
|
- docker push $DOCKER_CACHE_IMAGE
|
|
4306
|
-
-
|
|
4657
|
+
- collapseable_section_end "docker-push"
|
|
4307
4658
|
cache:
|
|
4308
4659
|
- key: kube-yarn
|
|
4309
4660
|
policy: pull
|
|
@@ -4320,8 +4671,8 @@ kube 🧪 test:
|
|
|
4320
4671
|
image: aquasec/trivy:0.38.3
|
|
4321
4672
|
variables: {}
|
|
4322
4673
|
script:
|
|
4323
|
-
-
|
|
4324
|
-
-
|
|
4674
|
+
- collapseable_section_start "injectvars" "Injecting variables"
|
|
4675
|
+
- collapseable_section_end "injectvars"
|
|
4325
4676
|
- trivy fs --quiet --format cyclonedx --output "__sbom.json" kube
|
|
4326
4677
|
artifacts:
|
|
4327
4678
|
paths:
|
|
@@ -4340,17 +4691,16 @@ kube 🧪 test:
|
|
|
4340
4691
|
KUBERNETES_MEMORY_REQUEST: 200Mi
|
|
4341
4692
|
KUBERNETES_MEMORY_LIMIT: 400Mi
|
|
4342
4693
|
script:
|
|
4343
|
-
-
|
|
4694
|
+
- collapseable_section_start "injectvars" "Injecting variables"
|
|
4344
4695
|
- export ENV_SHORT="stage"
|
|
4345
4696
|
- export APP_DIR="kube"
|
|
4346
4697
|
- export ENV_TYPE="stage"
|
|
4347
4698
|
- export BUILD_INFO_BUILD_ID="$(git describe --tags 2>/dev/null || git rev-parse HEAD)"
|
|
4348
4699
|
- export BUILD_INFO_BUILD_TIME="$CI_JOB_STARTED_AT"
|
|
4349
4700
|
- 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")"
|
|
4350
|
-
- export
|
|
4701
|
+
- export HOSTNAME="kube.stage.test-app.pan.panter.cloud"
|
|
4351
4702
|
- export ROOT_URL="https://kube.stage.test-app.pan.panter.cloud"
|
|
4352
|
-
- export
|
|
4353
|
-
- export HOST_CANONICAL="kube.stage.test-app.pan.panter.cloud"
|
|
4703
|
+
- export HOSTNAME_INTERNAL="kube.stage.test-app.pan.panter.cloud"
|
|
4354
4704
|
- export ROOT_URL_INTERNAL="https://kube.stage.test-app.pan.panter.cloud"
|
|
4355
4705
|
- export KUBE_NAMESPACE="pan-test-app-stage"
|
|
4356
4706
|
- export KUBE_APP_NAME="kube"
|
|
@@ -4391,7 +4741,7 @@ kube 🧪 test:
|
|
|
4391
4741
|
|
|
4392
4742
|
--------
|
|
4393
4743
|
"
|
|
4394
|
-
- export _ALL_ENV_VAR_KEYS="[\\"ENV_SHORT\\",\\"APP_DIR\\",\\"ENV_TYPE\\",\\"BUILD_INFO_BUILD_ID\\",\\"BUILD_INFO_BUILD_TIME\\",\\"BUILD_INFO_CURRENT_VERSION\\",\\"
|
|
4744
|
+
- 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\\",\\"multiline_from_app1\\",\\"multiline\\"]"
|
|
4395
4745
|
- export DOCKER_REGISTRY="$CI_REGISTRY"
|
|
4396
4746
|
- export DOCKER_CACHE_IMAGE="$CI_REGISTRY_IMAGE/caches/kube"
|
|
4397
4747
|
- export DOCKER_IMAGE_NAME="stage/kube"
|
|
@@ -4403,53 +4753,52 @@ kube 🧪 test:
|
|
|
4403
4753
|
- export HELM_GITLAB_CHART_NAME="/helm-charts/the-panter-chart"
|
|
4404
4754
|
- export HELM_ARGS=""
|
|
4405
4755
|
- export COMPONENT_NAME="kube"
|
|
4406
|
-
-
|
|
4407
|
-
- echo -e "\\e[0Ksection_end:$(date +%s):injectvars\\r\\e[0K"
|
|
4756
|
+
- collapseable_section_end "injectvars"
|
|
4408
4757
|
- kubectl config set-cluster "kube-pan-test-app-stage-kube" --server="$CL_stage_kube_KUBE_URL" --certificate-authority <(echo $CL_stage_kube_KUBE_CA_PEM | base64 -d) --embed-certs=true
|
|
4409
4758
|
- kubectl config set-credentials "kube-pan-test-app-stage-kube" --token="$CL_stage_kube_KUBE_TOKEN"
|
|
4410
4759
|
- kubectl config set-context "kube-pan-test-app-stage-kube" --cluster="kube-pan-test-app-stage-kube" --user="kube-pan-test-app-stage-kube" --namespace="pan-test-app-stage"
|
|
4411
4760
|
- kubectl config use-context "kube-pan-test-app-stage-kube"
|
|
4412
|
-
-
|
|
4761
|
+
- collapseable_section_start "writeallvalues" "Write __all_values.yml for helm deployment"
|
|
4413
4762
|
- |
|
|
4414
4763
|
cat > __all_values.yml <<EOF
|
|
4415
4764
|
env:
|
|
4416
4765
|
secret:
|
|
4417
4766
|
multiline_from_app1: |-
|
|
4418
|
-
|
|
4419
|
-
|
|
4420
|
-
|
|
4421
|
-
|
|
4422
|
-
|
|
4423
|
-
|
|
4424
|
-
|
|
4425
|
-
|
|
4426
|
-
|
|
4427
|
-
|
|
4767
|
+
app1 line1
|
|
4768
|
+
app1 line2
|
|
4769
|
+
app1 line3
|
|
4770
|
+
|
|
4771
|
+
the url of self: "$(printf %s "https://$(printf %s "pan-test-app-stage-app1-$CL_stage_app1_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')" | sed '1!s/^/ /')"
|
|
4772
|
+
|
|
4773
|
+
|
|
4774
|
+
app1 single quote: '
|
|
4775
|
+
app1 doouble quote: "
|
|
4776
|
+
|
|
4428
4777
|
multiline: |-
|
|
4429
|
-
|
|
4430
|
-
|
|
4431
|
-
|
|
4432
|
-
|
|
4433
|
-
|
|
4434
|
-
|
|
4435
|
-
|
|
4436
|
-
|
|
4437
|
-
|
|
4438
|
-
|
|
4439
|
-
|
|
4440
|
-
|
|
4441
|
-
|
|
4442
|
-
|
|
4443
|
-
|
|
4444
|
-
|
|
4445
|
-
|
|
4446
|
-
|
|
4447
|
-
|
|
4448
|
-
|
|
4449
|
-
|
|
4450
|
-
|
|
4451
|
-
|
|
4452
|
-
|
|
4778
|
+
kube yeah
|
|
4779
|
+
kube yeah2
|
|
4780
|
+
kube yeah3
|
|
4781
|
+
|
|
4782
|
+
kube single quote: '
|
|
4783
|
+
kube doouble quote: "
|
|
4784
|
+
|
|
4785
|
+
the url of self: "https://kube.stage.test-app.pan.panter.cloud"
|
|
4786
|
+
the url of app1: "$(printf %s "https://$(printf %s "pan-test-app-stage-app1-$CL_stage_app1_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')" | sed '1!s/^/ /')"
|
|
4787
|
+
|
|
4788
|
+
value from app1:
|
|
4789
|
+
-------
|
|
4790
|
+
app1 line1
|
|
4791
|
+
app1 line2
|
|
4792
|
+
app1 line3
|
|
4793
|
+
|
|
4794
|
+
the url of self: "$(printf %s "https://$(printf %s "pan-test-app-stage-app1-$CL_stage_app1_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')" | sed '1!s/^/ /')"
|
|
4795
|
+
|
|
4796
|
+
|
|
4797
|
+
app1 single quote: '
|
|
4798
|
+
app1 doouble quote: "
|
|
4799
|
+
|
|
4800
|
+
--------
|
|
4801
|
+
|
|
4453
4802
|
public:
|
|
4454
4803
|
ENV_SHORT: |-
|
|
4455
4804
|
stage
|
|
@@ -4458,18 +4807,16 @@ kube 🧪 test:
|
|
|
4458
4807
|
ENV_TYPE: |-
|
|
4459
4808
|
stage
|
|
4460
4809
|
BUILD_INFO_BUILD_ID: |-
|
|
4461
|
-
|
|
4810
|
+
$(printf %s "$(git describe --tags 2>/dev/null || git rev-parse HEAD)" | sed '1!s/^/ /')
|
|
4462
4811
|
BUILD_INFO_BUILD_TIME: |-
|
|
4463
|
-
|
|
4812
|
+
$(printf %s "$CI_JOB_STARTED_AT" | sed '1!s/^/ /')
|
|
4464
4813
|
BUILD_INFO_CURRENT_VERSION: |-
|
|
4465
|
-
|
|
4466
|
-
|
|
4814
|
+
$(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/^/ /')
|
|
4815
|
+
HOSTNAME: |-
|
|
4467
4816
|
kube.stage.test-app.pan.panter.cloud
|
|
4468
4817
|
ROOT_URL: |-
|
|
4469
4818
|
https://kube.stage.test-app.pan.panter.cloud
|
|
4470
|
-
|
|
4471
|
-
kube.stage.test-app.pan.panter.cloud
|
|
4472
|
-
HOST_CANONICAL: |-
|
|
4819
|
+
HOSTNAME_INTERNAL: |-
|
|
4473
4820
|
kube.stage.test-app.pan.panter.cloud
|
|
4474
4821
|
ROOT_URL_INTERNAL: |-
|
|
4475
4822
|
https://kube.stage.test-app.pan.panter.cloud
|
|
@@ -4479,7 +4826,7 @@ kube 🧪 test:
|
|
|
4479
4826
|
kube
|
|
4480
4827
|
KUBE_APP_NAME_PREFIX: ""
|
|
4481
4828
|
_ALL_ENV_VAR_KEYS: |-
|
|
4482
|
-
["ENV_SHORT","APP_DIR","ENV_TYPE","BUILD_INFO_BUILD_ID","BUILD_INFO_BUILD_TIME","BUILD_INFO_CURRENT_VERSION","
|
|
4829
|
+
["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","multiline_from_app1","multiline"]
|
|
4483
4830
|
application:
|
|
4484
4831
|
host: |-
|
|
4485
4832
|
kube.stage.test-app.pan.panter.cloud
|
|
@@ -4499,7 +4846,7 @@ kube 🧪 test:
|
|
|
4499
4846
|
__health
|
|
4500
4847
|
|
|
4501
4848
|
EOF
|
|
4502
|
-
-
|
|
4849
|
+
- collapseable_section_end "writeallvalues"
|
|
4503
4850
|
- kubernetesCreateSecret
|
|
4504
4851
|
- kubernetesDeploy
|
|
4505
4852
|
- echo 'Uploading SBOM to Dependency Track'
|
|
@@ -4535,17 +4882,16 @@ kube 🧪 test:
|
|
|
4535
4882
|
KUBERNETES_MEMORY_LIMIT: 400Mi
|
|
4536
4883
|
GIT_STRATEGY: none
|
|
4537
4884
|
script:
|
|
4538
|
-
-
|
|
4885
|
+
- collapseable_section_start "injectvars" "Injecting variables"
|
|
4539
4886
|
- export ENV_SHORT="stage"
|
|
4540
4887
|
- export APP_DIR="kube"
|
|
4541
4888
|
- export ENV_TYPE="stage"
|
|
4542
4889
|
- export BUILD_INFO_BUILD_ID="$(git describe --tags 2>/dev/null || git rev-parse HEAD)"
|
|
4543
4890
|
- export BUILD_INFO_BUILD_TIME="$CI_JOB_STARTED_AT"
|
|
4544
4891
|
- 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")"
|
|
4545
|
-
- export
|
|
4892
|
+
- export HOSTNAME="kube.stage.test-app.pan.panter.cloud"
|
|
4546
4893
|
- export ROOT_URL="https://kube.stage.test-app.pan.panter.cloud"
|
|
4547
|
-
- export
|
|
4548
|
-
- export HOST_CANONICAL="kube.stage.test-app.pan.panter.cloud"
|
|
4894
|
+
- export HOSTNAME_INTERNAL="kube.stage.test-app.pan.panter.cloud"
|
|
4549
4895
|
- export ROOT_URL_INTERNAL="https://kube.stage.test-app.pan.panter.cloud"
|
|
4550
4896
|
- export KUBE_NAMESPACE="pan-test-app-stage"
|
|
4551
4897
|
- export KUBE_APP_NAME="kube"
|
|
@@ -4586,15 +4932,14 @@ kube 🧪 test:
|
|
|
4586
4932
|
|
|
4587
4933
|
--------
|
|
4588
4934
|
"
|
|
4589
|
-
- export _ALL_ENV_VAR_KEYS="[\\"ENV_SHORT\\",\\"APP_DIR\\",\\"ENV_TYPE\\",\\"BUILD_INFO_BUILD_ID\\",\\"BUILD_INFO_BUILD_TIME\\",\\"BUILD_INFO_CURRENT_VERSION\\",\\"
|
|
4935
|
+
- 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\\",\\"multiline_from_app1\\",\\"multiline\\"]"
|
|
4590
4936
|
- export RELEASE_NAME="pan-test-app-stage-kube"
|
|
4591
4937
|
- export HELM_EXPERIMENTAL_OCI="1"
|
|
4592
4938
|
- export KUBE_DOCKER_IMAGE_PULL_SECRET="gitlab-registry-kube"
|
|
4593
4939
|
- export HELM_GITLAB_CHART_NAME="/helm-charts/the-panter-chart"
|
|
4594
4940
|
- export HELM_ARGS=""
|
|
4595
4941
|
- export COMPONENT_NAME="kube"
|
|
4596
|
-
-
|
|
4597
|
-
- echo -e "\\e[0Ksection_end:$(date +%s):injectvars\\r\\e[0K"
|
|
4942
|
+
- collapseable_section_end "injectvars"
|
|
4598
4943
|
- kubectl config set-cluster "kube-pan-test-app-stage-kube" --server="$CL_stage_kube_KUBE_URL" --certificate-authority <(echo $CL_stage_kube_KUBE_CA_PEM | base64 -d) --embed-certs=true
|
|
4599
4944
|
- kubectl config set-credentials "kube-pan-test-app-stage-kube" --token="$CL_stage_kube_KUBE_TOKEN"
|
|
4600
4945
|
- kubectl config set-context "kube-pan-test-app-stage-kube" --cluster="kube-pan-test-app-stage-kube" --user="kube-pan-test-app-stage-kube" --namespace="pan-test-app-stage"
|
|
@@ -4628,17 +4973,16 @@ kube 🧪 test:
|
|
|
4628
4973
|
KUBERNETES_MEMORY_LIMIT: 400Mi
|
|
4629
4974
|
GIT_STRATEGY: none
|
|
4630
4975
|
script:
|
|
4631
|
-
-
|
|
4976
|
+
- collapseable_section_start "injectvars" "Injecting variables"
|
|
4632
4977
|
- export ENV_SHORT="stage"
|
|
4633
4978
|
- export APP_DIR="kube"
|
|
4634
4979
|
- export ENV_TYPE="stage"
|
|
4635
4980
|
- export BUILD_INFO_BUILD_ID="$(git describe --tags 2>/dev/null || git rev-parse HEAD)"
|
|
4636
4981
|
- export BUILD_INFO_BUILD_TIME="$CI_JOB_STARTED_AT"
|
|
4637
4982
|
- 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")"
|
|
4638
|
-
- export
|
|
4983
|
+
- export HOSTNAME="kube.stage.test-app.pan.panter.cloud"
|
|
4639
4984
|
- export ROOT_URL="https://kube.stage.test-app.pan.panter.cloud"
|
|
4640
|
-
- export
|
|
4641
|
-
- export HOST_CANONICAL="kube.stage.test-app.pan.panter.cloud"
|
|
4985
|
+
- export HOSTNAME_INTERNAL="kube.stage.test-app.pan.panter.cloud"
|
|
4642
4986
|
- export ROOT_URL_INTERNAL="https://kube.stage.test-app.pan.panter.cloud"
|
|
4643
4987
|
- export KUBE_NAMESPACE="pan-test-app-stage"
|
|
4644
4988
|
- export KUBE_APP_NAME="kube"
|
|
@@ -4679,15 +5023,14 @@ kube 🧪 test:
|
|
|
4679
5023
|
|
|
4680
5024
|
--------
|
|
4681
5025
|
"
|
|
4682
|
-
- export _ALL_ENV_VAR_KEYS="[\\"ENV_SHORT\\",\\"APP_DIR\\",\\"ENV_TYPE\\",\\"BUILD_INFO_BUILD_ID\\",\\"BUILD_INFO_BUILD_TIME\\",\\"BUILD_INFO_CURRENT_VERSION\\",\\"
|
|
5026
|
+
- 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\\",\\"multiline_from_app1\\",\\"multiline\\"]"
|
|
4683
5027
|
- export RELEASE_NAME="pan-test-app-stage-kube"
|
|
4684
5028
|
- export HELM_EXPERIMENTAL_OCI="1"
|
|
4685
5029
|
- export KUBE_DOCKER_IMAGE_PULL_SECRET="gitlab-registry-kube"
|
|
4686
5030
|
- export HELM_GITLAB_CHART_NAME="/helm-charts/the-panter-chart"
|
|
4687
5031
|
- export HELM_ARGS=""
|
|
4688
5032
|
- export COMPONENT_NAME="kube"
|
|
4689
|
-
-
|
|
4690
|
-
- echo -e "\\e[0Ksection_end:$(date +%s):injectvars\\r\\e[0K"
|
|
5033
|
+
- collapseable_section_end "injectvars"
|
|
4691
5034
|
- kubectl config set-cluster "kube-pan-test-app-stage-kube" --server="$CL_stage_kube_KUBE_URL" --certificate-authority <(echo $CL_stage_kube_KUBE_CA_PEM | base64 -d) --embed-certs=true
|
|
4692
5035
|
- kubectl config set-credentials "kube-pan-test-app-stage-kube" --token="$CL_stage_kube_KUBE_TOKEN"
|
|
4693
5036
|
- kubectl config set-context "kube-pan-test-app-stage-kube" --cluster="kube-pan-test-app-stage-kube" --user="kube-pan-test-app-stage-kube" --namespace="pan-test-app-stage"
|
|
@@ -4716,17 +5059,16 @@ kube 🧪 test:
|
|
|
4716
5059
|
KUBERNETES_MEMORY_REQUEST: 1Gi
|
|
4717
5060
|
KUBERNETES_MEMORY_LIMIT: 4Gi
|
|
4718
5061
|
script:
|
|
4719
|
-
-
|
|
5062
|
+
- collapseable_section_start "injectvars" "Injecting variables"
|
|
4720
5063
|
- export ENV_SHORT="prod"
|
|
4721
5064
|
- export APP_DIR="kube"
|
|
4722
5065
|
- export ENV_TYPE="prod"
|
|
4723
5066
|
- export BUILD_INFO_BUILD_ID="$(git describe --tags 2>/dev/null || git rev-parse HEAD)"
|
|
4724
5067
|
- export BUILD_INFO_BUILD_TIME="$CI_JOB_STARTED_AT"
|
|
4725
5068
|
- 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")"
|
|
4726
|
-
- export
|
|
5069
|
+
- export HOSTNAME="kube.prod.test-app.pan.panter.cloud"
|
|
4727
5070
|
- export ROOT_URL="https://kube.prod.test-app.pan.panter.cloud"
|
|
4728
|
-
- export
|
|
4729
|
-
- export HOST_CANONICAL="kube.prod.test-app.pan.panter.cloud"
|
|
5071
|
+
- export HOSTNAME_INTERNAL="kube.prod.test-app.pan.panter.cloud"
|
|
4730
5072
|
- export ROOT_URL_INTERNAL="https://kube.prod.test-app.pan.panter.cloud"
|
|
4731
5073
|
- export KUBE_NAMESPACE="pan-test-app-prod"
|
|
4732
5074
|
- export KUBE_APP_NAME="kube"
|
|
@@ -4767,21 +5109,71 @@ kube 🧪 test:
|
|
|
4767
5109
|
|
|
4768
5110
|
--------
|
|
4769
5111
|
"
|
|
4770
|
-
- export _ALL_ENV_VAR_KEYS="[\\"ENV_SHORT\\",\\"APP_DIR\\",\\"ENV_TYPE\\",\\"BUILD_INFO_BUILD_ID\\",\\"BUILD_INFO_BUILD_TIME\\",\\"BUILD_INFO_CURRENT_VERSION\\",\\"
|
|
4771
|
-
-
|
|
5112
|
+
- 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\\",\\"multiline_from_app1\\",\\"multiline\\"]"
|
|
5113
|
+
- collapseable_section_end "injectvars"
|
|
5114
|
+
- collapseable_section_start "write-dotenv-kube" "write dot env for kube"
|
|
5115
|
+
- |-
|
|
5116
|
+
cat <<EOF > kube/.env
|
|
5117
|
+
ENV_SHORT=prod
|
|
5118
|
+
APP_DIR=kube
|
|
5119
|
+
ENV_TYPE=prod
|
|
5120
|
+
HOSTNAME=kube.prod.test-app.pan.panter.cloud
|
|
5121
|
+
ROOT_URL=https://kube.prod.test-app.pan.panter.cloud
|
|
5122
|
+
HOSTNAME_INTERNAL=kube.prod.test-app.pan.panter.cloud
|
|
5123
|
+
ROOT_URL_INTERNAL=https://kube.prod.test-app.pan.panter.cloud
|
|
5124
|
+
KUBE_NAMESPACE=pan-test-app-prod
|
|
5125
|
+
KUBE_APP_NAME=kube
|
|
5126
|
+
KUBE_APP_NAME_PREFIX=
|
|
5127
|
+
multiline_from_app1=$(printf %s "app1 line1
|
|
5128
|
+
app1 line2
|
|
5129
|
+
app1 line3
|
|
5130
|
+
|
|
5131
|
+
the url of self: \\"https://$(printf %s "pan-test-app-prod-app1-$CL_prod_app1_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')\\"
|
|
5132
|
+
|
|
5133
|
+
|
|
5134
|
+
app1 single quote: '
|
|
5135
|
+
app1 doouble quote: \\"
|
|
5136
|
+
" | escapeForDotEnv)
|
|
5137
|
+
multiline=$(printf %s "kube yeah
|
|
5138
|
+
kube yeah2
|
|
5139
|
+
kube yeah3
|
|
5140
|
+
|
|
5141
|
+
kube single quote: '
|
|
5142
|
+
kube doouble quote: \\"
|
|
5143
|
+
|
|
5144
|
+
the url of self: \\"https://kube.prod.test-app.pan.panter.cloud\\"
|
|
5145
|
+
the url of app1: \\"https://$(printf %s "pan-test-app-prod-app1-$CL_prod_app1_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')\\"
|
|
5146
|
+
|
|
5147
|
+
value from app1:
|
|
5148
|
+
-------
|
|
5149
|
+
app1 line1
|
|
5150
|
+
app1 line2
|
|
5151
|
+
app1 line3
|
|
5152
|
+
|
|
5153
|
+
the url of self: \\"https://$(printf %s "pan-test-app-prod-app1-$CL_prod_app1_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')\\"
|
|
5154
|
+
|
|
5155
|
+
|
|
5156
|
+
app1 single quote: '
|
|
5157
|
+
app1 doouble quote: \\"
|
|
5158
|
+
|
|
5159
|
+
--------
|
|
5160
|
+
" | escapeForDotEnv)
|
|
5161
|
+
_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","multiline_from_app1","multiline"]
|
|
5162
|
+
EOF
|
|
5163
|
+
- collapseable_section_end "write-dotenv-kube"
|
|
4772
5164
|
- echo '{"id":"$(git describe --tags 2>/dev/null || git rev-parse HEAD)","time":"$CI_JOB_STARTED_AT"}' > kube/__build_info.json
|
|
4773
|
-
-
|
|
5165
|
+
- collapseable_section_start "nodeinstall" "Ensure node version"
|
|
4774
5166
|
- if [ -f ~/.nvm/nvm.sh ]; then source ~/.nvm/nvm.sh; fi
|
|
4775
5167
|
- if command -v nvm &> /dev/null && [ -f ./.nvmrc ]; then nvm install; fi
|
|
4776
|
-
-
|
|
5168
|
+
- collapseable_section_end "nodeinstall"
|
|
4777
5169
|
- cd kube
|
|
4778
|
-
-
|
|
5170
|
+
- collapseable_section_start "nodeinstall" "Ensure node version"
|
|
4779
5171
|
- if [ -f ~/.nvm/nvm.sh ]; then source ~/.nvm/nvm.sh; fi
|
|
4780
5172
|
- if command -v nvm &> /dev/null && [ -f ./.nvmrc ]; then nvm install; fi
|
|
4781
|
-
-
|
|
4782
|
-
-
|
|
5173
|
+
- collapseable_section_end "nodeinstall"
|
|
5174
|
+
- collapseable_section_start "yarninstall" "Yarn install"
|
|
4783
5175
|
- yarn install --immutable
|
|
4784
|
-
-
|
|
5176
|
+
- collapseable_section_end "yarninstall"
|
|
4785
5177
|
- yarn build
|
|
4786
5178
|
cache:
|
|
4787
5179
|
- key: kube-yarn
|
|
@@ -4792,15 +5184,13 @@ kube 🧪 test:
|
|
|
4792
5184
|
policy: pull-push
|
|
4793
5185
|
paths:
|
|
4794
5186
|
- kube/node_modules
|
|
4795
|
-
- key: kube-next-cache
|
|
4796
|
-
policy: pull-push
|
|
4797
|
-
paths:
|
|
4798
|
-
- kube/.next/cache
|
|
4799
5187
|
artifacts:
|
|
4800
5188
|
paths:
|
|
4801
5189
|
- kube/__build_info.json
|
|
4802
5190
|
- kube/.next
|
|
4803
5191
|
- kube/dist
|
|
5192
|
+
exclude:
|
|
5193
|
+
- kube/.env
|
|
4804
5194
|
expire_in: 1 day
|
|
4805
5195
|
when: always
|
|
4806
5196
|
reports: {}
|
|
@@ -4826,7 +5216,7 @@ kube 🧪 test:
|
|
|
4826
5216
|
KUBERNETES_MEMORY_REQUEST: 1Gi
|
|
4827
5217
|
KUBERNETES_MEMORY_LIMIT: 2Gi
|
|
4828
5218
|
script:
|
|
4829
|
-
-
|
|
5219
|
+
- collapseable_section_start "injectvars" "Injecting variables"
|
|
4830
5220
|
- export APP_DIR="kube"
|
|
4831
5221
|
- export DOCKER_BUILD_CONTEXT="."
|
|
4832
5222
|
- export DOCKER_REGISTRY="$CI_REGISTRY"
|
|
@@ -4843,19 +5233,19 @@ kube 🧪 test:
|
|
|
4843
5233
|
COPY --chown=node:node kube/yarn.lock /app/kube/yarn.lock
|
|
4844
5234
|
COPY --chown=node:node .yarnrc.yml /app/.yarnrc.yml
|
|
4845
5235
|
COPY --chown=node:node .yarn /app/.yarn"
|
|
4846
|
-
-
|
|
5236
|
+
- collapseable_section_end "injectvars"
|
|
4847
5237
|
- ensureNodeDockerfile
|
|
4848
|
-
-
|
|
5238
|
+
- collapseable_section_start "docker-login" "Docker Login"
|
|
4849
5239
|
- docker login --username gitlab-ci-token --password $CI_JOB_TOKEN $CI_REGISTRY
|
|
4850
|
-
-
|
|
4851
|
-
-
|
|
5240
|
+
- collapseable_section_end "docker-login"
|
|
5241
|
+
- collapseable_section_start "docker-build" "Docker build"
|
|
4852
5242
|
- 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
|
|
4853
|
-
-
|
|
4854
|
-
-
|
|
5243
|
+
- collapseable_section_end "docker-build"
|
|
5244
|
+
- collapseable_section_start "docker-push" "Docker push and tag"
|
|
4855
5245
|
- docker push $DOCKER_IMAGE:$DOCKER_IMAGE_TAG
|
|
4856
5246
|
- docker tag $DOCKER_IMAGE:$DOCKER_IMAGE_TAG $DOCKER_CACHE_IMAGE
|
|
4857
5247
|
- docker push $DOCKER_CACHE_IMAGE
|
|
4858
|
-
-
|
|
5248
|
+
- collapseable_section_end "docker-push"
|
|
4859
5249
|
cache:
|
|
4860
5250
|
- key: kube-yarn
|
|
4861
5251
|
policy: pull
|
|
@@ -4872,8 +5262,8 @@ kube 🧪 test:
|
|
|
4872
5262
|
image: aquasec/trivy:0.38.3
|
|
4873
5263
|
variables: {}
|
|
4874
5264
|
script:
|
|
4875
|
-
-
|
|
4876
|
-
-
|
|
5265
|
+
- collapseable_section_start "injectvars" "Injecting variables"
|
|
5266
|
+
- collapseable_section_end "injectvars"
|
|
4877
5267
|
- trivy fs --quiet --format cyclonedx --output "__sbom.json" kube
|
|
4878
5268
|
artifacts:
|
|
4879
5269
|
paths:
|
|
@@ -4892,17 +5282,16 @@ kube 🧪 test:
|
|
|
4892
5282
|
KUBERNETES_MEMORY_REQUEST: 200Mi
|
|
4893
5283
|
KUBERNETES_MEMORY_LIMIT: 400Mi
|
|
4894
5284
|
script:
|
|
4895
|
-
-
|
|
5285
|
+
- collapseable_section_start "injectvars" "Injecting variables"
|
|
4896
5286
|
- export ENV_SHORT="prod"
|
|
4897
5287
|
- export APP_DIR="kube"
|
|
4898
5288
|
- export ENV_TYPE="prod"
|
|
4899
5289
|
- export BUILD_INFO_BUILD_ID="$(git describe --tags 2>/dev/null || git rev-parse HEAD)"
|
|
4900
5290
|
- export BUILD_INFO_BUILD_TIME="$CI_JOB_STARTED_AT"
|
|
4901
5291
|
- 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")"
|
|
4902
|
-
- export
|
|
5292
|
+
- export HOSTNAME="kube.prod.test-app.pan.panter.cloud"
|
|
4903
5293
|
- export ROOT_URL="https://kube.prod.test-app.pan.panter.cloud"
|
|
4904
|
-
- export
|
|
4905
|
-
- export HOST_CANONICAL="kube.prod.test-app.pan.panter.cloud"
|
|
5294
|
+
- export HOSTNAME_INTERNAL="kube.prod.test-app.pan.panter.cloud"
|
|
4906
5295
|
- export ROOT_URL_INTERNAL="https://kube.prod.test-app.pan.panter.cloud"
|
|
4907
5296
|
- export KUBE_NAMESPACE="pan-test-app-prod"
|
|
4908
5297
|
- export KUBE_APP_NAME="kube"
|
|
@@ -4943,7 +5332,7 @@ kube 🧪 test:
|
|
|
4943
5332
|
|
|
4944
5333
|
--------
|
|
4945
5334
|
"
|
|
4946
|
-
- export _ALL_ENV_VAR_KEYS="[\\"ENV_SHORT\\",\\"APP_DIR\\",\\"ENV_TYPE\\",\\"BUILD_INFO_BUILD_ID\\",\\"BUILD_INFO_BUILD_TIME\\",\\"BUILD_INFO_CURRENT_VERSION\\",\\"
|
|
5335
|
+
- 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\\",\\"multiline_from_app1\\",\\"multiline\\"]"
|
|
4947
5336
|
- export DOCKER_REGISTRY="$CI_REGISTRY"
|
|
4948
5337
|
- export DOCKER_CACHE_IMAGE="$CI_REGISTRY_IMAGE/caches/kube"
|
|
4949
5338
|
- export DOCKER_IMAGE_NAME="prod/kube"
|
|
@@ -4955,53 +5344,52 @@ kube 🧪 test:
|
|
|
4955
5344
|
- export HELM_GITLAB_CHART_NAME="/helm-charts/the-panter-chart"
|
|
4956
5345
|
- export HELM_ARGS=""
|
|
4957
5346
|
- export COMPONENT_NAME="kube"
|
|
4958
|
-
-
|
|
4959
|
-
- echo -e "\\e[0Ksection_end:$(date +%s):injectvars\\r\\e[0K"
|
|
5347
|
+
- collapseable_section_end "injectvars"
|
|
4960
5348
|
- kubectl config set-cluster "kube-pan-test-app-prod-kube" --server="$CL_prod_kube_KUBE_URL" --certificate-authority <(echo $CL_prod_kube_KUBE_CA_PEM | base64 -d) --embed-certs=true
|
|
4961
5349
|
- kubectl config set-credentials "kube-pan-test-app-prod-kube" --token="$CL_prod_kube_KUBE_TOKEN"
|
|
4962
5350
|
- kubectl config set-context "kube-pan-test-app-prod-kube" --cluster="kube-pan-test-app-prod-kube" --user="kube-pan-test-app-prod-kube" --namespace="pan-test-app-prod"
|
|
4963
5351
|
- kubectl config use-context "kube-pan-test-app-prod-kube"
|
|
4964
|
-
-
|
|
5352
|
+
- collapseable_section_start "writeallvalues" "Write __all_values.yml for helm deployment"
|
|
4965
5353
|
- |
|
|
4966
5354
|
cat > __all_values.yml <<EOF
|
|
4967
5355
|
env:
|
|
4968
5356
|
secret:
|
|
4969
5357
|
multiline_from_app1: |-
|
|
4970
|
-
|
|
4971
|
-
|
|
4972
|
-
|
|
4973
|
-
|
|
4974
|
-
|
|
4975
|
-
|
|
4976
|
-
|
|
4977
|
-
|
|
4978
|
-
|
|
4979
|
-
|
|
5358
|
+
app1 line1
|
|
5359
|
+
app1 line2
|
|
5360
|
+
app1 line3
|
|
5361
|
+
|
|
5362
|
+
the url of self: "$(printf %s "https://$(printf %s "pan-test-app-prod-app1-$CL_prod_app1_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')" | sed '1!s/^/ /')"
|
|
5363
|
+
|
|
5364
|
+
|
|
5365
|
+
app1 single quote: '
|
|
5366
|
+
app1 doouble quote: "
|
|
5367
|
+
|
|
4980
5368
|
multiline: |-
|
|
4981
|
-
|
|
4982
|
-
|
|
4983
|
-
|
|
4984
|
-
|
|
4985
|
-
|
|
4986
|
-
|
|
4987
|
-
|
|
4988
|
-
|
|
4989
|
-
|
|
4990
|
-
|
|
4991
|
-
|
|
4992
|
-
|
|
4993
|
-
|
|
4994
|
-
|
|
4995
|
-
|
|
4996
|
-
|
|
4997
|
-
|
|
4998
|
-
|
|
4999
|
-
|
|
5000
|
-
|
|
5001
|
-
|
|
5002
|
-
|
|
5003
|
-
|
|
5004
|
-
|
|
5369
|
+
kube yeah
|
|
5370
|
+
kube yeah2
|
|
5371
|
+
kube yeah3
|
|
5372
|
+
|
|
5373
|
+
kube single quote: '
|
|
5374
|
+
kube doouble quote: "
|
|
5375
|
+
|
|
5376
|
+
the url of self: "https://kube.prod.test-app.pan.panter.cloud"
|
|
5377
|
+
the url of app1: "$(printf %s "https://$(printf %s "pan-test-app-prod-app1-$CL_prod_app1_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')" | sed '1!s/^/ /')"
|
|
5378
|
+
|
|
5379
|
+
value from app1:
|
|
5380
|
+
-------
|
|
5381
|
+
app1 line1
|
|
5382
|
+
app1 line2
|
|
5383
|
+
app1 line3
|
|
5384
|
+
|
|
5385
|
+
the url of self: "$(printf %s "https://$(printf %s "pan-test-app-prod-app1-$CL_prod_app1_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')" | sed '1!s/^/ /')"
|
|
5386
|
+
|
|
5387
|
+
|
|
5388
|
+
app1 single quote: '
|
|
5389
|
+
app1 doouble quote: "
|
|
5390
|
+
|
|
5391
|
+
--------
|
|
5392
|
+
|
|
5005
5393
|
public:
|
|
5006
5394
|
ENV_SHORT: |-
|
|
5007
5395
|
prod
|
|
@@ -5010,18 +5398,16 @@ kube 🧪 test:
|
|
|
5010
5398
|
ENV_TYPE: |-
|
|
5011
5399
|
prod
|
|
5012
5400
|
BUILD_INFO_BUILD_ID: |-
|
|
5013
|
-
|
|
5401
|
+
$(printf %s "$(git describe --tags 2>/dev/null || git rev-parse HEAD)" | sed '1!s/^/ /')
|
|
5014
5402
|
BUILD_INFO_BUILD_TIME: |-
|
|
5015
|
-
|
|
5403
|
+
$(printf %s "$CI_JOB_STARTED_AT" | sed '1!s/^/ /')
|
|
5016
5404
|
BUILD_INFO_CURRENT_VERSION: |-
|
|
5017
|
-
|
|
5018
|
-
|
|
5405
|
+
$(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/^/ /')
|
|
5406
|
+
HOSTNAME: |-
|
|
5019
5407
|
kube.prod.test-app.pan.panter.cloud
|
|
5020
5408
|
ROOT_URL: |-
|
|
5021
5409
|
https://kube.prod.test-app.pan.panter.cloud
|
|
5022
|
-
|
|
5023
|
-
kube.prod.test-app.pan.panter.cloud
|
|
5024
|
-
HOST_CANONICAL: |-
|
|
5410
|
+
HOSTNAME_INTERNAL: |-
|
|
5025
5411
|
kube.prod.test-app.pan.panter.cloud
|
|
5026
5412
|
ROOT_URL_INTERNAL: |-
|
|
5027
5413
|
https://kube.prod.test-app.pan.panter.cloud
|
|
@@ -5031,7 +5417,7 @@ kube 🧪 test:
|
|
|
5031
5417
|
kube
|
|
5032
5418
|
KUBE_APP_NAME_PREFIX: ""
|
|
5033
5419
|
_ALL_ENV_VAR_KEYS: |-
|
|
5034
|
-
["ENV_SHORT","APP_DIR","ENV_TYPE","BUILD_INFO_BUILD_ID","BUILD_INFO_BUILD_TIME","BUILD_INFO_CURRENT_VERSION","
|
|
5420
|
+
["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","multiline_from_app1","multiline"]
|
|
5035
5421
|
application:
|
|
5036
5422
|
host: |-
|
|
5037
5423
|
kube.prod.test-app.pan.panter.cloud
|
|
@@ -5051,7 +5437,7 @@ kube 🧪 test:
|
|
|
5051
5437
|
__health
|
|
5052
5438
|
|
|
5053
5439
|
EOF
|
|
5054
|
-
-
|
|
5440
|
+
- collapseable_section_end "writeallvalues"
|
|
5055
5441
|
- kubernetesCreateSecret
|
|
5056
5442
|
- kubernetesDeploy
|
|
5057
5443
|
- echo 'Uploading SBOM to Dependency Track'
|
|
@@ -5087,17 +5473,16 @@ kube 🧪 test:
|
|
|
5087
5473
|
KUBERNETES_MEMORY_LIMIT: 400Mi
|
|
5088
5474
|
GIT_STRATEGY: none
|
|
5089
5475
|
script:
|
|
5090
|
-
-
|
|
5476
|
+
- collapseable_section_start "injectvars" "Injecting variables"
|
|
5091
5477
|
- export ENV_SHORT="prod"
|
|
5092
5478
|
- export APP_DIR="kube"
|
|
5093
5479
|
- export ENV_TYPE="prod"
|
|
5094
5480
|
- export BUILD_INFO_BUILD_ID="$(git describe --tags 2>/dev/null || git rev-parse HEAD)"
|
|
5095
5481
|
- export BUILD_INFO_BUILD_TIME="$CI_JOB_STARTED_AT"
|
|
5096
5482
|
- 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")"
|
|
5097
|
-
- export
|
|
5483
|
+
- export HOSTNAME="kube.prod.test-app.pan.panter.cloud"
|
|
5098
5484
|
- export ROOT_URL="https://kube.prod.test-app.pan.panter.cloud"
|
|
5099
|
-
- export
|
|
5100
|
-
- export HOST_CANONICAL="kube.prod.test-app.pan.panter.cloud"
|
|
5485
|
+
- export HOSTNAME_INTERNAL="kube.prod.test-app.pan.panter.cloud"
|
|
5101
5486
|
- export ROOT_URL_INTERNAL="https://kube.prod.test-app.pan.panter.cloud"
|
|
5102
5487
|
- export KUBE_NAMESPACE="pan-test-app-prod"
|
|
5103
5488
|
- export KUBE_APP_NAME="kube"
|
|
@@ -5138,15 +5523,14 @@ kube 🧪 test:
|
|
|
5138
5523
|
|
|
5139
5524
|
--------
|
|
5140
5525
|
"
|
|
5141
|
-
- export _ALL_ENV_VAR_KEYS="[\\"ENV_SHORT\\",\\"APP_DIR\\",\\"ENV_TYPE\\",\\"BUILD_INFO_BUILD_ID\\",\\"BUILD_INFO_BUILD_TIME\\",\\"BUILD_INFO_CURRENT_VERSION\\",\\"
|
|
5526
|
+
- 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\\",\\"multiline_from_app1\\",\\"multiline\\"]"
|
|
5142
5527
|
- export RELEASE_NAME="pan-test-app-prod-kube"
|
|
5143
5528
|
- export HELM_EXPERIMENTAL_OCI="1"
|
|
5144
5529
|
- export KUBE_DOCKER_IMAGE_PULL_SECRET="gitlab-registry-kube"
|
|
5145
5530
|
- export HELM_GITLAB_CHART_NAME="/helm-charts/the-panter-chart"
|
|
5146
5531
|
- export HELM_ARGS=""
|
|
5147
5532
|
- export COMPONENT_NAME="kube"
|
|
5148
|
-
-
|
|
5149
|
-
- echo -e "\\e[0Ksection_end:$(date +%s):injectvars\\r\\e[0K"
|
|
5533
|
+
- collapseable_section_end "injectvars"
|
|
5150
5534
|
- kubectl config set-cluster "kube-pan-test-app-prod-kube" --server="$CL_prod_kube_KUBE_URL" --certificate-authority <(echo $CL_prod_kube_KUBE_CA_PEM | base64 -d) --embed-certs=true
|
|
5151
5535
|
- kubectl config set-credentials "kube-pan-test-app-prod-kube" --token="$CL_prod_kube_KUBE_TOKEN"
|
|
5152
5536
|
- kubectl config set-context "kube-pan-test-app-prod-kube" --cluster="kube-pan-test-app-prod-kube" --user="kube-pan-test-app-prod-kube" --namespace="pan-test-app-prod"
|
|
@@ -5180,17 +5564,16 @@ kube 🧪 test:
|
|
|
5180
5564
|
KUBERNETES_MEMORY_LIMIT: 400Mi
|
|
5181
5565
|
GIT_STRATEGY: none
|
|
5182
5566
|
script:
|
|
5183
|
-
-
|
|
5567
|
+
- collapseable_section_start "injectvars" "Injecting variables"
|
|
5184
5568
|
- export ENV_SHORT="prod"
|
|
5185
5569
|
- export APP_DIR="kube"
|
|
5186
5570
|
- export ENV_TYPE="prod"
|
|
5187
5571
|
- export BUILD_INFO_BUILD_ID="$(git describe --tags 2>/dev/null || git rev-parse HEAD)"
|
|
5188
5572
|
- export BUILD_INFO_BUILD_TIME="$CI_JOB_STARTED_AT"
|
|
5189
5573
|
- 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")"
|
|
5190
|
-
- export
|
|
5574
|
+
- export HOSTNAME="kube.prod.test-app.pan.panter.cloud"
|
|
5191
5575
|
- export ROOT_URL="https://kube.prod.test-app.pan.panter.cloud"
|
|
5192
|
-
- export
|
|
5193
|
-
- export HOST_CANONICAL="kube.prod.test-app.pan.panter.cloud"
|
|
5576
|
+
- export HOSTNAME_INTERNAL="kube.prod.test-app.pan.panter.cloud"
|
|
5194
5577
|
- export ROOT_URL_INTERNAL="https://kube.prod.test-app.pan.panter.cloud"
|
|
5195
5578
|
- export KUBE_NAMESPACE="pan-test-app-prod"
|
|
5196
5579
|
- export KUBE_APP_NAME="kube"
|
|
@@ -5231,15 +5614,14 @@ kube 🧪 test:
|
|
|
5231
5614
|
|
|
5232
5615
|
--------
|
|
5233
5616
|
"
|
|
5234
|
-
- export _ALL_ENV_VAR_KEYS="[\\"ENV_SHORT\\",\\"APP_DIR\\",\\"ENV_TYPE\\",\\"BUILD_INFO_BUILD_ID\\",\\"BUILD_INFO_BUILD_TIME\\",\\"BUILD_INFO_CURRENT_VERSION\\",\\"
|
|
5617
|
+
- 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\\",\\"multiline_from_app1\\",\\"multiline\\"]"
|
|
5235
5618
|
- export RELEASE_NAME="pan-test-app-prod-kube"
|
|
5236
5619
|
- export HELM_EXPERIMENTAL_OCI="1"
|
|
5237
5620
|
- export KUBE_DOCKER_IMAGE_PULL_SECRET="gitlab-registry-kube"
|
|
5238
5621
|
- export HELM_GITLAB_CHART_NAME="/helm-charts/the-panter-chart"
|
|
5239
5622
|
- export HELM_ARGS=""
|
|
5240
5623
|
- export COMPONENT_NAME="kube"
|
|
5241
|
-
-
|
|
5242
|
-
- echo -e "\\e[0Ksection_end:$(date +%s):injectvars\\r\\e[0K"
|
|
5624
|
+
- collapseable_section_end "injectvars"
|
|
5243
5625
|
- kubectl config set-cluster "kube-pan-test-app-prod-kube" --server="$CL_prod_kube_KUBE_URL" --certificate-authority <(echo $CL_prod_kube_KUBE_CA_PEM | base64 -d) --embed-certs=true
|
|
5244
5626
|
- kubectl config set-credentials "kube-pan-test-app-prod-kube" --token="$CL_prod_kube_KUBE_TOKEN"
|
|
5245
5627
|
- kubectl config set-context "kube-pan-test-app-prod-kube" --cluster="kube-pan-test-app-prod-kube" --user="kube-pan-test-app-prod-kube" --namespace="pan-test-app-prod"
|