@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
|
'app 🔨 app | dev ':
|
|
49
79
|
stage: build
|
|
50
80
|
image: maven:3-eclipse-temurin-11
|
|
@@ -53,29 +83,45 @@ variables:
|
|
|
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 ENV_SHORT="dev"
|
|
58
88
|
- export APP_DIR="app"
|
|
59
89
|
- export ENV_TYPE="dev"
|
|
60
90
|
- export BUILD_INFO_BUILD_ID="$(git describe --tags 2>/dev/null || git rev-parse HEAD)"
|
|
61
91
|
- export BUILD_INFO_BUILD_TIME="$CI_JOB_STARTED_AT"
|
|
62
92
|
- 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")"
|
|
63
|
-
- export
|
|
93
|
+
- export HOSTNAME="$(printf %s "pan-test-app-dev-app-$CL_dev_app_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')"
|
|
64
94
|
- export ROOT_URL="https://$(printf %s "pan-test-app-dev-app-$CL_dev_app_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')"
|
|
65
|
-
- export
|
|
66
|
-
- export HOST_CANONICAL="$(printf %s "pan-test-app-dev-app-$CL_dev_app_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')"
|
|
95
|
+
- export HOSTNAME_INTERNAL="$(printf %s "pan-test-app-dev-app-$CL_dev_app_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')"
|
|
67
96
|
- export ROOT_URL_INTERNAL="https://$(printf %s "pan-test-app-dev-app-$CL_dev_app_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')"
|
|
68
97
|
- export DEPLOY_CLOUD_RUN_PROJECT_ID="asdf"
|
|
69
98
|
- export DEPLOY_CLOUD_RUN_REGION="asia-east1"
|
|
70
99
|
- export GCLOUD_DEPLOY_credentialsKey="$CL_dev_app_GCLOUD_DEPLOY_credentialsKey"
|
|
71
100
|
- export GCLOUD_RUN_canonicalHostSuffix="$CL_dev_app_GCLOUD_RUN_canonicalHostSuffix"
|
|
72
|
-
- export _ALL_ENV_VAR_KEYS="[\\"ENV_SHORT\\",\\"APP_DIR\\",\\"ENV_TYPE\\",\\"BUILD_INFO_BUILD_ID\\",\\"BUILD_INFO_BUILD_TIME\\",\\"BUILD_INFO_CURRENT_VERSION\\",\\"
|
|
73
|
-
-
|
|
101
|
+
- 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\\"]"
|
|
102
|
+
- collapseable_section_end "injectvars"
|
|
103
|
+
- collapseable_section_start "write-dotenv-app" "write dot env for app"
|
|
104
|
+
- |-
|
|
105
|
+
cat <<EOF > app/.env
|
|
106
|
+
ENV_SHORT=dev
|
|
107
|
+
APP_DIR=app
|
|
108
|
+
ENV_TYPE=dev
|
|
109
|
+
HOSTNAME=$(printf %s "$(printf %s "pan-test-app-dev-app-$CL_dev_app_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')" | escapeForDotEnv)
|
|
110
|
+
ROOT_URL=$(printf %s "https://$(printf %s "pan-test-app-dev-app-$CL_dev_app_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')" | escapeForDotEnv)
|
|
111
|
+
HOSTNAME_INTERNAL=$(printf %s "$(printf %s "pan-test-app-dev-app-$CL_dev_app_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')" | escapeForDotEnv)
|
|
112
|
+
ROOT_URL_INTERNAL=$(printf %s "https://$(printf %s "pan-test-app-dev-app-$CL_dev_app_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')" | escapeForDotEnv)
|
|
113
|
+
DEPLOY_CLOUD_RUN_PROJECT_ID=asdf
|
|
114
|
+
DEPLOY_CLOUD_RUN_REGION=asia-east1
|
|
115
|
+
GCLOUD_DEPLOY_credentialsKey=$(printf %s "$CL_dev_app_GCLOUD_DEPLOY_credentialsKey" | escapeForDotEnv)
|
|
116
|
+
GCLOUD_RUN_canonicalHostSuffix=$(printf %s "$CL_dev_app_GCLOUD_RUN_canonicalHostSuffix" | escapeForDotEnv)
|
|
117
|
+
_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"]
|
|
118
|
+
EOF
|
|
119
|
+
- collapseable_section_end "write-dotenv-app"
|
|
74
120
|
- echo '{"id":"$(git describe --tags 2>/dev/null || git rev-parse HEAD)","time":"$CI_JOB_STARTED_AT"}' > app/__build_info.json
|
|
75
|
-
-
|
|
121
|
+
- collapseable_section_start "nodeinstall" "Ensure node version"
|
|
76
122
|
- if [ -f ~/.nvm/nvm.sh ]; then source ~/.nvm/nvm.sh; fi
|
|
77
123
|
- if command -v nvm &> /dev/null && [ -f ./.nvmrc ]; then nvm install; fi
|
|
78
|
-
-
|
|
124
|
+
- collapseable_section_end "nodeinstall"
|
|
79
125
|
- cd app
|
|
80
126
|
- mvn package
|
|
81
127
|
- cp -r target dist
|
|
@@ -83,6 +129,8 @@ variables:
|
|
|
83
129
|
paths:
|
|
84
130
|
- app/__build_info.json
|
|
85
131
|
- app/dist
|
|
132
|
+
exclude:
|
|
133
|
+
- app/.env
|
|
86
134
|
expire_in: 1 day
|
|
87
135
|
when: always
|
|
88
136
|
reports: {}
|
|
@@ -114,26 +162,26 @@ variables:
|
|
|
114
162
|
KUBERNETES_MEMORY_REQUEST: 1Gi
|
|
115
163
|
KUBERNETES_MEMORY_LIMIT: 2Gi
|
|
116
164
|
script:
|
|
117
|
-
-
|
|
165
|
+
- collapseable_section_start "injectvars" "Injecting variables"
|
|
118
166
|
- export APP_DIR="app"
|
|
119
167
|
- export DOCKER_BUILD_CONTEXT="app"
|
|
120
168
|
- export DOCKER_REGISTRY="asia-east1-docker.pkg.dev"
|
|
121
169
|
- export DOCKER_IMAGE="asia-east1-docker.pkg.dev/asdf/catladder-deploy/pan-test-app/dev/app"
|
|
122
170
|
- export DOCKER_CACHE_IMAGE="asia-east1-docker.pkg.dev/asdf/catladder-deploy/pan-test-app/caches/app"
|
|
123
171
|
- export DOCKER_IMAGE_TAG="$CI_COMMIT_SHA"
|
|
124
|
-
-
|
|
125
|
-
-
|
|
172
|
+
- collapseable_section_end "injectvars"
|
|
173
|
+
- collapseable_section_start "docker-login" "Docker Login"
|
|
126
174
|
- gcloud auth activate-service-account --key-file=<(echo "$CL_dev_app_GCLOUD_DEPLOY_credentialsKey")
|
|
127
175
|
- gcloud auth configure-docker asia-east1-docker.pkg.dev
|
|
128
|
-
-
|
|
129
|
-
-
|
|
176
|
+
- collapseable_section_end "docker-login"
|
|
177
|
+
- collapseable_section_start "docker-build" "Docker build"
|
|
130
178
|
- 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
|
|
131
|
-
-
|
|
132
|
-
-
|
|
179
|
+
- collapseable_section_end "docker-build"
|
|
180
|
+
- collapseable_section_start "docker-push" "Docker push and tag"
|
|
133
181
|
- docker push $DOCKER_IMAGE:$DOCKER_IMAGE_TAG
|
|
134
182
|
- docker tag $DOCKER_IMAGE:$DOCKER_IMAGE_TAG $DOCKER_CACHE_IMAGE
|
|
135
183
|
- docker push $DOCKER_CACHE_IMAGE
|
|
136
|
-
-
|
|
184
|
+
- collapseable_section_end "docker-push"
|
|
137
185
|
rules:
|
|
138
186
|
- when: never
|
|
139
187
|
if: $CI_COMMIT_MESSAGE =~ /^chore\\(release\\).*/
|
|
@@ -147,8 +195,8 @@ variables:
|
|
|
147
195
|
image: maven:3-eclipse-temurin-11
|
|
148
196
|
variables: {}
|
|
149
197
|
script:
|
|
150
|
-
-
|
|
151
|
-
-
|
|
198
|
+
- collapseable_section_start "injectvars" "Injecting variables"
|
|
199
|
+
- collapseable_section_end "injectvars"
|
|
152
200
|
- mvn org.cyclonedx:cyclonedx-maven-plugin:2.7.4:makeBom
|
|
153
201
|
- mv target/bom.json __sbom.json
|
|
154
202
|
artifacts:
|
|
@@ -170,35 +218,34 @@ variables:
|
|
|
170
218
|
KUBERNETES_MEMORY_REQUEST: 200Mi
|
|
171
219
|
KUBERNETES_MEMORY_LIMIT: 400Mi
|
|
172
220
|
script:
|
|
173
|
-
-
|
|
221
|
+
- collapseable_section_start "injectvars" "Injecting variables"
|
|
174
222
|
- export ENV_SHORT="dev"
|
|
175
223
|
- export APP_DIR="app"
|
|
176
224
|
- export ENV_TYPE="dev"
|
|
177
225
|
- export BUILD_INFO_BUILD_ID="$(git describe --tags 2>/dev/null || git rev-parse HEAD)"
|
|
178
226
|
- export BUILD_INFO_BUILD_TIME="$CI_JOB_STARTED_AT"
|
|
179
227
|
- 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")"
|
|
180
|
-
- export
|
|
228
|
+
- export HOSTNAME="$(printf %s "pan-test-app-dev-app-$CL_dev_app_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')"
|
|
181
229
|
- export ROOT_URL="https://$(printf %s "pan-test-app-dev-app-$CL_dev_app_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')"
|
|
182
|
-
- export
|
|
183
|
-
- export HOST_CANONICAL="$(printf %s "pan-test-app-dev-app-$CL_dev_app_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')"
|
|
230
|
+
- export HOSTNAME_INTERNAL="$(printf %s "pan-test-app-dev-app-$CL_dev_app_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')"
|
|
184
231
|
- export ROOT_URL_INTERNAL="https://$(printf %s "pan-test-app-dev-app-$CL_dev_app_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')"
|
|
185
232
|
- export DEPLOY_CLOUD_RUN_PROJECT_ID="asdf"
|
|
186
233
|
- export DEPLOY_CLOUD_RUN_REGION="asia-east1"
|
|
187
234
|
- export GCLOUD_DEPLOY_credentialsKey="$CL_dev_app_GCLOUD_DEPLOY_credentialsKey"
|
|
188
235
|
- export GCLOUD_RUN_canonicalHostSuffix="$CL_dev_app_GCLOUD_RUN_canonicalHostSuffix"
|
|
189
|
-
- export _ALL_ENV_VAR_KEYS="[\\"ENV_SHORT\\",\\"APP_DIR\\",\\"ENV_TYPE\\",\\"BUILD_INFO_BUILD_ID\\",\\"BUILD_INFO_BUILD_TIME\\",\\"BUILD_INFO_CURRENT_VERSION\\",\\"
|
|
236
|
+
- 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\\"]"
|
|
190
237
|
- export DOCKER_REGISTRY="asia-east1-docker.pkg.dev"
|
|
191
238
|
- export DOCKER_IMAGE="asia-east1-docker.pkg.dev/asdf/catladder-deploy/pan-test-app/dev/app"
|
|
192
239
|
- export DOCKER_CACHE_IMAGE="asia-east1-docker.pkg.dev/asdf/catladder-deploy/pan-test-app/caches/app"
|
|
193
240
|
- export DOCKER_IMAGE_TAG="$CI_COMMIT_SHA"
|
|
194
241
|
- export CLOUDSDK_CORE_DISABLE_PROMPTS="1"
|
|
195
|
-
-
|
|
196
|
-
-
|
|
242
|
+
- collapseable_section_end "injectvars"
|
|
243
|
+
- collapseable_section_start "prepare" "Prepare..."
|
|
197
244
|
- gcloud auth activate-service-account --key-file=<(echo "$CL_dev_app_GCLOUD_DEPLOY_credentialsKey")
|
|
198
245
|
- export GCLOUD_PROJECT_NUMBER=$(gcloud projects describe asdf --format="value(projectNumber)")
|
|
199
246
|
- 'echo "GCLOUD_PROJECT_NUMBER: $GCLOUD_PROJECT_NUMBER"'
|
|
200
|
-
-
|
|
201
|
-
-
|
|
247
|
+
- collapseable_section_end "prepare"
|
|
248
|
+
- collapseable_section_start "writeenvvars" "Write env vars to file"
|
|
202
249
|
- |
|
|
203
250
|
cat > ____envvars.yaml <<EOF
|
|
204
251
|
ENV_SHORT: |-
|
|
@@ -208,40 +255,38 @@ variables:
|
|
|
208
255
|
ENV_TYPE: |-
|
|
209
256
|
dev
|
|
210
257
|
BUILD_INFO_BUILD_ID: |-
|
|
211
|
-
|
|
258
|
+
$(printf %s "$(git describe --tags 2>/dev/null || git rev-parse HEAD)" | sed '1!s/^/ /')
|
|
212
259
|
BUILD_INFO_BUILD_TIME: |-
|
|
213
|
-
|
|
260
|
+
$(printf %s "$CI_JOB_STARTED_AT" | sed '1!s/^/ /')
|
|
214
261
|
BUILD_INFO_CURRENT_VERSION: |-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
262
|
+
$(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/^/ /')
|
|
263
|
+
HOSTNAME: |-
|
|
264
|
+
$(printf %s "$(printf %s "pan-test-app-dev-app-$CL_dev_app_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')" | sed '1!s/^/ /')
|
|
218
265
|
ROOT_URL: |-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
HOST_CANONICAL: |-
|
|
223
|
-
$(printf %s "$(printf %s "pan-test-app-dev-app-$CL_dev_app_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')" | sed 's/^/ /')
|
|
266
|
+
$(printf %s "https://$(printf %s "pan-test-app-dev-app-$CL_dev_app_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')" | sed '1!s/^/ /')
|
|
267
|
+
HOSTNAME_INTERNAL: |-
|
|
268
|
+
$(printf %s "$(printf %s "pan-test-app-dev-app-$CL_dev_app_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')" | sed '1!s/^/ /')
|
|
224
269
|
ROOT_URL_INTERNAL: |-
|
|
225
|
-
|
|
270
|
+
$(printf %s "https://$(printf %s "pan-test-app-dev-app-$CL_dev_app_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')" | sed '1!s/^/ /')
|
|
226
271
|
DEPLOY_CLOUD_RUN_PROJECT_ID: |-
|
|
227
272
|
asdf
|
|
228
273
|
DEPLOY_CLOUD_RUN_REGION: |-
|
|
229
274
|
asia-east1
|
|
230
275
|
GCLOUD_RUN_canonicalHostSuffix: |-
|
|
231
|
-
|
|
276
|
+
$(printf %s "$CL_dev_app_GCLOUD_RUN_canonicalHostSuffix" | sed '1!s/^/ /')
|
|
232
277
|
_ALL_ENV_VAR_KEYS: |-
|
|
233
|
-
["ENV_SHORT","APP_DIR","ENV_TYPE","BUILD_INFO_BUILD_ID","BUILD_INFO_BUILD_TIME","BUILD_INFO_CURRENT_VERSION","
|
|
278
|
+
["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"]
|
|
234
279
|
|
|
235
280
|
EOF
|
|
236
|
-
-
|
|
237
|
-
-
|
|
281
|
+
- collapseable_section_end "writeenvvars"
|
|
282
|
+
- collapseable_section_start "deploy" "Deploy to cloud run"
|
|
238
283
|
- gcloud run deploy pan-test-app-dev-app --command="" --image=asia-east1-docker.pkg.dev/asdf/catladder-deploy/pan-test-app/dev/app:$DOCKER_IMAGE_TAG --project=asdf --region=asia-east1 --labels=customer-name=pan,component-name=app,app-name=test-app,env-type=dev,env-name=dev,build-type=custom,cloud-run-service-name=pan-test-app-dev-app --env-vars-file=____envvars.yaml --min-instances=0 --max-instances=100 --cpu-throttling --allow-unauthenticated --ingress=all --cpu-boost
|
|
239
|
-
-
|
|
240
|
-
-
|
|
284
|
+
- collapseable_section_end "deploy"
|
|
285
|
+
- collapseable_section_start "cleanup" "Cleanup"
|
|
241
286
|
- gcloud run revisions list --project=asdf --region=asia-east1 --service=pan-test-app-dev-app --limit=unlimited --sort-by=metadata.creationTimestamp --format="value(name)" --filter='(status.conditions.status=False OR status.conditions.status=Unknown)' | while read -r revisionname; do gcloud run revisions delete --project=asdf --region=asia-east1 --quiet $revisionname ; done
|
|
242
287
|
- gcloud artifacts docker images list asia-east1-docker.pkg.dev/asdf/catladder-deploy/pan-test-app/dev/app --sort-by=~CREATE_TIME --format="value(version)" | tail -n +2 | while read -r version; do gcloud artifacts docker images delete asia-east1-docker.pkg.dev/asdf/catladder-deploy/pan-test-app/dev/app@$version --quiet --delete-tags; done
|
|
243
288
|
- gcloud artifacts docker images list asia-east1-docker.pkg.dev/asdf/catladder-deploy/pan-test-app/caches/app --sort-by=~CREATE_TIME --format="value(version)" | tail -n +2 | while read -r version; do gcloud artifacts docker images delete asia-east1-docker.pkg.dev/asdf/catladder-deploy/pan-test-app/caches/app@$version --quiet --delete-tags; done
|
|
244
|
-
-
|
|
289
|
+
- collapseable_section_end "cleanup"
|
|
245
290
|
- echo 'Uploading SBOM to Dependency Track'
|
|
246
291
|
- /dtrackuploader https://dep.panter.swiss/ "$DT_KEY_PROD" upload "pan-test-app/app" "https://$(printf %s "pan-test-app-dev-app-$CL_dev_app_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')" "__sbom.json" vex.json || true
|
|
247
292
|
- echo "CL_GITLAB_ENVIRONMENT_URL=https://$(printf %s "pan-test-app-dev-app-$CL_dev_app_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')" >> gitlab_environment.env
|
|
@@ -277,9 +322,9 @@ variables:
|
|
|
277
322
|
KUBERNETES_MEMORY_LIMIT: 400Mi
|
|
278
323
|
GIT_STRATEGY: none
|
|
279
324
|
script:
|
|
280
|
-
-
|
|
325
|
+
- collapseable_section_start "injectvars" "Injecting variables"
|
|
281
326
|
- export CLOUDSDK_CORE_DISABLE_PROMPTS="1"
|
|
282
|
-
-
|
|
327
|
+
- collapseable_section_end "injectvars"
|
|
283
328
|
- set +e
|
|
284
329
|
- gcloud auth activate-service-account --key-file=<(echo "$CL_dev_app_GCLOUD_DEPLOY_credentialsKey")
|
|
285
330
|
- gcloud run services delete pan-test-app-dev-app --project=asdf --region=asia-east1
|
|
@@ -315,29 +360,45 @@ variables:
|
|
|
315
360
|
KUBERNETES_MEMORY_REQUEST: 1Gi
|
|
316
361
|
KUBERNETES_MEMORY_LIMIT: 4Gi
|
|
317
362
|
script:
|
|
318
|
-
-
|
|
363
|
+
- collapseable_section_start "injectvars" "Injecting variables"
|
|
319
364
|
- export ENV_SHORT="review"
|
|
320
365
|
- export APP_DIR="app"
|
|
321
366
|
- export ENV_TYPE="review"
|
|
322
367
|
- export BUILD_INFO_BUILD_ID="$(git describe --tags 2>/dev/null || git rev-parse HEAD)"
|
|
323
368
|
- export BUILD_INFO_BUILD_TIME="$CI_JOB_STARTED_AT"
|
|
324
369
|
- 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")"
|
|
325
|
-
- export
|
|
370
|
+
- 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"; })-app-$CL_review_app_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')"
|
|
326
371
|
- 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"; })-app-$CL_review_app_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')"
|
|
327
|
-
- export
|
|
328
|
-
- 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"; })-app-$CL_review_app_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')"
|
|
372
|
+
- 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"; })-app-$CL_review_app_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')"
|
|
329
373
|
- 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"; })-app-$CL_review_app_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')"
|
|
330
374
|
- export DEPLOY_CLOUD_RUN_PROJECT_ID="asdf"
|
|
331
375
|
- export DEPLOY_CLOUD_RUN_REGION="asia-east1"
|
|
332
376
|
- export GCLOUD_DEPLOY_credentialsKey="$CL_review_app_GCLOUD_DEPLOY_credentialsKey"
|
|
333
377
|
- export GCLOUD_RUN_canonicalHostSuffix="$CL_review_app_GCLOUD_RUN_canonicalHostSuffix"
|
|
334
|
-
- export _ALL_ENV_VAR_KEYS="[\\"ENV_SHORT\\",\\"APP_DIR\\",\\"ENV_TYPE\\",\\"BUILD_INFO_BUILD_ID\\",\\"BUILD_INFO_BUILD_TIME\\",\\"BUILD_INFO_CURRENT_VERSION\\",\\"
|
|
335
|
-
-
|
|
378
|
+
- 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\\"]"
|
|
379
|
+
- collapseable_section_end "injectvars"
|
|
380
|
+
- collapseable_section_start "write-dotenv-app" "write dot env for app"
|
|
381
|
+
- |-
|
|
382
|
+
cat <<EOF > app/.env
|
|
383
|
+
ENV_SHORT=review
|
|
384
|
+
APP_DIR=app
|
|
385
|
+
ENV_TYPE=review
|
|
386
|
+
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"; })-app-$CL_review_app_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')" | escapeForDotEnv)
|
|
387
|
+
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"; })-app-$CL_review_app_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')" | escapeForDotEnv)
|
|
388
|
+
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"; })-app-$CL_review_app_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')" | escapeForDotEnv)
|
|
389
|
+
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"; })-app-$CL_review_app_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')" | escapeForDotEnv)
|
|
390
|
+
DEPLOY_CLOUD_RUN_PROJECT_ID=asdf
|
|
391
|
+
DEPLOY_CLOUD_RUN_REGION=asia-east1
|
|
392
|
+
GCLOUD_DEPLOY_credentialsKey=$(printf %s "$CL_review_app_GCLOUD_DEPLOY_credentialsKey" | escapeForDotEnv)
|
|
393
|
+
GCLOUD_RUN_canonicalHostSuffix=$(printf %s "$CL_review_app_GCLOUD_RUN_canonicalHostSuffix" | escapeForDotEnv)
|
|
394
|
+
_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"]
|
|
395
|
+
EOF
|
|
396
|
+
- collapseable_section_end "write-dotenv-app"
|
|
336
397
|
- echo '{"id":"$(git describe --tags 2>/dev/null || git rev-parse HEAD)","time":"$CI_JOB_STARTED_AT"}' > app/__build_info.json
|
|
337
|
-
-
|
|
398
|
+
- collapseable_section_start "nodeinstall" "Ensure node version"
|
|
338
399
|
- if [ -f ~/.nvm/nvm.sh ]; then source ~/.nvm/nvm.sh; fi
|
|
339
400
|
- if command -v nvm &> /dev/null && [ -f ./.nvmrc ]; then nvm install; fi
|
|
340
|
-
-
|
|
401
|
+
- collapseable_section_end "nodeinstall"
|
|
341
402
|
- cd app
|
|
342
403
|
- mvn package
|
|
343
404
|
- cp -r target dist
|
|
@@ -345,6 +406,8 @@ variables:
|
|
|
345
406
|
paths:
|
|
346
407
|
- app/__build_info.json
|
|
347
408
|
- app/dist
|
|
409
|
+
exclude:
|
|
410
|
+
- app/.env
|
|
348
411
|
expire_in: 1 day
|
|
349
412
|
when: always
|
|
350
413
|
reports: {}
|
|
@@ -370,26 +433,26 @@ variables:
|
|
|
370
433
|
KUBERNETES_MEMORY_REQUEST: 1Gi
|
|
371
434
|
KUBERNETES_MEMORY_LIMIT: 2Gi
|
|
372
435
|
script:
|
|
373
|
-
-
|
|
436
|
+
- collapseable_section_start "injectvars" "Injecting variables"
|
|
374
437
|
- export APP_DIR="app"
|
|
375
438
|
- export DOCKER_BUILD_CONTEXT="app"
|
|
376
439
|
- export DOCKER_REGISTRY="asia-east1-docker.pkg.dev"
|
|
377
440
|
- export DOCKER_IMAGE="asia-east1-docker.pkg.dev/asdf/catladder-deploy/pan-test-app/review/app/$([ -n "$CI_MERGE_REQUEST_IID" ] && echo "mr$CI_MERGE_REQUEST_IID" || { [ -n "$CI_COMMIT_REF_SLUG" ] && echo "$CI_COMMIT_REF_SLUG" || echo "unknown"; })"
|
|
378
441
|
- export DOCKER_CACHE_IMAGE="asia-east1-docker.pkg.dev/asdf/catladder-deploy/pan-test-app/caches/app"
|
|
379
442
|
- export DOCKER_IMAGE_TAG="$CI_COMMIT_SHA"
|
|
380
|
-
-
|
|
381
|
-
-
|
|
443
|
+
- collapseable_section_end "injectvars"
|
|
444
|
+
- collapseable_section_start "docker-login" "Docker Login"
|
|
382
445
|
- gcloud auth activate-service-account --key-file=<(echo "$CL_review_app_GCLOUD_DEPLOY_credentialsKey")
|
|
383
446
|
- gcloud auth configure-docker asia-east1-docker.pkg.dev
|
|
384
|
-
-
|
|
385
|
-
-
|
|
447
|
+
- collapseable_section_end "docker-login"
|
|
448
|
+
- collapseable_section_start "docker-build" "Docker build"
|
|
386
449
|
- 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
|
|
387
|
-
-
|
|
388
|
-
-
|
|
450
|
+
- collapseable_section_end "docker-build"
|
|
451
|
+
- collapseable_section_start "docker-push" "Docker push and tag"
|
|
389
452
|
- docker push $DOCKER_IMAGE:$DOCKER_IMAGE_TAG
|
|
390
453
|
- docker tag $DOCKER_IMAGE:$DOCKER_IMAGE_TAG $DOCKER_CACHE_IMAGE
|
|
391
454
|
- docker push $DOCKER_CACHE_IMAGE
|
|
392
|
-
-
|
|
455
|
+
- collapseable_section_end "docker-push"
|
|
393
456
|
rules:
|
|
394
457
|
- if: $CI_MERGE_REQUEST_ID
|
|
395
458
|
needs:
|
|
@@ -401,8 +464,8 @@ variables:
|
|
|
401
464
|
image: maven:3-eclipse-temurin-11
|
|
402
465
|
variables: {}
|
|
403
466
|
script:
|
|
404
|
-
-
|
|
405
|
-
-
|
|
467
|
+
- collapseable_section_start "injectvars" "Injecting variables"
|
|
468
|
+
- collapseable_section_end "injectvars"
|
|
406
469
|
- mvn org.cyclonedx:cyclonedx-maven-plugin:2.7.4:makeBom
|
|
407
470
|
- mv target/bom.json __sbom.json
|
|
408
471
|
artifacts:
|
|
@@ -422,35 +485,34 @@ variables:
|
|
|
422
485
|
KUBERNETES_MEMORY_REQUEST: 200Mi
|
|
423
486
|
KUBERNETES_MEMORY_LIMIT: 400Mi
|
|
424
487
|
script:
|
|
425
|
-
-
|
|
488
|
+
- collapseable_section_start "injectvars" "Injecting variables"
|
|
426
489
|
- export ENV_SHORT="review"
|
|
427
490
|
- export APP_DIR="app"
|
|
428
491
|
- export ENV_TYPE="review"
|
|
429
492
|
- export BUILD_INFO_BUILD_ID="$(git describe --tags 2>/dev/null || git rev-parse HEAD)"
|
|
430
493
|
- export BUILD_INFO_BUILD_TIME="$CI_JOB_STARTED_AT"
|
|
431
494
|
- 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")"
|
|
432
|
-
- export
|
|
495
|
+
- 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"; })-app-$CL_review_app_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')"
|
|
433
496
|
- 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"; })-app-$CL_review_app_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')"
|
|
434
|
-
- export
|
|
435
|
-
- 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"; })-app-$CL_review_app_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')"
|
|
497
|
+
- 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"; })-app-$CL_review_app_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')"
|
|
436
498
|
- 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"; })-app-$CL_review_app_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')"
|
|
437
499
|
- export DEPLOY_CLOUD_RUN_PROJECT_ID="asdf"
|
|
438
500
|
- export DEPLOY_CLOUD_RUN_REGION="asia-east1"
|
|
439
501
|
- export GCLOUD_DEPLOY_credentialsKey="$CL_review_app_GCLOUD_DEPLOY_credentialsKey"
|
|
440
502
|
- export GCLOUD_RUN_canonicalHostSuffix="$CL_review_app_GCLOUD_RUN_canonicalHostSuffix"
|
|
441
|
-
- export _ALL_ENV_VAR_KEYS="[\\"ENV_SHORT\\",\\"APP_DIR\\",\\"ENV_TYPE\\",\\"BUILD_INFO_BUILD_ID\\",\\"BUILD_INFO_BUILD_TIME\\",\\"BUILD_INFO_CURRENT_VERSION\\",\\"
|
|
503
|
+
- 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\\"]"
|
|
442
504
|
- export DOCKER_REGISTRY="asia-east1-docker.pkg.dev"
|
|
443
505
|
- export DOCKER_IMAGE="asia-east1-docker.pkg.dev/asdf/catladder-deploy/pan-test-app/review/app/$([ -n "$CI_MERGE_REQUEST_IID" ] && echo "mr$CI_MERGE_REQUEST_IID" || { [ -n "$CI_COMMIT_REF_SLUG" ] && echo "$CI_COMMIT_REF_SLUG" || echo "unknown"; })"
|
|
444
506
|
- export DOCKER_CACHE_IMAGE="asia-east1-docker.pkg.dev/asdf/catladder-deploy/pan-test-app/caches/app"
|
|
445
507
|
- export DOCKER_IMAGE_TAG="$CI_COMMIT_SHA"
|
|
446
508
|
- export CLOUDSDK_CORE_DISABLE_PROMPTS="1"
|
|
447
|
-
-
|
|
448
|
-
-
|
|
509
|
+
- collapseable_section_end "injectvars"
|
|
510
|
+
- collapseable_section_start "prepare" "Prepare..."
|
|
449
511
|
- gcloud auth activate-service-account --key-file=<(echo "$CL_review_app_GCLOUD_DEPLOY_credentialsKey")
|
|
450
512
|
- export GCLOUD_PROJECT_NUMBER=$(gcloud projects describe asdf --format="value(projectNumber)")
|
|
451
513
|
- 'echo "GCLOUD_PROJECT_NUMBER: $GCLOUD_PROJECT_NUMBER"'
|
|
452
|
-
-
|
|
453
|
-
-
|
|
514
|
+
- collapseable_section_end "prepare"
|
|
515
|
+
- collapseable_section_start "writeenvvars" "Write env vars to file"
|
|
454
516
|
- |
|
|
455
517
|
cat > ____envvars.yaml <<EOF
|
|
456
518
|
ENV_SHORT: |-
|
|
@@ -460,43 +522,41 @@ variables:
|
|
|
460
522
|
ENV_TYPE: |-
|
|
461
523
|
review
|
|
462
524
|
BUILD_INFO_BUILD_ID: |-
|
|
463
|
-
|
|
525
|
+
$(printf %s "$(git describe --tags 2>/dev/null || git rev-parse HEAD)" | sed '1!s/^/ /')
|
|
464
526
|
BUILD_INFO_BUILD_TIME: |-
|
|
465
|
-
|
|
527
|
+
$(printf %s "$CI_JOB_STARTED_AT" | sed '1!s/^/ /')
|
|
466
528
|
BUILD_INFO_CURRENT_VERSION: |-
|
|
467
|
-
|
|
468
|
-
|
|
469
|
-
|
|
529
|
+
$(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/^/ /')
|
|
530
|
+
HOSTNAME: |-
|
|
531
|
+
$(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"; })-app-$CL_review_app_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')" | sed '1!s/^/ /')
|
|
470
532
|
ROOT_URL: |-
|
|
471
|
-
|
|
472
|
-
|
|
473
|
-
|
|
474
|
-
HOST_CANONICAL: |-
|
|
475
|
-
$(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"; })-app-$CL_review_app_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')" | sed 's/^/ /')
|
|
533
|
+
$(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"; })-app-$CL_review_app_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')" | sed '1!s/^/ /')
|
|
534
|
+
HOSTNAME_INTERNAL: |-
|
|
535
|
+
$(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"; })-app-$CL_review_app_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')" | sed '1!s/^/ /')
|
|
476
536
|
ROOT_URL_INTERNAL: |-
|
|
477
|
-
|
|
537
|
+
$(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"; })-app-$CL_review_app_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')" | sed '1!s/^/ /')
|
|
478
538
|
DEPLOY_CLOUD_RUN_PROJECT_ID: |-
|
|
479
539
|
asdf
|
|
480
540
|
DEPLOY_CLOUD_RUN_REGION: |-
|
|
481
541
|
asia-east1
|
|
482
542
|
GCLOUD_RUN_canonicalHostSuffix: |-
|
|
483
|
-
|
|
543
|
+
$(printf %s "$CL_review_app_GCLOUD_RUN_canonicalHostSuffix" | sed '1!s/^/ /')
|
|
484
544
|
_ALL_ENV_VAR_KEYS: |-
|
|
485
|
-
["ENV_SHORT","APP_DIR","ENV_TYPE","BUILD_INFO_BUILD_ID","BUILD_INFO_BUILD_TIME","BUILD_INFO_CURRENT_VERSION","
|
|
545
|
+
["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"]
|
|
486
546
|
|
|
487
547
|
EOF
|
|
488
|
-
-
|
|
489
|
-
-
|
|
548
|
+
- collapseable_section_end "writeenvvars"
|
|
549
|
+
- collapseable_section_start "deploy" "Deploy to cloud run"
|
|
490
550
|
- 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"; })-app" | awk '{print tolower($0)}') --command="" --image=asia-east1-docker.pkg.dev/asdf/catladder-deploy/pan-test-app/review/app/$([ -n "$CI_MERGE_REQUEST_IID" ] && echo "mr$CI_MERGE_REQUEST_IID" || { [ -n "$CI_COMMIT_REF_SLUG" ] && echo "$CI_COMMIT_REF_SLUG" || echo "unknown"; }):$DOCKER_IMAGE_TAG --project=asdf --region=asia-east1 --labels=customer-name=pan,component-name=app,app-name=test-app,env-type=review,env-name=review,build-type=custom,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"; })-app" | awk '{print tolower($0)}') --env-vars-file=____envvars.yaml --min-instances=0 --max-instances=100 --cpu-throttling --allow-unauthenticated --ingress=all --cpu-boost
|
|
491
|
-
-
|
|
492
|
-
-
|
|
551
|
+
- collapseable_section_end "deploy"
|
|
552
|
+
- collapseable_section_start "cleanup" "Cleanup"
|
|
493
553
|
- gcloud run revisions list --project=asdf --region=asia-east1 --service=$(printf %s "pan-test-app-review-$([ -n "$CI_MERGE_REQUEST_IID" ] && echo "mr$CI_MERGE_REQUEST_IID" || { [ -n "$CI_COMMIT_REF_SLUG" ] && echo "$CI_COMMIT_REF_SLUG" || echo "unknown"; })-app" | awk '{print tolower($0)}') --limit=unlimited --sort-by=metadata.creationTimestamp --format="value(name)" --filter='(status.conditions.status=False OR status.conditions.status=Unknown)' | while read -r revisionname; do gcloud run revisions delete --project=asdf --region=asia-east1 --quiet $revisionname ; done
|
|
494
554
|
- gcloud artifacts docker images list asia-east1-docker.pkg.dev/asdf/catladder-deploy/pan-test-app/review/app/$([ -n "$CI_MERGE_REQUEST_IID" ] && echo "mr$CI_MERGE_REQUEST_IID" || { [ -n "$CI_COMMIT_REF_SLUG" ] && echo "$CI_COMMIT_REF_SLUG" || echo "unknown"; }) --sort-by=~CREATE_TIME --format="value(version)" | tail -n +2 | while read -r version; do gcloud artifacts docker images delete asia-east1-docker.pkg.dev/asdf/catladder-deploy/pan-test-app/review/app/$([ -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
|
|
495
555
|
- gcloud artifacts docker images list asia-east1-docker.pkg.dev/asdf/catladder-deploy/pan-test-app/caches/app --sort-by=~CREATE_TIME --format="value(version)" | tail -n +2 | while read -r version; do gcloud artifacts docker images delete asia-east1-docker.pkg.dev/asdf/catladder-deploy/pan-test-app/caches/app@$version --quiet --delete-tags; done
|
|
496
556
|
- set +e
|
|
497
557
|
- gcloud artifacts docker images delete asia-east1-docker.pkg.dev/asdf/catladder-deploy/pan-test-app/review/app --quiet --delete-tags
|
|
498
558
|
- set -e
|
|
499
|
-
-
|
|
559
|
+
- collapseable_section_end "cleanup"
|
|
500
560
|
- echo 'Uploading SBOM to Dependency Track'
|
|
501
561
|
- /dtrackuploader https://dep.panter.swiss/ "$DT_KEY_PROD" upload "pan-test-app/app" "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"; })-app-$CL_review_app_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')" "__sbom.json" vex.json || true
|
|
502
562
|
- 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"; })-app-$CL_review_app_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')" >> gitlab_environment.env
|
|
@@ -530,9 +590,9 @@ variables:
|
|
|
530
590
|
KUBERNETES_MEMORY_LIMIT: 400Mi
|
|
531
591
|
GIT_STRATEGY: none
|
|
532
592
|
script:
|
|
533
|
-
-
|
|
593
|
+
- collapseable_section_start "injectvars" "Injecting variables"
|
|
534
594
|
- export CLOUDSDK_CORE_DISABLE_PROMPTS="1"
|
|
535
|
-
-
|
|
595
|
+
- collapseable_section_end "injectvars"
|
|
536
596
|
- set +e
|
|
537
597
|
- gcloud auth activate-service-account --key-file=<(echo "$CL_review_app_GCLOUD_DEPLOY_credentialsKey")
|
|
538
598
|
- 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"; })-app" | awk '{print tolower($0)}') --project=asdf --region=asia-east1
|
|
@@ -569,29 +629,45 @@ variables:
|
|
|
569
629
|
KUBERNETES_MEMORY_REQUEST: 1Gi
|
|
570
630
|
KUBERNETES_MEMORY_LIMIT: 4Gi
|
|
571
631
|
script:
|
|
572
|
-
-
|
|
632
|
+
- collapseable_section_start "injectvars" "Injecting variables"
|
|
573
633
|
- export ENV_SHORT="stage"
|
|
574
634
|
- export APP_DIR="app"
|
|
575
635
|
- export ENV_TYPE="stage"
|
|
576
636
|
- export BUILD_INFO_BUILD_ID="$(git describe --tags 2>/dev/null || git rev-parse HEAD)"
|
|
577
637
|
- export BUILD_INFO_BUILD_TIME="$CI_JOB_STARTED_AT"
|
|
578
638
|
- 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")"
|
|
579
|
-
- export
|
|
639
|
+
- export HOSTNAME="$(printf %s "pan-test-app-stage-app-$CL_stage_app_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')"
|
|
580
640
|
- export ROOT_URL="https://$(printf %s "pan-test-app-stage-app-$CL_stage_app_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')"
|
|
581
|
-
- export
|
|
582
|
-
- export HOST_CANONICAL="$(printf %s "pan-test-app-stage-app-$CL_stage_app_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')"
|
|
641
|
+
- export HOSTNAME_INTERNAL="$(printf %s "pan-test-app-stage-app-$CL_stage_app_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')"
|
|
583
642
|
- export ROOT_URL_INTERNAL="https://$(printf %s "pan-test-app-stage-app-$CL_stage_app_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')"
|
|
584
643
|
- export DEPLOY_CLOUD_RUN_PROJECT_ID="asdf"
|
|
585
644
|
- export DEPLOY_CLOUD_RUN_REGION="asia-east1"
|
|
586
645
|
- export GCLOUD_DEPLOY_credentialsKey="$CL_stage_app_GCLOUD_DEPLOY_credentialsKey"
|
|
587
646
|
- export GCLOUD_RUN_canonicalHostSuffix="$CL_stage_app_GCLOUD_RUN_canonicalHostSuffix"
|
|
588
|
-
- export _ALL_ENV_VAR_KEYS="[\\"ENV_SHORT\\",\\"APP_DIR\\",\\"ENV_TYPE\\",\\"BUILD_INFO_BUILD_ID\\",\\"BUILD_INFO_BUILD_TIME\\",\\"BUILD_INFO_CURRENT_VERSION\\",\\"
|
|
589
|
-
-
|
|
647
|
+
- 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\\"]"
|
|
648
|
+
- collapseable_section_end "injectvars"
|
|
649
|
+
- collapseable_section_start "write-dotenv-app" "write dot env for app"
|
|
650
|
+
- |-
|
|
651
|
+
cat <<EOF > app/.env
|
|
652
|
+
ENV_SHORT=stage
|
|
653
|
+
APP_DIR=app
|
|
654
|
+
ENV_TYPE=stage
|
|
655
|
+
HOSTNAME=$(printf %s "$(printf %s "pan-test-app-stage-app-$CL_stage_app_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')" | escapeForDotEnv)
|
|
656
|
+
ROOT_URL=$(printf %s "https://$(printf %s "pan-test-app-stage-app-$CL_stage_app_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')" | escapeForDotEnv)
|
|
657
|
+
HOSTNAME_INTERNAL=$(printf %s "$(printf %s "pan-test-app-stage-app-$CL_stage_app_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')" | escapeForDotEnv)
|
|
658
|
+
ROOT_URL_INTERNAL=$(printf %s "https://$(printf %s "pan-test-app-stage-app-$CL_stage_app_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')" | escapeForDotEnv)
|
|
659
|
+
DEPLOY_CLOUD_RUN_PROJECT_ID=asdf
|
|
660
|
+
DEPLOY_CLOUD_RUN_REGION=asia-east1
|
|
661
|
+
GCLOUD_DEPLOY_credentialsKey=$(printf %s "$CL_stage_app_GCLOUD_DEPLOY_credentialsKey" | escapeForDotEnv)
|
|
662
|
+
GCLOUD_RUN_canonicalHostSuffix=$(printf %s "$CL_stage_app_GCLOUD_RUN_canonicalHostSuffix" | escapeForDotEnv)
|
|
663
|
+
_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"]
|
|
664
|
+
EOF
|
|
665
|
+
- collapseable_section_end "write-dotenv-app"
|
|
590
666
|
- echo '{"id":"$(git describe --tags 2>/dev/null || git rev-parse HEAD)","time":"$CI_JOB_STARTED_AT"}' > app/__build_info.json
|
|
591
|
-
-
|
|
667
|
+
- collapseable_section_start "nodeinstall" "Ensure node version"
|
|
592
668
|
- if [ -f ~/.nvm/nvm.sh ]; then source ~/.nvm/nvm.sh; fi
|
|
593
669
|
- if command -v nvm &> /dev/null && [ -f ./.nvmrc ]; then nvm install; fi
|
|
594
|
-
-
|
|
670
|
+
- collapseable_section_end "nodeinstall"
|
|
595
671
|
- cd app
|
|
596
672
|
- mvn package
|
|
597
673
|
- cp -r target dist
|
|
@@ -599,6 +675,8 @@ variables:
|
|
|
599
675
|
paths:
|
|
600
676
|
- app/__build_info.json
|
|
601
677
|
- app/dist
|
|
678
|
+
exclude:
|
|
679
|
+
- app/.env
|
|
602
680
|
expire_in: 1 day
|
|
603
681
|
when: always
|
|
604
682
|
reports: {}
|
|
@@ -624,26 +702,26 @@ variables:
|
|
|
624
702
|
KUBERNETES_MEMORY_REQUEST: 1Gi
|
|
625
703
|
KUBERNETES_MEMORY_LIMIT: 2Gi
|
|
626
704
|
script:
|
|
627
|
-
-
|
|
705
|
+
- collapseable_section_start "injectvars" "Injecting variables"
|
|
628
706
|
- export APP_DIR="app"
|
|
629
707
|
- export DOCKER_BUILD_CONTEXT="app"
|
|
630
708
|
- export DOCKER_REGISTRY="asia-east1-docker.pkg.dev"
|
|
631
709
|
- export DOCKER_IMAGE="asia-east1-docker.pkg.dev/asdf/catladder-deploy/pan-test-app/stage/app"
|
|
632
710
|
- export DOCKER_CACHE_IMAGE="asia-east1-docker.pkg.dev/asdf/catladder-deploy/pan-test-app/caches/app"
|
|
633
711
|
- export DOCKER_IMAGE_TAG="$CI_COMMIT_SHA"
|
|
634
|
-
-
|
|
635
|
-
-
|
|
712
|
+
- collapseable_section_end "injectvars"
|
|
713
|
+
- collapseable_section_start "docker-login" "Docker Login"
|
|
636
714
|
- gcloud auth activate-service-account --key-file=<(echo "$CL_stage_app_GCLOUD_DEPLOY_credentialsKey")
|
|
637
715
|
- gcloud auth configure-docker asia-east1-docker.pkg.dev
|
|
638
|
-
-
|
|
639
|
-
-
|
|
716
|
+
- collapseable_section_end "docker-login"
|
|
717
|
+
- collapseable_section_start "docker-build" "Docker build"
|
|
640
718
|
- 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
|
|
641
|
-
-
|
|
642
|
-
-
|
|
719
|
+
- collapseable_section_end "docker-build"
|
|
720
|
+
- collapseable_section_start "docker-push" "Docker push and tag"
|
|
643
721
|
- docker push $DOCKER_IMAGE:$DOCKER_IMAGE_TAG
|
|
644
722
|
- docker tag $DOCKER_IMAGE:$DOCKER_IMAGE_TAG $DOCKER_CACHE_IMAGE
|
|
645
723
|
- docker push $DOCKER_CACHE_IMAGE
|
|
646
|
-
-
|
|
724
|
+
- collapseable_section_end "docker-push"
|
|
647
725
|
rules:
|
|
648
726
|
- if: $CI_COMMIT_TAG
|
|
649
727
|
needs:
|
|
@@ -655,8 +733,8 @@ variables:
|
|
|
655
733
|
image: maven:3-eclipse-temurin-11
|
|
656
734
|
variables: {}
|
|
657
735
|
script:
|
|
658
|
-
-
|
|
659
|
-
-
|
|
736
|
+
- collapseable_section_start "injectvars" "Injecting variables"
|
|
737
|
+
- collapseable_section_end "injectvars"
|
|
660
738
|
- mvn org.cyclonedx:cyclonedx-maven-plugin:2.7.4:makeBom
|
|
661
739
|
- mv target/bom.json __sbom.json
|
|
662
740
|
artifacts:
|
|
@@ -676,35 +754,34 @@ variables:
|
|
|
676
754
|
KUBERNETES_MEMORY_REQUEST: 200Mi
|
|
677
755
|
KUBERNETES_MEMORY_LIMIT: 400Mi
|
|
678
756
|
script:
|
|
679
|
-
-
|
|
757
|
+
- collapseable_section_start "injectvars" "Injecting variables"
|
|
680
758
|
- export ENV_SHORT="stage"
|
|
681
759
|
- export APP_DIR="app"
|
|
682
760
|
- export ENV_TYPE="stage"
|
|
683
761
|
- export BUILD_INFO_BUILD_ID="$(git describe --tags 2>/dev/null || git rev-parse HEAD)"
|
|
684
762
|
- export BUILD_INFO_BUILD_TIME="$CI_JOB_STARTED_AT"
|
|
685
763
|
- 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")"
|
|
686
|
-
- export
|
|
764
|
+
- export HOSTNAME="$(printf %s "pan-test-app-stage-app-$CL_stage_app_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')"
|
|
687
765
|
- export ROOT_URL="https://$(printf %s "pan-test-app-stage-app-$CL_stage_app_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')"
|
|
688
|
-
- export
|
|
689
|
-
- export HOST_CANONICAL="$(printf %s "pan-test-app-stage-app-$CL_stage_app_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')"
|
|
766
|
+
- export HOSTNAME_INTERNAL="$(printf %s "pan-test-app-stage-app-$CL_stage_app_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')"
|
|
690
767
|
- export ROOT_URL_INTERNAL="https://$(printf %s "pan-test-app-stage-app-$CL_stage_app_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')"
|
|
691
768
|
- export DEPLOY_CLOUD_RUN_PROJECT_ID="asdf"
|
|
692
769
|
- export DEPLOY_CLOUD_RUN_REGION="asia-east1"
|
|
693
770
|
- export GCLOUD_DEPLOY_credentialsKey="$CL_stage_app_GCLOUD_DEPLOY_credentialsKey"
|
|
694
771
|
- export GCLOUD_RUN_canonicalHostSuffix="$CL_stage_app_GCLOUD_RUN_canonicalHostSuffix"
|
|
695
|
-
- export _ALL_ENV_VAR_KEYS="[\\"ENV_SHORT\\",\\"APP_DIR\\",\\"ENV_TYPE\\",\\"BUILD_INFO_BUILD_ID\\",\\"BUILD_INFO_BUILD_TIME\\",\\"BUILD_INFO_CURRENT_VERSION\\",\\"
|
|
772
|
+
- 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\\"]"
|
|
696
773
|
- export DOCKER_REGISTRY="asia-east1-docker.pkg.dev"
|
|
697
774
|
- export DOCKER_IMAGE="asia-east1-docker.pkg.dev/asdf/catladder-deploy/pan-test-app/stage/app"
|
|
698
775
|
- export DOCKER_CACHE_IMAGE="asia-east1-docker.pkg.dev/asdf/catladder-deploy/pan-test-app/caches/app"
|
|
699
776
|
- export DOCKER_IMAGE_TAG="$CI_COMMIT_SHA"
|
|
700
777
|
- export CLOUDSDK_CORE_DISABLE_PROMPTS="1"
|
|
701
|
-
-
|
|
702
|
-
-
|
|
778
|
+
- collapseable_section_end "injectvars"
|
|
779
|
+
- collapseable_section_start "prepare" "Prepare..."
|
|
703
780
|
- gcloud auth activate-service-account --key-file=<(echo "$CL_stage_app_GCLOUD_DEPLOY_credentialsKey")
|
|
704
781
|
- export GCLOUD_PROJECT_NUMBER=$(gcloud projects describe asdf --format="value(projectNumber)")
|
|
705
782
|
- 'echo "GCLOUD_PROJECT_NUMBER: $GCLOUD_PROJECT_NUMBER"'
|
|
706
|
-
-
|
|
707
|
-
-
|
|
783
|
+
- collapseable_section_end "prepare"
|
|
784
|
+
- collapseable_section_start "writeenvvars" "Write env vars to file"
|
|
708
785
|
- |
|
|
709
786
|
cat > ____envvars.yaml <<EOF
|
|
710
787
|
ENV_SHORT: |-
|
|
@@ -714,40 +791,38 @@ variables:
|
|
|
714
791
|
ENV_TYPE: |-
|
|
715
792
|
stage
|
|
716
793
|
BUILD_INFO_BUILD_ID: |-
|
|
717
|
-
|
|
794
|
+
$(printf %s "$(git describe --tags 2>/dev/null || git rev-parse HEAD)" | sed '1!s/^/ /')
|
|
718
795
|
BUILD_INFO_BUILD_TIME: |-
|
|
719
|
-
|
|
796
|
+
$(printf %s "$CI_JOB_STARTED_AT" | sed '1!s/^/ /')
|
|
720
797
|
BUILD_INFO_CURRENT_VERSION: |-
|
|
721
|
-
|
|
722
|
-
|
|
723
|
-
|
|
798
|
+
$(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/^/ /')
|
|
799
|
+
HOSTNAME: |-
|
|
800
|
+
$(printf %s "$(printf %s "pan-test-app-stage-app-$CL_stage_app_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')" | sed '1!s/^/ /')
|
|
724
801
|
ROOT_URL: |-
|
|
725
|
-
|
|
726
|
-
|
|
727
|
-
|
|
728
|
-
HOST_CANONICAL: |-
|
|
729
|
-
$(printf %s "$(printf %s "pan-test-app-stage-app-$CL_stage_app_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')" | sed 's/^/ /')
|
|
802
|
+
$(printf %s "https://$(printf %s "pan-test-app-stage-app-$CL_stage_app_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')" | sed '1!s/^/ /')
|
|
803
|
+
HOSTNAME_INTERNAL: |-
|
|
804
|
+
$(printf %s "$(printf %s "pan-test-app-stage-app-$CL_stage_app_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')" | sed '1!s/^/ /')
|
|
730
805
|
ROOT_URL_INTERNAL: |-
|
|
731
|
-
|
|
806
|
+
$(printf %s "https://$(printf %s "pan-test-app-stage-app-$CL_stage_app_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')" | sed '1!s/^/ /')
|
|
732
807
|
DEPLOY_CLOUD_RUN_PROJECT_ID: |-
|
|
733
808
|
asdf
|
|
734
809
|
DEPLOY_CLOUD_RUN_REGION: |-
|
|
735
810
|
asia-east1
|
|
736
811
|
GCLOUD_RUN_canonicalHostSuffix: |-
|
|
737
|
-
|
|
812
|
+
$(printf %s "$CL_stage_app_GCLOUD_RUN_canonicalHostSuffix" | sed '1!s/^/ /')
|
|
738
813
|
_ALL_ENV_VAR_KEYS: |-
|
|
739
|
-
["ENV_SHORT","APP_DIR","ENV_TYPE","BUILD_INFO_BUILD_ID","BUILD_INFO_BUILD_TIME","BUILD_INFO_CURRENT_VERSION","
|
|
814
|
+
["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"]
|
|
740
815
|
|
|
741
816
|
EOF
|
|
742
|
-
-
|
|
743
|
-
-
|
|
817
|
+
- collapseable_section_end "writeenvvars"
|
|
818
|
+
- collapseable_section_start "deploy" "Deploy to cloud run"
|
|
744
819
|
- gcloud run deploy pan-test-app-stage-app --command="" --image=asia-east1-docker.pkg.dev/asdf/catladder-deploy/pan-test-app/stage/app:$DOCKER_IMAGE_TAG --project=asdf --region=asia-east1 --labels=customer-name=pan,component-name=app,app-name=test-app,env-type=stage,env-name=stage,build-type=custom,cloud-run-service-name=pan-test-app-stage-app --env-vars-file=____envvars.yaml --min-instances=0 --max-instances=100 --cpu-throttling --allow-unauthenticated --ingress=all --cpu-boost
|
|
745
|
-
-
|
|
746
|
-
-
|
|
820
|
+
- collapseable_section_end "deploy"
|
|
821
|
+
- collapseable_section_start "cleanup" "Cleanup"
|
|
747
822
|
- gcloud run revisions list --project=asdf --region=asia-east1 --service=pan-test-app-stage-app --limit=unlimited --sort-by=metadata.creationTimestamp --format="value(name)" --filter='(status.conditions.status=False OR status.conditions.status=Unknown)' | while read -r revisionname; do gcloud run revisions delete --project=asdf --region=asia-east1 --quiet $revisionname ; done
|
|
748
823
|
- gcloud artifacts docker images list asia-east1-docker.pkg.dev/asdf/catladder-deploy/pan-test-app/stage/app --sort-by=~CREATE_TIME --format="value(version)" | tail -n +2 | while read -r version; do gcloud artifacts docker images delete asia-east1-docker.pkg.dev/asdf/catladder-deploy/pan-test-app/stage/app@$version --quiet --delete-tags; done
|
|
749
824
|
- gcloud artifacts docker images list asia-east1-docker.pkg.dev/asdf/catladder-deploy/pan-test-app/caches/app --sort-by=~CREATE_TIME --format="value(version)" | tail -n +2 | while read -r version; do gcloud artifacts docker images delete asia-east1-docker.pkg.dev/asdf/catladder-deploy/pan-test-app/caches/app@$version --quiet --delete-tags; done
|
|
750
|
-
-
|
|
825
|
+
- collapseable_section_end "cleanup"
|
|
751
826
|
- echo 'Uploading SBOM to Dependency Track'
|
|
752
827
|
- /dtrackuploader https://dep.panter.swiss/ "$DT_KEY_PROD" upload "pan-test-app/app" "https://$(printf %s "pan-test-app-stage-app-$CL_stage_app_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')" "__sbom.json" vex.json || true
|
|
753
828
|
- echo "CL_GITLAB_ENVIRONMENT_URL=https://$(printf %s "pan-test-app-stage-app-$CL_stage_app_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')" >> gitlab_environment.env
|
|
@@ -780,9 +855,9 @@ variables:
|
|
|
780
855
|
KUBERNETES_MEMORY_LIMIT: 400Mi
|
|
781
856
|
GIT_STRATEGY: none
|
|
782
857
|
script:
|
|
783
|
-
-
|
|
858
|
+
- collapseable_section_start "injectvars" "Injecting variables"
|
|
784
859
|
- export CLOUDSDK_CORE_DISABLE_PROMPTS="1"
|
|
785
|
-
-
|
|
860
|
+
- collapseable_section_end "injectvars"
|
|
786
861
|
- set +e
|
|
787
862
|
- gcloud auth activate-service-account --key-file=<(echo "$CL_stage_app_GCLOUD_DEPLOY_credentialsKey")
|
|
788
863
|
- gcloud run services delete pan-test-app-stage-app --project=asdf --region=asia-east1
|
|
@@ -816,29 +891,45 @@ variables:
|
|
|
816
891
|
KUBERNETES_MEMORY_REQUEST: 1Gi
|
|
817
892
|
KUBERNETES_MEMORY_LIMIT: 4Gi
|
|
818
893
|
script:
|
|
819
|
-
-
|
|
894
|
+
- collapseable_section_start "injectvars" "Injecting variables"
|
|
820
895
|
- export ENV_SHORT="prod"
|
|
821
896
|
- export APP_DIR="app"
|
|
822
897
|
- export ENV_TYPE="prod"
|
|
823
898
|
- export BUILD_INFO_BUILD_ID="$(git describe --tags 2>/dev/null || git rev-parse HEAD)"
|
|
824
899
|
- export BUILD_INFO_BUILD_TIME="$CI_JOB_STARTED_AT"
|
|
825
900
|
- 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")"
|
|
826
|
-
- export
|
|
901
|
+
- export HOSTNAME="$(printf %s "pan-test-app-prod-app-$CL_prod_app_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')"
|
|
827
902
|
- export ROOT_URL="https://$(printf %s "pan-test-app-prod-app-$CL_prod_app_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')"
|
|
828
|
-
- export
|
|
829
|
-
- export HOST_CANONICAL="$(printf %s "pan-test-app-prod-app-$CL_prod_app_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')"
|
|
903
|
+
- export HOSTNAME_INTERNAL="$(printf %s "pan-test-app-prod-app-$CL_prod_app_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')"
|
|
830
904
|
- export ROOT_URL_INTERNAL="https://$(printf %s "pan-test-app-prod-app-$CL_prod_app_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')"
|
|
831
905
|
- export DEPLOY_CLOUD_RUN_PROJECT_ID="asdf"
|
|
832
906
|
- export DEPLOY_CLOUD_RUN_REGION="asia-east1"
|
|
833
907
|
- export GCLOUD_DEPLOY_credentialsKey="$CL_prod_app_GCLOUD_DEPLOY_credentialsKey"
|
|
834
908
|
- export GCLOUD_RUN_canonicalHostSuffix="$CL_prod_app_GCLOUD_RUN_canonicalHostSuffix"
|
|
835
|
-
- export _ALL_ENV_VAR_KEYS="[\\"ENV_SHORT\\",\\"APP_DIR\\",\\"ENV_TYPE\\",\\"BUILD_INFO_BUILD_ID\\",\\"BUILD_INFO_BUILD_TIME\\",\\"BUILD_INFO_CURRENT_VERSION\\",\\"
|
|
836
|
-
-
|
|
909
|
+
- 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\\"]"
|
|
910
|
+
- collapseable_section_end "injectvars"
|
|
911
|
+
- collapseable_section_start "write-dotenv-app" "write dot env for app"
|
|
912
|
+
- |-
|
|
913
|
+
cat <<EOF > app/.env
|
|
914
|
+
ENV_SHORT=prod
|
|
915
|
+
APP_DIR=app
|
|
916
|
+
ENV_TYPE=prod
|
|
917
|
+
HOSTNAME=$(printf %s "$(printf %s "pan-test-app-prod-app-$CL_prod_app_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')" | escapeForDotEnv)
|
|
918
|
+
ROOT_URL=$(printf %s "https://$(printf %s "pan-test-app-prod-app-$CL_prod_app_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')" | escapeForDotEnv)
|
|
919
|
+
HOSTNAME_INTERNAL=$(printf %s "$(printf %s "pan-test-app-prod-app-$CL_prod_app_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')" | escapeForDotEnv)
|
|
920
|
+
ROOT_URL_INTERNAL=$(printf %s "https://$(printf %s "pan-test-app-prod-app-$CL_prod_app_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')" | escapeForDotEnv)
|
|
921
|
+
DEPLOY_CLOUD_RUN_PROJECT_ID=asdf
|
|
922
|
+
DEPLOY_CLOUD_RUN_REGION=asia-east1
|
|
923
|
+
GCLOUD_DEPLOY_credentialsKey=$(printf %s "$CL_prod_app_GCLOUD_DEPLOY_credentialsKey" | escapeForDotEnv)
|
|
924
|
+
GCLOUD_RUN_canonicalHostSuffix=$(printf %s "$CL_prod_app_GCLOUD_RUN_canonicalHostSuffix" | escapeForDotEnv)
|
|
925
|
+
_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"]
|
|
926
|
+
EOF
|
|
927
|
+
- collapseable_section_end "write-dotenv-app"
|
|
837
928
|
- echo '{"id":"$(git describe --tags 2>/dev/null || git rev-parse HEAD)","time":"$CI_JOB_STARTED_AT"}' > app/__build_info.json
|
|
838
|
-
-
|
|
929
|
+
- collapseable_section_start "nodeinstall" "Ensure node version"
|
|
839
930
|
- if [ -f ~/.nvm/nvm.sh ]; then source ~/.nvm/nvm.sh; fi
|
|
840
931
|
- if command -v nvm &> /dev/null && [ -f ./.nvmrc ]; then nvm install; fi
|
|
841
|
-
-
|
|
932
|
+
- collapseable_section_end "nodeinstall"
|
|
842
933
|
- cd app
|
|
843
934
|
- mvn package
|
|
844
935
|
- cp -r target dist
|
|
@@ -846,6 +937,8 @@ variables:
|
|
|
846
937
|
paths:
|
|
847
938
|
- app/__build_info.json
|
|
848
939
|
- app/dist
|
|
940
|
+
exclude:
|
|
941
|
+
- app/.env
|
|
849
942
|
expire_in: 1 day
|
|
850
943
|
when: always
|
|
851
944
|
reports: {}
|
|
@@ -871,26 +964,26 @@ variables:
|
|
|
871
964
|
KUBERNETES_MEMORY_REQUEST: 1Gi
|
|
872
965
|
KUBERNETES_MEMORY_LIMIT: 2Gi
|
|
873
966
|
script:
|
|
874
|
-
-
|
|
967
|
+
- collapseable_section_start "injectvars" "Injecting variables"
|
|
875
968
|
- export APP_DIR="app"
|
|
876
969
|
- export DOCKER_BUILD_CONTEXT="app"
|
|
877
970
|
- export DOCKER_REGISTRY="asia-east1-docker.pkg.dev"
|
|
878
971
|
- export DOCKER_IMAGE="asia-east1-docker.pkg.dev/asdf/catladder-deploy/pan-test-app/prod/app"
|
|
879
972
|
- export DOCKER_CACHE_IMAGE="asia-east1-docker.pkg.dev/asdf/catladder-deploy/pan-test-app/caches/app"
|
|
880
973
|
- export DOCKER_IMAGE_TAG="$CI_COMMIT_SHA"
|
|
881
|
-
-
|
|
882
|
-
-
|
|
974
|
+
- collapseable_section_end "injectvars"
|
|
975
|
+
- collapseable_section_start "docker-login" "Docker Login"
|
|
883
976
|
- gcloud auth activate-service-account --key-file=<(echo "$CL_prod_app_GCLOUD_DEPLOY_credentialsKey")
|
|
884
977
|
- gcloud auth configure-docker asia-east1-docker.pkg.dev
|
|
885
|
-
-
|
|
886
|
-
-
|
|
978
|
+
- collapseable_section_end "docker-login"
|
|
979
|
+
- collapseable_section_start "docker-build" "Docker build"
|
|
887
980
|
- 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
|
|
888
|
-
-
|
|
889
|
-
-
|
|
981
|
+
- collapseable_section_end "docker-build"
|
|
982
|
+
- collapseable_section_start "docker-push" "Docker push and tag"
|
|
890
983
|
- docker push $DOCKER_IMAGE:$DOCKER_IMAGE_TAG
|
|
891
984
|
- docker tag $DOCKER_IMAGE:$DOCKER_IMAGE_TAG $DOCKER_CACHE_IMAGE
|
|
892
985
|
- docker push $DOCKER_CACHE_IMAGE
|
|
893
|
-
-
|
|
986
|
+
- collapseable_section_end "docker-push"
|
|
894
987
|
rules:
|
|
895
988
|
- if: $CI_COMMIT_TAG
|
|
896
989
|
needs:
|
|
@@ -902,8 +995,8 @@ variables:
|
|
|
902
995
|
image: maven:3-eclipse-temurin-11
|
|
903
996
|
variables: {}
|
|
904
997
|
script:
|
|
905
|
-
-
|
|
906
|
-
-
|
|
998
|
+
- collapseable_section_start "injectvars" "Injecting variables"
|
|
999
|
+
- collapseable_section_end "injectvars"
|
|
907
1000
|
- mvn org.cyclonedx:cyclonedx-maven-plugin:2.7.4:makeBom
|
|
908
1001
|
- mv target/bom.json __sbom.json
|
|
909
1002
|
artifacts:
|
|
@@ -923,35 +1016,34 @@ variables:
|
|
|
923
1016
|
KUBERNETES_MEMORY_REQUEST: 200Mi
|
|
924
1017
|
KUBERNETES_MEMORY_LIMIT: 400Mi
|
|
925
1018
|
script:
|
|
926
|
-
-
|
|
1019
|
+
- collapseable_section_start "injectvars" "Injecting variables"
|
|
927
1020
|
- export ENV_SHORT="prod"
|
|
928
1021
|
- export APP_DIR="app"
|
|
929
1022
|
- export ENV_TYPE="prod"
|
|
930
1023
|
- export BUILD_INFO_BUILD_ID="$(git describe --tags 2>/dev/null || git rev-parse HEAD)"
|
|
931
1024
|
- export BUILD_INFO_BUILD_TIME="$CI_JOB_STARTED_AT"
|
|
932
1025
|
- 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")"
|
|
933
|
-
- export
|
|
1026
|
+
- export HOSTNAME="$(printf %s "pan-test-app-prod-app-$CL_prod_app_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')"
|
|
934
1027
|
- export ROOT_URL="https://$(printf %s "pan-test-app-prod-app-$CL_prod_app_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')"
|
|
935
|
-
- export
|
|
936
|
-
- export HOST_CANONICAL="$(printf %s "pan-test-app-prod-app-$CL_prod_app_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')"
|
|
1028
|
+
- export HOSTNAME_INTERNAL="$(printf %s "pan-test-app-prod-app-$CL_prod_app_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')"
|
|
937
1029
|
- export ROOT_URL_INTERNAL="https://$(printf %s "pan-test-app-prod-app-$CL_prod_app_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')"
|
|
938
1030
|
- export DEPLOY_CLOUD_RUN_PROJECT_ID="asdf"
|
|
939
1031
|
- export DEPLOY_CLOUD_RUN_REGION="asia-east1"
|
|
940
1032
|
- export GCLOUD_DEPLOY_credentialsKey="$CL_prod_app_GCLOUD_DEPLOY_credentialsKey"
|
|
941
1033
|
- export GCLOUD_RUN_canonicalHostSuffix="$CL_prod_app_GCLOUD_RUN_canonicalHostSuffix"
|
|
942
|
-
- export _ALL_ENV_VAR_KEYS="[\\"ENV_SHORT\\",\\"APP_DIR\\",\\"ENV_TYPE\\",\\"BUILD_INFO_BUILD_ID\\",\\"BUILD_INFO_BUILD_TIME\\",\\"BUILD_INFO_CURRENT_VERSION\\",\\"
|
|
1034
|
+
- 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\\"]"
|
|
943
1035
|
- export DOCKER_REGISTRY="asia-east1-docker.pkg.dev"
|
|
944
1036
|
- export DOCKER_IMAGE="asia-east1-docker.pkg.dev/asdf/catladder-deploy/pan-test-app/prod/app"
|
|
945
1037
|
- export DOCKER_CACHE_IMAGE="asia-east1-docker.pkg.dev/asdf/catladder-deploy/pan-test-app/caches/app"
|
|
946
1038
|
- export DOCKER_IMAGE_TAG="$CI_COMMIT_SHA"
|
|
947
1039
|
- export CLOUDSDK_CORE_DISABLE_PROMPTS="1"
|
|
948
|
-
-
|
|
949
|
-
-
|
|
1040
|
+
- collapseable_section_end "injectvars"
|
|
1041
|
+
- collapseable_section_start "prepare" "Prepare..."
|
|
950
1042
|
- gcloud auth activate-service-account --key-file=<(echo "$CL_prod_app_GCLOUD_DEPLOY_credentialsKey")
|
|
951
1043
|
- export GCLOUD_PROJECT_NUMBER=$(gcloud projects describe asdf --format="value(projectNumber)")
|
|
952
1044
|
- 'echo "GCLOUD_PROJECT_NUMBER: $GCLOUD_PROJECT_NUMBER"'
|
|
953
|
-
-
|
|
954
|
-
-
|
|
1045
|
+
- collapseable_section_end "prepare"
|
|
1046
|
+
- collapseable_section_start "writeenvvars" "Write env vars to file"
|
|
955
1047
|
- |
|
|
956
1048
|
cat > ____envvars.yaml <<EOF
|
|
957
1049
|
ENV_SHORT: |-
|
|
@@ -961,40 +1053,38 @@ variables:
|
|
|
961
1053
|
ENV_TYPE: |-
|
|
962
1054
|
prod
|
|
963
1055
|
BUILD_INFO_BUILD_ID: |-
|
|
964
|
-
|
|
1056
|
+
$(printf %s "$(git describe --tags 2>/dev/null || git rev-parse HEAD)" | sed '1!s/^/ /')
|
|
965
1057
|
BUILD_INFO_BUILD_TIME: |-
|
|
966
|
-
|
|
1058
|
+
$(printf %s "$CI_JOB_STARTED_AT" | sed '1!s/^/ /')
|
|
967
1059
|
BUILD_INFO_CURRENT_VERSION: |-
|
|
968
|
-
|
|
969
|
-
|
|
970
|
-
|
|
1060
|
+
$(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/^/ /')
|
|
1061
|
+
HOSTNAME: |-
|
|
1062
|
+
$(printf %s "$(printf %s "pan-test-app-prod-app-$CL_prod_app_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')" | sed '1!s/^/ /')
|
|
971
1063
|
ROOT_URL: |-
|
|
972
|
-
|
|
973
|
-
|
|
974
|
-
|
|
975
|
-
HOST_CANONICAL: |-
|
|
976
|
-
$(printf %s "$(printf %s "pan-test-app-prod-app-$CL_prod_app_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')" | sed 's/^/ /')
|
|
1064
|
+
$(printf %s "https://$(printf %s "pan-test-app-prod-app-$CL_prod_app_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')" | sed '1!s/^/ /')
|
|
1065
|
+
HOSTNAME_INTERNAL: |-
|
|
1066
|
+
$(printf %s "$(printf %s "pan-test-app-prod-app-$CL_prod_app_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')" | sed '1!s/^/ /')
|
|
977
1067
|
ROOT_URL_INTERNAL: |-
|
|
978
|
-
|
|
1068
|
+
$(printf %s "https://$(printf %s "pan-test-app-prod-app-$CL_prod_app_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')" | sed '1!s/^/ /')
|
|
979
1069
|
DEPLOY_CLOUD_RUN_PROJECT_ID: |-
|
|
980
1070
|
asdf
|
|
981
1071
|
DEPLOY_CLOUD_RUN_REGION: |-
|
|
982
1072
|
asia-east1
|
|
983
1073
|
GCLOUD_RUN_canonicalHostSuffix: |-
|
|
984
|
-
|
|
1074
|
+
$(printf %s "$CL_prod_app_GCLOUD_RUN_canonicalHostSuffix" | sed '1!s/^/ /')
|
|
985
1075
|
_ALL_ENV_VAR_KEYS: |-
|
|
986
|
-
["ENV_SHORT","APP_DIR","ENV_TYPE","BUILD_INFO_BUILD_ID","BUILD_INFO_BUILD_TIME","BUILD_INFO_CURRENT_VERSION","
|
|
1076
|
+
["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"]
|
|
987
1077
|
|
|
988
1078
|
EOF
|
|
989
|
-
-
|
|
990
|
-
-
|
|
1079
|
+
- collapseable_section_end "writeenvvars"
|
|
1080
|
+
- collapseable_section_start "deploy" "Deploy to cloud run"
|
|
991
1081
|
- gcloud run deploy pan-test-app-prod-app --command="" --image=asia-east1-docker.pkg.dev/asdf/catladder-deploy/pan-test-app/prod/app:$DOCKER_IMAGE_TAG --project=asdf --region=asia-east1 --labels=customer-name=pan,component-name=app,app-name=test-app,env-type=prod,env-name=prod,build-type=custom,cloud-run-service-name=pan-test-app-prod-app --env-vars-file=____envvars.yaml --min-instances=0 --max-instances=100 --cpu-throttling --allow-unauthenticated --ingress=all --cpu-boost
|
|
992
|
-
-
|
|
993
|
-
-
|
|
1082
|
+
- collapseable_section_end "deploy"
|
|
1083
|
+
- collapseable_section_start "cleanup" "Cleanup"
|
|
994
1084
|
- gcloud run revisions list --project=asdf --region=asia-east1 --service=pan-test-app-prod-app --limit=unlimited --sort-by=metadata.creationTimestamp --format="value(name)" --filter='(status.conditions.status=False OR status.conditions.status=Unknown)' | tail -n +6 | while read -r revisionname; do gcloud run revisions delete --project=asdf --region=asia-east1 --quiet $revisionname ; done
|
|
995
1085
|
- gcloud artifacts docker images list asia-east1-docker.pkg.dev/asdf/catladder-deploy/pan-test-app/prod/app --sort-by=~CREATE_TIME --format="value(version)" | tail -n +7 | while read -r version; do gcloud artifacts docker images delete asia-east1-docker.pkg.dev/asdf/catladder-deploy/pan-test-app/prod/app@$version --quiet --delete-tags; done
|
|
996
1086
|
- gcloud artifacts docker images list asia-east1-docker.pkg.dev/asdf/catladder-deploy/pan-test-app/caches/app --sort-by=~CREATE_TIME --format="value(version)" | tail -n +2 | while read -r version; do gcloud artifacts docker images delete asia-east1-docker.pkg.dev/asdf/catladder-deploy/pan-test-app/caches/app@$version --quiet --delete-tags; done
|
|
997
|
-
-
|
|
1087
|
+
- collapseable_section_end "cleanup"
|
|
998
1088
|
- echo 'Uploading SBOM to Dependency Track'
|
|
999
1089
|
- /dtrackuploader https://dep.panter.swiss/ "$DT_KEY_PROD" upload "pan-test-app/app" "https://$(printf %s "pan-test-app-prod-app-$CL_prod_app_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')" "__sbom.json" vex.json || true
|
|
1000
1090
|
- echo "CL_GITLAB_ENVIRONMENT_URL=https://$(printf %s "pan-test-app-prod-app-$CL_prod_app_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')" >> gitlab_environment.env
|
|
@@ -1027,9 +1117,9 @@ variables:
|
|
|
1027
1117
|
KUBERNETES_MEMORY_LIMIT: 400Mi
|
|
1028
1118
|
GIT_STRATEGY: none
|
|
1029
1119
|
script:
|
|
1030
|
-
-
|
|
1120
|
+
- collapseable_section_start "injectvars" "Injecting variables"
|
|
1031
1121
|
- export CLOUDSDK_CORE_DISABLE_PROMPTS="1"
|
|
1032
|
-
-
|
|
1122
|
+
- collapseable_section_end "injectvars"
|
|
1033
1123
|
- set +e
|
|
1034
1124
|
- gcloud auth activate-service-account --key-file=<(echo "$CL_prod_app_GCLOUD_DEPLOY_credentialsKey")
|
|
1035
1125
|
- gcloud run services delete pan-test-app-prod-app --project=asdf --region=asia-east1
|