@catladder/pipeline 1.170.0 → 2.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/bash/BashExpression.d.ts +2 -6
- package/dist/bash/BashExpression.js +5 -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 -41
- 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 +4741 -0
- 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 → referencing-other-vars.test.ts} +2 -2
- package/examples/referencing-other-vars.ts +83 -0
- package/examples/workspace-api-www-turbo-cache.test.ts +11 -0
- 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 +10 -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 -54
- 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,13 +45,43 @@ 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
|
app 🛡 audit:
|
|
49
79
|
stage: test
|
|
50
80
|
image: ruby:3.2.1
|
|
51
81
|
variables: {}
|
|
52
82
|
script:
|
|
53
|
-
-
|
|
54
|
-
-
|
|
83
|
+
- collapseable_section_start "injectvars" "Injecting variables"
|
|
84
|
+
- collapseable_section_end "injectvars"
|
|
55
85
|
- cd .temp-with-dockerfile
|
|
56
86
|
- gem install bundler-audit
|
|
57
87
|
- bundle audit check
|
|
@@ -73,8 +103,8 @@ app 👮 lint:
|
|
|
73
103
|
image: ruby:3.2.1
|
|
74
104
|
variables: {}
|
|
75
105
|
script:
|
|
76
|
-
-
|
|
77
|
-
-
|
|
106
|
+
- collapseable_section_start "injectvars" "Injecting variables"
|
|
107
|
+
- collapseable_section_end "injectvars"
|
|
78
108
|
- cd .temp-with-dockerfile
|
|
79
109
|
- bundle config set path 'tmp/cache'
|
|
80
110
|
- bundle install -j $(nproc)
|
|
@@ -99,8 +129,8 @@ app 🧪 test:
|
|
|
99
129
|
image: ruby:3.2.1
|
|
100
130
|
variables: {}
|
|
101
131
|
script:
|
|
102
|
-
-
|
|
103
|
-
-
|
|
132
|
+
- collapseable_section_start "injectvars" "Injecting variables"
|
|
133
|
+
- collapseable_section_end "injectvars"
|
|
104
134
|
- cd .temp-with-dockerfile
|
|
105
135
|
- bundle config set path 'tmp/cache'
|
|
106
136
|
- bundle install -j $(nproc)
|
|
@@ -131,7 +161,7 @@ app 🧪 test:
|
|
|
131
161
|
KUBERNETES_MEMORY_REQUEST: 1Gi
|
|
132
162
|
KUBERNETES_MEMORY_LIMIT: 2Gi
|
|
133
163
|
script:
|
|
134
|
-
-
|
|
164
|
+
- collapseable_section_start "injectvars" "Injecting variables"
|
|
135
165
|
- export APP_DIR=".temp-with-dockerfile"
|
|
136
166
|
- export DOCKER_BUILD_CONTEXT="."
|
|
137
167
|
- export DOCKER_REGISTRY="$CI_REGISTRY"
|
|
@@ -139,18 +169,18 @@ app 🧪 test:
|
|
|
139
169
|
- export DOCKER_IMAGE_NAME="dev/app"
|
|
140
170
|
- export DOCKER_IMAGE="$CI_REGISTRY_IMAGE/$DOCKER_IMAGE_NAME"
|
|
141
171
|
- export DOCKER_IMAGE_TAG="$CI_COMMIT_SHA"
|
|
142
|
-
-
|
|
143
|
-
-
|
|
172
|
+
- collapseable_section_end "injectvars"
|
|
173
|
+
- collapseable_section_start "docker-login" "Docker Login"
|
|
144
174
|
- docker login --username gitlab-ci-token --password $CI_JOB_TOKEN $CI_REGISTRY
|
|
145
|
-
-
|
|
146
|
-
-
|
|
175
|
+
- collapseable_section_end "docker-login"
|
|
176
|
+
- collapseable_section_start "docker-build" "Docker build"
|
|
147
177
|
- 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
|
|
148
|
-
-
|
|
149
|
-
-
|
|
178
|
+
- collapseable_section_end "docker-build"
|
|
179
|
+
- collapseable_section_start "docker-push" "Docker push and tag"
|
|
150
180
|
- docker push $DOCKER_IMAGE:$DOCKER_IMAGE_TAG
|
|
151
181
|
- docker tag $DOCKER_IMAGE:$DOCKER_IMAGE_TAG $DOCKER_CACHE_IMAGE
|
|
152
182
|
- docker push $DOCKER_CACHE_IMAGE
|
|
153
|
-
-
|
|
183
|
+
- collapseable_section_end "docker-push"
|
|
154
184
|
rules:
|
|
155
185
|
- when: never
|
|
156
186
|
if: $CI_COMMIT_MESSAGE =~ /^chore\\(release\\).*/
|
|
@@ -163,8 +193,8 @@ app 🧪 test:
|
|
|
163
193
|
image: aquasec/trivy:0.38.3
|
|
164
194
|
variables: {}
|
|
165
195
|
script:
|
|
166
|
-
-
|
|
167
|
-
-
|
|
196
|
+
- collapseable_section_start "injectvars" "Injecting variables"
|
|
197
|
+
- collapseable_section_end "injectvars"
|
|
168
198
|
- trivy fs --quiet --format cyclonedx --output "__sbom.json" .temp-with-dockerfile
|
|
169
199
|
artifacts:
|
|
170
200
|
paths:
|
|
@@ -185,7 +215,7 @@ app 🧪 test:
|
|
|
185
215
|
KUBERNETES_MEMORY_REQUEST: 200Mi
|
|
186
216
|
KUBERNETES_MEMORY_LIMIT: 400Mi
|
|
187
217
|
script:
|
|
188
|
-
-
|
|
218
|
+
- collapseable_section_start "injectvars" "Injecting variables"
|
|
189
219
|
- export ENV_SHORT="dev"
|
|
190
220
|
- export APP_DIR=".temp-with-dockerfile"
|
|
191
221
|
- export ENV_TYPE="dev"
|
|
@@ -193,8 +223,7 @@ app 🧪 test:
|
|
|
193
223
|
- export BUILD_INFO_BUILD_TIME="$CI_JOB_STARTED_AT"
|
|
194
224
|
- 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")"
|
|
195
225
|
- export ROOT_URL="https://app.dev.test-app.pan.panter.cloud"
|
|
196
|
-
- export
|
|
197
|
-
- export HOST_CANONICAL="app.dev.test-app.pan.panter.cloud"
|
|
226
|
+
- export HOSTNAME_INTERNAL="app.dev.test-app.pan.panter.cloud"
|
|
198
227
|
- export ROOT_URL_INTERNAL="https://app.dev.test-app.pan.panter.cloud"
|
|
199
228
|
- export KUBE_NAMESPACE="pan-test-app-dev"
|
|
200
229
|
- export KUBE_APP_NAME="app"
|
|
@@ -203,7 +232,7 @@ app 🧪 test:
|
|
|
203
232
|
- export POSTGRESQL_PASSWORD="$CL_dev_app_POSTGRESQL_PASSWORD"
|
|
204
233
|
- export cloudsqlProxyCredentials="$CL_dev_app_cloudsqlProxyCredentials"
|
|
205
234
|
- export RAILS_ENV="production"
|
|
206
|
-
- export _ALL_ENV_VAR_KEYS="[\\"ENV_SHORT\\",\\"APP_DIR\\",\\"ENV_TYPE\\",\\"BUILD_INFO_BUILD_ID\\",\\"BUILD_INFO_BUILD_TIME\\",\\"BUILD_INFO_CURRENT_VERSION\\",\\"ROOT_URL\\",\\"
|
|
235
|
+
- export _ALL_ENV_VAR_KEYS="[\\"ENV_SHORT\\",\\"APP_DIR\\",\\"ENV_TYPE\\",\\"BUILD_INFO_BUILD_ID\\",\\"BUILD_INFO_BUILD_TIME\\",\\"BUILD_INFO_CURRENT_VERSION\\",\\"ROOT_URL\\",\\"HOSTNAME_INTERNAL\\",\\"ROOT_URL_INTERNAL\\",\\"KUBE_NAMESPACE\\",\\"KUBE_APP_NAME\\",\\"KUBE_APP_NAME_PREFIX\\",\\"SECRET_KEY_BASE\\",\\"POSTGRESQL_PASSWORD\\",\\"cloudsqlProxyCredentials\\",\\"RAILS_ENV\\"]"
|
|
207
236
|
- export DOCKER_REGISTRY="$CI_REGISTRY"
|
|
208
237
|
- export DOCKER_CACHE_IMAGE="$CI_REGISTRY_IMAGE/caches/app"
|
|
209
238
|
- export DOCKER_IMAGE_NAME="dev/app"
|
|
@@ -215,23 +244,22 @@ app 🧪 test:
|
|
|
215
244
|
- export HELM_GITLAB_CHART_NAME="/helm-charts/the-panter-chart"
|
|
216
245
|
- export HELM_ARGS=""
|
|
217
246
|
- export COMPONENT_NAME="app"
|
|
218
|
-
-
|
|
219
|
-
- echo -e "\\e[0Ksection_end:$(date +%s):injectvars\\r\\e[0K"
|
|
247
|
+
- collapseable_section_end "injectvars"
|
|
220
248
|
- kubectl config set-cluster "kube-pan-test-app-dev-app" --server="$CL_dev_app_KUBE_URL" --certificate-authority <(echo $CL_dev_app_KUBE_CA_PEM | base64 -d) --embed-certs=true
|
|
221
249
|
- kubectl config set-credentials "kube-pan-test-app-dev-app" --token="$CL_dev_app_KUBE_TOKEN"
|
|
222
250
|
- kubectl config set-context "kube-pan-test-app-dev-app" --cluster="kube-pan-test-app-dev-app" --user="kube-pan-test-app-dev-app" --namespace="pan-test-app-dev"
|
|
223
251
|
- kubectl config use-context "kube-pan-test-app-dev-app"
|
|
224
|
-
-
|
|
252
|
+
- collapseable_section_start "writeallvalues" "Write __all_values.yml for helm deployment"
|
|
225
253
|
- |
|
|
226
254
|
cat > __all_values.yml <<EOF
|
|
227
255
|
env:
|
|
228
256
|
secret:
|
|
229
257
|
SECRET_KEY_BASE: |-
|
|
230
|
-
|
|
258
|
+
$(printf %s "$CL_dev_app_SECRET_KEY_BASE" | sed '1!s/^/ /')
|
|
231
259
|
POSTGRESQL_PASSWORD: |-
|
|
232
|
-
|
|
260
|
+
$(printf %s "$CL_dev_app_POSTGRESQL_PASSWORD" | sed '1!s/^/ /')
|
|
233
261
|
cloudsqlProxyCredentials: |-
|
|
234
|
-
|
|
262
|
+
$(printf %s "$CL_dev_app_cloudsqlProxyCredentials" | sed '1!s/^/ /')
|
|
235
263
|
public:
|
|
236
264
|
ENV_SHORT: |-
|
|
237
265
|
dev
|
|
@@ -240,16 +268,14 @@ app 🧪 test:
|
|
|
240
268
|
ENV_TYPE: |-
|
|
241
269
|
dev
|
|
242
270
|
BUILD_INFO_BUILD_ID: |-
|
|
243
|
-
|
|
271
|
+
$(printf %s "$(git describe --tags 2>/dev/null || git rev-parse HEAD)" | sed '1!s/^/ /')
|
|
244
272
|
BUILD_INFO_BUILD_TIME: |-
|
|
245
|
-
|
|
273
|
+
$(printf %s "$CI_JOB_STARTED_AT" | sed '1!s/^/ /')
|
|
246
274
|
BUILD_INFO_CURRENT_VERSION: |-
|
|
247
|
-
|
|
275
|
+
$(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/^/ /')
|
|
248
276
|
ROOT_URL: |-
|
|
249
277
|
https://app.dev.test-app.pan.panter.cloud
|
|
250
|
-
|
|
251
|
-
app.dev.test-app.pan.panter.cloud
|
|
252
|
-
HOST_CANONICAL: |-
|
|
278
|
+
HOSTNAME_INTERNAL: |-
|
|
253
279
|
app.dev.test-app.pan.panter.cloud
|
|
254
280
|
ROOT_URL_INTERNAL: |-
|
|
255
281
|
https://app.dev.test-app.pan.panter.cloud
|
|
@@ -261,7 +287,7 @@ app 🧪 test:
|
|
|
261
287
|
RAILS_ENV: |-
|
|
262
288
|
production
|
|
263
289
|
_ALL_ENV_VAR_KEYS: |-
|
|
264
|
-
["ENV_SHORT","APP_DIR","ENV_TYPE","BUILD_INFO_BUILD_ID","BUILD_INFO_BUILD_TIME","BUILD_INFO_CURRENT_VERSION","ROOT_URL","
|
|
290
|
+
["ENV_SHORT","APP_DIR","ENV_TYPE","BUILD_INFO_BUILD_ID","BUILD_INFO_BUILD_TIME","BUILD_INFO_CURRENT_VERSION","ROOT_URL","HOSTNAME_INTERNAL","ROOT_URL_INTERNAL","KUBE_NAMESPACE","KUBE_APP_NAME","KUBE_APP_NAME_PREFIX","SECRET_KEY_BASE","POSTGRESQL_PASSWORD","cloudsqlProxyCredentials","RAILS_ENV"]
|
|
265
291
|
application:
|
|
266
292
|
host: |-
|
|
267
293
|
app.dev.test-app.pan.panter.cloud
|
|
@@ -289,13 +315,13 @@ app 🧪 test:
|
|
|
289
315
|
dbUser: |-
|
|
290
316
|
postgres
|
|
291
317
|
instanceConnectionName: |-
|
|
292
|
-
|
|
318
|
+
myproject:europe-west6:instance-name
|
|
293
319
|
proxyCredentials: |-
|
|
294
320
|
$CL_dev_app_cloudsqlProxyCredentials
|
|
295
321
|
fullDbName: |-
|
|
296
|
-
app
|
|
297
|
-
|
|
298
|
-
|
|
322
|
+
pan-test-app-dev-app
|
|
323
|
+
type: |-
|
|
324
|
+
unmanaged
|
|
299
325
|
jobs:
|
|
300
326
|
db-migrate:
|
|
301
327
|
hook: |-
|
|
@@ -304,7 +330,7 @@ app 🧪 test:
|
|
|
304
330
|
launcher bundle exec rake db:migrate
|
|
305
331
|
|
|
306
332
|
EOF
|
|
307
|
-
-
|
|
333
|
+
- collapseable_section_end "writeallvalues"
|
|
308
334
|
- kubernetesCreateSecret
|
|
309
335
|
- kubernetesDeploy
|
|
310
336
|
- echo 'Uploading SBOM to Dependency Track'
|
|
@@ -347,7 +373,7 @@ app 🧪 test:
|
|
|
347
373
|
KUBERNETES_MEMORY_LIMIT: 400Mi
|
|
348
374
|
GIT_STRATEGY: none
|
|
349
375
|
script:
|
|
350
|
-
-
|
|
376
|
+
- collapseable_section_start "injectvars" "Injecting variables"
|
|
351
377
|
- export ENV_SHORT="dev"
|
|
352
378
|
- export APP_DIR=".temp-with-dockerfile"
|
|
353
379
|
- export ENV_TYPE="dev"
|
|
@@ -355,8 +381,7 @@ app 🧪 test:
|
|
|
355
381
|
- export BUILD_INFO_BUILD_TIME="$CI_JOB_STARTED_AT"
|
|
356
382
|
- 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")"
|
|
357
383
|
- export ROOT_URL="https://app.dev.test-app.pan.panter.cloud"
|
|
358
|
-
- export
|
|
359
|
-
- export HOST_CANONICAL="app.dev.test-app.pan.panter.cloud"
|
|
384
|
+
- export HOSTNAME_INTERNAL="app.dev.test-app.pan.panter.cloud"
|
|
360
385
|
- export ROOT_URL_INTERNAL="https://app.dev.test-app.pan.panter.cloud"
|
|
361
386
|
- export KUBE_NAMESPACE="pan-test-app-dev"
|
|
362
387
|
- export KUBE_APP_NAME="app"
|
|
@@ -365,15 +390,14 @@ app 🧪 test:
|
|
|
365
390
|
- export POSTGRESQL_PASSWORD="$CL_dev_app_POSTGRESQL_PASSWORD"
|
|
366
391
|
- export cloudsqlProxyCredentials="$CL_dev_app_cloudsqlProxyCredentials"
|
|
367
392
|
- export RAILS_ENV="production"
|
|
368
|
-
- export _ALL_ENV_VAR_KEYS="[\\"ENV_SHORT\\",\\"APP_DIR\\",\\"ENV_TYPE\\",\\"BUILD_INFO_BUILD_ID\\",\\"BUILD_INFO_BUILD_TIME\\",\\"BUILD_INFO_CURRENT_VERSION\\",\\"ROOT_URL\\",\\"
|
|
393
|
+
- export _ALL_ENV_VAR_KEYS="[\\"ENV_SHORT\\",\\"APP_DIR\\",\\"ENV_TYPE\\",\\"BUILD_INFO_BUILD_ID\\",\\"BUILD_INFO_BUILD_TIME\\",\\"BUILD_INFO_CURRENT_VERSION\\",\\"ROOT_URL\\",\\"HOSTNAME_INTERNAL\\",\\"ROOT_URL_INTERNAL\\",\\"KUBE_NAMESPACE\\",\\"KUBE_APP_NAME\\",\\"KUBE_APP_NAME_PREFIX\\",\\"SECRET_KEY_BASE\\",\\"POSTGRESQL_PASSWORD\\",\\"cloudsqlProxyCredentials\\",\\"RAILS_ENV\\"]"
|
|
369
394
|
- export RELEASE_NAME="pan-test-app-dev-app"
|
|
370
395
|
- export HELM_EXPERIMENTAL_OCI="1"
|
|
371
396
|
- export KUBE_DOCKER_IMAGE_PULL_SECRET="gitlab-registry-app"
|
|
372
397
|
- export HELM_GITLAB_CHART_NAME="/helm-charts/the-panter-chart"
|
|
373
398
|
- export HELM_ARGS=""
|
|
374
399
|
- export COMPONENT_NAME="app"
|
|
375
|
-
-
|
|
376
|
-
- echo -e "\\e[0Ksection_end:$(date +%s):injectvars\\r\\e[0K"
|
|
400
|
+
- collapseable_section_end "injectvars"
|
|
377
401
|
- kubectl config set-cluster "kube-pan-test-app-dev-app" --server="$CL_dev_app_KUBE_URL" --certificate-authority <(echo $CL_dev_app_KUBE_CA_PEM | base64 -d) --embed-certs=true
|
|
378
402
|
- kubectl config set-credentials "kube-pan-test-app-dev-app" --token="$CL_dev_app_KUBE_TOKEN"
|
|
379
403
|
- kubectl config set-context "kube-pan-test-app-dev-app" --cluster="kube-pan-test-app-dev-app" --user="kube-pan-test-app-dev-app" --namespace="pan-test-app-dev"
|
|
@@ -409,7 +433,7 @@ app 🧪 test:
|
|
|
409
433
|
KUBERNETES_MEMORY_LIMIT: 400Mi
|
|
410
434
|
GIT_STRATEGY: none
|
|
411
435
|
script:
|
|
412
|
-
-
|
|
436
|
+
- collapseable_section_start "injectvars" "Injecting variables"
|
|
413
437
|
- export ENV_SHORT="dev"
|
|
414
438
|
- export APP_DIR=".temp-with-dockerfile"
|
|
415
439
|
- export ENV_TYPE="dev"
|
|
@@ -417,8 +441,7 @@ app 🧪 test:
|
|
|
417
441
|
- export BUILD_INFO_BUILD_TIME="$CI_JOB_STARTED_AT"
|
|
418
442
|
- 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")"
|
|
419
443
|
- export ROOT_URL="https://app.dev.test-app.pan.panter.cloud"
|
|
420
|
-
- export
|
|
421
|
-
- export HOST_CANONICAL="app.dev.test-app.pan.panter.cloud"
|
|
444
|
+
- export HOSTNAME_INTERNAL="app.dev.test-app.pan.panter.cloud"
|
|
422
445
|
- export ROOT_URL_INTERNAL="https://app.dev.test-app.pan.panter.cloud"
|
|
423
446
|
- export KUBE_NAMESPACE="pan-test-app-dev"
|
|
424
447
|
- export KUBE_APP_NAME="app"
|
|
@@ -427,15 +450,14 @@ app 🧪 test:
|
|
|
427
450
|
- export POSTGRESQL_PASSWORD="$CL_dev_app_POSTGRESQL_PASSWORD"
|
|
428
451
|
- export cloudsqlProxyCredentials="$CL_dev_app_cloudsqlProxyCredentials"
|
|
429
452
|
- export RAILS_ENV="production"
|
|
430
|
-
- export _ALL_ENV_VAR_KEYS="[\\"ENV_SHORT\\",\\"APP_DIR\\",\\"ENV_TYPE\\",\\"BUILD_INFO_BUILD_ID\\",\\"BUILD_INFO_BUILD_TIME\\",\\"BUILD_INFO_CURRENT_VERSION\\",\\"ROOT_URL\\",\\"
|
|
453
|
+
- export _ALL_ENV_VAR_KEYS="[\\"ENV_SHORT\\",\\"APP_DIR\\",\\"ENV_TYPE\\",\\"BUILD_INFO_BUILD_ID\\",\\"BUILD_INFO_BUILD_TIME\\",\\"BUILD_INFO_CURRENT_VERSION\\",\\"ROOT_URL\\",\\"HOSTNAME_INTERNAL\\",\\"ROOT_URL_INTERNAL\\",\\"KUBE_NAMESPACE\\",\\"KUBE_APP_NAME\\",\\"KUBE_APP_NAME_PREFIX\\",\\"SECRET_KEY_BASE\\",\\"POSTGRESQL_PASSWORD\\",\\"cloudsqlProxyCredentials\\",\\"RAILS_ENV\\"]"
|
|
431
454
|
- export RELEASE_NAME="pan-test-app-dev-app"
|
|
432
455
|
- export HELM_EXPERIMENTAL_OCI="1"
|
|
433
456
|
- export KUBE_DOCKER_IMAGE_PULL_SECRET="gitlab-registry-app"
|
|
434
457
|
- export HELM_GITLAB_CHART_NAME="/helm-charts/the-panter-chart"
|
|
435
458
|
- export HELM_ARGS=""
|
|
436
459
|
- export COMPONENT_NAME="app"
|
|
437
|
-
-
|
|
438
|
-
- echo -e "\\e[0Ksection_end:$(date +%s):injectvars\\r\\e[0K"
|
|
460
|
+
- collapseable_section_end "injectvars"
|
|
439
461
|
- kubectl config set-cluster "kube-pan-test-app-dev-app" --server="$CL_dev_app_KUBE_URL" --certificate-authority <(echo $CL_dev_app_KUBE_CA_PEM | base64 -d) --embed-certs=true
|
|
440
462
|
- kubectl config set-credentials "kube-pan-test-app-dev-app" --token="$CL_dev_app_KUBE_TOKEN"
|
|
441
463
|
- kubectl config set-context "kube-pan-test-app-dev-app" --cluster="kube-pan-test-app-dev-app" --user="kube-pan-test-app-dev-app" --namespace="pan-test-app-dev"
|
|
@@ -475,7 +497,7 @@ app 🧪 test:
|
|
|
475
497
|
KUBERNETES_MEMORY_REQUEST: 1Gi
|
|
476
498
|
KUBERNETES_MEMORY_LIMIT: 2Gi
|
|
477
499
|
script:
|
|
478
|
-
-
|
|
500
|
+
- collapseable_section_start "injectvars" "Injecting variables"
|
|
479
501
|
- export APP_DIR=".temp-with-dockerfile"
|
|
480
502
|
- export DOCKER_BUILD_CONTEXT="."
|
|
481
503
|
- export DOCKER_REGISTRY="$CI_REGISTRY"
|
|
@@ -483,18 +505,18 @@ app 🧪 test:
|
|
|
483
505
|
- export DOCKER_IMAGE_NAME="review/app"
|
|
484
506
|
- export DOCKER_IMAGE="$CI_REGISTRY_IMAGE/$DOCKER_IMAGE_NAME"
|
|
485
507
|
- export DOCKER_IMAGE_TAG="$CI_COMMIT_SHA"
|
|
486
|
-
-
|
|
487
|
-
-
|
|
508
|
+
- collapseable_section_end "injectvars"
|
|
509
|
+
- collapseable_section_start "docker-login" "Docker Login"
|
|
488
510
|
- docker login --username gitlab-ci-token --password $CI_JOB_TOKEN $CI_REGISTRY
|
|
489
|
-
-
|
|
490
|
-
-
|
|
511
|
+
- collapseable_section_end "docker-login"
|
|
512
|
+
- collapseable_section_start "docker-build" "Docker build"
|
|
491
513
|
- 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
|
|
492
|
-
-
|
|
493
|
-
-
|
|
514
|
+
- collapseable_section_end "docker-build"
|
|
515
|
+
- collapseable_section_start "docker-push" "Docker push and tag"
|
|
494
516
|
- docker push $DOCKER_IMAGE:$DOCKER_IMAGE_TAG
|
|
495
517
|
- docker tag $DOCKER_IMAGE:$DOCKER_IMAGE_TAG $DOCKER_CACHE_IMAGE
|
|
496
518
|
- docker push $DOCKER_CACHE_IMAGE
|
|
497
|
-
-
|
|
519
|
+
- collapseable_section_end "docker-push"
|
|
498
520
|
rules:
|
|
499
521
|
- if: $CI_MERGE_REQUEST_ID
|
|
500
522
|
needs: []
|
|
@@ -505,8 +527,8 @@ app 🧪 test:
|
|
|
505
527
|
image: aquasec/trivy:0.38.3
|
|
506
528
|
variables: {}
|
|
507
529
|
script:
|
|
508
|
-
-
|
|
509
|
-
-
|
|
530
|
+
- collapseable_section_start "injectvars" "Injecting variables"
|
|
531
|
+
- collapseable_section_end "injectvars"
|
|
510
532
|
- trivy fs --quiet --format cyclonedx --output "__sbom.json" .temp-with-dockerfile
|
|
511
533
|
artifacts:
|
|
512
534
|
paths:
|
|
@@ -525,7 +547,7 @@ app 🧪 test:
|
|
|
525
547
|
KUBERNETES_MEMORY_REQUEST: 200Mi
|
|
526
548
|
KUBERNETES_MEMORY_LIMIT: 400Mi
|
|
527
549
|
script:
|
|
528
|
-
-
|
|
550
|
+
- collapseable_section_start "injectvars" "Injecting variables"
|
|
529
551
|
- export ENV_SHORT="review"
|
|
530
552
|
- export APP_DIR=".temp-with-dockerfile"
|
|
531
553
|
- export ENV_TYPE="review"
|
|
@@ -533,8 +555,7 @@ app 🧪 test:
|
|
|
533
555
|
- export BUILD_INFO_BUILD_TIME="$CI_JOB_STARTED_AT"
|
|
534
556
|
- 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")"
|
|
535
557
|
- export ROOT_URL="https://app.$([ -n "$CI_MERGE_REQUEST_IID" ] && echo "mr$CI_MERGE_REQUEST_IID" || { [ -n "$CI_COMMIT_REF_SLUG" ] && echo "$CI_COMMIT_REF_SLUG" || echo "unknown"; }).review.test-app.pan.panter.cloud"
|
|
536
|
-
- export
|
|
537
|
-
- export HOST_CANONICAL="app.$([ -n "$CI_MERGE_REQUEST_IID" ] && echo "mr$CI_MERGE_REQUEST_IID" || { [ -n "$CI_COMMIT_REF_SLUG" ] && echo "$CI_COMMIT_REF_SLUG" || echo "unknown"; }).review.test-app.pan.panter.cloud"
|
|
558
|
+
- export HOSTNAME_INTERNAL="app.$([ -n "$CI_MERGE_REQUEST_IID" ] && echo "mr$CI_MERGE_REQUEST_IID" || { [ -n "$CI_COMMIT_REF_SLUG" ] && echo "$CI_COMMIT_REF_SLUG" || echo "unknown"; }).review.test-app.pan.panter.cloud"
|
|
538
559
|
- export ROOT_URL_INTERNAL="https://app.$([ -n "$CI_MERGE_REQUEST_IID" ] && echo "mr$CI_MERGE_REQUEST_IID" || { [ -n "$CI_COMMIT_REF_SLUG" ] && echo "$CI_COMMIT_REF_SLUG" || echo "unknown"; }).review.test-app.pan.panter.cloud"
|
|
539
560
|
- export KUBE_NAMESPACE="pan-test-app-review"
|
|
540
561
|
- export KUBE_APP_NAME="$([ -n "$CI_MERGE_REQUEST_IID" ] && echo "mr$CI_MERGE_REQUEST_IID" || { [ -n "$CI_COMMIT_REF_SLUG" ] && echo "$CI_COMMIT_REF_SLUG" || echo "unknown"; })-app"
|
|
@@ -543,7 +564,7 @@ app 🧪 test:
|
|
|
543
564
|
- export POSTGRESQL_PASSWORD="$CL_review_app_POSTGRESQL_PASSWORD"
|
|
544
565
|
- export cloudsqlProxyCredentials="$CL_review_app_cloudsqlProxyCredentials"
|
|
545
566
|
- export RAILS_ENV="production"
|
|
546
|
-
- export _ALL_ENV_VAR_KEYS="[\\"ENV_SHORT\\",\\"APP_DIR\\",\\"ENV_TYPE\\",\\"BUILD_INFO_BUILD_ID\\",\\"BUILD_INFO_BUILD_TIME\\",\\"BUILD_INFO_CURRENT_VERSION\\",\\"ROOT_URL\\",\\"
|
|
567
|
+
- export _ALL_ENV_VAR_KEYS="[\\"ENV_SHORT\\",\\"APP_DIR\\",\\"ENV_TYPE\\",\\"BUILD_INFO_BUILD_ID\\",\\"BUILD_INFO_BUILD_TIME\\",\\"BUILD_INFO_CURRENT_VERSION\\",\\"ROOT_URL\\",\\"HOSTNAME_INTERNAL\\",\\"ROOT_URL_INTERNAL\\",\\"KUBE_NAMESPACE\\",\\"KUBE_APP_NAME\\",\\"KUBE_APP_NAME_PREFIX\\",\\"SECRET_KEY_BASE\\",\\"POSTGRESQL_PASSWORD\\",\\"cloudsqlProxyCredentials\\",\\"RAILS_ENV\\"]"
|
|
547
568
|
- export DOCKER_REGISTRY="$CI_REGISTRY"
|
|
548
569
|
- export DOCKER_CACHE_IMAGE="$CI_REGISTRY_IMAGE/caches/app"
|
|
549
570
|
- export DOCKER_IMAGE_NAME="review/app"
|
|
@@ -555,23 +576,22 @@ app 🧪 test:
|
|
|
555
576
|
- export HELM_GITLAB_CHART_NAME="/helm-charts/the-panter-chart"
|
|
556
577
|
- export HELM_ARGS=""
|
|
557
578
|
- export COMPONENT_NAME="app"
|
|
558
|
-
-
|
|
559
|
-
- echo -e "\\e[0Ksection_end:$(date +%s):injectvars\\r\\e[0K"
|
|
579
|
+
- collapseable_section_end "injectvars"
|
|
560
580
|
- kubectl config set-cluster "kube-pan-test-app-review-$([ -n "$CI_MERGE_REQUEST_IID" ] && echo "mr$CI_MERGE_REQUEST_IID" || { [ -n "$CI_COMMIT_REF_SLUG" ] && echo "$CI_COMMIT_REF_SLUG" || echo "unknown"; })-app" --server="$CL_review_app_KUBE_URL" --certificate-authority <(echo $CL_review_app_KUBE_CA_PEM | base64 -d) --embed-certs=true
|
|
561
581
|
- kubectl config set-credentials "kube-pan-test-app-review-$([ -n "$CI_MERGE_REQUEST_IID" ] && echo "mr$CI_MERGE_REQUEST_IID" || { [ -n "$CI_COMMIT_REF_SLUG" ] && echo "$CI_COMMIT_REF_SLUG" || echo "unknown"; })-app" --token="$CL_review_app_KUBE_TOKEN"
|
|
562
582
|
- kubectl config set-context "kube-pan-test-app-review-$([ -n "$CI_MERGE_REQUEST_IID" ] && echo "mr$CI_MERGE_REQUEST_IID" || { [ -n "$CI_COMMIT_REF_SLUG" ] && echo "$CI_COMMIT_REF_SLUG" || echo "unknown"; })-app" --cluster="kube-pan-test-app-review-$([ -n "$CI_MERGE_REQUEST_IID" ] && echo "mr$CI_MERGE_REQUEST_IID" || { [ -n "$CI_COMMIT_REF_SLUG" ] && echo "$CI_COMMIT_REF_SLUG" || echo "unknown"; })-app" --user="kube-pan-test-app-review-$([ -n "$CI_MERGE_REQUEST_IID" ] && echo "mr$CI_MERGE_REQUEST_IID" || { [ -n "$CI_COMMIT_REF_SLUG" ] && echo "$CI_COMMIT_REF_SLUG" || echo "unknown"; })-app" --namespace="pan-test-app-review"
|
|
563
583
|
- kubectl config use-context "kube-pan-test-app-review-$([ -n "$CI_MERGE_REQUEST_IID" ] && echo "mr$CI_MERGE_REQUEST_IID" || { [ -n "$CI_COMMIT_REF_SLUG" ] && echo "$CI_COMMIT_REF_SLUG" || echo "unknown"; })-app"
|
|
564
|
-
-
|
|
584
|
+
- collapseable_section_start "writeallvalues" "Write __all_values.yml for helm deployment"
|
|
565
585
|
- |
|
|
566
586
|
cat > __all_values.yml <<EOF
|
|
567
587
|
env:
|
|
568
588
|
secret:
|
|
569
589
|
SECRET_KEY_BASE: |-
|
|
570
|
-
|
|
590
|
+
$(printf %s "$CL_review_app_SECRET_KEY_BASE" | sed '1!s/^/ /')
|
|
571
591
|
POSTGRESQL_PASSWORD: |-
|
|
572
|
-
|
|
592
|
+
$(printf %s "$CL_review_app_POSTGRESQL_PASSWORD" | sed '1!s/^/ /')
|
|
573
593
|
cloudsqlProxyCredentials: |-
|
|
574
|
-
|
|
594
|
+
$(printf %s "$CL_review_app_cloudsqlProxyCredentials" | sed '1!s/^/ /')
|
|
575
595
|
public:
|
|
576
596
|
ENV_SHORT: |-
|
|
577
597
|
review
|
|
@@ -580,32 +600,30 @@ app 🧪 test:
|
|
|
580
600
|
ENV_TYPE: |-
|
|
581
601
|
review
|
|
582
602
|
BUILD_INFO_BUILD_ID: |-
|
|
583
|
-
|
|
603
|
+
$(printf %s "$(git describe --tags 2>/dev/null || git rev-parse HEAD)" | sed '1!s/^/ /')
|
|
584
604
|
BUILD_INFO_BUILD_TIME: |-
|
|
585
|
-
|
|
605
|
+
$(printf %s "$CI_JOB_STARTED_AT" | sed '1!s/^/ /')
|
|
586
606
|
BUILD_INFO_CURRENT_VERSION: |-
|
|
587
|
-
|
|
607
|
+
$(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/^/ /')
|
|
588
608
|
ROOT_URL: |-
|
|
589
|
-
|
|
590
|
-
|
|
591
|
-
|
|
592
|
-
HOST_CANONICAL: |-
|
|
593
|
-
$(printf %s "app.$([ -n "$CI_MERGE_REQUEST_IID" ] && echo "mr$CI_MERGE_REQUEST_IID" || { [ -n "$CI_COMMIT_REF_SLUG" ] && echo "$CI_COMMIT_REF_SLUG" || echo "unknown"; }).review.test-app.pan.panter.cloud" | sed 's/^/ /')
|
|
609
|
+
$(printf %s "https://app.$([ -n "$CI_MERGE_REQUEST_IID" ] && echo "mr$CI_MERGE_REQUEST_IID" || { [ -n "$CI_COMMIT_REF_SLUG" ] && echo "$CI_COMMIT_REF_SLUG" || echo "unknown"; }).review.test-app.pan.panter.cloud" | sed '1!s/^/ /')
|
|
610
|
+
HOSTNAME_INTERNAL: |-
|
|
611
|
+
$(printf %s "app.$([ -n "$CI_MERGE_REQUEST_IID" ] && echo "mr$CI_MERGE_REQUEST_IID" || { [ -n "$CI_COMMIT_REF_SLUG" ] && echo "$CI_COMMIT_REF_SLUG" || echo "unknown"; }).review.test-app.pan.panter.cloud" | sed '1!s/^/ /')
|
|
594
612
|
ROOT_URL_INTERNAL: |-
|
|
595
|
-
|
|
613
|
+
$(printf %s "https://app.$([ -n "$CI_MERGE_REQUEST_IID" ] && echo "mr$CI_MERGE_REQUEST_IID" || { [ -n "$CI_COMMIT_REF_SLUG" ] && echo "$CI_COMMIT_REF_SLUG" || echo "unknown"; }).review.test-app.pan.panter.cloud" | sed '1!s/^/ /')
|
|
596
614
|
KUBE_NAMESPACE: |-
|
|
597
615
|
pan-test-app-review
|
|
598
616
|
KUBE_APP_NAME: |-
|
|
599
|
-
|
|
617
|
+
$(printf %s "$([ -n "$CI_MERGE_REQUEST_IID" ] && echo "mr$CI_MERGE_REQUEST_IID" || { [ -n "$CI_COMMIT_REF_SLUG" ] && echo "$CI_COMMIT_REF_SLUG" || echo "unknown"; })-app" | sed '1!s/^/ /')
|
|
600
618
|
KUBE_APP_NAME_PREFIX: |-
|
|
601
|
-
|
|
619
|
+
$(printf %s "$([ -n "$CI_MERGE_REQUEST_IID" ] && echo "mr$CI_MERGE_REQUEST_IID" || { [ -n "$CI_COMMIT_REF_SLUG" ] && echo "$CI_COMMIT_REF_SLUG" || echo "unknown"; })-" | sed '1!s/^/ /')
|
|
602
620
|
RAILS_ENV: |-
|
|
603
621
|
production
|
|
604
622
|
_ALL_ENV_VAR_KEYS: |-
|
|
605
|
-
["ENV_SHORT","APP_DIR","ENV_TYPE","BUILD_INFO_BUILD_ID","BUILD_INFO_BUILD_TIME","BUILD_INFO_CURRENT_VERSION","ROOT_URL","
|
|
623
|
+
["ENV_SHORT","APP_DIR","ENV_TYPE","BUILD_INFO_BUILD_ID","BUILD_INFO_BUILD_TIME","BUILD_INFO_CURRENT_VERSION","ROOT_URL","HOSTNAME_INTERNAL","ROOT_URL_INTERNAL","KUBE_NAMESPACE","KUBE_APP_NAME","KUBE_APP_NAME_PREFIX","SECRET_KEY_BASE","POSTGRESQL_PASSWORD","cloudsqlProxyCredentials","RAILS_ENV"]
|
|
606
624
|
application:
|
|
607
625
|
host: |-
|
|
608
|
-
|
|
626
|
+
$(printf %s "app.$([ -n "$CI_MERGE_REQUEST_IID" ] && echo "mr$CI_MERGE_REQUEST_IID" || { [ -n "$CI_COMMIT_REF_SLUG" ] && echo "$CI_COMMIT_REF_SLUG" || echo "unknown"; }).review.test-app.pan.panter.cloud" | sed '1!s/^/ /')
|
|
609
627
|
command: |-
|
|
610
628
|
/cnb/process/web
|
|
611
629
|
livenessProbe:
|
|
@@ -630,13 +648,13 @@ app 🧪 test:
|
|
|
630
648
|
dbUser: |-
|
|
631
649
|
postgres
|
|
632
650
|
instanceConnectionName: |-
|
|
633
|
-
|
|
651
|
+
myproject:europe-west6:instance-name
|
|
634
652
|
proxyCredentials: |-
|
|
635
653
|
$CL_review_app_cloudsqlProxyCredentials
|
|
636
654
|
fullDbName: |-
|
|
637
|
-
|
|
638
|
-
|
|
639
|
-
|
|
655
|
+
$(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"; })-app" | sed '1!s/^/ /')
|
|
656
|
+
type: |-
|
|
657
|
+
unmanaged
|
|
640
658
|
jobs:
|
|
641
659
|
db-migrate:
|
|
642
660
|
hook: |-
|
|
@@ -650,7 +668,7 @@ app 🧪 test:
|
|
|
650
668
|
launcher bundle exec rake db:prepare db:seed
|
|
651
669
|
|
|
652
670
|
EOF
|
|
653
|
-
-
|
|
671
|
+
- collapseable_section_end "writeallvalues"
|
|
654
672
|
- kubernetesCreateSecret
|
|
655
673
|
- kubernetesDeploy
|
|
656
674
|
- echo 'Uploading SBOM to Dependency Track'
|
|
@@ -691,7 +709,7 @@ app 🧪 test:
|
|
|
691
709
|
KUBERNETES_MEMORY_LIMIT: 400Mi
|
|
692
710
|
GIT_STRATEGY: none
|
|
693
711
|
script:
|
|
694
|
-
-
|
|
712
|
+
- collapseable_section_start "injectvars" "Injecting variables"
|
|
695
713
|
- export ENV_SHORT="review"
|
|
696
714
|
- export APP_DIR=".temp-with-dockerfile"
|
|
697
715
|
- export ENV_TYPE="review"
|
|
@@ -699,8 +717,7 @@ app 🧪 test:
|
|
|
699
717
|
- export BUILD_INFO_BUILD_TIME="$CI_JOB_STARTED_AT"
|
|
700
718
|
- 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")"
|
|
701
719
|
- export ROOT_URL="https://app.$([ -n "$CI_MERGE_REQUEST_IID" ] && echo "mr$CI_MERGE_REQUEST_IID" || { [ -n "$CI_COMMIT_REF_SLUG" ] && echo "$CI_COMMIT_REF_SLUG" || echo "unknown"; }).review.test-app.pan.panter.cloud"
|
|
702
|
-
- export
|
|
703
|
-
- export HOST_CANONICAL="app.$([ -n "$CI_MERGE_REQUEST_IID" ] && echo "mr$CI_MERGE_REQUEST_IID" || { [ -n "$CI_COMMIT_REF_SLUG" ] && echo "$CI_COMMIT_REF_SLUG" || echo "unknown"; }).review.test-app.pan.panter.cloud"
|
|
720
|
+
- export HOSTNAME_INTERNAL="app.$([ -n "$CI_MERGE_REQUEST_IID" ] && echo "mr$CI_MERGE_REQUEST_IID" || { [ -n "$CI_COMMIT_REF_SLUG" ] && echo "$CI_COMMIT_REF_SLUG" || echo "unknown"; }).review.test-app.pan.panter.cloud"
|
|
704
721
|
- export ROOT_URL_INTERNAL="https://app.$([ -n "$CI_MERGE_REQUEST_IID" ] && echo "mr$CI_MERGE_REQUEST_IID" || { [ -n "$CI_COMMIT_REF_SLUG" ] && echo "$CI_COMMIT_REF_SLUG" || echo "unknown"; }).review.test-app.pan.panter.cloud"
|
|
705
722
|
- export KUBE_NAMESPACE="pan-test-app-review"
|
|
706
723
|
- export KUBE_APP_NAME="$([ -n "$CI_MERGE_REQUEST_IID" ] && echo "mr$CI_MERGE_REQUEST_IID" || { [ -n "$CI_COMMIT_REF_SLUG" ] && echo "$CI_COMMIT_REF_SLUG" || echo "unknown"; })-app"
|
|
@@ -709,15 +726,14 @@ app 🧪 test:
|
|
|
709
726
|
- export POSTGRESQL_PASSWORD="$CL_review_app_POSTGRESQL_PASSWORD"
|
|
710
727
|
- export cloudsqlProxyCredentials="$CL_review_app_cloudsqlProxyCredentials"
|
|
711
728
|
- export RAILS_ENV="production"
|
|
712
|
-
- export _ALL_ENV_VAR_KEYS="[\\"ENV_SHORT\\",\\"APP_DIR\\",\\"ENV_TYPE\\",\\"BUILD_INFO_BUILD_ID\\",\\"BUILD_INFO_BUILD_TIME\\",\\"BUILD_INFO_CURRENT_VERSION\\",\\"ROOT_URL\\",\\"
|
|
729
|
+
- export _ALL_ENV_VAR_KEYS="[\\"ENV_SHORT\\",\\"APP_DIR\\",\\"ENV_TYPE\\",\\"BUILD_INFO_BUILD_ID\\",\\"BUILD_INFO_BUILD_TIME\\",\\"BUILD_INFO_CURRENT_VERSION\\",\\"ROOT_URL\\",\\"HOSTNAME_INTERNAL\\",\\"ROOT_URL_INTERNAL\\",\\"KUBE_NAMESPACE\\",\\"KUBE_APP_NAME\\",\\"KUBE_APP_NAME_PREFIX\\",\\"SECRET_KEY_BASE\\",\\"POSTGRESQL_PASSWORD\\",\\"cloudsqlProxyCredentials\\",\\"RAILS_ENV\\"]"
|
|
713
730
|
- export RELEASE_NAME="pan-test-app-review-$([ -n "$CI_MERGE_REQUEST_IID" ] && echo "mr$CI_MERGE_REQUEST_IID" || { [ -n "$CI_COMMIT_REF_SLUG" ] && echo "$CI_COMMIT_REF_SLUG" || echo "unknown"; })-app"
|
|
714
731
|
- export HELM_EXPERIMENTAL_OCI="1"
|
|
715
732
|
- export KUBE_DOCKER_IMAGE_PULL_SECRET="gitlab-registry-app"
|
|
716
733
|
- export HELM_GITLAB_CHART_NAME="/helm-charts/the-panter-chart"
|
|
717
734
|
- export HELM_ARGS=""
|
|
718
735
|
- export COMPONENT_NAME="app"
|
|
719
|
-
-
|
|
720
|
-
- echo -e "\\e[0Ksection_end:$(date +%s):injectvars\\r\\e[0K"
|
|
736
|
+
- collapseable_section_end "injectvars"
|
|
721
737
|
- kubectl config set-cluster "kube-pan-test-app-review-$([ -n "$CI_MERGE_REQUEST_IID" ] && echo "mr$CI_MERGE_REQUEST_IID" || { [ -n "$CI_COMMIT_REF_SLUG" ] && echo "$CI_COMMIT_REF_SLUG" || echo "unknown"; })-app" --server="$CL_review_app_KUBE_URL" --certificate-authority <(echo $CL_review_app_KUBE_CA_PEM | base64 -d) --embed-certs=true
|
|
722
738
|
- kubectl config set-credentials "kube-pan-test-app-review-$([ -n "$CI_MERGE_REQUEST_IID" ] && echo "mr$CI_MERGE_REQUEST_IID" || { [ -n "$CI_COMMIT_REF_SLUG" ] && echo "$CI_COMMIT_REF_SLUG" || echo "unknown"; })-app" --token="$CL_review_app_KUBE_TOKEN"
|
|
723
739
|
- kubectl config set-context "kube-pan-test-app-review-$([ -n "$CI_MERGE_REQUEST_IID" ] && echo "mr$CI_MERGE_REQUEST_IID" || { [ -n "$CI_COMMIT_REF_SLUG" ] && echo "$CI_COMMIT_REF_SLUG" || echo "unknown"; })-app" --cluster="kube-pan-test-app-review-$([ -n "$CI_MERGE_REQUEST_IID" ] && echo "mr$CI_MERGE_REQUEST_IID" || { [ -n "$CI_COMMIT_REF_SLUG" ] && echo "$CI_COMMIT_REF_SLUG" || echo "unknown"; })-app" --user="kube-pan-test-app-review-$([ -n "$CI_MERGE_REQUEST_IID" ] && echo "mr$CI_MERGE_REQUEST_IID" || { [ -n "$CI_COMMIT_REF_SLUG" ] && echo "$CI_COMMIT_REF_SLUG" || echo "unknown"; })-app" --namespace="pan-test-app-review"
|
|
@@ -751,7 +767,7 @@ app 🧪 test:
|
|
|
751
767
|
KUBERNETES_MEMORY_LIMIT: 400Mi
|
|
752
768
|
GIT_STRATEGY: none
|
|
753
769
|
script:
|
|
754
|
-
-
|
|
770
|
+
- collapseable_section_start "injectvars" "Injecting variables"
|
|
755
771
|
- export ENV_SHORT="review"
|
|
756
772
|
- export APP_DIR=".temp-with-dockerfile"
|
|
757
773
|
- export ENV_TYPE="review"
|
|
@@ -759,8 +775,7 @@ app 🧪 test:
|
|
|
759
775
|
- export BUILD_INFO_BUILD_TIME="$CI_JOB_STARTED_AT"
|
|
760
776
|
- 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")"
|
|
761
777
|
- export ROOT_URL="https://app.$([ -n "$CI_MERGE_REQUEST_IID" ] && echo "mr$CI_MERGE_REQUEST_IID" || { [ -n "$CI_COMMIT_REF_SLUG" ] && echo "$CI_COMMIT_REF_SLUG" || echo "unknown"; }).review.test-app.pan.panter.cloud"
|
|
762
|
-
- export
|
|
763
|
-
- export HOST_CANONICAL="app.$([ -n "$CI_MERGE_REQUEST_IID" ] && echo "mr$CI_MERGE_REQUEST_IID" || { [ -n "$CI_COMMIT_REF_SLUG" ] && echo "$CI_COMMIT_REF_SLUG" || echo "unknown"; }).review.test-app.pan.panter.cloud"
|
|
778
|
+
- export HOSTNAME_INTERNAL="app.$([ -n "$CI_MERGE_REQUEST_IID" ] && echo "mr$CI_MERGE_REQUEST_IID" || { [ -n "$CI_COMMIT_REF_SLUG" ] && echo "$CI_COMMIT_REF_SLUG" || echo "unknown"; }).review.test-app.pan.panter.cloud"
|
|
764
779
|
- export ROOT_URL_INTERNAL="https://app.$([ -n "$CI_MERGE_REQUEST_IID" ] && echo "mr$CI_MERGE_REQUEST_IID" || { [ -n "$CI_COMMIT_REF_SLUG" ] && echo "$CI_COMMIT_REF_SLUG" || echo "unknown"; }).review.test-app.pan.panter.cloud"
|
|
765
780
|
- export KUBE_NAMESPACE="pan-test-app-review"
|
|
766
781
|
- export KUBE_APP_NAME="$([ -n "$CI_MERGE_REQUEST_IID" ] && echo "mr$CI_MERGE_REQUEST_IID" || { [ -n "$CI_COMMIT_REF_SLUG" ] && echo "$CI_COMMIT_REF_SLUG" || echo "unknown"; })-app"
|
|
@@ -769,15 +784,14 @@ app 🧪 test:
|
|
|
769
784
|
- export POSTGRESQL_PASSWORD="$CL_review_app_POSTGRESQL_PASSWORD"
|
|
770
785
|
- export cloudsqlProxyCredentials="$CL_review_app_cloudsqlProxyCredentials"
|
|
771
786
|
- export RAILS_ENV="production"
|
|
772
|
-
- export _ALL_ENV_VAR_KEYS="[\\"ENV_SHORT\\",\\"APP_DIR\\",\\"ENV_TYPE\\",\\"BUILD_INFO_BUILD_ID\\",\\"BUILD_INFO_BUILD_TIME\\",\\"BUILD_INFO_CURRENT_VERSION\\",\\"ROOT_URL\\",\\"
|
|
787
|
+
- export _ALL_ENV_VAR_KEYS="[\\"ENV_SHORT\\",\\"APP_DIR\\",\\"ENV_TYPE\\",\\"BUILD_INFO_BUILD_ID\\",\\"BUILD_INFO_BUILD_TIME\\",\\"BUILD_INFO_CURRENT_VERSION\\",\\"ROOT_URL\\",\\"HOSTNAME_INTERNAL\\",\\"ROOT_URL_INTERNAL\\",\\"KUBE_NAMESPACE\\",\\"KUBE_APP_NAME\\",\\"KUBE_APP_NAME_PREFIX\\",\\"SECRET_KEY_BASE\\",\\"POSTGRESQL_PASSWORD\\",\\"cloudsqlProxyCredentials\\",\\"RAILS_ENV\\"]"
|
|
773
788
|
- export RELEASE_NAME="pan-test-app-review-$([ -n "$CI_MERGE_REQUEST_IID" ] && echo "mr$CI_MERGE_REQUEST_IID" || { [ -n "$CI_COMMIT_REF_SLUG" ] && echo "$CI_COMMIT_REF_SLUG" || echo "unknown"; })-app"
|
|
774
789
|
- export HELM_EXPERIMENTAL_OCI="1"
|
|
775
790
|
- export KUBE_DOCKER_IMAGE_PULL_SECRET="gitlab-registry-app"
|
|
776
791
|
- export HELM_GITLAB_CHART_NAME="/helm-charts/the-panter-chart"
|
|
777
792
|
- export HELM_ARGS=""
|
|
778
793
|
- export COMPONENT_NAME="app"
|
|
779
|
-
-
|
|
780
|
-
- echo -e "\\e[0Ksection_end:$(date +%s):injectvars\\r\\e[0K"
|
|
794
|
+
- collapseable_section_end "injectvars"
|
|
781
795
|
- kubectl config set-cluster "kube-pan-test-app-review-$([ -n "$CI_MERGE_REQUEST_IID" ] && echo "mr$CI_MERGE_REQUEST_IID" || { [ -n "$CI_COMMIT_REF_SLUG" ] && echo "$CI_COMMIT_REF_SLUG" || echo "unknown"; })-app" --server="$CL_review_app_KUBE_URL" --certificate-authority <(echo $CL_review_app_KUBE_CA_PEM | base64 -d) --embed-certs=true
|
|
782
796
|
- kubectl config set-credentials "kube-pan-test-app-review-$([ -n "$CI_MERGE_REQUEST_IID" ] && echo "mr$CI_MERGE_REQUEST_IID" || { [ -n "$CI_COMMIT_REF_SLUG" ] && echo "$CI_COMMIT_REF_SLUG" || echo "unknown"; })-app" --token="$CL_review_app_KUBE_TOKEN"
|
|
783
797
|
- kubectl config set-context "kube-pan-test-app-review-$([ -n "$CI_MERGE_REQUEST_IID" ] && echo "mr$CI_MERGE_REQUEST_IID" || { [ -n "$CI_COMMIT_REF_SLUG" ] && echo "$CI_COMMIT_REF_SLUG" || echo "unknown"; })-app" --cluster="kube-pan-test-app-review-$([ -n "$CI_MERGE_REQUEST_IID" ] && echo "mr$CI_MERGE_REQUEST_IID" || { [ -n "$CI_COMMIT_REF_SLUG" ] && echo "$CI_COMMIT_REF_SLUG" || echo "unknown"; })-app" --user="kube-pan-test-app-review-$([ -n "$CI_MERGE_REQUEST_IID" ] && echo "mr$CI_MERGE_REQUEST_IID" || { [ -n "$CI_COMMIT_REF_SLUG" ] && echo "$CI_COMMIT_REF_SLUG" || echo "unknown"; })-app" --namespace="pan-test-app-review"
|
|
@@ -815,7 +829,7 @@ app 🧪 test:
|
|
|
815
829
|
KUBERNETES_MEMORY_REQUEST: 1Gi
|
|
816
830
|
KUBERNETES_MEMORY_LIMIT: 2Gi
|
|
817
831
|
script:
|
|
818
|
-
-
|
|
832
|
+
- collapseable_section_start "injectvars" "Injecting variables"
|
|
819
833
|
- export APP_DIR=".temp-with-dockerfile"
|
|
820
834
|
- export DOCKER_BUILD_CONTEXT="."
|
|
821
835
|
- export DOCKER_REGISTRY="$CI_REGISTRY"
|
|
@@ -823,18 +837,18 @@ app 🧪 test:
|
|
|
823
837
|
- export DOCKER_IMAGE_NAME="stage/app"
|
|
824
838
|
- export DOCKER_IMAGE="$CI_REGISTRY_IMAGE/$DOCKER_IMAGE_NAME"
|
|
825
839
|
- export DOCKER_IMAGE_TAG="$CI_COMMIT_SHA"
|
|
826
|
-
-
|
|
827
|
-
-
|
|
840
|
+
- collapseable_section_end "injectvars"
|
|
841
|
+
- collapseable_section_start "docker-login" "Docker Login"
|
|
828
842
|
- docker login --username gitlab-ci-token --password $CI_JOB_TOKEN $CI_REGISTRY
|
|
829
|
-
-
|
|
830
|
-
-
|
|
843
|
+
- collapseable_section_end "docker-login"
|
|
844
|
+
- collapseable_section_start "docker-build" "Docker build"
|
|
831
845
|
- 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
|
|
832
|
-
-
|
|
833
|
-
-
|
|
846
|
+
- collapseable_section_end "docker-build"
|
|
847
|
+
- collapseable_section_start "docker-push" "Docker push and tag"
|
|
834
848
|
- docker push $DOCKER_IMAGE:$DOCKER_IMAGE_TAG
|
|
835
849
|
- docker tag $DOCKER_IMAGE:$DOCKER_IMAGE_TAG $DOCKER_CACHE_IMAGE
|
|
836
850
|
- docker push $DOCKER_CACHE_IMAGE
|
|
837
|
-
-
|
|
851
|
+
- collapseable_section_end "docker-push"
|
|
838
852
|
rules:
|
|
839
853
|
- if: $CI_COMMIT_TAG
|
|
840
854
|
needs: []
|
|
@@ -845,8 +859,8 @@ app 🧪 test:
|
|
|
845
859
|
image: aquasec/trivy:0.38.3
|
|
846
860
|
variables: {}
|
|
847
861
|
script:
|
|
848
|
-
-
|
|
849
|
-
-
|
|
862
|
+
- collapseable_section_start "injectvars" "Injecting variables"
|
|
863
|
+
- collapseable_section_end "injectvars"
|
|
850
864
|
- trivy fs --quiet --format cyclonedx --output "__sbom.json" .temp-with-dockerfile
|
|
851
865
|
artifacts:
|
|
852
866
|
paths:
|
|
@@ -865,7 +879,7 @@ app 🧪 test:
|
|
|
865
879
|
KUBERNETES_MEMORY_REQUEST: 200Mi
|
|
866
880
|
KUBERNETES_MEMORY_LIMIT: 400Mi
|
|
867
881
|
script:
|
|
868
|
-
-
|
|
882
|
+
- collapseable_section_start "injectvars" "Injecting variables"
|
|
869
883
|
- export ENV_SHORT="stage"
|
|
870
884
|
- export APP_DIR=".temp-with-dockerfile"
|
|
871
885
|
- export ENV_TYPE="stage"
|
|
@@ -873,8 +887,7 @@ app 🧪 test:
|
|
|
873
887
|
- export BUILD_INFO_BUILD_TIME="$CI_JOB_STARTED_AT"
|
|
874
888
|
- 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")"
|
|
875
889
|
- export ROOT_URL="https://app.stage.test-app.pan.panter.cloud"
|
|
876
|
-
- export
|
|
877
|
-
- export HOST_CANONICAL="app.stage.test-app.pan.panter.cloud"
|
|
890
|
+
- export HOSTNAME_INTERNAL="app.stage.test-app.pan.panter.cloud"
|
|
878
891
|
- export ROOT_URL_INTERNAL="https://app.stage.test-app.pan.panter.cloud"
|
|
879
892
|
- export KUBE_NAMESPACE="pan-test-app-stage"
|
|
880
893
|
- export KUBE_APP_NAME="app"
|
|
@@ -883,7 +896,7 @@ app 🧪 test:
|
|
|
883
896
|
- export POSTGRESQL_PASSWORD="$CL_stage_app_POSTGRESQL_PASSWORD"
|
|
884
897
|
- export cloudsqlProxyCredentials="$CL_stage_app_cloudsqlProxyCredentials"
|
|
885
898
|
- export RAILS_ENV="production"
|
|
886
|
-
- export _ALL_ENV_VAR_KEYS="[\\"ENV_SHORT\\",\\"APP_DIR\\",\\"ENV_TYPE\\",\\"BUILD_INFO_BUILD_ID\\",\\"BUILD_INFO_BUILD_TIME\\",\\"BUILD_INFO_CURRENT_VERSION\\",\\"ROOT_URL\\",\\"
|
|
899
|
+
- export _ALL_ENV_VAR_KEYS="[\\"ENV_SHORT\\",\\"APP_DIR\\",\\"ENV_TYPE\\",\\"BUILD_INFO_BUILD_ID\\",\\"BUILD_INFO_BUILD_TIME\\",\\"BUILD_INFO_CURRENT_VERSION\\",\\"ROOT_URL\\",\\"HOSTNAME_INTERNAL\\",\\"ROOT_URL_INTERNAL\\",\\"KUBE_NAMESPACE\\",\\"KUBE_APP_NAME\\",\\"KUBE_APP_NAME_PREFIX\\",\\"SECRET_KEY_BASE\\",\\"POSTGRESQL_PASSWORD\\",\\"cloudsqlProxyCredentials\\",\\"RAILS_ENV\\"]"
|
|
887
900
|
- export DOCKER_REGISTRY="$CI_REGISTRY"
|
|
888
901
|
- export DOCKER_CACHE_IMAGE="$CI_REGISTRY_IMAGE/caches/app"
|
|
889
902
|
- export DOCKER_IMAGE_NAME="stage/app"
|
|
@@ -895,23 +908,22 @@ app 🧪 test:
|
|
|
895
908
|
- export HELM_GITLAB_CHART_NAME="/helm-charts/the-panter-chart"
|
|
896
909
|
- export HELM_ARGS=""
|
|
897
910
|
- export COMPONENT_NAME="app"
|
|
898
|
-
-
|
|
899
|
-
- echo -e "\\e[0Ksection_end:$(date +%s):injectvars\\r\\e[0K"
|
|
911
|
+
- collapseable_section_end "injectvars"
|
|
900
912
|
- kubectl config set-cluster "kube-pan-test-app-stage-app" --server="$CL_stage_app_KUBE_URL" --certificate-authority <(echo $CL_stage_app_KUBE_CA_PEM | base64 -d) --embed-certs=true
|
|
901
913
|
- kubectl config set-credentials "kube-pan-test-app-stage-app" --token="$CL_stage_app_KUBE_TOKEN"
|
|
902
914
|
- kubectl config set-context "kube-pan-test-app-stage-app" --cluster="kube-pan-test-app-stage-app" --user="kube-pan-test-app-stage-app" --namespace="pan-test-app-stage"
|
|
903
915
|
- kubectl config use-context "kube-pan-test-app-stage-app"
|
|
904
|
-
-
|
|
916
|
+
- collapseable_section_start "writeallvalues" "Write __all_values.yml for helm deployment"
|
|
905
917
|
- |
|
|
906
918
|
cat > __all_values.yml <<EOF
|
|
907
919
|
env:
|
|
908
920
|
secret:
|
|
909
921
|
SECRET_KEY_BASE: |-
|
|
910
|
-
|
|
922
|
+
$(printf %s "$CL_stage_app_SECRET_KEY_BASE" | sed '1!s/^/ /')
|
|
911
923
|
POSTGRESQL_PASSWORD: |-
|
|
912
|
-
|
|
924
|
+
$(printf %s "$CL_stage_app_POSTGRESQL_PASSWORD" | sed '1!s/^/ /')
|
|
913
925
|
cloudsqlProxyCredentials: |-
|
|
914
|
-
|
|
926
|
+
$(printf %s "$CL_stage_app_cloudsqlProxyCredentials" | sed '1!s/^/ /')
|
|
915
927
|
public:
|
|
916
928
|
ENV_SHORT: |-
|
|
917
929
|
stage
|
|
@@ -920,16 +932,14 @@ app 🧪 test:
|
|
|
920
932
|
ENV_TYPE: |-
|
|
921
933
|
stage
|
|
922
934
|
BUILD_INFO_BUILD_ID: |-
|
|
923
|
-
|
|
935
|
+
$(printf %s "$(git describe --tags 2>/dev/null || git rev-parse HEAD)" | sed '1!s/^/ /')
|
|
924
936
|
BUILD_INFO_BUILD_TIME: |-
|
|
925
|
-
|
|
937
|
+
$(printf %s "$CI_JOB_STARTED_AT" | sed '1!s/^/ /')
|
|
926
938
|
BUILD_INFO_CURRENT_VERSION: |-
|
|
927
|
-
|
|
939
|
+
$(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/^/ /')
|
|
928
940
|
ROOT_URL: |-
|
|
929
941
|
https://app.stage.test-app.pan.panter.cloud
|
|
930
|
-
|
|
931
|
-
app.stage.test-app.pan.panter.cloud
|
|
932
|
-
HOST_CANONICAL: |-
|
|
942
|
+
HOSTNAME_INTERNAL: |-
|
|
933
943
|
app.stage.test-app.pan.panter.cloud
|
|
934
944
|
ROOT_URL_INTERNAL: |-
|
|
935
945
|
https://app.stage.test-app.pan.panter.cloud
|
|
@@ -941,7 +951,7 @@ app 🧪 test:
|
|
|
941
951
|
RAILS_ENV: |-
|
|
942
952
|
production
|
|
943
953
|
_ALL_ENV_VAR_KEYS: |-
|
|
944
|
-
["ENV_SHORT","APP_DIR","ENV_TYPE","BUILD_INFO_BUILD_ID","BUILD_INFO_BUILD_TIME","BUILD_INFO_CURRENT_VERSION","ROOT_URL","
|
|
954
|
+
["ENV_SHORT","APP_DIR","ENV_TYPE","BUILD_INFO_BUILD_ID","BUILD_INFO_BUILD_TIME","BUILD_INFO_CURRENT_VERSION","ROOT_URL","HOSTNAME_INTERNAL","ROOT_URL_INTERNAL","KUBE_NAMESPACE","KUBE_APP_NAME","KUBE_APP_NAME_PREFIX","SECRET_KEY_BASE","POSTGRESQL_PASSWORD","cloudsqlProxyCredentials","RAILS_ENV"]
|
|
945
955
|
application:
|
|
946
956
|
host: |-
|
|
947
957
|
app.stage.test-app.pan.panter.cloud
|
|
@@ -969,13 +979,13 @@ app 🧪 test:
|
|
|
969
979
|
dbUser: |-
|
|
970
980
|
postgres
|
|
971
981
|
instanceConnectionName: |-
|
|
972
|
-
|
|
982
|
+
myproject:europe-west6:instance-name
|
|
973
983
|
proxyCredentials: |-
|
|
974
984
|
$CL_stage_app_cloudsqlProxyCredentials
|
|
975
985
|
fullDbName: |-
|
|
976
|
-
app
|
|
977
|
-
|
|
978
|
-
|
|
986
|
+
pan-test-app-stage-app
|
|
987
|
+
type: |-
|
|
988
|
+
unmanaged
|
|
979
989
|
jobs:
|
|
980
990
|
db-migrate:
|
|
981
991
|
hook: |-
|
|
@@ -984,7 +994,7 @@ app 🧪 test:
|
|
|
984
994
|
launcher bundle exec rake db:migrate
|
|
985
995
|
|
|
986
996
|
EOF
|
|
987
|
-
-
|
|
997
|
+
- collapseable_section_end "writeallvalues"
|
|
988
998
|
- kubernetesCreateSecret
|
|
989
999
|
- kubernetesDeploy
|
|
990
1000
|
- echo 'Uploading SBOM to Dependency Track'
|
|
@@ -1018,7 +1028,7 @@ app 🧪 test:
|
|
|
1018
1028
|
KUBERNETES_MEMORY_LIMIT: 400Mi
|
|
1019
1029
|
GIT_STRATEGY: none
|
|
1020
1030
|
script:
|
|
1021
|
-
-
|
|
1031
|
+
- collapseable_section_start "injectvars" "Injecting variables"
|
|
1022
1032
|
- export ENV_SHORT="stage"
|
|
1023
1033
|
- export APP_DIR=".temp-with-dockerfile"
|
|
1024
1034
|
- export ENV_TYPE="stage"
|
|
@@ -1026,8 +1036,7 @@ app 🧪 test:
|
|
|
1026
1036
|
- export BUILD_INFO_BUILD_TIME="$CI_JOB_STARTED_AT"
|
|
1027
1037
|
- 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")"
|
|
1028
1038
|
- export ROOT_URL="https://app.stage.test-app.pan.panter.cloud"
|
|
1029
|
-
- export
|
|
1030
|
-
- export HOST_CANONICAL="app.stage.test-app.pan.panter.cloud"
|
|
1039
|
+
- export HOSTNAME_INTERNAL="app.stage.test-app.pan.panter.cloud"
|
|
1031
1040
|
- export ROOT_URL_INTERNAL="https://app.stage.test-app.pan.panter.cloud"
|
|
1032
1041
|
- export KUBE_NAMESPACE="pan-test-app-stage"
|
|
1033
1042
|
- export KUBE_APP_NAME="app"
|
|
@@ -1036,15 +1045,14 @@ app 🧪 test:
|
|
|
1036
1045
|
- export POSTGRESQL_PASSWORD="$CL_stage_app_POSTGRESQL_PASSWORD"
|
|
1037
1046
|
- export cloudsqlProxyCredentials="$CL_stage_app_cloudsqlProxyCredentials"
|
|
1038
1047
|
- export RAILS_ENV="production"
|
|
1039
|
-
- export _ALL_ENV_VAR_KEYS="[\\"ENV_SHORT\\",\\"APP_DIR\\",\\"ENV_TYPE\\",\\"BUILD_INFO_BUILD_ID\\",\\"BUILD_INFO_BUILD_TIME\\",\\"BUILD_INFO_CURRENT_VERSION\\",\\"ROOT_URL\\",\\"
|
|
1048
|
+
- export _ALL_ENV_VAR_KEYS="[\\"ENV_SHORT\\",\\"APP_DIR\\",\\"ENV_TYPE\\",\\"BUILD_INFO_BUILD_ID\\",\\"BUILD_INFO_BUILD_TIME\\",\\"BUILD_INFO_CURRENT_VERSION\\",\\"ROOT_URL\\",\\"HOSTNAME_INTERNAL\\",\\"ROOT_URL_INTERNAL\\",\\"KUBE_NAMESPACE\\",\\"KUBE_APP_NAME\\",\\"KUBE_APP_NAME_PREFIX\\",\\"SECRET_KEY_BASE\\",\\"POSTGRESQL_PASSWORD\\",\\"cloudsqlProxyCredentials\\",\\"RAILS_ENV\\"]"
|
|
1040
1049
|
- export RELEASE_NAME="pan-test-app-stage-app"
|
|
1041
1050
|
- export HELM_EXPERIMENTAL_OCI="1"
|
|
1042
1051
|
- export KUBE_DOCKER_IMAGE_PULL_SECRET="gitlab-registry-app"
|
|
1043
1052
|
- export HELM_GITLAB_CHART_NAME="/helm-charts/the-panter-chart"
|
|
1044
1053
|
- export HELM_ARGS=""
|
|
1045
1054
|
- export COMPONENT_NAME="app"
|
|
1046
|
-
-
|
|
1047
|
-
- echo -e "\\e[0Ksection_end:$(date +%s):injectvars\\r\\e[0K"
|
|
1055
|
+
- collapseable_section_end "injectvars"
|
|
1048
1056
|
- kubectl config set-cluster "kube-pan-test-app-stage-app" --server="$CL_stage_app_KUBE_URL" --certificate-authority <(echo $CL_stage_app_KUBE_CA_PEM | base64 -d) --embed-certs=true
|
|
1049
1057
|
- kubectl config set-credentials "kube-pan-test-app-stage-app" --token="$CL_stage_app_KUBE_TOKEN"
|
|
1050
1058
|
- kubectl config set-context "kube-pan-test-app-stage-app" --cluster="kube-pan-test-app-stage-app" --user="kube-pan-test-app-stage-app" --namespace="pan-test-app-stage"
|
|
@@ -1078,7 +1086,7 @@ app 🧪 test:
|
|
|
1078
1086
|
KUBERNETES_MEMORY_LIMIT: 400Mi
|
|
1079
1087
|
GIT_STRATEGY: none
|
|
1080
1088
|
script:
|
|
1081
|
-
-
|
|
1089
|
+
- collapseable_section_start "injectvars" "Injecting variables"
|
|
1082
1090
|
- export ENV_SHORT="stage"
|
|
1083
1091
|
- export APP_DIR=".temp-with-dockerfile"
|
|
1084
1092
|
- export ENV_TYPE="stage"
|
|
@@ -1086,8 +1094,7 @@ app 🧪 test:
|
|
|
1086
1094
|
- export BUILD_INFO_BUILD_TIME="$CI_JOB_STARTED_AT"
|
|
1087
1095
|
- export BUILD_INFO_CURRENT_VERSION="$(tag=$(git ls-remote origin "refs/tags/v*[0-9]" 2>/dev/null | cut -f 2- | sort -V | tail -1 | sed 's/refs\\/tags\\/v//'); [ -z "$tag" ] && echo "0.0.0" || echo "$tag")"
|
|
1088
1096
|
- export ROOT_URL="https://app.stage.test-app.pan.panter.cloud"
|
|
1089
|
-
- export
|
|
1090
|
-
- export HOST_CANONICAL="app.stage.test-app.pan.panter.cloud"
|
|
1097
|
+
- export HOSTNAME_INTERNAL="app.stage.test-app.pan.panter.cloud"
|
|
1091
1098
|
- export ROOT_URL_INTERNAL="https://app.stage.test-app.pan.panter.cloud"
|
|
1092
1099
|
- export KUBE_NAMESPACE="pan-test-app-stage"
|
|
1093
1100
|
- export KUBE_APP_NAME="app"
|
|
@@ -1096,15 +1103,14 @@ app 🧪 test:
|
|
|
1096
1103
|
- export POSTGRESQL_PASSWORD="$CL_stage_app_POSTGRESQL_PASSWORD"
|
|
1097
1104
|
- export cloudsqlProxyCredentials="$CL_stage_app_cloudsqlProxyCredentials"
|
|
1098
1105
|
- export RAILS_ENV="production"
|
|
1099
|
-
- export _ALL_ENV_VAR_KEYS="[\\"ENV_SHORT\\",\\"APP_DIR\\",\\"ENV_TYPE\\",\\"BUILD_INFO_BUILD_ID\\",\\"BUILD_INFO_BUILD_TIME\\",\\"BUILD_INFO_CURRENT_VERSION\\",\\"ROOT_URL\\",\\"
|
|
1106
|
+
- export _ALL_ENV_VAR_KEYS="[\\"ENV_SHORT\\",\\"APP_DIR\\",\\"ENV_TYPE\\",\\"BUILD_INFO_BUILD_ID\\",\\"BUILD_INFO_BUILD_TIME\\",\\"BUILD_INFO_CURRENT_VERSION\\",\\"ROOT_URL\\",\\"HOSTNAME_INTERNAL\\",\\"ROOT_URL_INTERNAL\\",\\"KUBE_NAMESPACE\\",\\"KUBE_APP_NAME\\",\\"KUBE_APP_NAME_PREFIX\\",\\"SECRET_KEY_BASE\\",\\"POSTGRESQL_PASSWORD\\",\\"cloudsqlProxyCredentials\\",\\"RAILS_ENV\\"]"
|
|
1100
1107
|
- export RELEASE_NAME="pan-test-app-stage-app"
|
|
1101
1108
|
- export HELM_EXPERIMENTAL_OCI="1"
|
|
1102
1109
|
- export KUBE_DOCKER_IMAGE_PULL_SECRET="gitlab-registry-app"
|
|
1103
1110
|
- export HELM_GITLAB_CHART_NAME="/helm-charts/the-panter-chart"
|
|
1104
1111
|
- export HELM_ARGS=""
|
|
1105
1112
|
- export COMPONENT_NAME="app"
|
|
1106
|
-
-
|
|
1107
|
-
- echo -e "\\e[0Ksection_end:$(date +%s):injectvars\\r\\e[0K"
|
|
1113
|
+
- collapseable_section_end "injectvars"
|
|
1108
1114
|
- kubectl config set-cluster "kube-pan-test-app-stage-app" --server="$CL_stage_app_KUBE_URL" --certificate-authority <(echo $CL_stage_app_KUBE_CA_PEM | base64 -d) --embed-certs=true
|
|
1109
1115
|
- kubectl config set-credentials "kube-pan-test-app-stage-app" --token="$CL_stage_app_KUBE_TOKEN"
|
|
1110
1116
|
- kubectl config set-context "kube-pan-test-app-stage-app" --cluster="kube-pan-test-app-stage-app" --user="kube-pan-test-app-stage-app" --namespace="pan-test-app-stage"
|
|
@@ -1142,7 +1148,7 @@ app 🧪 test:
|
|
|
1142
1148
|
KUBERNETES_MEMORY_REQUEST: 1Gi
|
|
1143
1149
|
KUBERNETES_MEMORY_LIMIT: 2Gi
|
|
1144
1150
|
script:
|
|
1145
|
-
-
|
|
1151
|
+
- collapseable_section_start "injectvars" "Injecting variables"
|
|
1146
1152
|
- export APP_DIR=".temp-with-dockerfile"
|
|
1147
1153
|
- export DOCKER_BUILD_CONTEXT="."
|
|
1148
1154
|
- export DOCKER_REGISTRY="$CI_REGISTRY"
|
|
@@ -1150,18 +1156,18 @@ app 🧪 test:
|
|
|
1150
1156
|
- export DOCKER_IMAGE_NAME="prod/app"
|
|
1151
1157
|
- export DOCKER_IMAGE="$CI_REGISTRY_IMAGE/$DOCKER_IMAGE_NAME"
|
|
1152
1158
|
- export DOCKER_IMAGE_TAG="$CI_COMMIT_SHA"
|
|
1153
|
-
-
|
|
1154
|
-
-
|
|
1159
|
+
- collapseable_section_end "injectvars"
|
|
1160
|
+
- collapseable_section_start "docker-login" "Docker Login"
|
|
1155
1161
|
- docker login --username gitlab-ci-token --password $CI_JOB_TOKEN $CI_REGISTRY
|
|
1156
|
-
-
|
|
1157
|
-
-
|
|
1162
|
+
- collapseable_section_end "docker-login"
|
|
1163
|
+
- collapseable_section_start "docker-build" "Docker build"
|
|
1158
1164
|
- 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
|
|
1159
|
-
-
|
|
1160
|
-
-
|
|
1165
|
+
- collapseable_section_end "docker-build"
|
|
1166
|
+
- collapseable_section_start "docker-push" "Docker push and tag"
|
|
1161
1167
|
- docker push $DOCKER_IMAGE:$DOCKER_IMAGE_TAG
|
|
1162
1168
|
- docker tag $DOCKER_IMAGE:$DOCKER_IMAGE_TAG $DOCKER_CACHE_IMAGE
|
|
1163
1169
|
- docker push $DOCKER_CACHE_IMAGE
|
|
1164
|
-
-
|
|
1170
|
+
- collapseable_section_end "docker-push"
|
|
1165
1171
|
rules:
|
|
1166
1172
|
- if: $CI_COMMIT_TAG
|
|
1167
1173
|
needs: []
|
|
@@ -1172,8 +1178,8 @@ app 🧪 test:
|
|
|
1172
1178
|
image: aquasec/trivy:0.38.3
|
|
1173
1179
|
variables: {}
|
|
1174
1180
|
script:
|
|
1175
|
-
-
|
|
1176
|
-
-
|
|
1181
|
+
- collapseable_section_start "injectvars" "Injecting variables"
|
|
1182
|
+
- collapseable_section_end "injectvars"
|
|
1177
1183
|
- trivy fs --quiet --format cyclonedx --output "__sbom.json" .temp-with-dockerfile
|
|
1178
1184
|
artifacts:
|
|
1179
1185
|
paths:
|
|
@@ -1192,7 +1198,7 @@ app 🧪 test:
|
|
|
1192
1198
|
KUBERNETES_MEMORY_REQUEST: 200Mi
|
|
1193
1199
|
KUBERNETES_MEMORY_LIMIT: 400Mi
|
|
1194
1200
|
script:
|
|
1195
|
-
-
|
|
1201
|
+
- collapseable_section_start "injectvars" "Injecting variables"
|
|
1196
1202
|
- export ENV_SHORT="prod"
|
|
1197
1203
|
- export APP_DIR=".temp-with-dockerfile"
|
|
1198
1204
|
- export ENV_TYPE="prod"
|
|
@@ -1200,8 +1206,7 @@ app 🧪 test:
|
|
|
1200
1206
|
- export BUILD_INFO_BUILD_TIME="$CI_JOB_STARTED_AT"
|
|
1201
1207
|
- 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")"
|
|
1202
1208
|
- export ROOT_URL="https://my-fancy-website.com"
|
|
1203
|
-
- export
|
|
1204
|
-
- export HOST_CANONICAL="app.prod.test-app.pan.panter.cloud"
|
|
1209
|
+
- export HOSTNAME_INTERNAL="app.prod.test-app.pan.panter.cloud"
|
|
1205
1210
|
- export ROOT_URL_INTERNAL="https://app.prod.test-app.pan.panter.cloud"
|
|
1206
1211
|
- export KUBE_NAMESPACE="pan-test-app-prod"
|
|
1207
1212
|
- export KUBE_APP_NAME="app"
|
|
@@ -1210,7 +1215,7 @@ app 🧪 test:
|
|
|
1210
1215
|
- export POSTGRESQL_PASSWORD="$CL_prod_app_POSTGRESQL_PASSWORD"
|
|
1211
1216
|
- export cloudsqlProxyCredentials="$CL_prod_app_cloudsqlProxyCredentials"
|
|
1212
1217
|
- export RAILS_ENV="production"
|
|
1213
|
-
- export _ALL_ENV_VAR_KEYS="[\\"ENV_SHORT\\",\\"APP_DIR\\",\\"ENV_TYPE\\",\\"BUILD_INFO_BUILD_ID\\",\\"BUILD_INFO_BUILD_TIME\\",\\"BUILD_INFO_CURRENT_VERSION\\",\\"ROOT_URL\\",\\"
|
|
1218
|
+
- export _ALL_ENV_VAR_KEYS="[\\"ENV_SHORT\\",\\"APP_DIR\\",\\"ENV_TYPE\\",\\"BUILD_INFO_BUILD_ID\\",\\"BUILD_INFO_BUILD_TIME\\",\\"BUILD_INFO_CURRENT_VERSION\\",\\"ROOT_URL\\",\\"HOSTNAME_INTERNAL\\",\\"ROOT_URL_INTERNAL\\",\\"KUBE_NAMESPACE\\",\\"KUBE_APP_NAME\\",\\"KUBE_APP_NAME_PREFIX\\",\\"SECRET_KEY_BASE\\",\\"POSTGRESQL_PASSWORD\\",\\"cloudsqlProxyCredentials\\",\\"RAILS_ENV\\"]"
|
|
1214
1219
|
- export DOCKER_REGISTRY="$CI_REGISTRY"
|
|
1215
1220
|
- export DOCKER_CACHE_IMAGE="$CI_REGISTRY_IMAGE/caches/app"
|
|
1216
1221
|
- export DOCKER_IMAGE_NAME="prod/app"
|
|
@@ -1222,23 +1227,22 @@ app 🧪 test:
|
|
|
1222
1227
|
- export HELM_GITLAB_CHART_NAME="/helm-charts/the-panter-chart"
|
|
1223
1228
|
- export HELM_ARGS=""
|
|
1224
1229
|
- export COMPONENT_NAME="app"
|
|
1225
|
-
-
|
|
1226
|
-
- echo -e "\\e[0Ksection_end:$(date +%s):injectvars\\r\\e[0K"
|
|
1230
|
+
- collapseable_section_end "injectvars"
|
|
1227
1231
|
- kubectl config set-cluster "kube-pan-test-app-prod-app" --server="$CL_prod_app_KUBE_URL" --certificate-authority <(echo $CL_prod_app_KUBE_CA_PEM | base64 -d) --embed-certs=true
|
|
1228
1232
|
- kubectl config set-credentials "kube-pan-test-app-prod-app" --token="$CL_prod_app_KUBE_TOKEN"
|
|
1229
1233
|
- kubectl config set-context "kube-pan-test-app-prod-app" --cluster="kube-pan-test-app-prod-app" --user="kube-pan-test-app-prod-app" --namespace="pan-test-app-prod"
|
|
1230
1234
|
- kubectl config use-context "kube-pan-test-app-prod-app"
|
|
1231
|
-
-
|
|
1235
|
+
- collapseable_section_start "writeallvalues" "Write __all_values.yml for helm deployment"
|
|
1232
1236
|
- |
|
|
1233
1237
|
cat > __all_values.yml <<EOF
|
|
1234
1238
|
env:
|
|
1235
1239
|
secret:
|
|
1236
1240
|
SECRET_KEY_BASE: |-
|
|
1237
|
-
|
|
1241
|
+
$(printf %s "$CL_prod_app_SECRET_KEY_BASE" | sed '1!s/^/ /')
|
|
1238
1242
|
POSTGRESQL_PASSWORD: |-
|
|
1239
|
-
|
|
1243
|
+
$(printf %s "$CL_prod_app_POSTGRESQL_PASSWORD" | sed '1!s/^/ /')
|
|
1240
1244
|
cloudsqlProxyCredentials: |-
|
|
1241
|
-
|
|
1245
|
+
$(printf %s "$CL_prod_app_cloudsqlProxyCredentials" | sed '1!s/^/ /')
|
|
1242
1246
|
public:
|
|
1243
1247
|
ENV_SHORT: |-
|
|
1244
1248
|
prod
|
|
@@ -1247,16 +1251,14 @@ app 🧪 test:
|
|
|
1247
1251
|
ENV_TYPE: |-
|
|
1248
1252
|
prod
|
|
1249
1253
|
BUILD_INFO_BUILD_ID: |-
|
|
1250
|
-
|
|
1254
|
+
$(printf %s "$(git describe --tags 2>/dev/null || git rev-parse HEAD)" | sed '1!s/^/ /')
|
|
1251
1255
|
BUILD_INFO_BUILD_TIME: |-
|
|
1252
|
-
|
|
1256
|
+
$(printf %s "$CI_JOB_STARTED_AT" | sed '1!s/^/ /')
|
|
1253
1257
|
BUILD_INFO_CURRENT_VERSION: |-
|
|
1254
|
-
|
|
1258
|
+
$(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/^/ /')
|
|
1255
1259
|
ROOT_URL: |-
|
|
1256
1260
|
https://my-fancy-website.com
|
|
1257
|
-
|
|
1258
|
-
app.prod.test-app.pan.panter.cloud
|
|
1259
|
-
HOST_CANONICAL: |-
|
|
1261
|
+
HOSTNAME_INTERNAL: |-
|
|
1260
1262
|
app.prod.test-app.pan.panter.cloud
|
|
1261
1263
|
ROOT_URL_INTERNAL: |-
|
|
1262
1264
|
https://app.prod.test-app.pan.panter.cloud
|
|
@@ -1268,7 +1270,7 @@ app 🧪 test:
|
|
|
1268
1270
|
RAILS_ENV: |-
|
|
1269
1271
|
production
|
|
1270
1272
|
_ALL_ENV_VAR_KEYS: |-
|
|
1271
|
-
["ENV_SHORT","APP_DIR","ENV_TYPE","BUILD_INFO_BUILD_ID","BUILD_INFO_BUILD_TIME","BUILD_INFO_CURRENT_VERSION","ROOT_URL","
|
|
1273
|
+
["ENV_SHORT","APP_DIR","ENV_TYPE","BUILD_INFO_BUILD_ID","BUILD_INFO_BUILD_TIME","BUILD_INFO_CURRENT_VERSION","ROOT_URL","HOSTNAME_INTERNAL","ROOT_URL_INTERNAL","KUBE_NAMESPACE","KUBE_APP_NAME","KUBE_APP_NAME_PREFIX","SECRET_KEY_BASE","POSTGRESQL_PASSWORD","cloudsqlProxyCredentials","RAILS_ENV"]
|
|
1272
1274
|
application:
|
|
1273
1275
|
host: |-
|
|
1274
1276
|
my-fancy-website.com
|
|
@@ -1296,13 +1298,13 @@ app 🧪 test:
|
|
|
1296
1298
|
dbUser: |-
|
|
1297
1299
|
postgres
|
|
1298
1300
|
instanceConnectionName: |-
|
|
1299
|
-
|
|
1301
|
+
myproject:europe-west6:instance-name
|
|
1300
1302
|
proxyCredentials: |-
|
|
1301
1303
|
$CL_prod_app_cloudsqlProxyCredentials
|
|
1302
1304
|
fullDbName: |-
|
|
1303
|
-
app
|
|
1304
|
-
|
|
1305
|
-
|
|
1305
|
+
pan-test-app-prod-app
|
|
1306
|
+
type: |-
|
|
1307
|
+
unmanaged
|
|
1306
1308
|
jobs:
|
|
1307
1309
|
db-migrate:
|
|
1308
1310
|
hook: |-
|
|
@@ -1311,7 +1313,7 @@ app 🧪 test:
|
|
|
1311
1313
|
launcher bundle exec rake db:migrate
|
|
1312
1314
|
|
|
1313
1315
|
EOF
|
|
1314
|
-
-
|
|
1316
|
+
- collapseable_section_end "writeallvalues"
|
|
1315
1317
|
- kubernetesCreateSecret
|
|
1316
1318
|
- kubernetesDeploy
|
|
1317
1319
|
- echo 'Uploading SBOM to Dependency Track'
|
|
@@ -1345,7 +1347,7 @@ app 🧪 test:
|
|
|
1345
1347
|
KUBERNETES_MEMORY_LIMIT: 400Mi
|
|
1346
1348
|
GIT_STRATEGY: none
|
|
1347
1349
|
script:
|
|
1348
|
-
-
|
|
1350
|
+
- collapseable_section_start "injectvars" "Injecting variables"
|
|
1349
1351
|
- export ENV_SHORT="prod"
|
|
1350
1352
|
- export APP_DIR=".temp-with-dockerfile"
|
|
1351
1353
|
- export ENV_TYPE="prod"
|
|
@@ -1353,8 +1355,7 @@ app 🧪 test:
|
|
|
1353
1355
|
- export BUILD_INFO_BUILD_TIME="$CI_JOB_STARTED_AT"
|
|
1354
1356
|
- 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")"
|
|
1355
1357
|
- export ROOT_URL="https://my-fancy-website.com"
|
|
1356
|
-
- export
|
|
1357
|
-
- export HOST_CANONICAL="app.prod.test-app.pan.panter.cloud"
|
|
1358
|
+
- export HOSTNAME_INTERNAL="app.prod.test-app.pan.panter.cloud"
|
|
1358
1359
|
- export ROOT_URL_INTERNAL="https://app.prod.test-app.pan.panter.cloud"
|
|
1359
1360
|
- export KUBE_NAMESPACE="pan-test-app-prod"
|
|
1360
1361
|
- export KUBE_APP_NAME="app"
|
|
@@ -1363,15 +1364,14 @@ app 🧪 test:
|
|
|
1363
1364
|
- export POSTGRESQL_PASSWORD="$CL_prod_app_POSTGRESQL_PASSWORD"
|
|
1364
1365
|
- export cloudsqlProxyCredentials="$CL_prod_app_cloudsqlProxyCredentials"
|
|
1365
1366
|
- export RAILS_ENV="production"
|
|
1366
|
-
- export _ALL_ENV_VAR_KEYS="[\\"ENV_SHORT\\",\\"APP_DIR\\",\\"ENV_TYPE\\",\\"BUILD_INFO_BUILD_ID\\",\\"BUILD_INFO_BUILD_TIME\\",\\"BUILD_INFO_CURRENT_VERSION\\",\\"ROOT_URL\\",\\"
|
|
1367
|
+
- export _ALL_ENV_VAR_KEYS="[\\"ENV_SHORT\\",\\"APP_DIR\\",\\"ENV_TYPE\\",\\"BUILD_INFO_BUILD_ID\\",\\"BUILD_INFO_BUILD_TIME\\",\\"BUILD_INFO_CURRENT_VERSION\\",\\"ROOT_URL\\",\\"HOSTNAME_INTERNAL\\",\\"ROOT_URL_INTERNAL\\",\\"KUBE_NAMESPACE\\",\\"KUBE_APP_NAME\\",\\"KUBE_APP_NAME_PREFIX\\",\\"SECRET_KEY_BASE\\",\\"POSTGRESQL_PASSWORD\\",\\"cloudsqlProxyCredentials\\",\\"RAILS_ENV\\"]"
|
|
1367
1368
|
- export RELEASE_NAME="pan-test-app-prod-app"
|
|
1368
1369
|
- export HELM_EXPERIMENTAL_OCI="1"
|
|
1369
1370
|
- export KUBE_DOCKER_IMAGE_PULL_SECRET="gitlab-registry-app"
|
|
1370
1371
|
- export HELM_GITLAB_CHART_NAME="/helm-charts/the-panter-chart"
|
|
1371
1372
|
- export HELM_ARGS=""
|
|
1372
1373
|
- export COMPONENT_NAME="app"
|
|
1373
|
-
-
|
|
1374
|
-
- echo -e "\\e[0Ksection_end:$(date +%s):injectvars\\r\\e[0K"
|
|
1374
|
+
- collapseable_section_end "injectvars"
|
|
1375
1375
|
- kubectl config set-cluster "kube-pan-test-app-prod-app" --server="$CL_prod_app_KUBE_URL" --certificate-authority <(echo $CL_prod_app_KUBE_CA_PEM | base64 -d) --embed-certs=true
|
|
1376
1376
|
- kubectl config set-credentials "kube-pan-test-app-prod-app" --token="$CL_prod_app_KUBE_TOKEN"
|
|
1377
1377
|
- kubectl config set-context "kube-pan-test-app-prod-app" --cluster="kube-pan-test-app-prod-app" --user="kube-pan-test-app-prod-app" --namespace="pan-test-app-prod"
|
|
@@ -1405,7 +1405,7 @@ app 🧪 test:
|
|
|
1405
1405
|
KUBERNETES_MEMORY_LIMIT: 400Mi
|
|
1406
1406
|
GIT_STRATEGY: none
|
|
1407
1407
|
script:
|
|
1408
|
-
-
|
|
1408
|
+
- collapseable_section_start "injectvars" "Injecting variables"
|
|
1409
1409
|
- export ENV_SHORT="prod"
|
|
1410
1410
|
- export APP_DIR=".temp-with-dockerfile"
|
|
1411
1411
|
- export ENV_TYPE="prod"
|
|
@@ -1413,8 +1413,7 @@ app 🧪 test:
|
|
|
1413
1413
|
- export BUILD_INFO_BUILD_TIME="$CI_JOB_STARTED_AT"
|
|
1414
1414
|
- 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")"
|
|
1415
1415
|
- export ROOT_URL="https://my-fancy-website.com"
|
|
1416
|
-
- export
|
|
1417
|
-
- export HOST_CANONICAL="app.prod.test-app.pan.panter.cloud"
|
|
1416
|
+
- export HOSTNAME_INTERNAL="app.prod.test-app.pan.panter.cloud"
|
|
1418
1417
|
- export ROOT_URL_INTERNAL="https://app.prod.test-app.pan.panter.cloud"
|
|
1419
1418
|
- export KUBE_NAMESPACE="pan-test-app-prod"
|
|
1420
1419
|
- export KUBE_APP_NAME="app"
|
|
@@ -1423,15 +1422,14 @@ app 🧪 test:
|
|
|
1423
1422
|
- export POSTGRESQL_PASSWORD="$CL_prod_app_POSTGRESQL_PASSWORD"
|
|
1424
1423
|
- export cloudsqlProxyCredentials="$CL_prod_app_cloudsqlProxyCredentials"
|
|
1425
1424
|
- export RAILS_ENV="production"
|
|
1426
|
-
- export _ALL_ENV_VAR_KEYS="[\\"ENV_SHORT\\",\\"APP_DIR\\",\\"ENV_TYPE\\",\\"BUILD_INFO_BUILD_ID\\",\\"BUILD_INFO_BUILD_TIME\\",\\"BUILD_INFO_CURRENT_VERSION\\",\\"ROOT_URL\\",\\"
|
|
1425
|
+
- export _ALL_ENV_VAR_KEYS="[\\"ENV_SHORT\\",\\"APP_DIR\\",\\"ENV_TYPE\\",\\"BUILD_INFO_BUILD_ID\\",\\"BUILD_INFO_BUILD_TIME\\",\\"BUILD_INFO_CURRENT_VERSION\\",\\"ROOT_URL\\",\\"HOSTNAME_INTERNAL\\",\\"ROOT_URL_INTERNAL\\",\\"KUBE_NAMESPACE\\",\\"KUBE_APP_NAME\\",\\"KUBE_APP_NAME_PREFIX\\",\\"SECRET_KEY_BASE\\",\\"POSTGRESQL_PASSWORD\\",\\"cloudsqlProxyCredentials\\",\\"RAILS_ENV\\"]"
|
|
1427
1426
|
- export RELEASE_NAME="pan-test-app-prod-app"
|
|
1428
1427
|
- export HELM_EXPERIMENTAL_OCI="1"
|
|
1429
1428
|
- export KUBE_DOCKER_IMAGE_PULL_SECRET="gitlab-registry-app"
|
|
1430
1429
|
- export HELM_GITLAB_CHART_NAME="/helm-charts/the-panter-chart"
|
|
1431
1430
|
- export HELM_ARGS=""
|
|
1432
1431
|
- export COMPONENT_NAME="app"
|
|
1433
|
-
-
|
|
1434
|
-
- echo -e "\\e[0Ksection_end:$(date +%s):injectvars\\r\\e[0K"
|
|
1432
|
+
- collapseable_section_end "injectvars"
|
|
1435
1433
|
- kubectl config set-cluster "kube-pan-test-app-prod-app" --server="$CL_prod_app_KUBE_URL" --certificate-authority <(echo $CL_prod_app_KUBE_CA_PEM | base64 -d) --embed-certs=true
|
|
1436
1434
|
- kubectl config set-credentials "kube-pan-test-app-prod-app" --token="$CL_prod_app_KUBE_TOKEN"
|
|
1437
1435
|
- kubectl config set-context "kube-pan-test-app-prod-app" --cluster="kube-pan-test-app-prod-app" --user="kube-pan-test-app-prod-app" --namespace="pan-test-app-prod"
|