@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
|
web 🛡 audit:
|
|
49
79
|
stage: test
|
|
50
80
|
image: path/to/docker/jobs-default:the-version
|
|
@@ -53,9 +83,9 @@ web 🛡 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="web"
|
|
58
|
-
-
|
|
88
|
+
- collapseable_section_end "injectvars"
|
|
59
89
|
- cd web
|
|
60
90
|
- yarn npm audit --environment production
|
|
61
91
|
rules:
|
|
@@ -79,21 +109,21 @@ web 👮 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="web"
|
|
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 web
|
|
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: web-yarn
|
|
@@ -120,21 +150,21 @@ web 🧪 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="web"
|
|
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 web
|
|
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: web-yarn
|
|
@@ -161,7 +191,7 @@ web 🧪 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 METEOR_DISABLE_OPTIMISTIC_CACHING="1"
|
|
166
196
|
- export ENV_SHORT="dev"
|
|
167
197
|
- export APP_DIR="web"
|
|
@@ -169,30 +199,46 @@ web 🧪 test:
|
|
|
169
199
|
- export BUILD_INFO_BUILD_ID="$(git describe --tags 2>/dev/null || git rev-parse HEAD)"
|
|
170
200
|
- export BUILD_INFO_BUILD_TIME="$CI_JOB_STARTED_AT"
|
|
171
201
|
- 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")"
|
|
172
|
-
- export
|
|
202
|
+
- export HOSTNAME="$(printf %s "pan-test-app-dev-web-$CL_dev_web_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')"
|
|
173
203
|
- export ROOT_URL="https://$(printf %s "pan-test-app-dev-web-$CL_dev_web_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')"
|
|
174
|
-
- export
|
|
175
|
-
- export HOST_CANONICAL="$(printf %s "pan-test-app-dev-web-$CL_dev_web_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')"
|
|
204
|
+
- export HOSTNAME_INTERNAL="$(printf %s "pan-test-app-dev-web-$CL_dev_web_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')"
|
|
176
205
|
- export ROOT_URL_INTERNAL="https://$(printf %s "pan-test-app-dev-web-$CL_dev_web_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')"
|
|
177
206
|
- export DEPLOY_CLOUD_RUN_PROJECT_ID="google-project-id"
|
|
178
207
|
- export DEPLOY_CLOUD_RUN_REGION="europe-west6"
|
|
179
208
|
- export GCLOUD_DEPLOY_credentialsKey="$CL_dev_web_GCLOUD_DEPLOY_credentialsKey"
|
|
180
209
|
- export GCLOUD_RUN_canonicalHostSuffix="$CL_dev_web_GCLOUD_RUN_canonicalHostSuffix"
|
|
181
|
-
- export _ALL_ENV_VAR_KEYS="[\\"ENV_SHORT\\",\\"APP_DIR\\",\\"ENV_TYPE\\",\\"BUILD_INFO_BUILD_ID\\",\\"BUILD_INFO_BUILD_TIME\\",\\"BUILD_INFO_CURRENT_VERSION\\",\\"
|
|
182
|
-
-
|
|
210
|
+
- 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\\"]"
|
|
211
|
+
- collapseable_section_end "injectvars"
|
|
212
|
+
- collapseable_section_start "write-dotenv-web" "write dot env for web"
|
|
213
|
+
- |-
|
|
214
|
+
cat <<EOF > web/.env
|
|
215
|
+
ENV_SHORT=dev
|
|
216
|
+
APP_DIR=web
|
|
217
|
+
ENV_TYPE=dev
|
|
218
|
+
HOSTNAME=$(printf %s "$(printf %s "pan-test-app-dev-web-$CL_dev_web_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')" | escapeForDotEnv)
|
|
219
|
+
ROOT_URL=$(printf %s "https://$(printf %s "pan-test-app-dev-web-$CL_dev_web_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')" | escapeForDotEnv)
|
|
220
|
+
HOSTNAME_INTERNAL=$(printf %s "$(printf %s "pan-test-app-dev-web-$CL_dev_web_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')" | escapeForDotEnv)
|
|
221
|
+
ROOT_URL_INTERNAL=$(printf %s "https://$(printf %s "pan-test-app-dev-web-$CL_dev_web_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')" | escapeForDotEnv)
|
|
222
|
+
DEPLOY_CLOUD_RUN_PROJECT_ID=google-project-id
|
|
223
|
+
DEPLOY_CLOUD_RUN_REGION=europe-west6
|
|
224
|
+
GCLOUD_DEPLOY_credentialsKey=$(printf %s "$CL_dev_web_GCLOUD_DEPLOY_credentialsKey" | escapeForDotEnv)
|
|
225
|
+
GCLOUD_RUN_canonicalHostSuffix=$(printf %s "$CL_dev_web_GCLOUD_RUN_canonicalHostSuffix" | escapeForDotEnv)
|
|
226
|
+
_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"]
|
|
227
|
+
EOF
|
|
228
|
+
- collapseable_section_end "write-dotenv-web"
|
|
183
229
|
- echo '{"id":"$(git describe --tags 2>/dev/null || git rev-parse HEAD)","time":"$CI_JOB_STARTED_AT"}' > web/__build_info.json
|
|
184
|
-
-
|
|
230
|
+
- collapseable_section_start "nodeinstall" "Ensure node version"
|
|
185
231
|
- if [ -f ~/.nvm/nvm.sh ]; then source ~/.nvm/nvm.sh; fi
|
|
186
232
|
- if command -v nvm &> /dev/null && [ -f ./.nvmrc ]; then nvm install; fi
|
|
187
|
-
-
|
|
233
|
+
- collapseable_section_end "nodeinstall"
|
|
188
234
|
- cd web
|
|
189
|
-
-
|
|
235
|
+
- collapseable_section_start "nodeinstall" "Ensure node version"
|
|
190
236
|
- if [ -f ~/.nvm/nvm.sh ]; then source ~/.nvm/nvm.sh; fi
|
|
191
237
|
- if command -v nvm &> /dev/null && [ -f ./.nvmrc ]; then nvm install; fi
|
|
192
|
-
-
|
|
193
|
-
-
|
|
238
|
+
- collapseable_section_end "nodeinstall"
|
|
239
|
+
- collapseable_section_start "yarninstall" "Yarn install"
|
|
194
240
|
- yarn install --immutable
|
|
195
|
-
-
|
|
241
|
+
- collapseable_section_end "yarninstall"
|
|
196
242
|
- echo "add healthcheck package"
|
|
197
243
|
- meteor add panter:healthroute --allow-superuser
|
|
198
244
|
- meteor add qualia:prod-shell --allow-superuser
|
|
@@ -218,6 +264,8 @@ web 🧪 test:
|
|
|
218
264
|
paths:
|
|
219
265
|
- web/__build_info.json
|
|
220
266
|
- web/dist
|
|
267
|
+
exclude:
|
|
268
|
+
- web/.env
|
|
221
269
|
expire_in: 1 day
|
|
222
270
|
when: always
|
|
223
271
|
reports: {}
|
|
@@ -245,7 +293,7 @@ web 🧪 test:
|
|
|
245
293
|
KUBERNETES_MEMORY_REQUEST: 1Gi
|
|
246
294
|
KUBERNETES_MEMORY_LIMIT: 2Gi
|
|
247
295
|
script:
|
|
248
|
-
-
|
|
296
|
+
- collapseable_section_start "injectvars" "Injecting variables"
|
|
249
297
|
- export APP_DIR="web"
|
|
250
298
|
- export DOCKER_BUILD_CONTEXT="."
|
|
251
299
|
- export DOCKER_REGISTRY="europe-west6-docker.pkg.dev"
|
|
@@ -253,20 +301,20 @@ web 🧪 test:
|
|
|
253
301
|
- export DOCKER_CACHE_IMAGE="europe-west6-docker.pkg.dev/google-project-id/catladder-deploy/pan-test-app/caches/web"
|
|
254
302
|
- export DOCKER_IMAGE_TAG="$CI_COMMIT_SHA"
|
|
255
303
|
- export METEOR_INSTALL_SCRIPTS=""
|
|
256
|
-
-
|
|
304
|
+
- collapseable_section_end "injectvars"
|
|
257
305
|
- ensureMeteorDockerfile
|
|
258
|
-
-
|
|
306
|
+
- collapseable_section_start "docker-login" "Docker Login"
|
|
259
307
|
- gcloud auth activate-service-account --key-file=<(echo "$CL_dev_web_GCLOUD_DEPLOY_credentialsKey")
|
|
260
308
|
- gcloud auth configure-docker europe-west6-docker.pkg.dev
|
|
261
|
-
-
|
|
262
|
-
-
|
|
309
|
+
- collapseable_section_end "docker-login"
|
|
310
|
+
- collapseable_section_start "docker-build" "Docker build"
|
|
263
311
|
- docker build --network host --cache-from $DOCKER_CACHE_IMAGE --tag $DOCKER_IMAGE:$DOCKER_IMAGE_TAG -f $APP_DIR/Dockerfile $DOCKER_BUILD_CONTEXT --build-arg BUILDKIT_INLINE_CACHE=1
|
|
264
|
-
-
|
|
265
|
-
-
|
|
312
|
+
- collapseable_section_end "docker-build"
|
|
313
|
+
- collapseable_section_start "docker-push" "Docker push and tag"
|
|
266
314
|
- docker push $DOCKER_IMAGE:$DOCKER_IMAGE_TAG
|
|
267
315
|
- docker tag $DOCKER_IMAGE:$DOCKER_IMAGE_TAG $DOCKER_CACHE_IMAGE
|
|
268
316
|
- docker push $DOCKER_CACHE_IMAGE
|
|
269
|
-
-
|
|
317
|
+
- collapseable_section_end "docker-push"
|
|
270
318
|
rules:
|
|
271
319
|
- when: never
|
|
272
320
|
if: $CI_COMMIT_MESSAGE =~ /^chore\\(release\\).*/
|
|
@@ -280,8 +328,8 @@ web 🧪 test:
|
|
|
280
328
|
image: aquasec/trivy:0.38.3
|
|
281
329
|
variables: {}
|
|
282
330
|
script:
|
|
283
|
-
-
|
|
284
|
-
-
|
|
331
|
+
- collapseable_section_start "injectvars" "Injecting variables"
|
|
332
|
+
- collapseable_section_end "injectvars"
|
|
285
333
|
- trivy fs --quiet --format cyclonedx --output "__sbom.json" web
|
|
286
334
|
artifacts:
|
|
287
335
|
paths:
|
|
@@ -302,35 +350,34 @@ web 🧪 test:
|
|
|
302
350
|
KUBERNETES_MEMORY_REQUEST: 200Mi
|
|
303
351
|
KUBERNETES_MEMORY_LIMIT: 400Mi
|
|
304
352
|
script:
|
|
305
|
-
-
|
|
353
|
+
- collapseable_section_start "injectvars" "Injecting variables"
|
|
306
354
|
- export ENV_SHORT="dev"
|
|
307
355
|
- export APP_DIR="web"
|
|
308
356
|
- export ENV_TYPE="dev"
|
|
309
357
|
- export BUILD_INFO_BUILD_ID="$(git describe --tags 2>/dev/null || git rev-parse HEAD)"
|
|
310
358
|
- export BUILD_INFO_BUILD_TIME="$CI_JOB_STARTED_AT"
|
|
311
359
|
- 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")"
|
|
312
|
-
- export
|
|
360
|
+
- export HOSTNAME="$(printf %s "pan-test-app-dev-web-$CL_dev_web_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')"
|
|
313
361
|
- export ROOT_URL="https://$(printf %s "pan-test-app-dev-web-$CL_dev_web_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')"
|
|
314
|
-
- export
|
|
315
|
-
- export HOST_CANONICAL="$(printf %s "pan-test-app-dev-web-$CL_dev_web_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')"
|
|
362
|
+
- export HOSTNAME_INTERNAL="$(printf %s "pan-test-app-dev-web-$CL_dev_web_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')"
|
|
316
363
|
- export ROOT_URL_INTERNAL="https://$(printf %s "pan-test-app-dev-web-$CL_dev_web_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')"
|
|
317
364
|
- export DEPLOY_CLOUD_RUN_PROJECT_ID="google-project-id"
|
|
318
365
|
- export DEPLOY_CLOUD_RUN_REGION="europe-west6"
|
|
319
366
|
- export GCLOUD_DEPLOY_credentialsKey="$CL_dev_web_GCLOUD_DEPLOY_credentialsKey"
|
|
320
367
|
- export GCLOUD_RUN_canonicalHostSuffix="$CL_dev_web_GCLOUD_RUN_canonicalHostSuffix"
|
|
321
|
-
- export _ALL_ENV_VAR_KEYS="[\\"ENV_SHORT\\",\\"APP_DIR\\",\\"ENV_TYPE\\",\\"BUILD_INFO_BUILD_ID\\",\\"BUILD_INFO_BUILD_TIME\\",\\"BUILD_INFO_CURRENT_VERSION\\",\\"
|
|
368
|
+
- 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\\"]"
|
|
322
369
|
- export DOCKER_REGISTRY="europe-west6-docker.pkg.dev"
|
|
323
370
|
- export DOCKER_IMAGE="europe-west6-docker.pkg.dev/google-project-id/catladder-deploy/pan-test-app/dev/web"
|
|
324
371
|
- export DOCKER_CACHE_IMAGE="europe-west6-docker.pkg.dev/google-project-id/catladder-deploy/pan-test-app/caches/web"
|
|
325
372
|
- export DOCKER_IMAGE_TAG="$CI_COMMIT_SHA"
|
|
326
373
|
- export CLOUDSDK_CORE_DISABLE_PROMPTS="1"
|
|
327
|
-
-
|
|
328
|
-
-
|
|
374
|
+
- collapseable_section_end "injectvars"
|
|
375
|
+
- collapseable_section_start "prepare" "Prepare..."
|
|
329
376
|
- gcloud auth activate-service-account --key-file=<(echo "$CL_dev_web_GCLOUD_DEPLOY_credentialsKey")
|
|
330
377
|
- export GCLOUD_PROJECT_NUMBER=$(gcloud projects describe google-project-id --format="value(projectNumber)")
|
|
331
378
|
- 'echo "GCLOUD_PROJECT_NUMBER: $GCLOUD_PROJECT_NUMBER"'
|
|
332
|
-
-
|
|
333
|
-
-
|
|
379
|
+
- collapseable_section_end "prepare"
|
|
380
|
+
- collapseable_section_start "writeenvvars" "Write env vars to file"
|
|
334
381
|
- |
|
|
335
382
|
cat > ____envvars.yaml <<EOF
|
|
336
383
|
ENV_SHORT: |-
|
|
@@ -340,41 +387,39 @@ web 🧪 test:
|
|
|
340
387
|
ENV_TYPE: |-
|
|
341
388
|
dev
|
|
342
389
|
BUILD_INFO_BUILD_ID: |-
|
|
343
|
-
|
|
390
|
+
$(printf %s "$(git describe --tags 2>/dev/null || git rev-parse HEAD)" | sed '1!s/^/ /')
|
|
344
391
|
BUILD_INFO_BUILD_TIME: |-
|
|
345
|
-
|
|
392
|
+
$(printf %s "$CI_JOB_STARTED_AT" | sed '1!s/^/ /')
|
|
346
393
|
BUILD_INFO_CURRENT_VERSION: |-
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
394
|
+
$(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/^/ /')
|
|
395
|
+
HOSTNAME: |-
|
|
396
|
+
$(printf %s "$(printf %s "pan-test-app-dev-web-$CL_dev_web_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')" | sed '1!s/^/ /')
|
|
350
397
|
ROOT_URL: |-
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
HOST_CANONICAL: |-
|
|
355
|
-
$(printf %s "$(printf %s "pan-test-app-dev-web-$CL_dev_web_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')" | sed 's/^/ /')
|
|
398
|
+
$(printf %s "https://$(printf %s "pan-test-app-dev-web-$CL_dev_web_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')" | sed '1!s/^/ /')
|
|
399
|
+
HOSTNAME_INTERNAL: |-
|
|
400
|
+
$(printf %s "$(printf %s "pan-test-app-dev-web-$CL_dev_web_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')" | sed '1!s/^/ /')
|
|
356
401
|
ROOT_URL_INTERNAL: |-
|
|
357
|
-
|
|
402
|
+
$(printf %s "https://$(printf %s "pan-test-app-dev-web-$CL_dev_web_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')" | sed '1!s/^/ /')
|
|
358
403
|
DEPLOY_CLOUD_RUN_PROJECT_ID: |-
|
|
359
404
|
google-project-id
|
|
360
405
|
DEPLOY_CLOUD_RUN_REGION: |-
|
|
361
406
|
europe-west6
|
|
362
407
|
GCLOUD_RUN_canonicalHostSuffix: |-
|
|
363
|
-
|
|
408
|
+
$(printf %s "$CL_dev_web_GCLOUD_RUN_canonicalHostSuffix" | sed '1!s/^/ /')
|
|
364
409
|
_ALL_ENV_VAR_KEYS: |-
|
|
365
|
-
["ENV_SHORT","APP_DIR","ENV_TYPE","BUILD_INFO_BUILD_ID","BUILD_INFO_BUILD_TIME","BUILD_INFO_CURRENT_VERSION","
|
|
410
|
+
["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"]
|
|
366
411
|
|
|
367
412
|
EOF
|
|
368
|
-
-
|
|
369
|
-
-
|
|
413
|
+
- collapseable_section_end "writeenvvars"
|
|
414
|
+
- collapseable_section_start "deploy" "Deploy to cloud run"
|
|
370
415
|
- gcloud run deploy pan-test-app-dev-web --command="node,main.js" --image=europe-west6-docker.pkg.dev/google-project-id/catladder-deploy/pan-test-app/dev/web:$DOCKER_IMAGE_TAG --project=google-project-id --region=europe-west6 --labels=customer-name=pan,component-name=web,app-name=test-app,env-type=dev,env-name=dev,build-type=meteor,cloud-run-service-name=pan-test-app-dev-web --env-vars-file=____envvars.yaml --min-instances=0 --max-instances=100 --cpu-throttling --allow-unauthenticated --ingress=all --cpu-boost
|
|
371
416
|
- gcloud run deploy pan-test-app-dev-web-worker --command="/bin/sh -c,BACKGROUND_JOBS_ENABLED=1 node main.js" --image=europe-west6-docker.pkg.dev/google-project-id/catladder-deploy/pan-test-app/dev/web:$DOCKER_IMAGE_TAG --project=google-project-id --region=europe-west6 --labels=customer-name=pan,component-name=web,app-name=test-app,env-type=dev,env-name=dev,build-type=meteor,cloud-run-service-name=pan-test-app-dev-web-worker --env-vars-file=____envvars.yaml --min-instances=1 --max-instances=1 --no-cpu-throttling --allow-unauthenticated --ingress=all --cpu-boost
|
|
372
|
-
-
|
|
373
|
-
-
|
|
417
|
+
- collapseable_section_end "deploy"
|
|
418
|
+
- collapseable_section_start "cleanup" "Cleanup"
|
|
374
419
|
- gcloud run revisions list --project=google-project-id --region=europe-west6 --service=pan-test-app-dev-web --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=google-project-id --region=europe-west6 --quiet $revisionname ; done
|
|
375
420
|
- gcloud artifacts docker images list europe-west6-docker.pkg.dev/google-project-id/catladder-deploy/pan-test-app/dev/web --sort-by=~CREATE_TIME --format="value(version)" | tail -n +2 | while read -r version; do gcloud artifacts docker images delete europe-west6-docker.pkg.dev/google-project-id/catladder-deploy/pan-test-app/dev/web@$version --quiet --delete-tags; done
|
|
376
421
|
- gcloud artifacts docker images list europe-west6-docker.pkg.dev/google-project-id/catladder-deploy/pan-test-app/caches/web --sort-by=~CREATE_TIME --format="value(version)" | tail -n +2 | while read -r version; do gcloud artifacts docker images delete europe-west6-docker.pkg.dev/google-project-id/catladder-deploy/pan-test-app/caches/web@$version --quiet --delete-tags; done
|
|
377
|
-
-
|
|
422
|
+
- collapseable_section_end "cleanup"
|
|
378
423
|
- echo 'Uploading SBOM to Dependency Track'
|
|
379
424
|
- /dtrackuploader https://dep.panter.swiss/ "$DT_KEY_PROD" upload "pan-test-app/web" "https://$(printf %s "pan-test-app-dev-web-$CL_dev_web_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')" "__sbom.json" vex.json || true
|
|
380
425
|
- echo "CL_GITLAB_ENVIRONMENT_URL=https://$(printf %s "pan-test-app-dev-web-$CL_dev_web_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')" >> gitlab_environment.env
|
|
@@ -416,9 +461,9 @@ web 🧪 test:
|
|
|
416
461
|
KUBERNETES_MEMORY_LIMIT: 400Mi
|
|
417
462
|
GIT_STRATEGY: none
|
|
418
463
|
script:
|
|
419
|
-
-
|
|
464
|
+
- collapseable_section_start "injectvars" "Injecting variables"
|
|
420
465
|
- export CLOUDSDK_CORE_DISABLE_PROMPTS="1"
|
|
421
|
-
-
|
|
466
|
+
- collapseable_section_end "injectvars"
|
|
422
467
|
- set +e
|
|
423
468
|
- gcloud auth activate-service-account --key-file=<(echo "$CL_dev_web_GCLOUD_DEPLOY_credentialsKey")
|
|
424
469
|
- gcloud run services delete pan-test-app-dev-web --project=google-project-id --region=europe-west6
|
|
@@ -455,7 +500,7 @@ web 🧪 test:
|
|
|
455
500
|
KUBERNETES_MEMORY_REQUEST: 1Gi
|
|
456
501
|
KUBERNETES_MEMORY_LIMIT: 4Gi
|
|
457
502
|
script:
|
|
458
|
-
-
|
|
503
|
+
- collapseable_section_start "injectvars" "Injecting variables"
|
|
459
504
|
- export METEOR_DISABLE_OPTIMISTIC_CACHING="1"
|
|
460
505
|
- export ENV_SHORT="review"
|
|
461
506
|
- export APP_DIR="web"
|
|
@@ -463,30 +508,46 @@ web 🧪 test:
|
|
|
463
508
|
- export BUILD_INFO_BUILD_ID="$(git describe --tags 2>/dev/null || git rev-parse HEAD)"
|
|
464
509
|
- export BUILD_INFO_BUILD_TIME="$CI_JOB_STARTED_AT"
|
|
465
510
|
- 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")"
|
|
466
|
-
- export
|
|
511
|
+
- 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"; })-web-$CL_review_web_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')"
|
|
467
512
|
- 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"; })-web-$CL_review_web_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')"
|
|
468
|
-
- export
|
|
469
|
-
- 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"; })-web-$CL_review_web_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')"
|
|
513
|
+
- 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"; })-web-$CL_review_web_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')"
|
|
470
514
|
- 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"; })-web-$CL_review_web_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')"
|
|
471
515
|
- export DEPLOY_CLOUD_RUN_PROJECT_ID="google-project-id"
|
|
472
516
|
- export DEPLOY_CLOUD_RUN_REGION="europe-west6"
|
|
473
517
|
- export GCLOUD_DEPLOY_credentialsKey="$CL_review_web_GCLOUD_DEPLOY_credentialsKey"
|
|
474
518
|
- export GCLOUD_RUN_canonicalHostSuffix="$CL_review_web_GCLOUD_RUN_canonicalHostSuffix"
|
|
475
|
-
- export _ALL_ENV_VAR_KEYS="[\\"ENV_SHORT\\",\\"APP_DIR\\",\\"ENV_TYPE\\",\\"BUILD_INFO_BUILD_ID\\",\\"BUILD_INFO_BUILD_TIME\\",\\"BUILD_INFO_CURRENT_VERSION\\",\\"
|
|
476
|
-
-
|
|
519
|
+
- 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\\"]"
|
|
520
|
+
- collapseable_section_end "injectvars"
|
|
521
|
+
- collapseable_section_start "write-dotenv-web" "write dot env for web"
|
|
522
|
+
- |-
|
|
523
|
+
cat <<EOF > web/.env
|
|
524
|
+
ENV_SHORT=review
|
|
525
|
+
APP_DIR=web
|
|
526
|
+
ENV_TYPE=review
|
|
527
|
+
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"; })-web-$CL_review_web_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')" | escapeForDotEnv)
|
|
528
|
+
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"; })-web-$CL_review_web_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')" | escapeForDotEnv)
|
|
529
|
+
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"; })-web-$CL_review_web_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')" | escapeForDotEnv)
|
|
530
|
+
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"; })-web-$CL_review_web_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')" | escapeForDotEnv)
|
|
531
|
+
DEPLOY_CLOUD_RUN_PROJECT_ID=google-project-id
|
|
532
|
+
DEPLOY_CLOUD_RUN_REGION=europe-west6
|
|
533
|
+
GCLOUD_DEPLOY_credentialsKey=$(printf %s "$CL_review_web_GCLOUD_DEPLOY_credentialsKey" | escapeForDotEnv)
|
|
534
|
+
GCLOUD_RUN_canonicalHostSuffix=$(printf %s "$CL_review_web_GCLOUD_RUN_canonicalHostSuffix" | escapeForDotEnv)
|
|
535
|
+
_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"]
|
|
536
|
+
EOF
|
|
537
|
+
- collapseable_section_end "write-dotenv-web"
|
|
477
538
|
- echo '{"id":"$(git describe --tags 2>/dev/null || git rev-parse HEAD)","time":"$CI_JOB_STARTED_AT"}' > web/__build_info.json
|
|
478
|
-
-
|
|
539
|
+
- collapseable_section_start "nodeinstall" "Ensure node version"
|
|
479
540
|
- if [ -f ~/.nvm/nvm.sh ]; then source ~/.nvm/nvm.sh; fi
|
|
480
541
|
- if command -v nvm &> /dev/null && [ -f ./.nvmrc ]; then nvm install; fi
|
|
481
|
-
-
|
|
542
|
+
- collapseable_section_end "nodeinstall"
|
|
482
543
|
- cd web
|
|
483
|
-
-
|
|
544
|
+
- collapseable_section_start "nodeinstall" "Ensure node version"
|
|
484
545
|
- if [ -f ~/.nvm/nvm.sh ]; then source ~/.nvm/nvm.sh; fi
|
|
485
546
|
- if command -v nvm &> /dev/null && [ -f ./.nvmrc ]; then nvm install; fi
|
|
486
|
-
-
|
|
487
|
-
-
|
|
547
|
+
- collapseable_section_end "nodeinstall"
|
|
548
|
+
- collapseable_section_start "yarninstall" "Yarn install"
|
|
488
549
|
- yarn install --immutable
|
|
489
|
-
-
|
|
550
|
+
- collapseable_section_end "yarninstall"
|
|
490
551
|
- echo "add healthcheck package"
|
|
491
552
|
- meteor add panter:healthroute --allow-superuser
|
|
492
553
|
- meteor add qualia:prod-shell --allow-superuser
|
|
@@ -512,6 +573,8 @@ web 🧪 test:
|
|
|
512
573
|
paths:
|
|
513
574
|
- web/__build_info.json
|
|
514
575
|
- web/dist
|
|
576
|
+
exclude:
|
|
577
|
+
- web/.env
|
|
515
578
|
expire_in: 1 day
|
|
516
579
|
when: always
|
|
517
580
|
reports: {}
|
|
@@ -537,7 +600,7 @@ web 🧪 test:
|
|
|
537
600
|
KUBERNETES_MEMORY_REQUEST: 1Gi
|
|
538
601
|
KUBERNETES_MEMORY_LIMIT: 2Gi
|
|
539
602
|
script:
|
|
540
|
-
-
|
|
603
|
+
- collapseable_section_start "injectvars" "Injecting variables"
|
|
541
604
|
- export APP_DIR="web"
|
|
542
605
|
- export DOCKER_BUILD_CONTEXT="."
|
|
543
606
|
- export DOCKER_REGISTRY="europe-west6-docker.pkg.dev"
|
|
@@ -545,20 +608,20 @@ web 🧪 test:
|
|
|
545
608
|
- export DOCKER_CACHE_IMAGE="europe-west6-docker.pkg.dev/google-project-id/catladder-deploy/pan-test-app/caches/web"
|
|
546
609
|
- export DOCKER_IMAGE_TAG="$CI_COMMIT_SHA"
|
|
547
610
|
- export METEOR_INSTALL_SCRIPTS=""
|
|
548
|
-
-
|
|
611
|
+
- collapseable_section_end "injectvars"
|
|
549
612
|
- ensureMeteorDockerfile
|
|
550
|
-
-
|
|
613
|
+
- collapseable_section_start "docker-login" "Docker Login"
|
|
551
614
|
- gcloud auth activate-service-account --key-file=<(echo "$CL_review_web_GCLOUD_DEPLOY_credentialsKey")
|
|
552
615
|
- gcloud auth configure-docker europe-west6-docker.pkg.dev
|
|
553
|
-
-
|
|
554
|
-
-
|
|
616
|
+
- collapseable_section_end "docker-login"
|
|
617
|
+
- collapseable_section_start "docker-build" "Docker build"
|
|
555
618
|
- 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
|
|
556
|
-
-
|
|
557
|
-
-
|
|
619
|
+
- collapseable_section_end "docker-build"
|
|
620
|
+
- collapseable_section_start "docker-push" "Docker push and tag"
|
|
558
621
|
- docker push $DOCKER_IMAGE:$DOCKER_IMAGE_TAG
|
|
559
622
|
- docker tag $DOCKER_IMAGE:$DOCKER_IMAGE_TAG $DOCKER_CACHE_IMAGE
|
|
560
623
|
- docker push $DOCKER_CACHE_IMAGE
|
|
561
|
-
-
|
|
624
|
+
- collapseable_section_end "docker-push"
|
|
562
625
|
rules:
|
|
563
626
|
- if: $CI_MERGE_REQUEST_ID
|
|
564
627
|
needs:
|
|
@@ -570,8 +633,8 @@ web 🧪 test:
|
|
|
570
633
|
image: aquasec/trivy:0.38.3
|
|
571
634
|
variables: {}
|
|
572
635
|
script:
|
|
573
|
-
-
|
|
574
|
-
-
|
|
636
|
+
- collapseable_section_start "injectvars" "Injecting variables"
|
|
637
|
+
- collapseable_section_end "injectvars"
|
|
575
638
|
- trivy fs --quiet --format cyclonedx --output "__sbom.json" web
|
|
576
639
|
artifacts:
|
|
577
640
|
paths:
|
|
@@ -590,35 +653,34 @@ web 🧪 test:
|
|
|
590
653
|
KUBERNETES_MEMORY_REQUEST: 200Mi
|
|
591
654
|
KUBERNETES_MEMORY_LIMIT: 400Mi
|
|
592
655
|
script:
|
|
593
|
-
-
|
|
656
|
+
- collapseable_section_start "injectvars" "Injecting variables"
|
|
594
657
|
- export ENV_SHORT="review"
|
|
595
658
|
- export APP_DIR="web"
|
|
596
659
|
- export ENV_TYPE="review"
|
|
597
660
|
- export BUILD_INFO_BUILD_ID="$(git describe --tags 2>/dev/null || git rev-parse HEAD)"
|
|
598
661
|
- export BUILD_INFO_BUILD_TIME="$CI_JOB_STARTED_AT"
|
|
599
662
|
- 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")"
|
|
600
|
-
- export
|
|
663
|
+
- 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"; })-web-$CL_review_web_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')"
|
|
601
664
|
- 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"; })-web-$CL_review_web_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')"
|
|
602
|
-
- export
|
|
603
|
-
- 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"; })-web-$CL_review_web_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')"
|
|
665
|
+
- 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"; })-web-$CL_review_web_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')"
|
|
604
666
|
- 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"; })-web-$CL_review_web_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')"
|
|
605
667
|
- export DEPLOY_CLOUD_RUN_PROJECT_ID="google-project-id"
|
|
606
668
|
- export DEPLOY_CLOUD_RUN_REGION="europe-west6"
|
|
607
669
|
- export GCLOUD_DEPLOY_credentialsKey="$CL_review_web_GCLOUD_DEPLOY_credentialsKey"
|
|
608
670
|
- export GCLOUD_RUN_canonicalHostSuffix="$CL_review_web_GCLOUD_RUN_canonicalHostSuffix"
|
|
609
|
-
- export _ALL_ENV_VAR_KEYS="[\\"ENV_SHORT\\",\\"APP_DIR\\",\\"ENV_TYPE\\",\\"BUILD_INFO_BUILD_ID\\",\\"BUILD_INFO_BUILD_TIME\\",\\"BUILD_INFO_CURRENT_VERSION\\",\\"
|
|
671
|
+
- 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\\"]"
|
|
610
672
|
- export DOCKER_REGISTRY="europe-west6-docker.pkg.dev"
|
|
611
673
|
- export DOCKER_IMAGE="europe-west6-docker.pkg.dev/google-project-id/catladder-deploy/pan-test-app/review/web/$([ -n "$CI_MERGE_REQUEST_IID" ] && echo "mr$CI_MERGE_REQUEST_IID" || { [ -n "$CI_COMMIT_REF_SLUG" ] && echo "$CI_COMMIT_REF_SLUG" || echo "unknown"; })"
|
|
612
674
|
- export DOCKER_CACHE_IMAGE="europe-west6-docker.pkg.dev/google-project-id/catladder-deploy/pan-test-app/caches/web"
|
|
613
675
|
- export DOCKER_IMAGE_TAG="$CI_COMMIT_SHA"
|
|
614
676
|
- export CLOUDSDK_CORE_DISABLE_PROMPTS="1"
|
|
615
|
-
-
|
|
616
|
-
-
|
|
677
|
+
- collapseable_section_end "injectvars"
|
|
678
|
+
- collapseable_section_start "prepare" "Prepare..."
|
|
617
679
|
- gcloud auth activate-service-account --key-file=<(echo "$CL_review_web_GCLOUD_DEPLOY_credentialsKey")
|
|
618
680
|
- export GCLOUD_PROJECT_NUMBER=$(gcloud projects describe google-project-id --format="value(projectNumber)")
|
|
619
681
|
- 'echo "GCLOUD_PROJECT_NUMBER: $GCLOUD_PROJECT_NUMBER"'
|
|
620
|
-
-
|
|
621
|
-
-
|
|
682
|
+
- collapseable_section_end "prepare"
|
|
683
|
+
- collapseable_section_start "writeenvvars" "Write env vars to file"
|
|
622
684
|
- |
|
|
623
685
|
cat > ____envvars.yaml <<EOF
|
|
624
686
|
ENV_SHORT: |-
|
|
@@ -628,44 +690,42 @@ web 🧪 test:
|
|
|
628
690
|
ENV_TYPE: |-
|
|
629
691
|
review
|
|
630
692
|
BUILD_INFO_BUILD_ID: |-
|
|
631
|
-
|
|
693
|
+
$(printf %s "$(git describe --tags 2>/dev/null || git rev-parse HEAD)" | sed '1!s/^/ /')
|
|
632
694
|
BUILD_INFO_BUILD_TIME: |-
|
|
633
|
-
|
|
695
|
+
$(printf %s "$CI_JOB_STARTED_AT" | sed '1!s/^/ /')
|
|
634
696
|
BUILD_INFO_CURRENT_VERSION: |-
|
|
635
|
-
|
|
636
|
-
|
|
637
|
-
|
|
697
|
+
$(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/^/ /')
|
|
698
|
+
HOSTNAME: |-
|
|
699
|
+
$(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"; })-web-$CL_review_web_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')" | sed '1!s/^/ /')
|
|
638
700
|
ROOT_URL: |-
|
|
639
|
-
|
|
640
|
-
|
|
641
|
-
|
|
642
|
-
HOST_CANONICAL: |-
|
|
643
|
-
$(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"; })-web-$CL_review_web_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')" | sed 's/^/ /')
|
|
701
|
+
$(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"; })-web-$CL_review_web_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')" | sed '1!s/^/ /')
|
|
702
|
+
HOSTNAME_INTERNAL: |-
|
|
703
|
+
$(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"; })-web-$CL_review_web_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')" | sed '1!s/^/ /')
|
|
644
704
|
ROOT_URL_INTERNAL: |-
|
|
645
|
-
|
|
705
|
+
$(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"; })-web-$CL_review_web_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')" | sed '1!s/^/ /')
|
|
646
706
|
DEPLOY_CLOUD_RUN_PROJECT_ID: |-
|
|
647
707
|
google-project-id
|
|
648
708
|
DEPLOY_CLOUD_RUN_REGION: |-
|
|
649
709
|
europe-west6
|
|
650
710
|
GCLOUD_RUN_canonicalHostSuffix: |-
|
|
651
|
-
|
|
711
|
+
$(printf %s "$CL_review_web_GCLOUD_RUN_canonicalHostSuffix" | sed '1!s/^/ /')
|
|
652
712
|
_ALL_ENV_VAR_KEYS: |-
|
|
653
|
-
["ENV_SHORT","APP_DIR","ENV_TYPE","BUILD_INFO_BUILD_ID","BUILD_INFO_BUILD_TIME","BUILD_INFO_CURRENT_VERSION","
|
|
713
|
+
["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"]
|
|
654
714
|
|
|
655
715
|
EOF
|
|
656
|
-
-
|
|
657
|
-
-
|
|
716
|
+
- collapseable_section_end "writeenvvars"
|
|
717
|
+
- collapseable_section_start "deploy" "Deploy to cloud run"
|
|
658
718
|
- 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"; })-web" | awk '{print tolower($0)}') --command="node,main.js" --image=europe-west6-docker.pkg.dev/google-project-id/catladder-deploy/pan-test-app/review/web/$([ -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=google-project-id --region=europe-west6 --labels=customer-name=pan,component-name=web,app-name=test-app,env-type=review,env-name=review,build-type=meteor,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"; })-web" | awk '{print tolower($0)}') --env-vars-file=____envvars.yaml --min-instances=0 --max-instances=100 --cpu-throttling --allow-unauthenticated --ingress=all --cpu-boost
|
|
659
719
|
- 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"; })-web" | awk '{print tolower($0)}')-worker --command="/bin/sh -c,BACKGROUND_JOBS_ENABLED=1 node main.js" --image=europe-west6-docker.pkg.dev/google-project-id/catladder-deploy/pan-test-app/review/web/$([ -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=google-project-id --region=europe-west6 --labels=customer-name=pan,component-name=web,app-name=test-app,env-type=review,env-name=review,build-type=meteor,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"; })-web" | awk '{print tolower($0)}')-worker --env-vars-file=____envvars.yaml --min-instances=1 --max-instances=1 --no-cpu-throttling --allow-unauthenticated --ingress=all --cpu-boost
|
|
660
|
-
-
|
|
661
|
-
-
|
|
720
|
+
- collapseable_section_end "deploy"
|
|
721
|
+
- collapseable_section_start "cleanup" "Cleanup"
|
|
662
722
|
- gcloud run revisions list --project=google-project-id --region=europe-west6 --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"; })-web" | 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=google-project-id --region=europe-west6 --quiet $revisionname ; done
|
|
663
723
|
- gcloud artifacts docker images list europe-west6-docker.pkg.dev/google-project-id/catladder-deploy/pan-test-app/review/web/$([ -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 europe-west6-docker.pkg.dev/google-project-id/catladder-deploy/pan-test-app/review/web/$([ -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
|
|
664
724
|
- gcloud artifacts docker images list europe-west6-docker.pkg.dev/google-project-id/catladder-deploy/pan-test-app/caches/web --sort-by=~CREATE_TIME --format="value(version)" | tail -n +2 | while read -r version; do gcloud artifacts docker images delete europe-west6-docker.pkg.dev/google-project-id/catladder-deploy/pan-test-app/caches/web@$version --quiet --delete-tags; done
|
|
665
725
|
- set +e
|
|
666
726
|
- gcloud artifacts docker images delete europe-west6-docker.pkg.dev/google-project-id/catladder-deploy/pan-test-app/review/web --quiet --delete-tags
|
|
667
727
|
- set -e
|
|
668
|
-
-
|
|
728
|
+
- collapseable_section_end "cleanup"
|
|
669
729
|
- echo 'Uploading SBOM to Dependency Track'
|
|
670
730
|
- /dtrackuploader https://dep.panter.swiss/ "$DT_KEY_PROD" upload "pan-test-app/web" "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"; })-web-$CL_review_web_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')" "__sbom.json" vex.json || true
|
|
671
731
|
- 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"; })-web-$CL_review_web_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')" >> gitlab_environment.env
|
|
@@ -705,9 +765,9 @@ web 🧪 test:
|
|
|
705
765
|
KUBERNETES_MEMORY_LIMIT: 400Mi
|
|
706
766
|
GIT_STRATEGY: none
|
|
707
767
|
script:
|
|
708
|
-
-
|
|
768
|
+
- collapseable_section_start "injectvars" "Injecting variables"
|
|
709
769
|
- export CLOUDSDK_CORE_DISABLE_PROMPTS="1"
|
|
710
|
-
-
|
|
770
|
+
- collapseable_section_end "injectvars"
|
|
711
771
|
- set +e
|
|
712
772
|
- gcloud auth activate-service-account --key-file=<(echo "$CL_review_web_GCLOUD_DEPLOY_credentialsKey")
|
|
713
773
|
- 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"; })-web" | awk '{print tolower($0)}') --project=google-project-id --region=europe-west6
|
|
@@ -745,7 +805,7 @@ web 🧪 test:
|
|
|
745
805
|
KUBERNETES_MEMORY_REQUEST: 1Gi
|
|
746
806
|
KUBERNETES_MEMORY_LIMIT: 4Gi
|
|
747
807
|
script:
|
|
748
|
-
-
|
|
808
|
+
- collapseable_section_start "injectvars" "Injecting variables"
|
|
749
809
|
- export METEOR_DISABLE_OPTIMISTIC_CACHING="1"
|
|
750
810
|
- export ENV_SHORT="stage"
|
|
751
811
|
- export APP_DIR="web"
|
|
@@ -753,30 +813,46 @@ web 🧪 test:
|
|
|
753
813
|
- export BUILD_INFO_BUILD_ID="$(git describe --tags 2>/dev/null || git rev-parse HEAD)"
|
|
754
814
|
- export BUILD_INFO_BUILD_TIME="$CI_JOB_STARTED_AT"
|
|
755
815
|
- 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")"
|
|
756
|
-
- export
|
|
816
|
+
- export HOSTNAME="$(printf %s "pan-test-app-stage-web-$CL_stage_web_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')"
|
|
757
817
|
- export ROOT_URL="https://$(printf %s "pan-test-app-stage-web-$CL_stage_web_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')"
|
|
758
|
-
- export
|
|
759
|
-
- export HOST_CANONICAL="$(printf %s "pan-test-app-stage-web-$CL_stage_web_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')"
|
|
818
|
+
- export HOSTNAME_INTERNAL="$(printf %s "pan-test-app-stage-web-$CL_stage_web_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')"
|
|
760
819
|
- export ROOT_URL_INTERNAL="https://$(printf %s "pan-test-app-stage-web-$CL_stage_web_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')"
|
|
761
820
|
- export DEPLOY_CLOUD_RUN_PROJECT_ID="google-project-id"
|
|
762
821
|
- export DEPLOY_CLOUD_RUN_REGION="europe-west6"
|
|
763
822
|
- export GCLOUD_DEPLOY_credentialsKey="$CL_stage_web_GCLOUD_DEPLOY_credentialsKey"
|
|
764
823
|
- export GCLOUD_RUN_canonicalHostSuffix="$CL_stage_web_GCLOUD_RUN_canonicalHostSuffix"
|
|
765
|
-
- export _ALL_ENV_VAR_KEYS="[\\"ENV_SHORT\\",\\"APP_DIR\\",\\"ENV_TYPE\\",\\"BUILD_INFO_BUILD_ID\\",\\"BUILD_INFO_BUILD_TIME\\",\\"BUILD_INFO_CURRENT_VERSION\\",\\"
|
|
766
|
-
-
|
|
824
|
+
- 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\\"]"
|
|
825
|
+
- collapseable_section_end "injectvars"
|
|
826
|
+
- collapseable_section_start "write-dotenv-web" "write dot env for web"
|
|
827
|
+
- |-
|
|
828
|
+
cat <<EOF > web/.env
|
|
829
|
+
ENV_SHORT=stage
|
|
830
|
+
APP_DIR=web
|
|
831
|
+
ENV_TYPE=stage
|
|
832
|
+
HOSTNAME=$(printf %s "$(printf %s "pan-test-app-stage-web-$CL_stage_web_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')" | escapeForDotEnv)
|
|
833
|
+
ROOT_URL=$(printf %s "https://$(printf %s "pan-test-app-stage-web-$CL_stage_web_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')" | escapeForDotEnv)
|
|
834
|
+
HOSTNAME_INTERNAL=$(printf %s "$(printf %s "pan-test-app-stage-web-$CL_stage_web_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')" | escapeForDotEnv)
|
|
835
|
+
ROOT_URL_INTERNAL=$(printf %s "https://$(printf %s "pan-test-app-stage-web-$CL_stage_web_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')" | escapeForDotEnv)
|
|
836
|
+
DEPLOY_CLOUD_RUN_PROJECT_ID=google-project-id
|
|
837
|
+
DEPLOY_CLOUD_RUN_REGION=europe-west6
|
|
838
|
+
GCLOUD_DEPLOY_credentialsKey=$(printf %s "$CL_stage_web_GCLOUD_DEPLOY_credentialsKey" | escapeForDotEnv)
|
|
839
|
+
GCLOUD_RUN_canonicalHostSuffix=$(printf %s "$CL_stage_web_GCLOUD_RUN_canonicalHostSuffix" | escapeForDotEnv)
|
|
840
|
+
_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"]
|
|
841
|
+
EOF
|
|
842
|
+
- collapseable_section_end "write-dotenv-web"
|
|
767
843
|
- echo '{"id":"$(git describe --tags 2>/dev/null || git rev-parse HEAD)","time":"$CI_JOB_STARTED_AT"}' > web/__build_info.json
|
|
768
|
-
-
|
|
844
|
+
- collapseable_section_start "nodeinstall" "Ensure node version"
|
|
769
845
|
- if [ -f ~/.nvm/nvm.sh ]; then source ~/.nvm/nvm.sh; fi
|
|
770
846
|
- if command -v nvm &> /dev/null && [ -f ./.nvmrc ]; then nvm install; fi
|
|
771
|
-
-
|
|
847
|
+
- collapseable_section_end "nodeinstall"
|
|
772
848
|
- cd web
|
|
773
|
-
-
|
|
849
|
+
- collapseable_section_start "nodeinstall" "Ensure node version"
|
|
774
850
|
- if [ -f ~/.nvm/nvm.sh ]; then source ~/.nvm/nvm.sh; fi
|
|
775
851
|
- if command -v nvm &> /dev/null && [ -f ./.nvmrc ]; then nvm install; fi
|
|
776
|
-
-
|
|
777
|
-
-
|
|
852
|
+
- collapseable_section_end "nodeinstall"
|
|
853
|
+
- collapseable_section_start "yarninstall" "Yarn install"
|
|
778
854
|
- yarn install --immutable
|
|
779
|
-
-
|
|
855
|
+
- collapseable_section_end "yarninstall"
|
|
780
856
|
- echo "add healthcheck package"
|
|
781
857
|
- meteor add panter:healthroute --allow-superuser
|
|
782
858
|
- meteor add qualia:prod-shell --allow-superuser
|
|
@@ -802,6 +878,8 @@ web 🧪 test:
|
|
|
802
878
|
paths:
|
|
803
879
|
- web/__build_info.json
|
|
804
880
|
- web/dist
|
|
881
|
+
exclude:
|
|
882
|
+
- web/.env
|
|
805
883
|
expire_in: 1 day
|
|
806
884
|
when: always
|
|
807
885
|
reports: {}
|
|
@@ -827,7 +905,7 @@ web 🧪 test:
|
|
|
827
905
|
KUBERNETES_MEMORY_REQUEST: 1Gi
|
|
828
906
|
KUBERNETES_MEMORY_LIMIT: 2Gi
|
|
829
907
|
script:
|
|
830
|
-
-
|
|
908
|
+
- collapseable_section_start "injectvars" "Injecting variables"
|
|
831
909
|
- export APP_DIR="web"
|
|
832
910
|
- export DOCKER_BUILD_CONTEXT="."
|
|
833
911
|
- export DOCKER_REGISTRY="europe-west6-docker.pkg.dev"
|
|
@@ -835,20 +913,20 @@ web 🧪 test:
|
|
|
835
913
|
- export DOCKER_CACHE_IMAGE="europe-west6-docker.pkg.dev/google-project-id/catladder-deploy/pan-test-app/caches/web"
|
|
836
914
|
- export DOCKER_IMAGE_TAG="$CI_COMMIT_SHA"
|
|
837
915
|
- export METEOR_INSTALL_SCRIPTS=""
|
|
838
|
-
-
|
|
916
|
+
- collapseable_section_end "injectvars"
|
|
839
917
|
- ensureMeteorDockerfile
|
|
840
|
-
-
|
|
918
|
+
- collapseable_section_start "docker-login" "Docker Login"
|
|
841
919
|
- gcloud auth activate-service-account --key-file=<(echo "$CL_stage_web_GCLOUD_DEPLOY_credentialsKey")
|
|
842
920
|
- gcloud auth configure-docker europe-west6-docker.pkg.dev
|
|
843
|
-
-
|
|
844
|
-
-
|
|
921
|
+
- collapseable_section_end "docker-login"
|
|
922
|
+
- collapseable_section_start "docker-build" "Docker build"
|
|
845
923
|
- 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
|
|
846
|
-
-
|
|
847
|
-
-
|
|
924
|
+
- collapseable_section_end "docker-build"
|
|
925
|
+
- collapseable_section_start "docker-push" "Docker push and tag"
|
|
848
926
|
- docker push $DOCKER_IMAGE:$DOCKER_IMAGE_TAG
|
|
849
927
|
- docker tag $DOCKER_IMAGE:$DOCKER_IMAGE_TAG $DOCKER_CACHE_IMAGE
|
|
850
928
|
- docker push $DOCKER_CACHE_IMAGE
|
|
851
|
-
-
|
|
929
|
+
- collapseable_section_end "docker-push"
|
|
852
930
|
rules:
|
|
853
931
|
- if: $CI_COMMIT_TAG
|
|
854
932
|
needs:
|
|
@@ -860,8 +938,8 @@ web 🧪 test:
|
|
|
860
938
|
image: aquasec/trivy:0.38.3
|
|
861
939
|
variables: {}
|
|
862
940
|
script:
|
|
863
|
-
-
|
|
864
|
-
-
|
|
941
|
+
- collapseable_section_start "injectvars" "Injecting variables"
|
|
942
|
+
- collapseable_section_end "injectvars"
|
|
865
943
|
- trivy fs --quiet --format cyclonedx --output "__sbom.json" web
|
|
866
944
|
artifacts:
|
|
867
945
|
paths:
|
|
@@ -880,35 +958,34 @@ web 🧪 test:
|
|
|
880
958
|
KUBERNETES_MEMORY_REQUEST: 200Mi
|
|
881
959
|
KUBERNETES_MEMORY_LIMIT: 400Mi
|
|
882
960
|
script:
|
|
883
|
-
-
|
|
961
|
+
- collapseable_section_start "injectvars" "Injecting variables"
|
|
884
962
|
- export ENV_SHORT="stage"
|
|
885
963
|
- export APP_DIR="web"
|
|
886
964
|
- export ENV_TYPE="stage"
|
|
887
965
|
- export BUILD_INFO_BUILD_ID="$(git describe --tags 2>/dev/null || git rev-parse HEAD)"
|
|
888
966
|
- export BUILD_INFO_BUILD_TIME="$CI_JOB_STARTED_AT"
|
|
889
967
|
- 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")"
|
|
890
|
-
- export
|
|
968
|
+
- export HOSTNAME="$(printf %s "pan-test-app-stage-web-$CL_stage_web_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')"
|
|
891
969
|
- export ROOT_URL="https://$(printf %s "pan-test-app-stage-web-$CL_stage_web_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')"
|
|
892
|
-
- export
|
|
893
|
-
- export HOST_CANONICAL="$(printf %s "pan-test-app-stage-web-$CL_stage_web_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')"
|
|
970
|
+
- export HOSTNAME_INTERNAL="$(printf %s "pan-test-app-stage-web-$CL_stage_web_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')"
|
|
894
971
|
- export ROOT_URL_INTERNAL="https://$(printf %s "pan-test-app-stage-web-$CL_stage_web_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')"
|
|
895
972
|
- export DEPLOY_CLOUD_RUN_PROJECT_ID="google-project-id"
|
|
896
973
|
- export DEPLOY_CLOUD_RUN_REGION="europe-west6"
|
|
897
974
|
- export GCLOUD_DEPLOY_credentialsKey="$CL_stage_web_GCLOUD_DEPLOY_credentialsKey"
|
|
898
975
|
- export GCLOUD_RUN_canonicalHostSuffix="$CL_stage_web_GCLOUD_RUN_canonicalHostSuffix"
|
|
899
|
-
- export _ALL_ENV_VAR_KEYS="[\\"ENV_SHORT\\",\\"APP_DIR\\",\\"ENV_TYPE\\",\\"BUILD_INFO_BUILD_ID\\",\\"BUILD_INFO_BUILD_TIME\\",\\"BUILD_INFO_CURRENT_VERSION\\",\\"
|
|
976
|
+
- 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\\"]"
|
|
900
977
|
- export DOCKER_REGISTRY="europe-west6-docker.pkg.dev"
|
|
901
978
|
- export DOCKER_IMAGE="europe-west6-docker.pkg.dev/google-project-id/catladder-deploy/pan-test-app/stage/web"
|
|
902
979
|
- export DOCKER_CACHE_IMAGE="europe-west6-docker.pkg.dev/google-project-id/catladder-deploy/pan-test-app/caches/web"
|
|
903
980
|
- export DOCKER_IMAGE_TAG="$CI_COMMIT_SHA"
|
|
904
981
|
- export CLOUDSDK_CORE_DISABLE_PROMPTS="1"
|
|
905
|
-
-
|
|
906
|
-
-
|
|
982
|
+
- collapseable_section_end "injectvars"
|
|
983
|
+
- collapseable_section_start "prepare" "Prepare..."
|
|
907
984
|
- gcloud auth activate-service-account --key-file=<(echo "$CL_stage_web_GCLOUD_DEPLOY_credentialsKey")
|
|
908
985
|
- export GCLOUD_PROJECT_NUMBER=$(gcloud projects describe google-project-id --format="value(projectNumber)")
|
|
909
986
|
- 'echo "GCLOUD_PROJECT_NUMBER: $GCLOUD_PROJECT_NUMBER"'
|
|
910
|
-
-
|
|
911
|
-
-
|
|
987
|
+
- collapseable_section_end "prepare"
|
|
988
|
+
- collapseable_section_start "writeenvvars" "Write env vars to file"
|
|
912
989
|
- |
|
|
913
990
|
cat > ____envvars.yaml <<EOF
|
|
914
991
|
ENV_SHORT: |-
|
|
@@ -918,41 +995,39 @@ web 🧪 test:
|
|
|
918
995
|
ENV_TYPE: |-
|
|
919
996
|
stage
|
|
920
997
|
BUILD_INFO_BUILD_ID: |-
|
|
921
|
-
|
|
998
|
+
$(printf %s "$(git describe --tags 2>/dev/null || git rev-parse HEAD)" | sed '1!s/^/ /')
|
|
922
999
|
BUILD_INFO_BUILD_TIME: |-
|
|
923
|
-
|
|
1000
|
+
$(printf %s "$CI_JOB_STARTED_AT" | sed '1!s/^/ /')
|
|
924
1001
|
BUILD_INFO_CURRENT_VERSION: |-
|
|
925
|
-
|
|
926
|
-
|
|
927
|
-
|
|
1002
|
+
$(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/^/ /')
|
|
1003
|
+
HOSTNAME: |-
|
|
1004
|
+
$(printf %s "$(printf %s "pan-test-app-stage-web-$CL_stage_web_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')" | sed '1!s/^/ /')
|
|
928
1005
|
ROOT_URL: |-
|
|
929
|
-
|
|
930
|
-
|
|
931
|
-
|
|
932
|
-
HOST_CANONICAL: |-
|
|
933
|
-
$(printf %s "$(printf %s "pan-test-app-stage-web-$CL_stage_web_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')" | sed 's/^/ /')
|
|
1006
|
+
$(printf %s "https://$(printf %s "pan-test-app-stage-web-$CL_stage_web_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')" | sed '1!s/^/ /')
|
|
1007
|
+
HOSTNAME_INTERNAL: |-
|
|
1008
|
+
$(printf %s "$(printf %s "pan-test-app-stage-web-$CL_stage_web_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')" | sed '1!s/^/ /')
|
|
934
1009
|
ROOT_URL_INTERNAL: |-
|
|
935
|
-
|
|
1010
|
+
$(printf %s "https://$(printf %s "pan-test-app-stage-web-$CL_stage_web_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')" | sed '1!s/^/ /')
|
|
936
1011
|
DEPLOY_CLOUD_RUN_PROJECT_ID: |-
|
|
937
1012
|
google-project-id
|
|
938
1013
|
DEPLOY_CLOUD_RUN_REGION: |-
|
|
939
1014
|
europe-west6
|
|
940
1015
|
GCLOUD_RUN_canonicalHostSuffix: |-
|
|
941
|
-
|
|
1016
|
+
$(printf %s "$CL_stage_web_GCLOUD_RUN_canonicalHostSuffix" | sed '1!s/^/ /')
|
|
942
1017
|
_ALL_ENV_VAR_KEYS: |-
|
|
943
|
-
["ENV_SHORT","APP_DIR","ENV_TYPE","BUILD_INFO_BUILD_ID","BUILD_INFO_BUILD_TIME","BUILD_INFO_CURRENT_VERSION","
|
|
1018
|
+
["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"]
|
|
944
1019
|
|
|
945
1020
|
EOF
|
|
946
|
-
-
|
|
947
|
-
-
|
|
1021
|
+
- collapseable_section_end "writeenvvars"
|
|
1022
|
+
- collapseable_section_start "deploy" "Deploy to cloud run"
|
|
948
1023
|
- gcloud run deploy pan-test-app-stage-web --command="node,main.js" --image=europe-west6-docker.pkg.dev/google-project-id/catladder-deploy/pan-test-app/stage/web:$DOCKER_IMAGE_TAG --project=google-project-id --region=europe-west6 --labels=customer-name=pan,component-name=web,app-name=test-app,env-type=stage,env-name=stage,build-type=meteor,cloud-run-service-name=pan-test-app-stage-web --env-vars-file=____envvars.yaml --min-instances=0 --max-instances=100 --cpu-throttling --allow-unauthenticated --ingress=all --cpu-boost
|
|
949
1024
|
- gcloud run deploy pan-test-app-stage-web-worker --command="/bin/sh -c,BACKGROUND_JOBS_ENABLED=1 node main.js" --image=europe-west6-docker.pkg.dev/google-project-id/catladder-deploy/pan-test-app/stage/web:$DOCKER_IMAGE_TAG --project=google-project-id --region=europe-west6 --labels=customer-name=pan,component-name=web,app-name=test-app,env-type=stage,env-name=stage,build-type=meteor,cloud-run-service-name=pan-test-app-stage-web-worker --env-vars-file=____envvars.yaml --min-instances=1 --max-instances=1 --no-cpu-throttling --allow-unauthenticated --ingress=all --cpu-boost
|
|
950
|
-
-
|
|
951
|
-
-
|
|
1025
|
+
- collapseable_section_end "deploy"
|
|
1026
|
+
- collapseable_section_start "cleanup" "Cleanup"
|
|
952
1027
|
- gcloud run revisions list --project=google-project-id --region=europe-west6 --service=pan-test-app-stage-web --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=google-project-id --region=europe-west6 --quiet $revisionname ; done
|
|
953
1028
|
- gcloud artifacts docker images list europe-west6-docker.pkg.dev/google-project-id/catladder-deploy/pan-test-app/stage/web --sort-by=~CREATE_TIME --format="value(version)" | tail -n +2 | while read -r version; do gcloud artifacts docker images delete europe-west6-docker.pkg.dev/google-project-id/catladder-deploy/pan-test-app/stage/web@$version --quiet --delete-tags; done
|
|
954
1029
|
- gcloud artifacts docker images list europe-west6-docker.pkg.dev/google-project-id/catladder-deploy/pan-test-app/caches/web --sort-by=~CREATE_TIME --format="value(version)" | tail -n +2 | while read -r version; do gcloud artifacts docker images delete europe-west6-docker.pkg.dev/google-project-id/catladder-deploy/pan-test-app/caches/web@$version --quiet --delete-tags; done
|
|
955
|
-
-
|
|
1030
|
+
- collapseable_section_end "cleanup"
|
|
956
1031
|
- echo 'Uploading SBOM to Dependency Track'
|
|
957
1032
|
- /dtrackuploader https://dep.panter.swiss/ "$DT_KEY_PROD" upload "pan-test-app/web" "https://$(printf %s "pan-test-app-stage-web-$CL_stage_web_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')" "__sbom.json" vex.json || true
|
|
958
1033
|
- echo "CL_GITLAB_ENVIRONMENT_URL=https://$(printf %s "pan-test-app-stage-web-$CL_stage_web_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')" >> gitlab_environment.env
|
|
@@ -985,9 +1060,9 @@ web 🧪 test:
|
|
|
985
1060
|
KUBERNETES_MEMORY_LIMIT: 400Mi
|
|
986
1061
|
GIT_STRATEGY: none
|
|
987
1062
|
script:
|
|
988
|
-
-
|
|
1063
|
+
- collapseable_section_start "injectvars" "Injecting variables"
|
|
989
1064
|
- export CLOUDSDK_CORE_DISABLE_PROMPTS="1"
|
|
990
|
-
-
|
|
1065
|
+
- collapseable_section_end "injectvars"
|
|
991
1066
|
- set +e
|
|
992
1067
|
- gcloud auth activate-service-account --key-file=<(echo "$CL_stage_web_GCLOUD_DEPLOY_credentialsKey")
|
|
993
1068
|
- gcloud run services delete pan-test-app-stage-web --project=google-project-id --region=europe-west6
|
|
@@ -1022,7 +1097,7 @@ web 🧪 test:
|
|
|
1022
1097
|
KUBERNETES_MEMORY_REQUEST: 1Gi
|
|
1023
1098
|
KUBERNETES_MEMORY_LIMIT: 4Gi
|
|
1024
1099
|
script:
|
|
1025
|
-
-
|
|
1100
|
+
- collapseable_section_start "injectvars" "Injecting variables"
|
|
1026
1101
|
- export METEOR_DISABLE_OPTIMISTIC_CACHING="1"
|
|
1027
1102
|
- export ENV_SHORT="prod"
|
|
1028
1103
|
- export APP_DIR="web"
|
|
@@ -1030,30 +1105,46 @@ web 🧪 test:
|
|
|
1030
1105
|
- export BUILD_INFO_BUILD_ID="$(git describe --tags 2>/dev/null || git rev-parse HEAD)"
|
|
1031
1106
|
- export BUILD_INFO_BUILD_TIME="$CI_JOB_STARTED_AT"
|
|
1032
1107
|
- 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")"
|
|
1033
|
-
- export
|
|
1108
|
+
- export HOSTNAME="$(printf %s "pan-test-app-prod-web-$CL_prod_web_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')"
|
|
1034
1109
|
- export ROOT_URL="https://$(printf %s "pan-test-app-prod-web-$CL_prod_web_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')"
|
|
1035
|
-
- export
|
|
1036
|
-
- export HOST_CANONICAL="$(printf %s "pan-test-app-prod-web-$CL_prod_web_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')"
|
|
1110
|
+
- export HOSTNAME_INTERNAL="$(printf %s "pan-test-app-prod-web-$CL_prod_web_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')"
|
|
1037
1111
|
- export ROOT_URL_INTERNAL="https://$(printf %s "pan-test-app-prod-web-$CL_prod_web_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')"
|
|
1038
1112
|
- export DEPLOY_CLOUD_RUN_PROJECT_ID="google-project-id"
|
|
1039
1113
|
- export DEPLOY_CLOUD_RUN_REGION="europe-west6"
|
|
1040
1114
|
- export GCLOUD_DEPLOY_credentialsKey="$CL_prod_web_GCLOUD_DEPLOY_credentialsKey"
|
|
1041
1115
|
- export GCLOUD_RUN_canonicalHostSuffix="$CL_prod_web_GCLOUD_RUN_canonicalHostSuffix"
|
|
1042
|
-
- export _ALL_ENV_VAR_KEYS="[\\"ENV_SHORT\\",\\"APP_DIR\\",\\"ENV_TYPE\\",\\"BUILD_INFO_BUILD_ID\\",\\"BUILD_INFO_BUILD_TIME\\",\\"BUILD_INFO_CURRENT_VERSION\\",\\"
|
|
1043
|
-
-
|
|
1116
|
+
- 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\\"]"
|
|
1117
|
+
- collapseable_section_end "injectvars"
|
|
1118
|
+
- collapseable_section_start "write-dotenv-web" "write dot env for web"
|
|
1119
|
+
- |-
|
|
1120
|
+
cat <<EOF > web/.env
|
|
1121
|
+
ENV_SHORT=prod
|
|
1122
|
+
APP_DIR=web
|
|
1123
|
+
ENV_TYPE=prod
|
|
1124
|
+
HOSTNAME=$(printf %s "$(printf %s "pan-test-app-prod-web-$CL_prod_web_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')" | escapeForDotEnv)
|
|
1125
|
+
ROOT_URL=$(printf %s "https://$(printf %s "pan-test-app-prod-web-$CL_prod_web_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')" | escapeForDotEnv)
|
|
1126
|
+
HOSTNAME_INTERNAL=$(printf %s "$(printf %s "pan-test-app-prod-web-$CL_prod_web_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')" | escapeForDotEnv)
|
|
1127
|
+
ROOT_URL_INTERNAL=$(printf %s "https://$(printf %s "pan-test-app-prod-web-$CL_prod_web_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')" | escapeForDotEnv)
|
|
1128
|
+
DEPLOY_CLOUD_RUN_PROJECT_ID=google-project-id
|
|
1129
|
+
DEPLOY_CLOUD_RUN_REGION=europe-west6
|
|
1130
|
+
GCLOUD_DEPLOY_credentialsKey=$(printf %s "$CL_prod_web_GCLOUD_DEPLOY_credentialsKey" | escapeForDotEnv)
|
|
1131
|
+
GCLOUD_RUN_canonicalHostSuffix=$(printf %s "$CL_prod_web_GCLOUD_RUN_canonicalHostSuffix" | escapeForDotEnv)
|
|
1132
|
+
_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"]
|
|
1133
|
+
EOF
|
|
1134
|
+
- collapseable_section_end "write-dotenv-web"
|
|
1044
1135
|
- echo '{"id":"$(git describe --tags 2>/dev/null || git rev-parse HEAD)","time":"$CI_JOB_STARTED_AT"}' > web/__build_info.json
|
|
1045
|
-
-
|
|
1136
|
+
- collapseable_section_start "nodeinstall" "Ensure node version"
|
|
1046
1137
|
- if [ -f ~/.nvm/nvm.sh ]; then source ~/.nvm/nvm.sh; fi
|
|
1047
1138
|
- if command -v nvm &> /dev/null && [ -f ./.nvmrc ]; then nvm install; fi
|
|
1048
|
-
-
|
|
1139
|
+
- collapseable_section_end "nodeinstall"
|
|
1049
1140
|
- cd web
|
|
1050
|
-
-
|
|
1141
|
+
- collapseable_section_start "nodeinstall" "Ensure node version"
|
|
1051
1142
|
- if [ -f ~/.nvm/nvm.sh ]; then source ~/.nvm/nvm.sh; fi
|
|
1052
1143
|
- if command -v nvm &> /dev/null && [ -f ./.nvmrc ]; then nvm install; fi
|
|
1053
|
-
-
|
|
1054
|
-
-
|
|
1144
|
+
- collapseable_section_end "nodeinstall"
|
|
1145
|
+
- collapseable_section_start "yarninstall" "Yarn install"
|
|
1055
1146
|
- yarn install --immutable
|
|
1056
|
-
-
|
|
1147
|
+
- collapseable_section_end "yarninstall"
|
|
1057
1148
|
- echo "add healthcheck package"
|
|
1058
1149
|
- meteor add panter:healthroute --allow-superuser
|
|
1059
1150
|
- meteor add qualia:prod-shell --allow-superuser
|
|
@@ -1079,6 +1170,8 @@ web 🧪 test:
|
|
|
1079
1170
|
paths:
|
|
1080
1171
|
- web/__build_info.json
|
|
1081
1172
|
- web/dist
|
|
1173
|
+
exclude:
|
|
1174
|
+
- web/.env
|
|
1082
1175
|
expire_in: 1 day
|
|
1083
1176
|
when: always
|
|
1084
1177
|
reports: {}
|
|
@@ -1104,7 +1197,7 @@ web 🧪 test:
|
|
|
1104
1197
|
KUBERNETES_MEMORY_REQUEST: 1Gi
|
|
1105
1198
|
KUBERNETES_MEMORY_LIMIT: 2Gi
|
|
1106
1199
|
script:
|
|
1107
|
-
-
|
|
1200
|
+
- collapseable_section_start "injectvars" "Injecting variables"
|
|
1108
1201
|
- export APP_DIR="web"
|
|
1109
1202
|
- export DOCKER_BUILD_CONTEXT="."
|
|
1110
1203
|
- export DOCKER_REGISTRY="europe-west6-docker.pkg.dev"
|
|
@@ -1112,20 +1205,20 @@ web 🧪 test:
|
|
|
1112
1205
|
- export DOCKER_CACHE_IMAGE="europe-west6-docker.pkg.dev/google-project-id/catladder-deploy/pan-test-app/caches/web"
|
|
1113
1206
|
- export DOCKER_IMAGE_TAG="$CI_COMMIT_SHA"
|
|
1114
1207
|
- export METEOR_INSTALL_SCRIPTS=""
|
|
1115
|
-
-
|
|
1208
|
+
- collapseable_section_end "injectvars"
|
|
1116
1209
|
- ensureMeteorDockerfile
|
|
1117
|
-
-
|
|
1210
|
+
- collapseable_section_start "docker-login" "Docker Login"
|
|
1118
1211
|
- gcloud auth activate-service-account --key-file=<(echo "$CL_prod_web_GCLOUD_DEPLOY_credentialsKey")
|
|
1119
1212
|
- gcloud auth configure-docker europe-west6-docker.pkg.dev
|
|
1120
|
-
-
|
|
1121
|
-
-
|
|
1213
|
+
- collapseable_section_end "docker-login"
|
|
1214
|
+
- collapseable_section_start "docker-build" "Docker build"
|
|
1122
1215
|
- 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
|
|
1123
|
-
-
|
|
1124
|
-
-
|
|
1216
|
+
- collapseable_section_end "docker-build"
|
|
1217
|
+
- collapseable_section_start "docker-push" "Docker push and tag"
|
|
1125
1218
|
- docker push $DOCKER_IMAGE:$DOCKER_IMAGE_TAG
|
|
1126
1219
|
- docker tag $DOCKER_IMAGE:$DOCKER_IMAGE_TAG $DOCKER_CACHE_IMAGE
|
|
1127
1220
|
- docker push $DOCKER_CACHE_IMAGE
|
|
1128
|
-
-
|
|
1221
|
+
- collapseable_section_end "docker-push"
|
|
1129
1222
|
rules:
|
|
1130
1223
|
- if: $CI_COMMIT_TAG
|
|
1131
1224
|
needs:
|
|
@@ -1137,8 +1230,8 @@ web 🧪 test:
|
|
|
1137
1230
|
image: aquasec/trivy:0.38.3
|
|
1138
1231
|
variables: {}
|
|
1139
1232
|
script:
|
|
1140
|
-
-
|
|
1141
|
-
-
|
|
1233
|
+
- collapseable_section_start "injectvars" "Injecting variables"
|
|
1234
|
+
- collapseable_section_end "injectvars"
|
|
1142
1235
|
- trivy fs --quiet --format cyclonedx --output "__sbom.json" web
|
|
1143
1236
|
artifacts:
|
|
1144
1237
|
paths:
|
|
@@ -1157,35 +1250,34 @@ web 🧪 test:
|
|
|
1157
1250
|
KUBERNETES_MEMORY_REQUEST: 200Mi
|
|
1158
1251
|
KUBERNETES_MEMORY_LIMIT: 400Mi
|
|
1159
1252
|
script:
|
|
1160
|
-
-
|
|
1253
|
+
- collapseable_section_start "injectvars" "Injecting variables"
|
|
1161
1254
|
- export ENV_SHORT="prod"
|
|
1162
1255
|
- export APP_DIR="web"
|
|
1163
1256
|
- export ENV_TYPE="prod"
|
|
1164
1257
|
- export BUILD_INFO_BUILD_ID="$(git describe --tags 2>/dev/null || git rev-parse HEAD)"
|
|
1165
1258
|
- export BUILD_INFO_BUILD_TIME="$CI_JOB_STARTED_AT"
|
|
1166
1259
|
- 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")"
|
|
1167
|
-
- export
|
|
1260
|
+
- export HOSTNAME="$(printf %s "pan-test-app-prod-web-$CL_prod_web_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')"
|
|
1168
1261
|
- export ROOT_URL="https://$(printf %s "pan-test-app-prod-web-$CL_prod_web_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')"
|
|
1169
|
-
- export
|
|
1170
|
-
- export HOST_CANONICAL="$(printf %s "pan-test-app-prod-web-$CL_prod_web_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')"
|
|
1262
|
+
- export HOSTNAME_INTERNAL="$(printf %s "pan-test-app-prod-web-$CL_prod_web_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')"
|
|
1171
1263
|
- export ROOT_URL_INTERNAL="https://$(printf %s "pan-test-app-prod-web-$CL_prod_web_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')"
|
|
1172
1264
|
- export DEPLOY_CLOUD_RUN_PROJECT_ID="google-project-id"
|
|
1173
1265
|
- export DEPLOY_CLOUD_RUN_REGION="europe-west6"
|
|
1174
1266
|
- export GCLOUD_DEPLOY_credentialsKey="$CL_prod_web_GCLOUD_DEPLOY_credentialsKey"
|
|
1175
1267
|
- export GCLOUD_RUN_canonicalHostSuffix="$CL_prod_web_GCLOUD_RUN_canonicalHostSuffix"
|
|
1176
|
-
- export _ALL_ENV_VAR_KEYS="[\\"ENV_SHORT\\",\\"APP_DIR\\",\\"ENV_TYPE\\",\\"BUILD_INFO_BUILD_ID\\",\\"BUILD_INFO_BUILD_TIME\\",\\"BUILD_INFO_CURRENT_VERSION\\",\\"
|
|
1268
|
+
- 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\\"]"
|
|
1177
1269
|
- export DOCKER_REGISTRY="europe-west6-docker.pkg.dev"
|
|
1178
1270
|
- export DOCKER_IMAGE="europe-west6-docker.pkg.dev/google-project-id/catladder-deploy/pan-test-app/prod/web"
|
|
1179
1271
|
- export DOCKER_CACHE_IMAGE="europe-west6-docker.pkg.dev/google-project-id/catladder-deploy/pan-test-app/caches/web"
|
|
1180
1272
|
- export DOCKER_IMAGE_TAG="$CI_COMMIT_SHA"
|
|
1181
1273
|
- export CLOUDSDK_CORE_DISABLE_PROMPTS="1"
|
|
1182
|
-
-
|
|
1183
|
-
-
|
|
1274
|
+
- collapseable_section_end "injectvars"
|
|
1275
|
+
- collapseable_section_start "prepare" "Prepare..."
|
|
1184
1276
|
- gcloud auth activate-service-account --key-file=<(echo "$CL_prod_web_GCLOUD_DEPLOY_credentialsKey")
|
|
1185
1277
|
- export GCLOUD_PROJECT_NUMBER=$(gcloud projects describe google-project-id --format="value(projectNumber)")
|
|
1186
1278
|
- 'echo "GCLOUD_PROJECT_NUMBER: $GCLOUD_PROJECT_NUMBER"'
|
|
1187
|
-
-
|
|
1188
|
-
-
|
|
1279
|
+
- collapseable_section_end "prepare"
|
|
1280
|
+
- collapseable_section_start "writeenvvars" "Write env vars to file"
|
|
1189
1281
|
- |
|
|
1190
1282
|
cat > ____envvars.yaml <<EOF
|
|
1191
1283
|
ENV_SHORT: |-
|
|
@@ -1195,41 +1287,39 @@ web 🧪 test:
|
|
|
1195
1287
|
ENV_TYPE: |-
|
|
1196
1288
|
prod
|
|
1197
1289
|
BUILD_INFO_BUILD_ID: |-
|
|
1198
|
-
|
|
1290
|
+
$(printf %s "$(git describe --tags 2>/dev/null || git rev-parse HEAD)" | sed '1!s/^/ /')
|
|
1199
1291
|
BUILD_INFO_BUILD_TIME: |-
|
|
1200
|
-
|
|
1292
|
+
$(printf %s "$CI_JOB_STARTED_AT" | sed '1!s/^/ /')
|
|
1201
1293
|
BUILD_INFO_CURRENT_VERSION: |-
|
|
1202
|
-
|
|
1203
|
-
|
|
1204
|
-
|
|
1294
|
+
$(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/^/ /')
|
|
1295
|
+
HOSTNAME: |-
|
|
1296
|
+
$(printf %s "$(printf %s "pan-test-app-prod-web-$CL_prod_web_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')" | sed '1!s/^/ /')
|
|
1205
1297
|
ROOT_URL: |-
|
|
1206
|
-
|
|
1207
|
-
|
|
1208
|
-
|
|
1209
|
-
HOST_CANONICAL: |-
|
|
1210
|
-
$(printf %s "$(printf %s "pan-test-app-prod-web-$CL_prod_web_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')" | sed 's/^/ /')
|
|
1298
|
+
$(printf %s "https://$(printf %s "pan-test-app-prod-web-$CL_prod_web_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')" | sed '1!s/^/ /')
|
|
1299
|
+
HOSTNAME_INTERNAL: |-
|
|
1300
|
+
$(printf %s "$(printf %s "pan-test-app-prod-web-$CL_prod_web_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')" | sed '1!s/^/ /')
|
|
1211
1301
|
ROOT_URL_INTERNAL: |-
|
|
1212
|
-
|
|
1302
|
+
$(printf %s "https://$(printf %s "pan-test-app-prod-web-$CL_prod_web_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')" | sed '1!s/^/ /')
|
|
1213
1303
|
DEPLOY_CLOUD_RUN_PROJECT_ID: |-
|
|
1214
1304
|
google-project-id
|
|
1215
1305
|
DEPLOY_CLOUD_RUN_REGION: |-
|
|
1216
1306
|
europe-west6
|
|
1217
1307
|
GCLOUD_RUN_canonicalHostSuffix: |-
|
|
1218
|
-
|
|
1308
|
+
$(printf %s "$CL_prod_web_GCLOUD_RUN_canonicalHostSuffix" | sed '1!s/^/ /')
|
|
1219
1309
|
_ALL_ENV_VAR_KEYS: |-
|
|
1220
|
-
["ENV_SHORT","APP_DIR","ENV_TYPE","BUILD_INFO_BUILD_ID","BUILD_INFO_BUILD_TIME","BUILD_INFO_CURRENT_VERSION","
|
|
1310
|
+
["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"]
|
|
1221
1311
|
|
|
1222
1312
|
EOF
|
|
1223
|
-
-
|
|
1224
|
-
-
|
|
1313
|
+
- collapseable_section_end "writeenvvars"
|
|
1314
|
+
- collapseable_section_start "deploy" "Deploy to cloud run"
|
|
1225
1315
|
- gcloud run deploy pan-test-app-prod-web --command="node,main.js" --image=europe-west6-docker.pkg.dev/google-project-id/catladder-deploy/pan-test-app/prod/web:$DOCKER_IMAGE_TAG --project=google-project-id --region=europe-west6 --labels=customer-name=pan,component-name=web,app-name=test-app,env-type=prod,env-name=prod,build-type=meteor,cloud-run-service-name=pan-test-app-prod-web --env-vars-file=____envvars.yaml --min-instances=0 --max-instances=100 --cpu-throttling --allow-unauthenticated --ingress=all --cpu-boost
|
|
1226
1316
|
- gcloud run deploy pan-test-app-prod-web-worker --command="/bin/sh -c,BACKGROUND_JOBS_ENABLED=1 node main.js" --image=europe-west6-docker.pkg.dev/google-project-id/catladder-deploy/pan-test-app/prod/web:$DOCKER_IMAGE_TAG --project=google-project-id --region=europe-west6 --labels=customer-name=pan,component-name=web,app-name=test-app,env-type=prod,env-name=prod,build-type=meteor,cloud-run-service-name=pan-test-app-prod-web-worker --env-vars-file=____envvars.yaml --min-instances=1 --max-instances=1 --no-cpu-throttling --allow-unauthenticated --ingress=all --cpu-boost
|
|
1227
|
-
-
|
|
1228
|
-
-
|
|
1317
|
+
- collapseable_section_end "deploy"
|
|
1318
|
+
- collapseable_section_start "cleanup" "Cleanup"
|
|
1229
1319
|
- gcloud run revisions list --project=google-project-id --region=europe-west6 --service=pan-test-app-prod-web --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=google-project-id --region=europe-west6 --quiet $revisionname ; done
|
|
1230
1320
|
- gcloud artifacts docker images list europe-west6-docker.pkg.dev/google-project-id/catladder-deploy/pan-test-app/prod/web --sort-by=~CREATE_TIME --format="value(version)" | tail -n +7 | while read -r version; do gcloud artifacts docker images delete europe-west6-docker.pkg.dev/google-project-id/catladder-deploy/pan-test-app/prod/web@$version --quiet --delete-tags; done
|
|
1231
1321
|
- gcloud artifacts docker images list europe-west6-docker.pkg.dev/google-project-id/catladder-deploy/pan-test-app/caches/web --sort-by=~CREATE_TIME --format="value(version)" | tail -n +2 | while read -r version; do gcloud artifacts docker images delete europe-west6-docker.pkg.dev/google-project-id/catladder-deploy/pan-test-app/caches/web@$version --quiet --delete-tags; done
|
|
1232
|
-
-
|
|
1322
|
+
- collapseable_section_end "cleanup"
|
|
1233
1323
|
- echo 'Uploading SBOM to Dependency Track'
|
|
1234
1324
|
- /dtrackuploader https://dep.panter.swiss/ "$DT_KEY_PROD" upload "pan-test-app/web" "https://$(printf %s "pan-test-app-prod-web-$CL_prod_web_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')" "__sbom.json" vex.json || true
|
|
1235
1325
|
- echo "CL_GITLAB_ENVIRONMENT_URL=https://$(printf %s "pan-test-app-prod-web-$CL_prod_web_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')" >> gitlab_environment.env
|
|
@@ -1262,9 +1352,9 @@ web 🧪 test:
|
|
|
1262
1352
|
KUBERNETES_MEMORY_LIMIT: 400Mi
|
|
1263
1353
|
GIT_STRATEGY: none
|
|
1264
1354
|
script:
|
|
1265
|
-
-
|
|
1355
|
+
- collapseable_section_start "injectvars" "Injecting variables"
|
|
1266
1356
|
- export CLOUDSDK_CORE_DISABLE_PROMPTS="1"
|
|
1267
|
-
-
|
|
1357
|
+
- collapseable_section_end "injectvars"
|
|
1268
1358
|
- set +e
|
|
1269
1359
|
- gcloud auth activate-service-account --key-file=<(echo "$CL_prod_web_GCLOUD_DEPLOY_credentialsKey")
|
|
1270
1360
|
- gcloud run services delete pan-test-app-prod-web --project=google-project-id --region=europe-west6
|