@catladder/pipeline 1.144.1 → 1.146.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 +40 -0
- package/dist/bash/BashExpression.js +124 -0
- package/dist/bash/bashExpressionPerPipelineType.d.ts +6 -0
- package/dist/bash/bashExpressionPerPipelineType.js +11 -0
- package/dist/bash/bashYaml.d.ts +10 -0
- package/dist/bash/bashYaml.js +46 -0
- package/dist/bash/getInjectVarsScript.d.ts +2 -0
- package/dist/bash/getInjectVarsScript.js +45 -0
- package/dist/bash/replaceAsync.d.ts +2 -0
- package/dist/{pipeline/commitInfo/getCommitInfo.js → bash/replaceAsync.js} +49 -21
- package/dist/build/base/__tests__/createArtifactsConfig.test.js +3 -1
- package/dist/build/base/constants.js +3 -1
- package/dist/build/base/createAppBuildJob.d.ts +2 -1
- package/dist/build/base/createAppBuildJob.js +10 -6
- package/dist/build/base/createArtifactsConfig.d.ts +1 -1
- package/dist/build/base/createArtifactsConfig.js +3 -1
- package/dist/build/base/index.js +3 -1
- package/dist/build/base/writeBuildInfo.js +4 -3
- package/dist/build/base/writeDotEnv.js +12 -3
- package/dist/build/custom/__tests__/testJob.test.js +3 -1
- package/dist/build/custom/buildJob.js +4 -12
- package/dist/build/custom/index.js +3 -1
- package/dist/build/custom/testJob.d.ts +1 -1
- package/dist/build/custom/testJob.js +18 -14
- package/dist/build/docker.d.ts +5 -31
- package/dist/build/docker.js +16 -9
- package/dist/build/index.d.ts +1 -1
- package/dist/build/index.js +13 -7
- package/dist/build/node/buildJob.js +4 -12
- package/dist/build/node/cache.js +6 -3
- package/dist/build/node/constants.js +3 -1
- package/dist/build/node/index.js +3 -1
- package/dist/build/node/meteor.js +5 -2
- package/dist/build/node/testJob.js +18 -14
- package/dist/build/node/yarn.d.ts +3 -2
- package/dist/build/node/yarn.js +6 -3
- package/dist/build/rails/build.js +3 -1
- package/dist/build/rails/index.js +3 -1
- package/dist/build/rails/test.js +15 -11
- package/dist/build/sbom.js +3 -1
- package/dist/build/types.d.ts +24 -18
- package/dist/build/types.js +3 -1
- package/dist/bundles/catladder-gitlab/index.js +3 -3
- package/dist/catladder-gitlab.js +10 -54
- package/dist/config/__tests__/configruedEnvs.test.js +3 -1
- package/dist/config/configruedEnvs.js +3 -1
- package/dist/config/index.js +13 -7
- package/dist/config/readConfig.js +6 -5
- package/dist/constants.js +5 -3
- package/dist/context/__tests__/resolveReferences.test.js +40 -8
- package/dist/context/getBuildInfoVariables.d.ts +7 -0
- package/dist/context/getBuildInfoVariables.js +29 -0
- package/dist/context/getEnvConfig.js +3 -1
- package/dist/context/getEnvType.js +3 -1
- package/dist/context/getEnvironment.d.ts +3 -3
- package/dist/context/getEnvironment.js +10 -14
- package/dist/context/getEnvironmentContext.d.ts +7 -3
- package/dist/context/getEnvironmentContext.js +21 -11
- package/dist/context/getEnvironmentVariables.d.ts +26 -5
- package/dist/context/getEnvironmentVariables.js +40 -25
- package/dist/context/getLabels.js +4 -2
- package/dist/context/getReviewSlug.d.ts +4 -0
- package/dist/context/getReviewSlug.js +22 -0
- package/dist/context/index.d.ts +12 -3
- package/dist/context/index.js +21 -15
- package/dist/context/resolveReferences.d.ts +3 -1
- package/dist/context/resolveReferences.js +53 -21
- package/dist/context/transformJobOnlyVars.d.ts +5 -2
- package/dist/context/transformJobOnlyVars.js +4 -2
- package/dist/context/utils/envVars.d.ts +1 -1
- package/dist/context/utils/envVars.js +5 -2
- package/dist/defaults/index.js +3 -1
- package/dist/deploy/base/deploy.d.ts +1 -1
- package/dist/deploy/base/deploy.js +12 -11
- package/dist/deploy/base/index.js +3 -1
- package/dist/deploy/base/rollback.d.ts +1 -1
- package/dist/deploy/base/rollback.js +13 -9
- package/dist/deploy/base/stop.d.ts +1 -1
- package/dist/deploy/base/stop.js +16 -11
- package/dist/deploy/base/types.d.ts +1 -1
- package/dist/deploy/base/types.js +3 -1
- package/dist/deploy/base/variables.js +3 -1
- package/dist/deploy/cloudRun/artifactsRegistry.d.ts +2 -1
- package/dist/deploy/cloudRun/artifactsRegistry.js +6 -4
- package/dist/deploy/cloudRun/cleanup.js +3 -1
- package/dist/deploy/cloudRun/cloudRunRevisions.js +3 -1
- package/dist/deploy/cloudRun/createJobs/cloudRunJobs.js +8 -5
- package/dist/deploy/cloudRun/createJobs/cloudRunServices.d.ts +2 -2
- package/dist/deploy/cloudRun/createJobs/cloudRunServices.js +6 -3
- package/dist/deploy/cloudRun/createJobs/common.d.ts +3 -3
- package/dist/deploy/cloudRun/createJobs/common.js +3 -1
- package/dist/deploy/cloudRun/createJobs/constants.d.ts +1 -0
- package/dist/deploy/cloudRun/createJobs/constants.js +7 -0
- package/dist/deploy/cloudRun/createJobs/getCloudRunDeployScripts.js +10 -4
- package/dist/deploy/cloudRun/createJobs/getCloudRunStopScripts.js +3 -1
- package/dist/deploy/cloudRun/createJobs/index.js +25 -8
- package/dist/deploy/cloudRun/createJobs/volumes.js +3 -1
- package/dist/deploy/cloudRun/index.js +5 -3
- package/dist/deploy/cloudRun/utils/createArgsString.d.ts +2 -1
- package/dist/deploy/cloudRun/utils/createArgsString.js +3 -1
- package/dist/deploy/cloudRun/utils/database.js +13 -13
- package/dist/deploy/cloudRun/utils/gcloudServiceAccountLoginCommands.js +3 -1
- package/dist/deploy/cloudRun/utils/getServiceName.d.ts +1 -1
- package/dist/deploy/cloudRun/utils/getServiceName.js +3 -1
- package/dist/deploy/cloudRun/utils/jobName.d.ts +2 -1
- package/dist/deploy/cloudRun/utils/jobName.js +4 -2
- package/dist/deploy/cloudRun/utils/removeFirstLinesFromCommandOutput.js +3 -1
- package/dist/deploy/cloudSql/utils.d.ts +2 -1
- package/dist/deploy/cloudSql/utils.js +7 -2
- package/dist/deploy/custom/deployJob.js +3 -1
- package/dist/deploy/custom/index.js +3 -1
- package/dist/deploy/dockerTag/deployJob.js +3 -1
- package/dist/deploy/dockerTag/index.js +3 -1
- package/dist/deploy/index.d.ts +4 -3
- package/dist/deploy/index.js +13 -7
- package/dist/deploy/kubernetes/additionalSecretKeys.js +3 -1
- package/dist/deploy/kubernetes/cloudSql/index.d.ts +3 -2
- package/dist/deploy/kubernetes/cloudSql/index.js +6 -4
- package/dist/deploy/kubernetes/deployJob.js +22 -15
- package/dist/deploy/kubernetes/index.js +51 -14
- package/dist/deploy/kubernetes/kubeEnv.d.ts +3 -2
- package/dist/deploy/kubernetes/kubeEnv.js +7 -4
- package/dist/deploy/kubernetes/kubeValues.d.ts +2 -2
- package/dist/deploy/kubernetes/kubeValues.js +4 -5
- package/dist/deploy/kubernetes/mongodb.js +3 -1
- package/dist/deploy/kubernetes/processSecretsAsFiles.d.ts +2 -1
- package/dist/deploy/kubernetes/processSecretsAsFiles.js +3 -1
- package/dist/deploy/sbom.js +3 -1
- package/dist/deploy/types/base.d.ts +8 -2
- package/dist/deploy/types/base.js +3 -1
- package/dist/deploy/types/custom.d.ts +1 -1
- package/dist/deploy/types/custom.js +3 -1
- package/dist/deploy/types/dockerTag.d.ts +1 -1
- package/dist/deploy/types/dockerTag.js +3 -1
- package/dist/deploy/types/googleCloudRun.d.ts +19 -18
- package/dist/deploy/types/googleCloudRun.js +3 -1
- package/dist/deploy/types/index.d.ts +6 -6
- package/dist/deploy/types/index.js +13 -7
- package/dist/deploy/types/kubernetes.d.ts +22 -22
- package/dist/deploy/types/kubernetes.js +3 -1
- package/dist/deploy/utils.js +3 -1
- package/dist/index.d.ts +3 -2
- package/dist/index.js +16 -9
- package/dist/packageInfos.d.ts +2 -0
- package/dist/packageInfos.js +14 -0
- package/dist/pipeline/createAllJobs.d.ts +13 -5
- package/dist/pipeline/createAllJobs.js +21 -10
- package/dist/pipeline/createChildPipeline.d.ts +1 -1
- package/dist/pipeline/createChildPipeline.js +24 -7
- package/dist/pipeline/createJobsForComponent.d.ts +3 -3
- package/dist/pipeline/createJobsForComponent.js +19 -18
- package/dist/pipeline/createMainPipeline.d.ts +3 -0
- package/dist/pipeline/createMainPipeline.js +248 -0
- package/dist/pipeline/generatePipelineFiles.d.ts +2 -0
- package/dist/pipeline/generatePipelineFiles.js +178 -0
- package/dist/pipeline/getPipelineStages.js +3 -1
- package/dist/pipeline/gitlab/createGitlabJobs.d.ts +15 -5
- package/dist/pipeline/gitlab/createGitlabJobs.js +98 -25
- package/dist/pipeline/gitlab/createGitlabPipeline.d.ts +7 -2
- package/dist/pipeline/gitlab/createGitlabPipeline.js +34 -17
- package/dist/pipeline/gitlab/getPipelineTriggerForGitlabChildPipeline.d.ts +1 -0
- package/dist/pipeline/gitlab/getPipelineTriggerForGitlabChildPipeline.js +29 -0
- package/dist/pipeline/gitlab/gitlabReleaseJobs.d.ts +33 -0
- package/dist/pipeline/gitlab/gitlabReleaseJobs.js +24 -0
- package/dist/pipeline/index.d.ts +3 -1
- package/dist/pipeline/index.js +16 -8
- package/dist/pipeline/packageManager.js +4 -2
- package/dist/pipeline/yarn/yarnUtils.js +6 -4
- package/dist/rules/index.d.ts +4 -1
- package/dist/rules/index.js +25 -18
- package/dist/runner/index.d.ts +1 -1
- package/dist/runner/index.js +3 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/dist/types/config.d.ts +18 -15
- package/dist/types/config.js +5 -2
- package/dist/types/context.d.ts +37 -32
- package/dist/types/context.js +3 -1
- package/dist/types/environmentContext.d.ts +11 -7
- package/dist/types/environmentContext.js +3 -1
- package/dist/types/gitlab-ci-yml.d.ts +30 -30
- package/dist/types/gitlab-ci-yml.js +3 -2
- package/dist/types/gitlab-types.d.ts +4 -6
- package/dist/types/gitlab-types.js +3 -1
- package/dist/types/index.js +13 -7
- package/dist/types/jobs.d.ts +23 -6
- package/dist/types/jobs.js +3 -1
- package/dist/types/pipeline.d.ts +4 -3
- package/dist/types/pipeline.js +3 -1
- package/dist/types/utils.d.ts +1 -1
- package/dist/types/utils.js +3 -1
- package/dist/utils/gitlab.js +3 -1
- package/dist/utils/index.d.ts +1 -1
- package/dist/utils/index.js +3 -1
- package/dist/utils/writeFiles.d.ts +7 -0
- package/dist/{pipeline/commitInfo/getBuildId.js → utils/writeFiles.js} +39 -22
- package/examples/__snapshots__/cloud-run-memory-limit.ts.snap +480 -384
- package/examples/__snapshots__/cloud-run-meteor-with-worker.ts.snap +462 -366
- package/examples/__snapshots__/cloud-run-no-cpu-throttling.ts.snap +480 -384
- package/examples/__snapshots__/cloud-run-no-service.ts.snap +501 -393
- package/examples/__snapshots__/cloud-run-non-public.ts.snap +480 -384
- package/examples/__snapshots__/cloud-run-post-stop-job.ts.snap +489 -392
- package/examples/__snapshots__/cloud-run-service-gen2.ts.snap +480 -384
- package/examples/__snapshots__/cloud-run-service-with-volumes.ts.snap +501 -401
- package/examples/__snapshots__/cloud-run-with-sql-reuse-db.ts.snap +1155 -915
- package/examples/__snapshots__/cloud-run-with-sql.ts.snap +1116 -888
- package/examples/__snapshots__/cloud-run-with-worker.ts.snap +482 -386
- package/examples/__snapshots__/custom-build-job-with-tests.ts.snap +452 -356
- package/examples/__snapshots__/custom-build-job.ts.snap +434 -350
- package/examples/__snapshots__/custom-deploy.ts.snap +319 -223
- package/examples/__snapshots__/custom-envs.ts.snap +123 -81
- package/examples/__snapshots__/custom-sbom-java.ts.snap +434 -350
- package/examples/__snapshots__/kubernetes-application-customization.ts.snap +846 -969
- package/examples/__snapshots__/kubernetes-with-cloud-sql-legacy.ts.snap +886 -957
- package/examples/__snapshots__/kubernetes-with-cloud-sql.ts.snap +894 -969
- package/examples/__snapshots__/kubernetes-with-jobs.ts.snap +1626 -1728
- package/examples/__snapshots__/kubernetes-with-mongodb.ts.snap +974 -1137
- package/examples/__snapshots__/local-dot-env.ts.snap +480 -384
- package/examples/__snapshots__/meteor-kubernetes.ts.snap +906 -1069
- package/examples/__snapshots__/multiline-var.ts.snap +4500 -0
- package/examples/__snapshots__/native-app.ts.snap +706 -578
- package/examples/__snapshots__/node-build-with-custom-image.ts.snap +480 -384
- package/examples/__snapshots__/node-build-with-docker-additions.ts.snap +488 -384
- package/examples/__snapshots__/rails-k8s-with-worker.ts.snap +1656 -1942
- package/examples/__snapshots__/wait-for-other-deploy.ts.snap +287 -231
- package/examples/__utils__/helpers.ts +2 -2
- package/examples/custom-deploy.ts +7 -7
- package/examples/multiline-var.ts +64 -0
- package/package.json +5 -8
- package/scripts/generate-gitlab-ci-types.ts +2 -2
- package/src/bash/BashExpression.ts +81 -0
- package/src/bash/bashExpressionPerPipelineType.ts +16 -0
- package/src/bash/bashYaml.ts +46 -0
- package/src/bash/getInjectVarsScript.ts +12 -0
- package/src/bash/replaceAsync.ts +50 -0
- package/src/build/base/__tests__/createArtifactsConfig.test.ts +3 -3
- package/src/build/base/createAppBuildJob.ts +8 -4
- package/src/build/base/createArtifactsConfig.ts +2 -2
- package/src/build/base/index.ts +1 -1
- package/src/build/base/writeBuildInfo.ts +1 -1
- package/src/build/base/writeDotEnv.ts +6 -1
- package/src/build/custom/__tests__/testJob.test.ts +1 -1
- package/src/build/custom/buildJob.ts +4 -6
- package/src/build/custom/testJob.ts +6 -5
- package/src/build/docker.ts +21 -13
- package/src/build/index.ts +1 -1
- package/src/build/node/buildJob.ts +3 -5
- package/src/build/node/cache.ts +4 -4
- package/src/build/node/meteor.ts +1 -1
- package/src/build/node/testJob.ts +6 -5
- package/src/build/node/yarn.ts +14 -9
- package/src/build/rails/test.ts +2 -1
- package/src/build/types.ts +8 -1
- package/src/catladder-gitlab.ts +8 -55
- package/src/config/configruedEnvs.ts +6 -6
- package/src/config/readConfig.ts +4 -5
- package/src/constants.ts +5 -2
- package/src/context/__tests__/resolveReferences.test.ts +11 -6
- package/src/context/getBuildInfoVariables.ts +40 -0
- package/src/context/getEnvConfig.ts +1 -1
- package/src/context/getEnvType.ts +1 -1
- package/src/context/getEnvironment.ts +7 -30
- package/src/context/getEnvironmentContext.ts +25 -29
- package/src/context/getEnvironmentVariables.ts +72 -47
- package/src/context/getReviewSlug.ts +27 -0
- package/src/context/index.ts +26 -25
- package/src/context/resolveReferences.ts +40 -17
- package/src/context/transformJobOnlyVars.ts +6 -3
- package/src/context/utils/envVars.ts +5 -4
- package/src/deploy/base/deploy.ts +25 -23
- package/src/deploy/base/index.ts +1 -1
- package/src/deploy/base/rollback.ts +9 -11
- package/src/deploy/base/stop.ts +9 -10
- package/src/deploy/cloudRun/artifactsRegistry.ts +13 -8
- package/src/deploy/cloudRun/cleanup.ts +3 -3
- package/src/deploy/cloudRun/cloudRunRevisions.ts +3 -3
- package/src/deploy/cloudRun/createJobs/cloudRunJobs.ts +22 -17
- package/src/deploy/cloudRun/createJobs/cloudRunServices.ts +7 -6
- package/src/deploy/cloudRun/createJobs/common.ts +1 -1
- package/src/deploy/cloudRun/createJobs/constants.ts +1 -0
- package/src/deploy/cloudRun/createJobs/getCloudRunDeployScripts.ts +25 -7
- package/src/deploy/cloudRun/createJobs/getCloudRunStopScripts.ts +1 -1
- package/src/deploy/cloudRun/createJobs/index.ts +18 -9
- package/src/deploy/cloudRun/createJobs/volumes.ts +2 -2
- package/src/deploy/cloudRun/index.ts +22 -10
- package/src/deploy/cloudRun/utils/createArgsString.ts +3 -2
- package/src/deploy/cloudRun/utils/database.ts +7 -7
- package/src/deploy/cloudRun/utils/gcloudServiceAccountLoginCommands.ts +1 -1
- package/src/deploy/cloudRun/utils/jobName.ts +7 -2
- package/src/deploy/cloudRun/utils/removeFirstLinesFromCommandOutput.ts +1 -1
- package/src/deploy/cloudSql/utils.ts +13 -10
- package/src/deploy/index.ts +5 -4
- package/src/deploy/kubernetes/cloudSql/index.ts +6 -5
- package/src/deploy/kubernetes/deployJob.ts +28 -14
- package/src/deploy/kubernetes/index.ts +15 -8
- package/src/deploy/kubernetes/kubeEnv.ts +9 -7
- package/src/deploy/kubernetes/kubeValues.ts +5 -6
- package/src/deploy/kubernetes/mongodb.ts +1 -1
- package/src/deploy/kubernetes/processSecretsAsFiles.ts +5 -4
- package/src/deploy/types/base.ts +6 -0
- package/src/deploy/types/googleCloudRun.ts +2 -0
- package/src/deploy/utils.ts +2 -2
- package/src/index.ts +2 -1
- package/src/packageInfos.ts +10 -0
- package/src/pipeline/createAllJobs.ts +28 -14
- package/src/pipeline/createChildPipeline.ts +20 -9
- package/src/pipeline/createJobsForComponent.ts +15 -23
- package/src/pipeline/createMainPipeline.ts +91 -0
- package/src/pipeline/generatePipelineFiles.ts +29 -0
- package/src/pipeline/getPipelineStages.ts +1 -1
- package/src/pipeline/gitlab/createGitlabJobs.ts +182 -59
- package/src/pipeline/gitlab/createGitlabPipeline.ts +16 -14
- package/src/pipeline/gitlab/getPipelineTriggerForGitlabChildPipeline.ts +46 -0
- package/src/pipeline/gitlab/gitlabReleaseJobs.ts +20 -0
- package/src/pipeline/index.ts +2 -0
- package/src/pipeline/packageManager.ts +2 -2
- package/src/pipeline/yarn/yarnUtils.ts +7 -7
- package/src/rules/index.ts +15 -9
- package/src/types/config.ts +12 -3
- package/src/types/context.ts +39 -26
- package/src/types/environmentContext.ts +13 -7
- package/src/types/gitlab-ci-yml.ts +0 -1
- package/src/types/gitlab-types.ts +5 -4
- package/src/types/jobs.ts +29 -4
- package/src/types/pipeline.ts +4 -0
- package/src/types/utils.ts +4 -4
- package/src/utils/gitlab.ts +1 -1
- package/src/utils/index.ts +2 -2
- package/src/utils/writeFiles.ts +40 -0
- package/dist/deploy/cloudRun/createJobs/variables.d.ts +0 -5
- package/dist/deploy/cloudRun/createJobs/variables.js +0 -19
- package/dist/pipeline/commitInfo/getBuildId.d.ts +0 -6
- package/dist/pipeline/commitInfo/getCommitInfo.d.ts +0 -2
- package/src/deploy/cloudRun/createJobs/variables.ts +0 -21
- package/src/pipeline/commitInfo/getBuildId.ts +0 -17
- package/src/pipeline/commitInfo/getCommitInfo.ts +0 -15
|
@@ -33,6 +33,9 @@ exports[`matches snapshot 1`] = `
|
|
|
33
33
|
],
|
|
34
34
|
},
|
|
35
35
|
"script": [
|
|
36
|
+
"echo -e "\\e[0Ksection_start:$(date +%s):injectvars[collapsed=true]\\r\\e[0KInjecting variables"",
|
|
37
|
+
"export APP_PATH="api"",
|
|
38
|
+
"echo -e "\\e[0Ksection_end:$(date +%s):injectvars\\r\\e[0K"",
|
|
36
39
|
"echo -e "\\e[0Ksection_start:$(date +%s):nodeinstall[collapsed=true]\\r\\e[0KEnsure node version"",
|
|
37
40
|
"if [ -f ~/.nvm/nvm.sh ]; then source ~/.nvm/nvm.sh; fi",
|
|
38
41
|
"if command -v nvm &> /dev/null && [ -f ./.nvmrc ]; then nvm install; fi",
|
|
@@ -49,7 +52,6 @@ exports[`matches snapshot 1`] = `
|
|
|
49
52
|
],
|
|
50
53
|
"stage": "test",
|
|
51
54
|
"variables": {
|
|
52
|
-
"APP_PATH": "api",
|
|
53
55
|
"KUBERNETES_CPU_REQUEST": "0.5",
|
|
54
56
|
"KUBERNETES_MEMORY_LIMIT": "4Gi",
|
|
55
57
|
"KUBERNETES_MEMORY_REQUEST": "2Gi",
|
|
@@ -102,7 +104,25 @@ exports[`matches snapshot 1`] = `
|
|
|
102
104
|
],
|
|
103
105
|
},
|
|
104
106
|
"script": [
|
|
105
|
-
"echo
|
|
107
|
+
"echo -e "\\e[0Ksection_start:$(date +%s):injectvars[collapsed=true]\\r\\e[0KInjecting variables"",
|
|
108
|
+
"export ENV_SHORT="dev"",
|
|
109
|
+
"export APP_DIR="api"",
|
|
110
|
+
"export ENV_TYPE="dev"",
|
|
111
|
+
"export BUILD_INFO_BUILD_ID="$(git describe --tags 2>/dev/null || git rev-parse HEAD)"",
|
|
112
|
+
"export BUILD_INFO_BUILD_TIME="$CI_JOB_STARTED_AT"",
|
|
113
|
+
"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\\///'); [ -z "$tag" ] && echo "v0.0.0" || echo "$tag")"",
|
|
114
|
+
"export HOST="$(printf %s "pan-test-app-dev-api-$CL_dev_api_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')"",
|
|
115
|
+
"export ROOT_URL="https://$(printf %s "pan-test-app-dev-api-$CL_dev_api_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')"",
|
|
116
|
+
"export HOST_INTERNAL="$(printf %s "pan-test-app-dev-api-$CL_dev_api_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')"",
|
|
117
|
+
"export HOST_CANONICAL="$(printf %s "pan-test-app-dev-api-$CL_dev_api_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')"",
|
|
118
|
+
"export ROOT_URL_INTERNAL="https://$(printf %s "pan-test-app-dev-api-$CL_dev_api_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')"",
|
|
119
|
+
"export DEPLOY_CLOUD_RUN_PROJECT_ID="google-project-id"",
|
|
120
|
+
"export DEPLOY_CLOUD_RUN_REGION="europe-west6"",
|
|
121
|
+
"export GCLOUD_DEPLOY_credentialsKey="$CL_dev_api_GCLOUD_DEPLOY_credentialsKey"",
|
|
122
|
+
"export GCLOUD_RUN_canonicalHostSuffix="$CL_dev_api_GCLOUD_RUN_canonicalHostSuffix"",
|
|
123
|
+
"export _ALL_ENV_VAR_KEYS="[\\"ENV_SHORT\\",\\"APP_DIR\\",\\"ENV_TYPE\\",\\"BUILD_INFO_BUILD_ID\\",\\"BUILD_INFO_BUILD_TIME\\",\\"BUILD_INFO_CURRENT_VERSION\\",\\"HOST\\",\\"ROOT_URL\\",\\"HOST_INTERNAL\\",\\"HOST_CANONICAL\\",\\"ROOT_URL_INTERNAL\\",\\"DEPLOY_CLOUD_RUN_PROJECT_ID\\",\\"DEPLOY_CLOUD_RUN_REGION\\",\\"GCLOUD_DEPLOY_credentialsKey\\",\\"GCLOUD_RUN_canonicalHostSuffix\\"]"",
|
|
124
|
+
"echo -e "\\e[0Ksection_end:$(date +%s):injectvars\\r\\e[0K"",
|
|
125
|
+
"echo '{"id":"$(git describe --tags 2>/dev/null || git rev-parse HEAD)","time":"$CI_JOB_STARTED_AT"}' > api/__build_info.json",
|
|
106
126
|
"echo -e "\\e[0Ksection_start:$(date +%s):nodeinstall[collapsed=true]\\r\\e[0KEnsure node version"",
|
|
107
127
|
"if [ -f ~/.nvm/nvm.sh ]; then source ~/.nvm/nvm.sh; fi",
|
|
108
128
|
"if command -v nvm &> /dev/null && [ -f ./.nvmrc ]; then nvm install; fi",
|
|
@@ -119,25 +139,9 @@ exports[`matches snapshot 1`] = `
|
|
|
119
139
|
],
|
|
120
140
|
"stage": "build",
|
|
121
141
|
"variables": {
|
|
122
|
-
"APP_DIR": "api",
|
|
123
|
-
"BUILD_INFO_BUILD_TIME": "01-01-2023 12:13:14",
|
|
124
|
-
"BUILD_INFO_CURRENT_VERSION": "3.2.1",
|
|
125
|
-
"BUILD_INFO_ID": "some-id",
|
|
126
|
-
"DEPLOY_CLOUD_RUN_PROJECT_ID": "google-project-id",
|
|
127
|
-
"DEPLOY_CLOUD_RUN_REGION": "europe-west6",
|
|
128
|
-
"ENV_SHORT": "dev",
|
|
129
|
-
"ENV_TYPE": "dev",
|
|
130
|
-
"GCLOUD_DEPLOY_credentialsKey": "$CL_dev_api_GCLOUD_DEPLOY_credentialsKey",
|
|
131
|
-
"GCLOUD_RUN_canonicalHostSuffix": "$CL_dev_api_GCLOUD_RUN_canonicalHostSuffix",
|
|
132
|
-
"HOST": "pan-test-app-dev-api-unknown-host.example.com",
|
|
133
|
-
"HOST_CANONICAL": "pan-test-app-dev-api-unknown-host.example.com",
|
|
134
|
-
"HOST_INTERNAL": "pan-test-app-dev-api-unknown-host.example.com",
|
|
135
142
|
"KUBERNETES_CPU_REQUEST": "0.5",
|
|
136
143
|
"KUBERNETES_MEMORY_LIMIT": "4Gi",
|
|
137
144
|
"KUBERNETES_MEMORY_REQUEST": "2Gi",
|
|
138
|
-
"ROOT_URL": "https://pan-test-app-dev-api-unknown-host.example.com",
|
|
139
|
-
"ROOT_URL_INTERNAL": "https://pan-test-app-dev-api-unknown-host.example.com",
|
|
140
|
-
"_ALL_ENV_VAR_KEYS": "["ENV_SHORT","APP_DIR","ENV_TYPE","BUILD_INFO_ID","BUILD_INFO_BUILD_TIME","BUILD_INFO_CURRENT_VERSION","HOST","ROOT_URL","HOST_CANONICAL","ROOT_URL_INTERNAL","HOST_INTERNAL","DEPLOY_CLOUD_RUN_PROJECT_ID","DEPLOY_CLOUD_RUN_REGION","GCLOUD_DEPLOY_credentialsKey","GCLOUD_RUN_canonicalHostSuffix"]",
|
|
141
145
|
},
|
|
142
146
|
},
|
|
143
147
|
"api 🔨 docker | dev ": {
|
|
@@ -163,6 +167,21 @@ exports[`matches snapshot 1`] = `
|
|
|
163
167
|
],
|
|
164
168
|
},
|
|
165
169
|
"script": [
|
|
170
|
+
"echo -e "\\e[0Ksection_start:$(date +%s):injectvars[collapsed=true]\\r\\e[0KInjecting variables"",
|
|
171
|
+
"export APP_DIR="api"",
|
|
172
|
+
"export DOCKER_DIR="."",
|
|
173
|
+
"export DOCKER_REGISTRY="europe-west6-docker.pkg.dev"",
|
|
174
|
+
"export DOCKER_IMAGE="europe-west6-docker.pkg.dev/google-project-id/catladder-deploy/pan-test-app/dev/api"",
|
|
175
|
+
"export DOCKER_CACHE_IMAGE="europe-west6-docker.pkg.dev/google-project-id/catladder-deploy/pan-test-app/caches/api"",
|
|
176
|
+
"export DOCKER_IMAGE_TAG="$CI_COMMIT_SHA"",
|
|
177
|
+
"export DOCKER_COPY_AND_INSTALL_APP="COPY --chown=node:node $APP_DIR .
|
|
178
|
+
RUN yarn plugin import workspace-tools
|
|
179
|
+
RUN yarn workspaces focus --production && yarn rebuild"",
|
|
180
|
+
"export DOCKER_COPY_WORKSPACE_FILES="COPY --chown=node:node api/package.json /app/api/package.json
|
|
181
|
+
COPY --chown=node:node api/yarn.lock /app/api/yarn.lock
|
|
182
|
+
COPY --chown=node:node .yarnrc.yml /app/.yarnrc.yml
|
|
183
|
+
COPY --chown=node:node .yarn /app/.yarn"",
|
|
184
|
+
"echo -e "\\e[0Ksection_end:$(date +%s):injectvars\\r\\e[0K"",
|
|
166
185
|
"ensureNodeDockerfile",
|
|
167
186
|
"echo -e "\\e[0Ksection_start:$(date +%s):docker-login[collapsed=true]\\r\\e[0KDocker Login"",
|
|
168
187
|
"gcloud auth activate-service-account --key-file=<(echo "$CL_dev_api_GCLOUD_DEPLOY_credentialsKey")",
|
|
@@ -187,24 +206,9 @@ exports[`matches snapshot 1`] = `
|
|
|
187
206
|
],
|
|
188
207
|
"stage": "build",
|
|
189
208
|
"variables": {
|
|
190
|
-
"APP_DIR": "api",
|
|
191
|
-
"DOCKERFILE_ADDITIONS": undefined,
|
|
192
|
-
"DOCKERFILE_ADDITIONS_END": undefined,
|
|
193
209
|
"DOCKER_BUILDKIT": "1",
|
|
194
|
-
"DOCKER_CACHE_IMAGE": "europe-west6-docker.pkg.dev/google-project-id/catladder-deploy/pan-test-app/caches/api",
|
|
195
|
-
"DOCKER_COPY_AND_INSTALL_APP": "COPY --chown=node:node $APP_DIR .
|
|
196
|
-
RUN yarn plugin import workspace-tools
|
|
197
|
-
RUN yarn workspaces focus --production && yarn rebuild",
|
|
198
|
-
"DOCKER_COPY_WORKSPACE_FILES": "COPY --chown=node:node api/package.json /app/api/package.json
|
|
199
|
-
COPY --chown=node:node api/yarn.lock /app/api/yarn.lock
|
|
200
|
-
COPY --chown=node:node .yarnrc.yml /app/.yarnrc.yml
|
|
201
|
-
COPY --chown=node:node .yarn /app/.yarn",
|
|
202
|
-
"DOCKER_DIR": ".",
|
|
203
210
|
"DOCKER_DRIVER": "overlay2",
|
|
204
211
|
"DOCKER_HOST": "tcp://0.0.0.0:2375",
|
|
205
|
-
"DOCKER_IMAGE": "europe-west6-docker.pkg.dev/google-project-id/catladder-deploy/pan-test-app/dev/api",
|
|
206
|
-
"DOCKER_IMAGE_TAG": "$CI_COMMIT_SHA",
|
|
207
|
-
"DOCKER_REGISTRY": "europe-west6-docker.pkg.dev",
|
|
208
212
|
"DOCKER_TLS_CERTDIR": "",
|
|
209
213
|
"KUBERNETES_CPU_REQUEST": "0.5",
|
|
210
214
|
"KUBERNETES_MEMORY_LIMIT": "2Gi",
|
|
@@ -214,15 +218,15 @@ COPY --chown=node:node .yarn /app/.yarn",
|
|
|
214
218
|
"api 🚀 Deploy | dev ": {
|
|
215
219
|
"allow_failure": false,
|
|
216
220
|
"artifacts": {
|
|
217
|
-
"
|
|
218
|
-
"
|
|
219
|
-
|
|
221
|
+
"reports": {
|
|
222
|
+
"dotenv": "gitlab_environment.env",
|
|
223
|
+
},
|
|
220
224
|
},
|
|
221
225
|
"environment": {
|
|
222
226
|
"auto_stop_in": "4 weeks",
|
|
223
227
|
"name": "dev/api",
|
|
224
228
|
"on_stop": "api 🛑 Stop ⚠️ | dev ",
|
|
225
|
-
"url": "
|
|
229
|
+
"url": "$CL_GITLAB_ENVIRONMENT_URL",
|
|
226
230
|
},
|
|
227
231
|
"image": "path/to/docker/gcloud:the-version",
|
|
228
232
|
"interruptible": true,
|
|
@@ -265,13 +269,71 @@ COPY --chown=node:node .yarn /app/.yarn",
|
|
|
265
269
|
},
|
|
266
270
|
],
|
|
267
271
|
"script": [
|
|
272
|
+
"echo -e "\\e[0Ksection_start:$(date +%s):injectvars[collapsed=true]\\r\\e[0KInjecting variables"",
|
|
273
|
+
"export ENV_SHORT="dev"",
|
|
274
|
+
"export APP_DIR="api"",
|
|
275
|
+
"export ENV_TYPE="dev"",
|
|
276
|
+
"export BUILD_INFO_BUILD_ID="$(git describe --tags 2>/dev/null || git rev-parse HEAD)"",
|
|
277
|
+
"export BUILD_INFO_BUILD_TIME="$CI_JOB_STARTED_AT"",
|
|
278
|
+
"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\\///'); [ -z "$tag" ] && echo "v0.0.0" || echo "$tag")"",
|
|
279
|
+
"export HOST="$(printf %s "pan-test-app-dev-api-$CL_dev_api_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')"",
|
|
280
|
+
"export ROOT_URL="https://$(printf %s "pan-test-app-dev-api-$CL_dev_api_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')"",
|
|
281
|
+
"export HOST_INTERNAL="$(printf %s "pan-test-app-dev-api-$CL_dev_api_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')"",
|
|
282
|
+
"export HOST_CANONICAL="$(printf %s "pan-test-app-dev-api-$CL_dev_api_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')"",
|
|
283
|
+
"export ROOT_URL_INTERNAL="https://$(printf %s "pan-test-app-dev-api-$CL_dev_api_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')"",
|
|
284
|
+
"export DEPLOY_CLOUD_RUN_PROJECT_ID="google-project-id"",
|
|
285
|
+
"export DEPLOY_CLOUD_RUN_REGION="europe-west6"",
|
|
286
|
+
"export GCLOUD_DEPLOY_credentialsKey="$CL_dev_api_GCLOUD_DEPLOY_credentialsKey"",
|
|
287
|
+
"export GCLOUD_RUN_canonicalHostSuffix="$CL_dev_api_GCLOUD_RUN_canonicalHostSuffix"",
|
|
288
|
+
"export _ALL_ENV_VAR_KEYS="[\\"ENV_SHORT\\",\\"APP_DIR\\",\\"ENV_TYPE\\",\\"BUILD_INFO_BUILD_ID\\",\\"BUILD_INFO_BUILD_TIME\\",\\"BUILD_INFO_CURRENT_VERSION\\",\\"HOST\\",\\"ROOT_URL\\",\\"HOST_INTERNAL\\",\\"HOST_CANONICAL\\",\\"ROOT_URL_INTERNAL\\",\\"DEPLOY_CLOUD_RUN_PROJECT_ID\\",\\"DEPLOY_CLOUD_RUN_REGION\\",\\"GCLOUD_DEPLOY_credentialsKey\\",\\"GCLOUD_RUN_canonicalHostSuffix\\"]"",
|
|
289
|
+
"export DOCKER_REGISTRY="europe-west6-docker.pkg.dev"",
|
|
290
|
+
"export DOCKER_IMAGE="europe-west6-docker.pkg.dev/google-project-id/catladder-deploy/pan-test-app/dev/api"",
|
|
291
|
+
"export DOCKER_CACHE_IMAGE="europe-west6-docker.pkg.dev/google-project-id/catladder-deploy/pan-test-app/caches/api"",
|
|
292
|
+
"export DOCKER_IMAGE_TAG="$CI_COMMIT_SHA"",
|
|
293
|
+
"export CLOUDSDK_CORE_DISABLE_PROMPTS="1"",
|
|
294
|
+
"echo -e "\\e[0Ksection_end:$(date +%s):injectvars\\r\\e[0K"",
|
|
268
295
|
"echo -e "\\e[0Ksection_start:$(date +%s):prepare[collapsed=true]\\r\\e[0KPrepare..."",
|
|
269
296
|
"gcloud auth activate-service-account --key-file=<(echo "$CL_dev_api_GCLOUD_DEPLOY_credentialsKey")",
|
|
270
297
|
"export GCLOUD_PROJECT_NUMBER=$(gcloud projects describe google-project-id --format="value(projectNumber)")",
|
|
271
298
|
"echo "GCLOUD_PROJECT_NUMBER: $GCLOUD_PROJECT_NUMBER"",
|
|
272
299
|
"echo -e "\\e[0Ksection_end:$(date +%s):prepare\\r\\e[0K"",
|
|
300
|
+
"echo -e "\\e[0Ksection_start:$(date +%s):writeenvvars[collapsed=true]\\r\\e[0KWrite env vars to file"",
|
|
301
|
+
"cat > ____envvars.yaml <<EOF
|
|
302
|
+
ENV_SHORT: |-
|
|
303
|
+
dev
|
|
304
|
+
APP_DIR: |-
|
|
305
|
+
api
|
|
306
|
+
ENV_TYPE: |-
|
|
307
|
+
dev
|
|
308
|
+
BUILD_INFO_BUILD_ID: |-
|
|
309
|
+
$(printf %s "$(git describe --tags 2>/dev/null || git rev-parse HEAD)" | sed 's/^/ /')
|
|
310
|
+
BUILD_INFO_BUILD_TIME: |-
|
|
311
|
+
$(printf %s "$CI_JOB_STARTED_AT" | sed 's/^/ /')
|
|
312
|
+
BUILD_INFO_CURRENT_VERSION: |-
|
|
313
|
+
$(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\\///'); [ -z "$tag" ] && echo "v0.0.0" || echo "$tag")" | sed 's/^/ /')
|
|
314
|
+
HOST: |-
|
|
315
|
+
$(printf %s "$(printf %s "pan-test-app-dev-api-$CL_dev_api_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')" | sed 's/^/ /')
|
|
316
|
+
ROOT_URL: |-
|
|
317
|
+
$(printf %s "https://$(printf %s "pan-test-app-dev-api-$CL_dev_api_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')" | sed 's/^/ /')
|
|
318
|
+
HOST_INTERNAL: |-
|
|
319
|
+
$(printf %s "$(printf %s "pan-test-app-dev-api-$CL_dev_api_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')" | sed 's/^/ /')
|
|
320
|
+
HOST_CANONICAL: |-
|
|
321
|
+
$(printf %s "$(printf %s "pan-test-app-dev-api-$CL_dev_api_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')" | sed 's/^/ /')
|
|
322
|
+
ROOT_URL_INTERNAL: |-
|
|
323
|
+
$(printf %s "https://$(printf %s "pan-test-app-dev-api-$CL_dev_api_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')" | sed 's/^/ /')
|
|
324
|
+
DEPLOY_CLOUD_RUN_PROJECT_ID: |-
|
|
325
|
+
google-project-id
|
|
326
|
+
DEPLOY_CLOUD_RUN_REGION: |-
|
|
327
|
+
europe-west6
|
|
328
|
+
GCLOUD_RUN_canonicalHostSuffix: |-
|
|
329
|
+
$(printf %s "$CL_dev_api_GCLOUD_RUN_canonicalHostSuffix" | sed 's/^/ /')
|
|
330
|
+
_ALL_ENV_VAR_KEYS: |-
|
|
331
|
+
["ENV_SHORT","APP_DIR","ENV_TYPE","BUILD_INFO_BUILD_ID","BUILD_INFO_BUILD_TIME","BUILD_INFO_CURRENT_VERSION","HOST","ROOT_URL","HOST_INTERNAL","HOST_CANONICAL","ROOT_URL_INTERNAL","DEPLOY_CLOUD_RUN_PROJECT_ID","DEPLOY_CLOUD_RUN_REGION","GCLOUD_DEPLOY_credentialsKey","GCLOUD_RUN_canonicalHostSuffix"]
|
|
332
|
+
|
|
333
|
+
EOF
|
|
334
|
+
",
|
|
335
|
+
"echo -e "\\e[0Ksection_end:$(date +%s):writeenvvars\\r\\e[0K"",
|
|
273
336
|
"echo -e "\\e[0Ksection_start:$(date +%s):deploy[collapsed=true]\\r\\e[0KDeploy to cloud run"",
|
|
274
|
-
"echo "$ENV_VARS" > ____envvars.yaml",
|
|
275
337
|
"gcloud run deploy pan-test-app-dev-api --command="yarn,start" --image=europe-west6-docker.pkg.dev/google-project-id/catladder-deploy/pan-test-app/dev/api:$DOCKER_IMAGE_TAG --project=google-project-id --region=europe-west6 --labels=customer-name=pan,component-name=api,app-name=test-app,env-type=dev,env-name=dev,build-type=node,cloud-run-service-name=pan-test-app-dev-api --env-vars-file=____envvars.yaml --min-instances=0 --max-instances=100 --cpu-throttling --allow-unauthenticated --ingress=all --cpu-boost --execution-environment=gen2",
|
|
276
338
|
"echo -e "\\e[0Ksection_end:$(date +%s):deploy\\r\\e[0K"",
|
|
277
339
|
"echo -e "\\e[0Ksection_start:$(date +%s):cleanup[collapsed=true]\\r\\e[0KCleanup"",
|
|
@@ -280,69 +342,27 @@ COPY --chown=node:node .yarn /app/.yarn",
|
|
|
280
342
|
"gcloud artifacts docker images list europe-west6-docker.pkg.dev/google-project-id/catladder-deploy/pan-test-app/caches/api --sort-by=~CREATE_TIME --format="value(version)" | tail -n +2 | while read -r version; do gcloud artifacts docker images delete europe-west6-docker.pkg.dev/google-project-id/catladder-deploy/pan-test-app/caches/api@$version --quiet --delete-tags; done",
|
|
281
343
|
"echo -e "\\e[0Ksection_end:$(date +%s):cleanup\\r\\e[0K"",
|
|
282
344
|
"echo Uploading SBOM to Dependency Track",
|
|
283
|
-
"/dtrackuploader https://dep.panter.swiss/ "$DT_KEY_PROD" upload "pan-test-app/api" "https
|
|
284
|
-
|
|
285
|
-
"services": [
|
|
286
|
-
{
|
|
287
|
-
"command": [
|
|
288
|
-
"--tls=false",
|
|
289
|
-
],
|
|
290
|
-
"name": "docker:24.0.6-dind",
|
|
291
|
-
},
|
|
345
|
+
"/dtrackuploader https://dep.panter.swiss/ "$DT_KEY_PROD" upload "pan-test-app/api" "https://$(printf %s "pan-test-app-dev-api-$CL_dev_api_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')" "__sbom.json" vex.json || true",
|
|
346
|
+
"echo "CL_GITLAB_ENVIRONMENT_URL=https://$(printf %s "pan-test-app-dev-api-$CL_dev_api_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')" >> gitlab_environment.env",
|
|
292
347
|
],
|
|
293
348
|
"stage": "deploy dev",
|
|
294
349
|
"variables": {
|
|
295
|
-
"APP_DIR": "api",
|
|
296
|
-
"BUILD_INFO_BUILD_TIME": "01-01-2023 12:13:14",
|
|
297
|
-
"BUILD_INFO_CURRENT_VERSION": "3.2.1",
|
|
298
|
-
"BUILD_INFO_ID": "some-id",
|
|
299
|
-
"CLOUDSDK_CORE_DISABLE_PROMPTS": "1",
|
|
300
|
-
"DEPLOY_CLOUD_RUN_PROJECT_ID": "google-project-id",
|
|
301
|
-
"DEPLOY_CLOUD_RUN_REGION": "europe-west6",
|
|
302
|
-
"DOCKER_BUILDKIT": "1",
|
|
303
|
-
"DOCKER_CACHE_IMAGE": "europe-west6-docker.pkg.dev/google-project-id/catladder-deploy/pan-test-app/caches/api",
|
|
304
|
-
"DOCKER_DRIVER": "overlay2",
|
|
305
|
-
"DOCKER_HOST": "tcp://0.0.0.0:2375",
|
|
306
|
-
"DOCKER_IMAGE": "europe-west6-docker.pkg.dev/google-project-id/catladder-deploy/pan-test-app/dev/api",
|
|
307
|
-
"DOCKER_IMAGE_TAG": "$CI_COMMIT_SHA",
|
|
308
|
-
"DOCKER_REGISTRY": "europe-west6-docker.pkg.dev",
|
|
309
|
-
"DOCKER_TLS_CERTDIR": "",
|
|
310
|
-
"ENV_SHORT": "dev",
|
|
311
|
-
"ENV_TYPE": "dev",
|
|
312
|
-
"ENV_VARS": "ENV_SHORT: 'dev'
|
|
313
|
-
APP_DIR: 'api'
|
|
314
|
-
ENV_TYPE: 'dev'
|
|
315
|
-
BUILD_INFO_ID: 'some-id'
|
|
316
|
-
BUILD_INFO_BUILD_TIME: '01-01-2023 12:13:14'
|
|
317
|
-
BUILD_INFO_CURRENT_VERSION: '3.2.1'
|
|
318
|
-
HOST: 'pan-test-app-dev-api-unknown-host.example.com'
|
|
319
|
-
ROOT_URL: 'https://pan-test-app-dev-api-unknown-host.example.com'
|
|
320
|
-
HOST_CANONICAL: 'pan-test-app-dev-api-unknown-host.example.com'
|
|
321
|
-
ROOT_URL_INTERNAL: 'https://pan-test-app-dev-api-unknown-host.example.com'
|
|
322
|
-
HOST_INTERNAL: 'pan-test-app-dev-api-unknown-host.example.com'
|
|
323
|
-
DEPLOY_CLOUD_RUN_PROJECT_ID: 'google-project-id'
|
|
324
|
-
DEPLOY_CLOUD_RUN_REGION: 'europe-west6'
|
|
325
|
-
GCLOUD_RUN_canonicalHostSuffix: '$CL_dev_api_GCLOUD_RUN_canonicalHostSuffix'
|
|
326
|
-
_ALL_ENV_VAR_KEYS: '["ENV_SHORT","APP_DIR","ENV_TYPE","BUILD_INFO_ID","BUILD_INFO_BUILD_TIME","BUILD_INFO_CURRENT_VERSION","HOST","ROOT_URL","HOST_CANONICAL","ROOT_URL_INTERNAL","HOST_INTERNAL","DEPLOY_CLOUD_RUN_PROJECT_ID","DEPLOY_CLOUD_RUN_REGION","GCLOUD_DEPLOY_credentialsKey","GCLOUD_RUN_canonicalHostSuffix"]'
|
|
327
|
-
",
|
|
328
|
-
"GCLOUD_DEPLOY_credentialsKey": "$CL_dev_api_GCLOUD_DEPLOY_credentialsKey",
|
|
329
|
-
"GCLOUD_RUN_canonicalHostSuffix": "$CL_dev_api_GCLOUD_RUN_canonicalHostSuffix",
|
|
330
|
-
"HOST": "pan-test-app-dev-api-unknown-host.example.com",
|
|
331
|
-
"HOST_CANONICAL": "pan-test-app-dev-api-unknown-host.example.com",
|
|
332
|
-
"HOST_INTERNAL": "pan-test-app-dev-api-unknown-host.example.com",
|
|
333
350
|
"KUBERNETES_CPU_REQUEST": "0.5",
|
|
334
351
|
"KUBERNETES_MEMORY_LIMIT": "400Mi",
|
|
335
352
|
"KUBERNETES_MEMORY_REQUEST": "200Mi",
|
|
336
|
-
"ROOT_URL": "https://pan-test-app-dev-api-unknown-host.example.com",
|
|
337
|
-
"ROOT_URL_INTERNAL": "https://pan-test-app-dev-api-unknown-host.example.com",
|
|
338
|
-
"_ALL_ENV_VAR_KEYS": "["ENV_SHORT","APP_DIR","ENV_TYPE","BUILD_INFO_ID","BUILD_INFO_BUILD_TIME","BUILD_INFO_CURRENT_VERSION","HOST","ROOT_URL","HOST_CANONICAL","ROOT_URL_INTERNAL","HOST_INTERNAL","DEPLOY_CLOUD_RUN_PROJECT_ID","DEPLOY_CLOUD_RUN_REGION","GCLOUD_DEPLOY_credentialsKey","GCLOUD_RUN_canonicalHostSuffix"]",
|
|
339
353
|
},
|
|
340
354
|
},
|
|
341
355
|
"api 🛑 Stop ⚠️ | dev ": {
|
|
356
|
+
"allow_failure": true,
|
|
357
|
+
"artifacts": {
|
|
358
|
+
"reports": {
|
|
359
|
+
"dotenv": "gitlab_environment.env",
|
|
360
|
+
},
|
|
361
|
+
},
|
|
342
362
|
"environment": {
|
|
343
363
|
"action": "stop",
|
|
344
364
|
"name": "dev/api",
|
|
345
|
-
"url": "
|
|
365
|
+
"url": "$CL_GITLAB_ENVIRONMENT_URL",
|
|
346
366
|
},
|
|
347
367
|
"image": "path/to/docker/gcloud:the-version",
|
|
348
368
|
"interruptible": true,
|
|
@@ -356,28 +376,29 @@ _ALL_ENV_VAR_KEYS: '["ENV_SHORT","APP_DIR","ENV_TYPE","BUILD_INFO_ID","BUILD_INF
|
|
|
356
376
|
},
|
|
357
377
|
"rules": [
|
|
358
378
|
{
|
|
359
|
-
"allow_failure": true,
|
|
360
379
|
"if": "$CI_COMMIT_BRANCH =~ /^[0-9]+\\.([0-9]+|x)\\.x$/",
|
|
361
380
|
"when": "on_success",
|
|
362
381
|
},
|
|
363
382
|
{
|
|
364
|
-
"allow_failure": true,
|
|
365
383
|
"when": "manual",
|
|
366
384
|
},
|
|
367
385
|
],
|
|
368
386
|
"script": [
|
|
387
|
+
"echo -e "\\e[0Ksection_start:$(date +%s):injectvars[collapsed=true]\\r\\e[0KInjecting variables"",
|
|
388
|
+
"export CLOUDSDK_CORE_DISABLE_PROMPTS="1"",
|
|
389
|
+
"echo -e "\\e[0Ksection_end:$(date +%s):injectvars\\r\\e[0K"",
|
|
369
390
|
"set +e",
|
|
370
391
|
"gcloud auth activate-service-account --key-file=<(echo "$CL_dev_api_GCLOUD_DEPLOY_credentialsKey")",
|
|
371
392
|
"gcloud run services delete pan-test-app-dev-api --project=google-project-id --region=europe-west6",
|
|
372
393
|
"gcloud artifacts docker images delete europe-west6-docker.pkg.dev/google-project-id/catladder-deploy/pan-test-app/dev/api --quiet --delete-tags",
|
|
373
394
|
"gcloud artifacts docker images list europe-west6-docker.pkg.dev/google-project-id/catladder-deploy/pan-test-app/caches/api --sort-by=~CREATE_TIME --format="value(version)" | tail -n +2 | while read -r version; do gcloud artifacts docker images delete europe-west6-docker.pkg.dev/google-project-id/catladder-deploy/pan-test-app/caches/api@$version --quiet --delete-tags; done",
|
|
374
395
|
"echo Disabling component in Dependency Track",
|
|
375
|
-
"/dtrackuploader https://dep.panter.swiss/ "$DT_KEY_PROD" disable "pan-test-app/api" "https
|
|
396
|
+
"/dtrackuploader https://dep.panter.swiss/ "$DT_KEY_PROD" disable "pan-test-app/api" "https://$(printf %s "pan-test-app-dev-api-$CL_dev_api_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')" || true",
|
|
376
397
|
"set -e",
|
|
398
|
+
"echo "CL_GITLAB_ENVIRONMENT_URL=https://$(printf %s "pan-test-app-dev-api-$CL_dev_api_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')" >> gitlab_environment.env",
|
|
377
399
|
],
|
|
378
400
|
"stage": "stop dev",
|
|
379
401
|
"variables": {
|
|
380
|
-
"CLOUDSDK_CORE_DISABLE_PROMPTS": "1",
|
|
381
402
|
"GIT_STRATEGY": "none",
|
|
382
403
|
"KUBERNETES_CPU_REQUEST": "0.5",
|
|
383
404
|
"KUBERNETES_MEMORY_LIMIT": "400Mi",
|
|
@@ -397,12 +418,14 @@ _ALL_ENV_VAR_KEYS: '["ENV_SHORT","APP_DIR","ENV_TYPE","BUILD_INFO_ID","BUILD_INF
|
|
|
397
418
|
],
|
|
398
419
|
},
|
|
399
420
|
"script": [
|
|
421
|
+
"echo -e "\\e[0Ksection_start:$(date +%s):injectvars[collapsed=true]\\r\\e[0KInjecting variables"",
|
|
422
|
+
"export APP_PATH="api"",
|
|
423
|
+
"echo -e "\\e[0Ksection_end:$(date +%s):injectvars\\r\\e[0K"",
|
|
400
424
|
"cd api",
|
|
401
425
|
"yarn npm audit --environment production",
|
|
402
426
|
],
|
|
403
427
|
"stage": "test",
|
|
404
428
|
"variables": {
|
|
405
|
-
"APP_PATH": "api",
|
|
406
429
|
"KUBERNETES_CPU_REQUEST": "0.5",
|
|
407
430
|
"KUBERNETES_MEMORY_LIMIT": "4Gi",
|
|
408
431
|
"KUBERNETES_MEMORY_REQUEST": "2Gi",
|
|
@@ -436,6 +459,9 @@ _ALL_ENV_VAR_KEYS: '["ENV_SHORT","APP_DIR","ENV_TYPE","BUILD_INFO_ID","BUILD_INF
|
|
|
436
459
|
],
|
|
437
460
|
},
|
|
438
461
|
"script": [
|
|
462
|
+
"echo -e "\\e[0Ksection_start:$(date +%s):injectvars[collapsed=true]\\r\\e[0KInjecting variables"",
|
|
463
|
+
"export APP_PATH="api"",
|
|
464
|
+
"echo -e "\\e[0Ksection_end:$(date +%s):injectvars\\r\\e[0K"",
|
|
439
465
|
"echo -e "\\e[0Ksection_start:$(date +%s):nodeinstall[collapsed=true]\\r\\e[0KEnsure node version"",
|
|
440
466
|
"if [ -f ~/.nvm/nvm.sh ]; then source ~/.nvm/nvm.sh; fi",
|
|
441
467
|
"if command -v nvm &> /dev/null && [ -f ./.nvmrc ]; then nvm install; fi",
|
|
@@ -452,7 +478,6 @@ _ALL_ENV_VAR_KEYS: '["ENV_SHORT","APP_DIR","ENV_TYPE","BUILD_INFO_ID","BUILD_INF
|
|
|
452
478
|
],
|
|
453
479
|
"stage": "test",
|
|
454
480
|
"variables": {
|
|
455
|
-
"APP_PATH": "api",
|
|
456
481
|
"KUBERNETES_CPU_REQUEST": "0.5",
|
|
457
482
|
"KUBERNETES_MEMORY_LIMIT": "4Gi",
|
|
458
483
|
"KUBERNETES_MEMORY_REQUEST": "2Gi",
|
|
@@ -476,6 +501,8 @@ _ALL_ENV_VAR_KEYS: '["ENV_SHORT","APP_DIR","ENV_TYPE","BUILD_INFO_ID","BUILD_INF
|
|
|
476
501
|
],
|
|
477
502
|
},
|
|
478
503
|
"script": [
|
|
504
|
+
"echo -e "\\e[0Ksection_start:$(date +%s):injectvars[collapsed=true]\\r\\e[0KInjecting variables"",
|
|
505
|
+
"echo -e "\\e[0Ksection_end:$(date +%s):injectvars\\r\\e[0K"",
|
|
479
506
|
"trivy fs --quiet --format cyclonedx --output "__sbom.json" api",
|
|
480
507
|
],
|
|
481
508
|
"stage": "build",
|
|
@@ -528,7 +555,7 @@ _ALL_ENV_VAR_KEYS: '["ENV_SHORT","APP_DIR","ENV_TYPE","BUILD_INFO_ID","BUILD_INF
|
|
|
528
555
|
],
|
|
529
556
|
"variables": {
|
|
530
557
|
"FF_USE_FASTZIP": "true",
|
|
531
|
-
"GIT_DEPTH": 1,
|
|
558
|
+
"GIT_DEPTH": "1",
|
|
532
559
|
},
|
|
533
560
|
"workflow": {
|
|
534
561
|
"rules": [
|
|
@@ -586,6 +613,9 @@ _ALL_ENV_VAR_KEYS: '["ENV_SHORT","APP_DIR","ENV_TYPE","BUILD_INFO_ID","BUILD_INF
|
|
|
586
613
|
],
|
|
587
614
|
},
|
|
588
615
|
"script": [
|
|
616
|
+
"echo -e "\\e[0Ksection_start:$(date +%s):injectvars[collapsed=true]\\r\\e[0KInjecting variables"",
|
|
617
|
+
"export APP_PATH="api"",
|
|
618
|
+
"echo -e "\\e[0Ksection_end:$(date +%s):injectvars\\r\\e[0K"",
|
|
589
619
|
"echo -e "\\e[0Ksection_start:$(date +%s):nodeinstall[collapsed=true]\\r\\e[0KEnsure node version"",
|
|
590
620
|
"if [ -f ~/.nvm/nvm.sh ]; then source ~/.nvm/nvm.sh; fi",
|
|
591
621
|
"if command -v nvm &> /dev/null && [ -f ./.nvmrc ]; then nvm install; fi",
|
|
@@ -602,7 +632,6 @@ _ALL_ENV_VAR_KEYS: '["ENV_SHORT","APP_DIR","ENV_TYPE","BUILD_INFO_ID","BUILD_INF
|
|
|
602
632
|
],
|
|
603
633
|
"stage": "test",
|
|
604
634
|
"variables": {
|
|
605
|
-
"APP_PATH": "api",
|
|
606
635
|
"KUBERNETES_CPU_REQUEST": "0.5",
|
|
607
636
|
"KUBERNETES_MEMORY_LIMIT": "4Gi",
|
|
608
637
|
"KUBERNETES_MEMORY_REQUEST": "2Gi",
|
|
@@ -655,7 +684,25 @@ _ALL_ENV_VAR_KEYS: '["ENV_SHORT","APP_DIR","ENV_TYPE","BUILD_INFO_ID","BUILD_INF
|
|
|
655
684
|
],
|
|
656
685
|
},
|
|
657
686
|
"script": [
|
|
658
|
-
"echo
|
|
687
|
+
"echo -e "\\e[0Ksection_start:$(date +%s):injectvars[collapsed=true]\\r\\e[0KInjecting variables"",
|
|
688
|
+
"export ENV_SHORT="review"",
|
|
689
|
+
"export APP_DIR="api"",
|
|
690
|
+
"export ENV_TYPE="review"",
|
|
691
|
+
"export BUILD_INFO_BUILD_ID="$(git describe --tags 2>/dev/null || git rev-parse HEAD)"",
|
|
692
|
+
"export BUILD_INFO_BUILD_TIME="$CI_JOB_STARTED_AT"",
|
|
693
|
+
"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\\///'); [ -z "$tag" ] && echo "v0.0.0" || echo "$tag")"",
|
|
694
|
+
"export HOST="$(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"; })-api-$CL_review_api_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')"",
|
|
695
|
+
"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"; })-api-$CL_review_api_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')"",
|
|
696
|
+
"export HOST_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"; })-api-$CL_review_api_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')"",
|
|
697
|
+
"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"; })-api-$CL_review_api_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')"",
|
|
698
|
+
"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"; })-api-$CL_review_api_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')"",
|
|
699
|
+
"export DEPLOY_CLOUD_RUN_PROJECT_ID="google-project-id"",
|
|
700
|
+
"export DEPLOY_CLOUD_RUN_REGION="europe-west6"",
|
|
701
|
+
"export GCLOUD_DEPLOY_credentialsKey="$CL_review_api_GCLOUD_DEPLOY_credentialsKey"",
|
|
702
|
+
"export GCLOUD_RUN_canonicalHostSuffix="$CL_review_api_GCLOUD_RUN_canonicalHostSuffix"",
|
|
703
|
+
"export _ALL_ENV_VAR_KEYS="[\\"ENV_SHORT\\",\\"APP_DIR\\",\\"ENV_TYPE\\",\\"BUILD_INFO_BUILD_ID\\",\\"BUILD_INFO_BUILD_TIME\\",\\"BUILD_INFO_CURRENT_VERSION\\",\\"HOST\\",\\"ROOT_URL\\",\\"HOST_INTERNAL\\",\\"HOST_CANONICAL\\",\\"ROOT_URL_INTERNAL\\",\\"DEPLOY_CLOUD_RUN_PROJECT_ID\\",\\"DEPLOY_CLOUD_RUN_REGION\\",\\"GCLOUD_DEPLOY_credentialsKey\\",\\"GCLOUD_RUN_canonicalHostSuffix\\"]"",
|
|
704
|
+
"echo -e "\\e[0Ksection_end:$(date +%s):injectvars\\r\\e[0K"",
|
|
705
|
+
"echo '{"id":"$(git describe --tags 2>/dev/null || git rev-parse HEAD)","time":"$CI_JOB_STARTED_AT"}' > api/__build_info.json",
|
|
659
706
|
"echo -e "\\e[0Ksection_start:$(date +%s):nodeinstall[collapsed=true]\\r\\e[0KEnsure node version"",
|
|
660
707
|
"if [ -f ~/.nvm/nvm.sh ]; then source ~/.nvm/nvm.sh; fi",
|
|
661
708
|
"if command -v nvm &> /dev/null && [ -f ./.nvmrc ]; then nvm install; fi",
|
|
@@ -672,25 +719,9 @@ _ALL_ENV_VAR_KEYS: '["ENV_SHORT","APP_DIR","ENV_TYPE","BUILD_INFO_ID","BUILD_INF
|
|
|
672
719
|
],
|
|
673
720
|
"stage": "build",
|
|
674
721
|
"variables": {
|
|
675
|
-
"APP_DIR": "api",
|
|
676
|
-
"BUILD_INFO_BUILD_TIME": "01-01-2023 12:13:14",
|
|
677
|
-
"BUILD_INFO_CURRENT_VERSION": "3.2.1",
|
|
678
|
-
"BUILD_INFO_ID": "some-id",
|
|
679
|
-
"DEPLOY_CLOUD_RUN_PROJECT_ID": "google-project-id",
|
|
680
|
-
"DEPLOY_CLOUD_RUN_REGION": "europe-west6",
|
|
681
|
-
"ENV_SHORT": "review",
|
|
682
|
-
"ENV_TYPE": "review",
|
|
683
|
-
"GCLOUD_DEPLOY_credentialsKey": "$CL_review_api_GCLOUD_DEPLOY_credentialsKey",
|
|
684
|
-
"GCLOUD_RUN_canonicalHostSuffix": "$CL_review_api_GCLOUD_RUN_canonicalHostSuffix",
|
|
685
|
-
"HOST": "pan-test-app-review-mr1234-api-unknown-host.example.com",
|
|
686
|
-
"HOST_CANONICAL": "pan-test-app-review-mr1234-api-unknown-host.example.com",
|
|
687
|
-
"HOST_INTERNAL": "pan-test-app-review-mr1234-api-unknown-host.example.com",
|
|
688
722
|
"KUBERNETES_CPU_REQUEST": "0.5",
|
|
689
723
|
"KUBERNETES_MEMORY_LIMIT": "4Gi",
|
|
690
724
|
"KUBERNETES_MEMORY_REQUEST": "2Gi",
|
|
691
|
-
"ROOT_URL": "https://pan-test-app-review-mr1234-api-unknown-host.example.com",
|
|
692
|
-
"ROOT_URL_INTERNAL": "https://pan-test-app-review-mr1234-api-unknown-host.example.com",
|
|
693
|
-
"_ALL_ENV_VAR_KEYS": "["ENV_SHORT","APP_DIR","ENV_TYPE","BUILD_INFO_ID","BUILD_INFO_BUILD_TIME","BUILD_INFO_CURRENT_VERSION","HOST","ROOT_URL","HOST_CANONICAL","ROOT_URL_INTERNAL","HOST_INTERNAL","DEPLOY_CLOUD_RUN_PROJECT_ID","DEPLOY_CLOUD_RUN_REGION","GCLOUD_DEPLOY_credentialsKey","GCLOUD_RUN_canonicalHostSuffix"]",
|
|
694
725
|
},
|
|
695
726
|
},
|
|
696
727
|
"api 🔨 docker | review ": {
|
|
@@ -716,6 +747,21 @@ _ALL_ENV_VAR_KEYS: '["ENV_SHORT","APP_DIR","ENV_TYPE","BUILD_INFO_ID","BUILD_INF
|
|
|
716
747
|
],
|
|
717
748
|
},
|
|
718
749
|
"script": [
|
|
750
|
+
"echo -e "\\e[0Ksection_start:$(date +%s):injectvars[collapsed=true]\\r\\e[0KInjecting variables"",
|
|
751
|
+
"export APP_DIR="api"",
|
|
752
|
+
"export DOCKER_DIR="."",
|
|
753
|
+
"export DOCKER_REGISTRY="europe-west6-docker.pkg.dev"",
|
|
754
|
+
"export DOCKER_IMAGE="europe-west6-docker.pkg.dev/google-project-id/catladder-deploy/pan-test-app/review/api/$([ -n "$CI_MERGE_REQUEST_IID" ] && echo "mr$CI_MERGE_REQUEST_IID" || { [ -n "$CI_COMMIT_REF_SLUG" ] && echo "$CI_COMMIT_REF_SLUG" || echo "unknown"; })"",
|
|
755
|
+
"export DOCKER_CACHE_IMAGE="europe-west6-docker.pkg.dev/google-project-id/catladder-deploy/pan-test-app/caches/api"",
|
|
756
|
+
"export DOCKER_IMAGE_TAG="$CI_COMMIT_SHA"",
|
|
757
|
+
"export DOCKER_COPY_AND_INSTALL_APP="COPY --chown=node:node $APP_DIR .
|
|
758
|
+
RUN yarn plugin import workspace-tools
|
|
759
|
+
RUN yarn workspaces focus --production && yarn rebuild"",
|
|
760
|
+
"export DOCKER_COPY_WORKSPACE_FILES="COPY --chown=node:node api/package.json /app/api/package.json
|
|
761
|
+
COPY --chown=node:node api/yarn.lock /app/api/yarn.lock
|
|
762
|
+
COPY --chown=node:node .yarnrc.yml /app/.yarnrc.yml
|
|
763
|
+
COPY --chown=node:node .yarn /app/.yarn"",
|
|
764
|
+
"echo -e "\\e[0Ksection_end:$(date +%s):injectvars\\r\\e[0K"",
|
|
719
765
|
"ensureNodeDockerfile",
|
|
720
766
|
"echo -e "\\e[0Ksection_start:$(date +%s):docker-login[collapsed=true]\\r\\e[0KDocker Login"",
|
|
721
767
|
"gcloud auth activate-service-account --key-file=<(echo "$CL_review_api_GCLOUD_DEPLOY_credentialsKey")",
|
|
@@ -740,24 +786,9 @@ _ALL_ENV_VAR_KEYS: '["ENV_SHORT","APP_DIR","ENV_TYPE","BUILD_INFO_ID","BUILD_INF
|
|
|
740
786
|
],
|
|
741
787
|
"stage": "build",
|
|
742
788
|
"variables": {
|
|
743
|
-
"APP_DIR": "api",
|
|
744
|
-
"DOCKERFILE_ADDITIONS": undefined,
|
|
745
|
-
"DOCKERFILE_ADDITIONS_END": undefined,
|
|
746
789
|
"DOCKER_BUILDKIT": "1",
|
|
747
|
-
"DOCKER_CACHE_IMAGE": "europe-west6-docker.pkg.dev/google-project-id/catladder-deploy/pan-test-app/caches/api",
|
|
748
|
-
"DOCKER_COPY_AND_INSTALL_APP": "COPY --chown=node:node $APP_DIR .
|
|
749
|
-
RUN yarn plugin import workspace-tools
|
|
750
|
-
RUN yarn workspaces focus --production && yarn rebuild",
|
|
751
|
-
"DOCKER_COPY_WORKSPACE_FILES": "COPY --chown=node:node api/package.json /app/api/package.json
|
|
752
|
-
COPY --chown=node:node api/yarn.lock /app/api/yarn.lock
|
|
753
|
-
COPY --chown=node:node .yarnrc.yml /app/.yarnrc.yml
|
|
754
|
-
COPY --chown=node:node .yarn /app/.yarn",
|
|
755
|
-
"DOCKER_DIR": ".",
|
|
756
790
|
"DOCKER_DRIVER": "overlay2",
|
|
757
791
|
"DOCKER_HOST": "tcp://0.0.0.0:2375",
|
|
758
|
-
"DOCKER_IMAGE": "europe-west6-docker.pkg.dev/google-project-id/catladder-deploy/pan-test-app/review/api/mr1234",
|
|
759
|
-
"DOCKER_IMAGE_TAG": "$CI_COMMIT_SHA",
|
|
760
|
-
"DOCKER_REGISTRY": "europe-west6-docker.pkg.dev",
|
|
761
792
|
"DOCKER_TLS_CERTDIR": "",
|
|
762
793
|
"KUBERNETES_CPU_REQUEST": "0.5",
|
|
763
794
|
"KUBERNETES_MEMORY_LIMIT": "2Gi",
|
|
@@ -767,15 +798,15 @@ COPY --chown=node:node .yarn /app/.yarn",
|
|
|
767
798
|
"api 🚀 Deploy | review ": {
|
|
768
799
|
"allow_failure": false,
|
|
769
800
|
"artifacts": {
|
|
770
|
-
"
|
|
771
|
-
"
|
|
772
|
-
|
|
801
|
+
"reports": {
|
|
802
|
+
"dotenv": "gitlab_environment.env",
|
|
803
|
+
},
|
|
773
804
|
},
|
|
774
805
|
"environment": {
|
|
775
806
|
"auto_stop_in": "1 week",
|
|
776
|
-
"name": "review/
|
|
807
|
+
"name": "review/$CI_COMMIT_REF_NAME/api",
|
|
777
808
|
"on_stop": "api 🛑 Stop ⚠️ | review ",
|
|
778
|
-
"url": "
|
|
809
|
+
"url": "$CL_GITLAB_ENVIRONMENT_URL",
|
|
779
810
|
},
|
|
780
811
|
"image": "path/to/docker/gcloud:the-version",
|
|
781
812
|
"interruptible": true,
|
|
@@ -818,87 +849,103 @@ COPY --chown=node:node .yarn /app/.yarn",
|
|
|
818
849
|
},
|
|
819
850
|
],
|
|
820
851
|
"script": [
|
|
852
|
+
"echo -e "\\e[0Ksection_start:$(date +%s):injectvars[collapsed=true]\\r\\e[0KInjecting variables"",
|
|
853
|
+
"export ENV_SHORT="review"",
|
|
854
|
+
"export APP_DIR="api"",
|
|
855
|
+
"export ENV_TYPE="review"",
|
|
856
|
+
"export BUILD_INFO_BUILD_ID="$(git describe --tags 2>/dev/null || git rev-parse HEAD)"",
|
|
857
|
+
"export BUILD_INFO_BUILD_TIME="$CI_JOB_STARTED_AT"",
|
|
858
|
+
"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\\///'); [ -z "$tag" ] && echo "v0.0.0" || echo "$tag")"",
|
|
859
|
+
"export HOST="$(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"; })-api-$CL_review_api_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')"",
|
|
860
|
+
"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"; })-api-$CL_review_api_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')"",
|
|
861
|
+
"export HOST_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"; })-api-$CL_review_api_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')"",
|
|
862
|
+
"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"; })-api-$CL_review_api_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')"",
|
|
863
|
+
"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"; })-api-$CL_review_api_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')"",
|
|
864
|
+
"export DEPLOY_CLOUD_RUN_PROJECT_ID="google-project-id"",
|
|
865
|
+
"export DEPLOY_CLOUD_RUN_REGION="europe-west6"",
|
|
866
|
+
"export GCLOUD_DEPLOY_credentialsKey="$CL_review_api_GCLOUD_DEPLOY_credentialsKey"",
|
|
867
|
+
"export GCLOUD_RUN_canonicalHostSuffix="$CL_review_api_GCLOUD_RUN_canonicalHostSuffix"",
|
|
868
|
+
"export _ALL_ENV_VAR_KEYS="[\\"ENV_SHORT\\",\\"APP_DIR\\",\\"ENV_TYPE\\",\\"BUILD_INFO_BUILD_ID\\",\\"BUILD_INFO_BUILD_TIME\\",\\"BUILD_INFO_CURRENT_VERSION\\",\\"HOST\\",\\"ROOT_URL\\",\\"HOST_INTERNAL\\",\\"HOST_CANONICAL\\",\\"ROOT_URL_INTERNAL\\",\\"DEPLOY_CLOUD_RUN_PROJECT_ID\\",\\"DEPLOY_CLOUD_RUN_REGION\\",\\"GCLOUD_DEPLOY_credentialsKey\\",\\"GCLOUD_RUN_canonicalHostSuffix\\"]"",
|
|
869
|
+
"export DOCKER_REGISTRY="europe-west6-docker.pkg.dev"",
|
|
870
|
+
"export DOCKER_IMAGE="europe-west6-docker.pkg.dev/google-project-id/catladder-deploy/pan-test-app/review/api/$([ -n "$CI_MERGE_REQUEST_IID" ] && echo "mr$CI_MERGE_REQUEST_IID" || { [ -n "$CI_COMMIT_REF_SLUG" ] && echo "$CI_COMMIT_REF_SLUG" || echo "unknown"; })"",
|
|
871
|
+
"export DOCKER_CACHE_IMAGE="europe-west6-docker.pkg.dev/google-project-id/catladder-deploy/pan-test-app/caches/api"",
|
|
872
|
+
"export DOCKER_IMAGE_TAG="$CI_COMMIT_SHA"",
|
|
873
|
+
"export CLOUDSDK_CORE_DISABLE_PROMPTS="1"",
|
|
874
|
+
"echo -e "\\e[0Ksection_end:$(date +%s):injectvars\\r\\e[0K"",
|
|
821
875
|
"echo -e "\\e[0Ksection_start:$(date +%s):prepare[collapsed=true]\\r\\e[0KPrepare..."",
|
|
822
876
|
"gcloud auth activate-service-account --key-file=<(echo "$CL_review_api_GCLOUD_DEPLOY_credentialsKey")",
|
|
823
877
|
"export GCLOUD_PROJECT_NUMBER=$(gcloud projects describe google-project-id --format="value(projectNumber)")",
|
|
824
878
|
"echo "GCLOUD_PROJECT_NUMBER: $GCLOUD_PROJECT_NUMBER"",
|
|
825
879
|
"echo -e "\\e[0Ksection_end:$(date +%s):prepare\\r\\e[0K"",
|
|
880
|
+
"echo -e "\\e[0Ksection_start:$(date +%s):writeenvvars[collapsed=true]\\r\\e[0KWrite env vars to file"",
|
|
881
|
+
"cat > ____envvars.yaml <<EOF
|
|
882
|
+
ENV_SHORT: |-
|
|
883
|
+
review
|
|
884
|
+
APP_DIR: |-
|
|
885
|
+
api
|
|
886
|
+
ENV_TYPE: |-
|
|
887
|
+
review
|
|
888
|
+
BUILD_INFO_BUILD_ID: |-
|
|
889
|
+
$(printf %s "$(git describe --tags 2>/dev/null || git rev-parse HEAD)" | sed 's/^/ /')
|
|
890
|
+
BUILD_INFO_BUILD_TIME: |-
|
|
891
|
+
$(printf %s "$CI_JOB_STARTED_AT" | sed 's/^/ /')
|
|
892
|
+
BUILD_INFO_CURRENT_VERSION: |-
|
|
893
|
+
$(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\\///'); [ -z "$tag" ] && echo "v0.0.0" || echo "$tag")" | sed 's/^/ /')
|
|
894
|
+
HOST: |-
|
|
895
|
+
$(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"; })-api-$CL_review_api_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')" | sed 's/^/ /')
|
|
896
|
+
ROOT_URL: |-
|
|
897
|
+
$(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"; })-api-$CL_review_api_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')" | sed 's/^/ /')
|
|
898
|
+
HOST_INTERNAL: |-
|
|
899
|
+
$(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"; })-api-$CL_review_api_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')" | sed 's/^/ /')
|
|
900
|
+
HOST_CANONICAL: |-
|
|
901
|
+
$(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"; })-api-$CL_review_api_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')" | sed 's/^/ /')
|
|
902
|
+
ROOT_URL_INTERNAL: |-
|
|
903
|
+
$(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"; })-api-$CL_review_api_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')" | sed 's/^/ /')
|
|
904
|
+
DEPLOY_CLOUD_RUN_PROJECT_ID: |-
|
|
905
|
+
google-project-id
|
|
906
|
+
DEPLOY_CLOUD_RUN_REGION: |-
|
|
907
|
+
europe-west6
|
|
908
|
+
GCLOUD_RUN_canonicalHostSuffix: |-
|
|
909
|
+
$(printf %s "$CL_review_api_GCLOUD_RUN_canonicalHostSuffix" | sed 's/^/ /')
|
|
910
|
+
_ALL_ENV_VAR_KEYS: |-
|
|
911
|
+
["ENV_SHORT","APP_DIR","ENV_TYPE","BUILD_INFO_BUILD_ID","BUILD_INFO_BUILD_TIME","BUILD_INFO_CURRENT_VERSION","HOST","ROOT_URL","HOST_INTERNAL","HOST_CANONICAL","ROOT_URL_INTERNAL","DEPLOY_CLOUD_RUN_PROJECT_ID","DEPLOY_CLOUD_RUN_REGION","GCLOUD_DEPLOY_credentialsKey","GCLOUD_RUN_canonicalHostSuffix"]
|
|
912
|
+
|
|
913
|
+
EOF
|
|
914
|
+
",
|
|
915
|
+
"echo -e "\\e[0Ksection_end:$(date +%s):writeenvvars\\r\\e[0K"",
|
|
826
916
|
"echo -e "\\e[0Ksection_start:$(date +%s):deploy[collapsed=true]\\r\\e[0KDeploy to cloud run"",
|
|
827
|
-
"echo "$
|
|
828
|
-
"gcloud run deploy pan-test-app-review-mr1234-api --command="yarn,start" --image=europe-west6-docker.pkg.dev/google-project-id/catladder-deploy/pan-test-app/review/api/mr1234:$DOCKER_IMAGE_TAG --project=google-project-id --region=europe-west6 --labels=customer-name=pan,component-name=api,app-name=test-app,env-type=review,env-name=review,build-type=node,cloud-run-service-name=pan-test-app-review-mr1234-api --env-vars-file=____envvars.yaml --min-instances=0 --max-instances=100 --cpu-throttling --allow-unauthenticated --ingress=all --cpu-boost --execution-environment=gen2",
|
|
917
|
+
"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"; })-api" | awk '{print tolower($0)}') --command="yarn,start" --image=europe-west6-docker.pkg.dev/google-project-id/catladder-deploy/pan-test-app/review/api/$([ -n "$CI_MERGE_REQUEST_IID" ] && echo "mr$CI_MERGE_REQUEST_IID" || { [ -n "$CI_COMMIT_REF_SLUG" ] && echo "$CI_COMMIT_REF_SLUG" || echo "unknown"; }):$DOCKER_IMAGE_TAG --project=google-project-id --region=europe-west6 --labels=customer-name=pan,component-name=api,app-name=test-app,env-type=review,env-name=review,build-type=node,cloud-run-service-name=$(printf %s "pan-test-app-review-$([ -n "$CI_MERGE_REQUEST_IID" ] && echo "mr$CI_MERGE_REQUEST_IID" || { [ -n "$CI_COMMIT_REF_SLUG" ] && echo "$CI_COMMIT_REF_SLUG" || echo "unknown"; })-api" | awk '{print tolower($0)}') --env-vars-file=____envvars.yaml --min-instances=0 --max-instances=100 --cpu-throttling --allow-unauthenticated --ingress=all --cpu-boost --execution-environment=gen2",
|
|
829
918
|
"echo -e "\\e[0Ksection_end:$(date +%s):deploy\\r\\e[0K"",
|
|
830
919
|
"echo -e "\\e[0Ksection_start:$(date +%s):cleanup[collapsed=true]\\r\\e[0KCleanup"",
|
|
831
|
-
"gcloud run revisions list --project=google-project-id --region=europe-west6 --service
|
|
832
|
-
"gcloud artifacts docker images list europe-west6-docker.pkg.dev/google-project-id/catladder-deploy/pan-test-app/review/api
|
|
920
|
+
"gcloud run revisions list --project=google-project-id --region=europe-west6 --service=$(printf %s "pan-test-app-review-$([ -n "$CI_MERGE_REQUEST_IID" ] && echo "mr$CI_MERGE_REQUEST_IID" || { [ -n "$CI_COMMIT_REF_SLUG" ] && echo "$CI_COMMIT_REF_SLUG" || echo "unknown"; })-api" | awk '{print tolower($0)}') --limit=unlimited --sort-by=metadata.creationTimestamp --format="value(name)" --filter='(status.conditions.status=False OR status.conditions.status=Unknown)' | while read -r revisionname; do gcloud run revisions delete --project=google-project-id --region=europe-west6 --quiet $revisionname ; done",
|
|
921
|
+
"gcloud artifacts docker images list europe-west6-docker.pkg.dev/google-project-id/catladder-deploy/pan-test-app/review/api/$([ -n "$CI_MERGE_REQUEST_IID" ] && echo "mr$CI_MERGE_REQUEST_IID" || { [ -n "$CI_COMMIT_REF_SLUG" ] && echo "$CI_COMMIT_REF_SLUG" || echo "unknown"; }) --sort-by=~CREATE_TIME --format="value(version)" | tail -n +2 | while read -r version; do gcloud artifacts docker images delete europe-west6-docker.pkg.dev/google-project-id/catladder-deploy/pan-test-app/review/api/$([ -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",
|
|
833
922
|
"gcloud artifacts docker images list europe-west6-docker.pkg.dev/google-project-id/catladder-deploy/pan-test-app/caches/api --sort-by=~CREATE_TIME --format="value(version)" | tail -n +2 | while read -r version; do gcloud artifacts docker images delete europe-west6-docker.pkg.dev/google-project-id/catladder-deploy/pan-test-app/caches/api@$version --quiet --delete-tags; done",
|
|
834
923
|
"set +e",
|
|
835
924
|
"gcloud artifacts docker images delete europe-west6-docker.pkg.dev/google-project-id/catladder-deploy/pan-test-app/review/api --quiet --delete-tags",
|
|
836
925
|
"set -e",
|
|
837
926
|
"echo -e "\\e[0Ksection_end:$(date +%s):cleanup\\r\\e[0K"",
|
|
838
927
|
"echo Uploading SBOM to Dependency Track",
|
|
839
|
-
"/dtrackuploader https://dep.panter.swiss/ "$DT_KEY_PROD" upload "pan-test-app/api" "https
|
|
840
|
-
|
|
841
|
-
"services": [
|
|
842
|
-
{
|
|
843
|
-
"command": [
|
|
844
|
-
"--tls=false",
|
|
845
|
-
],
|
|
846
|
-
"name": "docker:24.0.6-dind",
|
|
847
|
-
},
|
|
928
|
+
"/dtrackuploader https://dep.panter.swiss/ "$DT_KEY_PROD" upload "pan-test-app/api" "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"; })-api-$CL_review_api_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')" "__sbom.json" vex.json || true",
|
|
929
|
+
"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"; })-api-$CL_review_api_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')" >> gitlab_environment.env",
|
|
848
930
|
],
|
|
849
931
|
"stage": "deploy review",
|
|
850
932
|
"variables": {
|
|
851
|
-
"APP_DIR": "api",
|
|
852
|
-
"BUILD_INFO_BUILD_TIME": "01-01-2023 12:13:14",
|
|
853
|
-
"BUILD_INFO_CURRENT_VERSION": "3.2.1",
|
|
854
|
-
"BUILD_INFO_ID": "some-id",
|
|
855
|
-
"CLOUDSDK_CORE_DISABLE_PROMPTS": "1",
|
|
856
|
-
"DEPLOY_CLOUD_RUN_PROJECT_ID": "google-project-id",
|
|
857
|
-
"DEPLOY_CLOUD_RUN_REGION": "europe-west6",
|
|
858
|
-
"DOCKER_BUILDKIT": "1",
|
|
859
|
-
"DOCKER_CACHE_IMAGE": "europe-west6-docker.pkg.dev/google-project-id/catladder-deploy/pan-test-app/caches/api",
|
|
860
|
-
"DOCKER_DRIVER": "overlay2",
|
|
861
|
-
"DOCKER_HOST": "tcp://0.0.0.0:2375",
|
|
862
|
-
"DOCKER_IMAGE": "europe-west6-docker.pkg.dev/google-project-id/catladder-deploy/pan-test-app/review/api/mr1234",
|
|
863
|
-
"DOCKER_IMAGE_TAG": "$CI_COMMIT_SHA",
|
|
864
|
-
"DOCKER_REGISTRY": "europe-west6-docker.pkg.dev",
|
|
865
|
-
"DOCKER_TLS_CERTDIR": "",
|
|
866
|
-
"ENV_SHORT": "review",
|
|
867
|
-
"ENV_TYPE": "review",
|
|
868
|
-
"ENV_VARS": "ENV_SHORT: 'review'
|
|
869
|
-
APP_DIR: 'api'
|
|
870
|
-
ENV_TYPE: 'review'
|
|
871
|
-
BUILD_INFO_ID: 'some-id'
|
|
872
|
-
BUILD_INFO_BUILD_TIME: '01-01-2023 12:13:14'
|
|
873
|
-
BUILD_INFO_CURRENT_VERSION: '3.2.1'
|
|
874
|
-
HOST: 'pan-test-app-review-mr1234-api-unknown-host.example.com'
|
|
875
|
-
ROOT_URL: 'https://pan-test-app-review-mr1234-api-unknown-host.example.com'
|
|
876
|
-
HOST_CANONICAL: 'pan-test-app-review-mr1234-api-unknown-host.example.com'
|
|
877
|
-
ROOT_URL_INTERNAL: 'https://pan-test-app-review-mr1234-api-unknown-host.example.com'
|
|
878
|
-
HOST_INTERNAL: 'pan-test-app-review-mr1234-api-unknown-host.example.com'
|
|
879
|
-
DEPLOY_CLOUD_RUN_PROJECT_ID: 'google-project-id'
|
|
880
|
-
DEPLOY_CLOUD_RUN_REGION: 'europe-west6'
|
|
881
|
-
GCLOUD_RUN_canonicalHostSuffix: '$CL_review_api_GCLOUD_RUN_canonicalHostSuffix'
|
|
882
|
-
_ALL_ENV_VAR_KEYS: '["ENV_SHORT","APP_DIR","ENV_TYPE","BUILD_INFO_ID","BUILD_INFO_BUILD_TIME","BUILD_INFO_CURRENT_VERSION","HOST","ROOT_URL","HOST_CANONICAL","ROOT_URL_INTERNAL","HOST_INTERNAL","DEPLOY_CLOUD_RUN_PROJECT_ID","DEPLOY_CLOUD_RUN_REGION","GCLOUD_DEPLOY_credentialsKey","GCLOUD_RUN_canonicalHostSuffix"]'
|
|
883
|
-
",
|
|
884
|
-
"GCLOUD_DEPLOY_credentialsKey": "$CL_review_api_GCLOUD_DEPLOY_credentialsKey",
|
|
885
|
-
"GCLOUD_RUN_canonicalHostSuffix": "$CL_review_api_GCLOUD_RUN_canonicalHostSuffix",
|
|
886
|
-
"HOST": "pan-test-app-review-mr1234-api-unknown-host.example.com",
|
|
887
|
-
"HOST_CANONICAL": "pan-test-app-review-mr1234-api-unknown-host.example.com",
|
|
888
|
-
"HOST_INTERNAL": "pan-test-app-review-mr1234-api-unknown-host.example.com",
|
|
889
933
|
"KUBERNETES_CPU_REQUEST": "0.5",
|
|
890
934
|
"KUBERNETES_MEMORY_LIMIT": "400Mi",
|
|
891
935
|
"KUBERNETES_MEMORY_REQUEST": "200Mi",
|
|
892
|
-
"ROOT_URL": "https://pan-test-app-review-mr1234-api-unknown-host.example.com",
|
|
893
|
-
"ROOT_URL_INTERNAL": "https://pan-test-app-review-mr1234-api-unknown-host.example.com",
|
|
894
|
-
"_ALL_ENV_VAR_KEYS": "["ENV_SHORT","APP_DIR","ENV_TYPE","BUILD_INFO_ID","BUILD_INFO_BUILD_TIME","BUILD_INFO_CURRENT_VERSION","HOST","ROOT_URL","HOST_CANONICAL","ROOT_URL_INTERNAL","HOST_INTERNAL","DEPLOY_CLOUD_RUN_PROJECT_ID","DEPLOY_CLOUD_RUN_REGION","GCLOUD_DEPLOY_credentialsKey","GCLOUD_RUN_canonicalHostSuffix"]",
|
|
895
936
|
},
|
|
896
937
|
},
|
|
897
938
|
"api 🛑 Stop ⚠️ | review ": {
|
|
939
|
+
"allow_failure": true,
|
|
940
|
+
"artifacts": {
|
|
941
|
+
"reports": {
|
|
942
|
+
"dotenv": "gitlab_environment.env",
|
|
943
|
+
},
|
|
944
|
+
},
|
|
898
945
|
"environment": {
|
|
899
946
|
"action": "stop",
|
|
900
|
-
"name": "review/
|
|
901
|
-
"url": "
|
|
947
|
+
"name": "review/$CI_COMMIT_REF_NAME/api",
|
|
948
|
+
"url": "$CL_GITLAB_ENVIRONMENT_URL",
|
|
902
949
|
},
|
|
903
950
|
"image": "path/to/docker/gcloud:the-version",
|
|
904
951
|
"interruptible": true,
|
|
@@ -912,31 +959,32 @@ _ALL_ENV_VAR_KEYS: '["ENV_SHORT","APP_DIR","ENV_TYPE","BUILD_INFO_ID","BUILD_INF
|
|
|
912
959
|
},
|
|
913
960
|
"rules": [
|
|
914
961
|
{
|
|
915
|
-
"allow_failure": true,
|
|
916
962
|
"if": "$CI_COMMIT_BRANCH =~ /^[0-9]+\\.([0-9]+|x)\\.x$/",
|
|
917
963
|
"when": "on_success",
|
|
918
964
|
},
|
|
919
965
|
{
|
|
920
|
-
"allow_failure": true,
|
|
921
966
|
"when": "manual",
|
|
922
967
|
},
|
|
923
968
|
],
|
|
924
969
|
"script": [
|
|
970
|
+
"echo -e "\\e[0Ksection_start:$(date +%s):injectvars[collapsed=true]\\r\\e[0KInjecting variables"",
|
|
971
|
+
"export CLOUDSDK_CORE_DISABLE_PROMPTS="1"",
|
|
972
|
+
"echo -e "\\e[0Ksection_end:$(date +%s):injectvars\\r\\e[0K"",
|
|
925
973
|
"set +e",
|
|
926
974
|
"gcloud auth activate-service-account --key-file=<(echo "$CL_review_api_GCLOUD_DEPLOY_credentialsKey")",
|
|
927
|
-
"gcloud run services delete pan-test-app-review-
|
|
928
|
-
"gcloud artifacts docker images delete europe-west6-docker.pkg.dev/google-project-id/catladder-deploy/pan-test-app/review/api
|
|
975
|
+
"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"; })-api" | awk '{print tolower($0)}') --project=google-project-id --region=europe-west6",
|
|
976
|
+
"gcloud artifacts docker images delete europe-west6-docker.pkg.dev/google-project-id/catladder-deploy/pan-test-app/review/api/$([ -n "$CI_MERGE_REQUEST_IID" ] && echo "mr$CI_MERGE_REQUEST_IID" || { [ -n "$CI_COMMIT_REF_SLUG" ] && echo "$CI_COMMIT_REF_SLUG" || echo "unknown"; }) --quiet --delete-tags",
|
|
929
977
|
"gcloud artifacts docker images list europe-west6-docker.pkg.dev/google-project-id/catladder-deploy/pan-test-app/caches/api --sort-by=~CREATE_TIME --format="value(version)" | tail -n +2 | while read -r version; do gcloud artifacts docker images delete europe-west6-docker.pkg.dev/google-project-id/catladder-deploy/pan-test-app/caches/api@$version --quiet --delete-tags; done",
|
|
930
978
|
"set +e",
|
|
931
979
|
"gcloud artifacts docker images delete europe-west6-docker.pkg.dev/google-project-id/catladder-deploy/pan-test-app/review/api --quiet --delete-tags",
|
|
932
980
|
"set -e",
|
|
933
981
|
"echo Disabling component in Dependency Track",
|
|
934
|
-
"/dtrackuploader https://dep.panter.swiss/ "$DT_KEY_PROD" disable "pan-test-app/api" "https
|
|
982
|
+
"/dtrackuploader https://dep.panter.swiss/ "$DT_KEY_PROD" disable "pan-test-app/api" "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"; })-api-$CL_review_api_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')" || true",
|
|
935
983
|
"set -e",
|
|
984
|
+
"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"; })-api-$CL_review_api_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')" >> gitlab_environment.env",
|
|
936
985
|
],
|
|
937
986
|
"stage": "stop review",
|
|
938
987
|
"variables": {
|
|
939
|
-
"CLOUDSDK_CORE_DISABLE_PROMPTS": "1",
|
|
940
988
|
"GIT_STRATEGY": "none",
|
|
941
989
|
"KUBERNETES_CPU_REQUEST": "0.5",
|
|
942
990
|
"KUBERNETES_MEMORY_LIMIT": "400Mi",
|
|
@@ -956,12 +1004,14 @@ _ALL_ENV_VAR_KEYS: '["ENV_SHORT","APP_DIR","ENV_TYPE","BUILD_INFO_ID","BUILD_INF
|
|
|
956
1004
|
],
|
|
957
1005
|
},
|
|
958
1006
|
"script": [
|
|
1007
|
+
"echo -e "\\e[0Ksection_start:$(date +%s):injectvars[collapsed=true]\\r\\e[0KInjecting variables"",
|
|
1008
|
+
"export APP_PATH="api"",
|
|
1009
|
+
"echo -e "\\e[0Ksection_end:$(date +%s):injectvars\\r\\e[0K"",
|
|
959
1010
|
"cd api",
|
|
960
1011
|
"yarn npm audit --environment production",
|
|
961
1012
|
],
|
|
962
1013
|
"stage": "test",
|
|
963
1014
|
"variables": {
|
|
964
|
-
"APP_PATH": "api",
|
|
965
1015
|
"KUBERNETES_CPU_REQUEST": "0.5",
|
|
966
1016
|
"KUBERNETES_MEMORY_LIMIT": "4Gi",
|
|
967
1017
|
"KUBERNETES_MEMORY_REQUEST": "2Gi",
|
|
@@ -995,6 +1045,9 @@ _ALL_ENV_VAR_KEYS: '["ENV_SHORT","APP_DIR","ENV_TYPE","BUILD_INFO_ID","BUILD_INF
|
|
|
995
1045
|
],
|
|
996
1046
|
},
|
|
997
1047
|
"script": [
|
|
1048
|
+
"echo -e "\\e[0Ksection_start:$(date +%s):injectvars[collapsed=true]\\r\\e[0KInjecting variables"",
|
|
1049
|
+
"export APP_PATH="api"",
|
|
1050
|
+
"echo -e "\\e[0Ksection_end:$(date +%s):injectvars\\r\\e[0K"",
|
|
998
1051
|
"echo -e "\\e[0Ksection_start:$(date +%s):nodeinstall[collapsed=true]\\r\\e[0KEnsure node version"",
|
|
999
1052
|
"if [ -f ~/.nvm/nvm.sh ]; then source ~/.nvm/nvm.sh; fi",
|
|
1000
1053
|
"if command -v nvm &> /dev/null && [ -f ./.nvmrc ]; then nvm install; fi",
|
|
@@ -1011,7 +1064,6 @@ _ALL_ENV_VAR_KEYS: '["ENV_SHORT","APP_DIR","ENV_TYPE","BUILD_INFO_ID","BUILD_INF
|
|
|
1011
1064
|
],
|
|
1012
1065
|
"stage": "test",
|
|
1013
1066
|
"variables": {
|
|
1014
|
-
"APP_PATH": "api",
|
|
1015
1067
|
"KUBERNETES_CPU_REQUEST": "0.5",
|
|
1016
1068
|
"KUBERNETES_MEMORY_LIMIT": "4Gi",
|
|
1017
1069
|
"KUBERNETES_MEMORY_REQUEST": "2Gi",
|
|
@@ -1035,6 +1087,8 @@ _ALL_ENV_VAR_KEYS: '["ENV_SHORT","APP_DIR","ENV_TYPE","BUILD_INFO_ID","BUILD_INF
|
|
|
1035
1087
|
],
|
|
1036
1088
|
},
|
|
1037
1089
|
"script": [
|
|
1090
|
+
"echo -e "\\e[0Ksection_start:$(date +%s):injectvars[collapsed=true]\\r\\e[0KInjecting variables"",
|
|
1091
|
+
"echo -e "\\e[0Ksection_end:$(date +%s):injectvars\\r\\e[0K"",
|
|
1038
1092
|
"trivy fs --quiet --format cyclonedx --output "__sbom.json" api",
|
|
1039
1093
|
],
|
|
1040
1094
|
"stage": "build",
|
|
@@ -1087,7 +1141,7 @@ _ALL_ENV_VAR_KEYS: '["ENV_SHORT","APP_DIR","ENV_TYPE","BUILD_INFO_ID","BUILD_INF
|
|
|
1087
1141
|
],
|
|
1088
1142
|
"variables": {
|
|
1089
1143
|
"FF_USE_FASTZIP": "true",
|
|
1090
|
-
"GIT_DEPTH": 1,
|
|
1144
|
+
"GIT_DEPTH": "1",
|
|
1091
1145
|
},
|
|
1092
1146
|
"workflow": {
|
|
1093
1147
|
"rules": [
|
|
@@ -1164,7 +1218,25 @@ _ALL_ENV_VAR_KEYS: '["ENV_SHORT","APP_DIR","ENV_TYPE","BUILD_INFO_ID","BUILD_INF
|
|
|
1164
1218
|
],
|
|
1165
1219
|
},
|
|
1166
1220
|
"script": [
|
|
1167
|
-
"echo
|
|
1221
|
+
"echo -e "\\e[0Ksection_start:$(date +%s):injectvars[collapsed=true]\\r\\e[0KInjecting variables"",
|
|
1222
|
+
"export ENV_SHORT="prod"",
|
|
1223
|
+
"export APP_DIR="api"",
|
|
1224
|
+
"export ENV_TYPE="prod"",
|
|
1225
|
+
"export BUILD_INFO_BUILD_ID="$(git describe --tags 2>/dev/null || git rev-parse HEAD)"",
|
|
1226
|
+
"export BUILD_INFO_BUILD_TIME="$CI_JOB_STARTED_AT"",
|
|
1227
|
+
"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\\///'); [ -z "$tag" ] && echo "v0.0.0" || echo "$tag")"",
|
|
1228
|
+
"export HOST="$(printf %s "pan-test-app-prod-api-$CL_prod_api_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')"",
|
|
1229
|
+
"export ROOT_URL="https://$(printf %s "pan-test-app-prod-api-$CL_prod_api_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')"",
|
|
1230
|
+
"export HOST_INTERNAL="$(printf %s "pan-test-app-prod-api-$CL_prod_api_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')"",
|
|
1231
|
+
"export HOST_CANONICAL="$(printf %s "pan-test-app-prod-api-$CL_prod_api_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')"",
|
|
1232
|
+
"export ROOT_URL_INTERNAL="https://$(printf %s "pan-test-app-prod-api-$CL_prod_api_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')"",
|
|
1233
|
+
"export DEPLOY_CLOUD_RUN_PROJECT_ID="google-project-id"",
|
|
1234
|
+
"export DEPLOY_CLOUD_RUN_REGION="europe-west6"",
|
|
1235
|
+
"export GCLOUD_DEPLOY_credentialsKey="$CL_prod_api_GCLOUD_DEPLOY_credentialsKey"",
|
|
1236
|
+
"export GCLOUD_RUN_canonicalHostSuffix="$CL_prod_api_GCLOUD_RUN_canonicalHostSuffix"",
|
|
1237
|
+
"export _ALL_ENV_VAR_KEYS="[\\"ENV_SHORT\\",\\"APP_DIR\\",\\"ENV_TYPE\\",\\"BUILD_INFO_BUILD_ID\\",\\"BUILD_INFO_BUILD_TIME\\",\\"BUILD_INFO_CURRENT_VERSION\\",\\"HOST\\",\\"ROOT_URL\\",\\"HOST_INTERNAL\\",\\"HOST_CANONICAL\\",\\"ROOT_URL_INTERNAL\\",\\"DEPLOY_CLOUD_RUN_PROJECT_ID\\",\\"DEPLOY_CLOUD_RUN_REGION\\",\\"GCLOUD_DEPLOY_credentialsKey\\",\\"GCLOUD_RUN_canonicalHostSuffix\\"]"",
|
|
1238
|
+
"echo -e "\\e[0Ksection_end:$(date +%s):injectvars\\r\\e[0K"",
|
|
1239
|
+
"echo '{"id":"$(git describe --tags 2>/dev/null || git rev-parse HEAD)","time":"$CI_JOB_STARTED_AT"}' > api/__build_info.json",
|
|
1168
1240
|
"echo -e "\\e[0Ksection_start:$(date +%s):nodeinstall[collapsed=true]\\r\\e[0KEnsure node version"",
|
|
1169
1241
|
"if [ -f ~/.nvm/nvm.sh ]; then source ~/.nvm/nvm.sh; fi",
|
|
1170
1242
|
"if command -v nvm &> /dev/null && [ -f ./.nvmrc ]; then nvm install; fi",
|
|
@@ -1181,25 +1253,9 @@ _ALL_ENV_VAR_KEYS: '["ENV_SHORT","APP_DIR","ENV_TYPE","BUILD_INFO_ID","BUILD_INF
|
|
|
1181
1253
|
],
|
|
1182
1254
|
"stage": "build",
|
|
1183
1255
|
"variables": {
|
|
1184
|
-
"APP_DIR": "api",
|
|
1185
|
-
"BUILD_INFO_BUILD_TIME": "01-01-2023 12:13:14",
|
|
1186
|
-
"BUILD_INFO_CURRENT_VERSION": "3.2.1",
|
|
1187
|
-
"BUILD_INFO_ID": "some-id",
|
|
1188
|
-
"DEPLOY_CLOUD_RUN_PROJECT_ID": "google-project-id",
|
|
1189
|
-
"DEPLOY_CLOUD_RUN_REGION": "europe-west6",
|
|
1190
|
-
"ENV_SHORT": "prod",
|
|
1191
|
-
"ENV_TYPE": "prod",
|
|
1192
|
-
"GCLOUD_DEPLOY_credentialsKey": "$CL_prod_api_GCLOUD_DEPLOY_credentialsKey",
|
|
1193
|
-
"GCLOUD_RUN_canonicalHostSuffix": "$CL_prod_api_GCLOUD_RUN_canonicalHostSuffix",
|
|
1194
|
-
"HOST": "pan-test-app-prod-api-unknown-host.example.com",
|
|
1195
|
-
"HOST_CANONICAL": "pan-test-app-prod-api-unknown-host.example.com",
|
|
1196
|
-
"HOST_INTERNAL": "pan-test-app-prod-api-unknown-host.example.com",
|
|
1197
1256
|
"KUBERNETES_CPU_REQUEST": "0.5",
|
|
1198
1257
|
"KUBERNETES_MEMORY_LIMIT": "4Gi",
|
|
1199
1258
|
"KUBERNETES_MEMORY_REQUEST": "2Gi",
|
|
1200
|
-
"ROOT_URL": "https://pan-test-app-prod-api-unknown-host.example.com",
|
|
1201
|
-
"ROOT_URL_INTERNAL": "https://pan-test-app-prod-api-unknown-host.example.com",
|
|
1202
|
-
"_ALL_ENV_VAR_KEYS": "["ENV_SHORT","APP_DIR","ENV_TYPE","BUILD_INFO_ID","BUILD_INFO_BUILD_TIME","BUILD_INFO_CURRENT_VERSION","HOST","ROOT_URL","HOST_CANONICAL","ROOT_URL_INTERNAL","HOST_INTERNAL","DEPLOY_CLOUD_RUN_PROJECT_ID","DEPLOY_CLOUD_RUN_REGION","GCLOUD_DEPLOY_credentialsKey","GCLOUD_RUN_canonicalHostSuffix"]",
|
|
1203
1259
|
},
|
|
1204
1260
|
},
|
|
1205
1261
|
"api 🔨 app | stage ": {
|
|
@@ -1249,7 +1305,25 @@ _ALL_ENV_VAR_KEYS: '["ENV_SHORT","APP_DIR","ENV_TYPE","BUILD_INFO_ID","BUILD_INF
|
|
|
1249
1305
|
],
|
|
1250
1306
|
},
|
|
1251
1307
|
"script": [
|
|
1252
|
-
"echo
|
|
1308
|
+
"echo -e "\\e[0Ksection_start:$(date +%s):injectvars[collapsed=true]\\r\\e[0KInjecting variables"",
|
|
1309
|
+
"export ENV_SHORT="stage"",
|
|
1310
|
+
"export APP_DIR="api"",
|
|
1311
|
+
"export ENV_TYPE="stage"",
|
|
1312
|
+
"export BUILD_INFO_BUILD_ID="$(git describe --tags 2>/dev/null || git rev-parse HEAD)"",
|
|
1313
|
+
"export BUILD_INFO_BUILD_TIME="$CI_JOB_STARTED_AT"",
|
|
1314
|
+
"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\\///'); [ -z "$tag" ] && echo "v0.0.0" || echo "$tag")"",
|
|
1315
|
+
"export HOST="$(printf %s "pan-test-app-stage-api-$CL_stage_api_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')"",
|
|
1316
|
+
"export ROOT_URL="https://$(printf %s "pan-test-app-stage-api-$CL_stage_api_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')"",
|
|
1317
|
+
"export HOST_INTERNAL="$(printf %s "pan-test-app-stage-api-$CL_stage_api_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')"",
|
|
1318
|
+
"export HOST_CANONICAL="$(printf %s "pan-test-app-stage-api-$CL_stage_api_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')"",
|
|
1319
|
+
"export ROOT_URL_INTERNAL="https://$(printf %s "pan-test-app-stage-api-$CL_stage_api_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')"",
|
|
1320
|
+
"export DEPLOY_CLOUD_RUN_PROJECT_ID="google-project-id"",
|
|
1321
|
+
"export DEPLOY_CLOUD_RUN_REGION="europe-west6"",
|
|
1322
|
+
"export GCLOUD_DEPLOY_credentialsKey="$CL_stage_api_GCLOUD_DEPLOY_credentialsKey"",
|
|
1323
|
+
"export GCLOUD_RUN_canonicalHostSuffix="$CL_stage_api_GCLOUD_RUN_canonicalHostSuffix"",
|
|
1324
|
+
"export _ALL_ENV_VAR_KEYS="[\\"ENV_SHORT\\",\\"APP_DIR\\",\\"ENV_TYPE\\",\\"BUILD_INFO_BUILD_ID\\",\\"BUILD_INFO_BUILD_TIME\\",\\"BUILD_INFO_CURRENT_VERSION\\",\\"HOST\\",\\"ROOT_URL\\",\\"HOST_INTERNAL\\",\\"HOST_CANONICAL\\",\\"ROOT_URL_INTERNAL\\",\\"DEPLOY_CLOUD_RUN_PROJECT_ID\\",\\"DEPLOY_CLOUD_RUN_REGION\\",\\"GCLOUD_DEPLOY_credentialsKey\\",\\"GCLOUD_RUN_canonicalHostSuffix\\"]"",
|
|
1325
|
+
"echo -e "\\e[0Ksection_end:$(date +%s):injectvars\\r\\e[0K"",
|
|
1326
|
+
"echo '{"id":"$(git describe --tags 2>/dev/null || git rev-parse HEAD)","time":"$CI_JOB_STARTED_AT"}' > api/__build_info.json",
|
|
1253
1327
|
"echo -e "\\e[0Ksection_start:$(date +%s):nodeinstall[collapsed=true]\\r\\e[0KEnsure node version"",
|
|
1254
1328
|
"if [ -f ~/.nvm/nvm.sh ]; then source ~/.nvm/nvm.sh; fi",
|
|
1255
1329
|
"if command -v nvm &> /dev/null && [ -f ./.nvmrc ]; then nvm install; fi",
|
|
@@ -1266,25 +1340,9 @@ _ALL_ENV_VAR_KEYS: '["ENV_SHORT","APP_DIR","ENV_TYPE","BUILD_INFO_ID","BUILD_INF
|
|
|
1266
1340
|
],
|
|
1267
1341
|
"stage": "build",
|
|
1268
1342
|
"variables": {
|
|
1269
|
-
"APP_DIR": "api",
|
|
1270
|
-
"BUILD_INFO_BUILD_TIME": "01-01-2023 12:13:14",
|
|
1271
|
-
"BUILD_INFO_CURRENT_VERSION": "3.2.1",
|
|
1272
|
-
"BUILD_INFO_ID": "some-id",
|
|
1273
|
-
"DEPLOY_CLOUD_RUN_PROJECT_ID": "google-project-id",
|
|
1274
|
-
"DEPLOY_CLOUD_RUN_REGION": "europe-west6",
|
|
1275
|
-
"ENV_SHORT": "stage",
|
|
1276
|
-
"ENV_TYPE": "stage",
|
|
1277
|
-
"GCLOUD_DEPLOY_credentialsKey": "$CL_stage_api_GCLOUD_DEPLOY_credentialsKey",
|
|
1278
|
-
"GCLOUD_RUN_canonicalHostSuffix": "$CL_stage_api_GCLOUD_RUN_canonicalHostSuffix",
|
|
1279
|
-
"HOST": "pan-test-app-stage-api-unknown-host.example.com",
|
|
1280
|
-
"HOST_CANONICAL": "pan-test-app-stage-api-unknown-host.example.com",
|
|
1281
|
-
"HOST_INTERNAL": "pan-test-app-stage-api-unknown-host.example.com",
|
|
1282
1343
|
"KUBERNETES_CPU_REQUEST": "0.5",
|
|
1283
1344
|
"KUBERNETES_MEMORY_LIMIT": "4Gi",
|
|
1284
1345
|
"KUBERNETES_MEMORY_REQUEST": "2Gi",
|
|
1285
|
-
"ROOT_URL": "https://pan-test-app-stage-api-unknown-host.example.com",
|
|
1286
|
-
"ROOT_URL_INTERNAL": "https://pan-test-app-stage-api-unknown-host.example.com",
|
|
1287
|
-
"_ALL_ENV_VAR_KEYS": "["ENV_SHORT","APP_DIR","ENV_TYPE","BUILD_INFO_ID","BUILD_INFO_BUILD_TIME","BUILD_INFO_CURRENT_VERSION","HOST","ROOT_URL","HOST_CANONICAL","ROOT_URL_INTERNAL","HOST_INTERNAL","DEPLOY_CLOUD_RUN_PROJECT_ID","DEPLOY_CLOUD_RUN_REGION","GCLOUD_DEPLOY_credentialsKey","GCLOUD_RUN_canonicalHostSuffix"]",
|
|
1288
1346
|
},
|
|
1289
1347
|
},
|
|
1290
1348
|
"api 🔨 docker | prod ": {
|
|
@@ -1310,6 +1368,21 @@ _ALL_ENV_VAR_KEYS: '["ENV_SHORT","APP_DIR","ENV_TYPE","BUILD_INFO_ID","BUILD_INF
|
|
|
1310
1368
|
],
|
|
1311
1369
|
},
|
|
1312
1370
|
"script": [
|
|
1371
|
+
"echo -e "\\e[0Ksection_start:$(date +%s):injectvars[collapsed=true]\\r\\e[0KInjecting variables"",
|
|
1372
|
+
"export APP_DIR="api"",
|
|
1373
|
+
"export DOCKER_DIR="."",
|
|
1374
|
+
"export DOCKER_REGISTRY="europe-west6-docker.pkg.dev"",
|
|
1375
|
+
"export DOCKER_IMAGE="europe-west6-docker.pkg.dev/google-project-id/catladder-deploy/pan-test-app/prod/api"",
|
|
1376
|
+
"export DOCKER_CACHE_IMAGE="europe-west6-docker.pkg.dev/google-project-id/catladder-deploy/pan-test-app/caches/api"",
|
|
1377
|
+
"export DOCKER_IMAGE_TAG="$CI_COMMIT_SHA"",
|
|
1378
|
+
"export DOCKER_COPY_AND_INSTALL_APP="COPY --chown=node:node $APP_DIR .
|
|
1379
|
+
RUN yarn plugin import workspace-tools
|
|
1380
|
+
RUN yarn workspaces focus --production && yarn rebuild"",
|
|
1381
|
+
"export DOCKER_COPY_WORKSPACE_FILES="COPY --chown=node:node api/package.json /app/api/package.json
|
|
1382
|
+
COPY --chown=node:node api/yarn.lock /app/api/yarn.lock
|
|
1383
|
+
COPY --chown=node:node .yarnrc.yml /app/.yarnrc.yml
|
|
1384
|
+
COPY --chown=node:node .yarn /app/.yarn"",
|
|
1385
|
+
"echo -e "\\e[0Ksection_end:$(date +%s):injectvars\\r\\e[0K"",
|
|
1313
1386
|
"ensureNodeDockerfile",
|
|
1314
1387
|
"echo -e "\\e[0Ksection_start:$(date +%s):docker-login[collapsed=true]\\r\\e[0KDocker Login"",
|
|
1315
1388
|
"gcloud auth activate-service-account --key-file=<(echo "$CL_prod_api_GCLOUD_DEPLOY_credentialsKey")",
|
|
@@ -1334,24 +1407,9 @@ _ALL_ENV_VAR_KEYS: '["ENV_SHORT","APP_DIR","ENV_TYPE","BUILD_INFO_ID","BUILD_INF
|
|
|
1334
1407
|
],
|
|
1335
1408
|
"stage": "build",
|
|
1336
1409
|
"variables": {
|
|
1337
|
-
"APP_DIR": "api",
|
|
1338
|
-
"DOCKERFILE_ADDITIONS": undefined,
|
|
1339
|
-
"DOCKERFILE_ADDITIONS_END": undefined,
|
|
1340
1410
|
"DOCKER_BUILDKIT": "1",
|
|
1341
|
-
"DOCKER_CACHE_IMAGE": "europe-west6-docker.pkg.dev/google-project-id/catladder-deploy/pan-test-app/caches/api",
|
|
1342
|
-
"DOCKER_COPY_AND_INSTALL_APP": "COPY --chown=node:node $APP_DIR .
|
|
1343
|
-
RUN yarn plugin import workspace-tools
|
|
1344
|
-
RUN yarn workspaces focus --production && yarn rebuild",
|
|
1345
|
-
"DOCKER_COPY_WORKSPACE_FILES": "COPY --chown=node:node api/package.json /app/api/package.json
|
|
1346
|
-
COPY --chown=node:node api/yarn.lock /app/api/yarn.lock
|
|
1347
|
-
COPY --chown=node:node .yarnrc.yml /app/.yarnrc.yml
|
|
1348
|
-
COPY --chown=node:node .yarn /app/.yarn",
|
|
1349
|
-
"DOCKER_DIR": ".",
|
|
1350
1411
|
"DOCKER_DRIVER": "overlay2",
|
|
1351
1412
|
"DOCKER_HOST": "tcp://0.0.0.0:2375",
|
|
1352
|
-
"DOCKER_IMAGE": "europe-west6-docker.pkg.dev/google-project-id/catladder-deploy/pan-test-app/prod/api",
|
|
1353
|
-
"DOCKER_IMAGE_TAG": "$CI_COMMIT_SHA",
|
|
1354
|
-
"DOCKER_REGISTRY": "europe-west6-docker.pkg.dev",
|
|
1355
1413
|
"DOCKER_TLS_CERTDIR": "",
|
|
1356
1414
|
"KUBERNETES_CPU_REQUEST": "0.5",
|
|
1357
1415
|
"KUBERNETES_MEMORY_LIMIT": "2Gi",
|
|
@@ -1381,6 +1439,21 @@ COPY --chown=node:node .yarn /app/.yarn",
|
|
|
1381
1439
|
],
|
|
1382
1440
|
},
|
|
1383
1441
|
"script": [
|
|
1442
|
+
"echo -e "\\e[0Ksection_start:$(date +%s):injectvars[collapsed=true]\\r\\e[0KInjecting variables"",
|
|
1443
|
+
"export APP_DIR="api"",
|
|
1444
|
+
"export DOCKER_DIR="."",
|
|
1445
|
+
"export DOCKER_REGISTRY="europe-west6-docker.pkg.dev"",
|
|
1446
|
+
"export DOCKER_IMAGE="europe-west6-docker.pkg.dev/google-project-id/catladder-deploy/pan-test-app/stage/api"",
|
|
1447
|
+
"export DOCKER_CACHE_IMAGE="europe-west6-docker.pkg.dev/google-project-id/catladder-deploy/pan-test-app/caches/api"",
|
|
1448
|
+
"export DOCKER_IMAGE_TAG="$CI_COMMIT_SHA"",
|
|
1449
|
+
"export DOCKER_COPY_AND_INSTALL_APP="COPY --chown=node:node $APP_DIR .
|
|
1450
|
+
RUN yarn plugin import workspace-tools
|
|
1451
|
+
RUN yarn workspaces focus --production && yarn rebuild"",
|
|
1452
|
+
"export DOCKER_COPY_WORKSPACE_FILES="COPY --chown=node:node api/package.json /app/api/package.json
|
|
1453
|
+
COPY --chown=node:node api/yarn.lock /app/api/yarn.lock
|
|
1454
|
+
COPY --chown=node:node .yarnrc.yml /app/.yarnrc.yml
|
|
1455
|
+
COPY --chown=node:node .yarn /app/.yarn"",
|
|
1456
|
+
"echo -e "\\e[0Ksection_end:$(date +%s):injectvars\\r\\e[0K"",
|
|
1384
1457
|
"ensureNodeDockerfile",
|
|
1385
1458
|
"echo -e "\\e[0Ksection_start:$(date +%s):docker-login[collapsed=true]\\r\\e[0KDocker Login"",
|
|
1386
1459
|
"gcloud auth activate-service-account --key-file=<(echo "$CL_stage_api_GCLOUD_DEPLOY_credentialsKey")",
|
|
@@ -1405,24 +1478,9 @@ COPY --chown=node:node .yarn /app/.yarn",
|
|
|
1405
1478
|
],
|
|
1406
1479
|
"stage": "build",
|
|
1407
1480
|
"variables": {
|
|
1408
|
-
"APP_DIR": "api",
|
|
1409
|
-
"DOCKERFILE_ADDITIONS": undefined,
|
|
1410
|
-
"DOCKERFILE_ADDITIONS_END": undefined,
|
|
1411
1481
|
"DOCKER_BUILDKIT": "1",
|
|
1412
|
-
"DOCKER_CACHE_IMAGE": "europe-west6-docker.pkg.dev/google-project-id/catladder-deploy/pan-test-app/caches/api",
|
|
1413
|
-
"DOCKER_COPY_AND_INSTALL_APP": "COPY --chown=node:node $APP_DIR .
|
|
1414
|
-
RUN yarn plugin import workspace-tools
|
|
1415
|
-
RUN yarn workspaces focus --production && yarn rebuild",
|
|
1416
|
-
"DOCKER_COPY_WORKSPACE_FILES": "COPY --chown=node:node api/package.json /app/api/package.json
|
|
1417
|
-
COPY --chown=node:node api/yarn.lock /app/api/yarn.lock
|
|
1418
|
-
COPY --chown=node:node .yarnrc.yml /app/.yarnrc.yml
|
|
1419
|
-
COPY --chown=node:node .yarn /app/.yarn",
|
|
1420
|
-
"DOCKER_DIR": ".",
|
|
1421
1482
|
"DOCKER_DRIVER": "overlay2",
|
|
1422
1483
|
"DOCKER_HOST": "tcp://0.0.0.0:2375",
|
|
1423
|
-
"DOCKER_IMAGE": "europe-west6-docker.pkg.dev/google-project-id/catladder-deploy/pan-test-app/stage/api",
|
|
1424
|
-
"DOCKER_IMAGE_TAG": "$CI_COMMIT_SHA",
|
|
1425
|
-
"DOCKER_REGISTRY": "europe-west6-docker.pkg.dev",
|
|
1426
1484
|
"DOCKER_TLS_CERTDIR": "",
|
|
1427
1485
|
"KUBERNETES_CPU_REQUEST": "0.5",
|
|
1428
1486
|
"KUBERNETES_MEMORY_LIMIT": "2Gi",
|
|
@@ -1432,15 +1490,15 @@ COPY --chown=node:node .yarn /app/.yarn",
|
|
|
1432
1490
|
"api 🚀 Deploy | prod ": {
|
|
1433
1491
|
"allow_failure": true,
|
|
1434
1492
|
"artifacts": {
|
|
1435
|
-
"
|
|
1436
|
-
"
|
|
1437
|
-
|
|
1493
|
+
"reports": {
|
|
1494
|
+
"dotenv": "gitlab_environment.env",
|
|
1495
|
+
},
|
|
1438
1496
|
},
|
|
1439
1497
|
"environment": {
|
|
1440
1498
|
"auto_stop_in": undefined,
|
|
1441
1499
|
"name": "prod/api",
|
|
1442
1500
|
"on_stop": "api 🛑 Stop ⚠️ | prod ",
|
|
1443
|
-
"url": "
|
|
1501
|
+
"url": "$CL_GITLAB_ENVIRONMENT_URL",
|
|
1444
1502
|
},
|
|
1445
1503
|
"image": "path/to/docker/gcloud:the-version",
|
|
1446
1504
|
"interruptible": true,
|
|
@@ -1471,13 +1529,71 @@ COPY --chown=node:node .yarn /app/.yarn",
|
|
|
1471
1529
|
},
|
|
1472
1530
|
],
|
|
1473
1531
|
"script": [
|
|
1532
|
+
"echo -e "\\e[0Ksection_start:$(date +%s):injectvars[collapsed=true]\\r\\e[0KInjecting variables"",
|
|
1533
|
+
"export ENV_SHORT="prod"",
|
|
1534
|
+
"export APP_DIR="api"",
|
|
1535
|
+
"export ENV_TYPE="prod"",
|
|
1536
|
+
"export BUILD_INFO_BUILD_ID="$(git describe --tags 2>/dev/null || git rev-parse HEAD)"",
|
|
1537
|
+
"export BUILD_INFO_BUILD_TIME="$CI_JOB_STARTED_AT"",
|
|
1538
|
+
"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\\///'); [ -z "$tag" ] && echo "v0.0.0" || echo "$tag")"",
|
|
1539
|
+
"export HOST="$(printf %s "pan-test-app-prod-api-$CL_prod_api_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')"",
|
|
1540
|
+
"export ROOT_URL="https://$(printf %s "pan-test-app-prod-api-$CL_prod_api_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')"",
|
|
1541
|
+
"export HOST_INTERNAL="$(printf %s "pan-test-app-prod-api-$CL_prod_api_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')"",
|
|
1542
|
+
"export HOST_CANONICAL="$(printf %s "pan-test-app-prod-api-$CL_prod_api_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')"",
|
|
1543
|
+
"export ROOT_URL_INTERNAL="https://$(printf %s "pan-test-app-prod-api-$CL_prod_api_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')"",
|
|
1544
|
+
"export DEPLOY_CLOUD_RUN_PROJECT_ID="google-project-id"",
|
|
1545
|
+
"export DEPLOY_CLOUD_RUN_REGION="europe-west6"",
|
|
1546
|
+
"export GCLOUD_DEPLOY_credentialsKey="$CL_prod_api_GCLOUD_DEPLOY_credentialsKey"",
|
|
1547
|
+
"export GCLOUD_RUN_canonicalHostSuffix="$CL_prod_api_GCLOUD_RUN_canonicalHostSuffix"",
|
|
1548
|
+
"export _ALL_ENV_VAR_KEYS="[\\"ENV_SHORT\\",\\"APP_DIR\\",\\"ENV_TYPE\\",\\"BUILD_INFO_BUILD_ID\\",\\"BUILD_INFO_BUILD_TIME\\",\\"BUILD_INFO_CURRENT_VERSION\\",\\"HOST\\",\\"ROOT_URL\\",\\"HOST_INTERNAL\\",\\"HOST_CANONICAL\\",\\"ROOT_URL_INTERNAL\\",\\"DEPLOY_CLOUD_RUN_PROJECT_ID\\",\\"DEPLOY_CLOUD_RUN_REGION\\",\\"GCLOUD_DEPLOY_credentialsKey\\",\\"GCLOUD_RUN_canonicalHostSuffix\\"]"",
|
|
1549
|
+
"export DOCKER_REGISTRY="europe-west6-docker.pkg.dev"",
|
|
1550
|
+
"export DOCKER_IMAGE="europe-west6-docker.pkg.dev/google-project-id/catladder-deploy/pan-test-app/prod/api"",
|
|
1551
|
+
"export DOCKER_CACHE_IMAGE="europe-west6-docker.pkg.dev/google-project-id/catladder-deploy/pan-test-app/caches/api"",
|
|
1552
|
+
"export DOCKER_IMAGE_TAG="$CI_COMMIT_SHA"",
|
|
1553
|
+
"export CLOUDSDK_CORE_DISABLE_PROMPTS="1"",
|
|
1554
|
+
"echo -e "\\e[0Ksection_end:$(date +%s):injectvars\\r\\e[0K"",
|
|
1474
1555
|
"echo -e "\\e[0Ksection_start:$(date +%s):prepare[collapsed=true]\\r\\e[0KPrepare..."",
|
|
1475
1556
|
"gcloud auth activate-service-account --key-file=<(echo "$CL_prod_api_GCLOUD_DEPLOY_credentialsKey")",
|
|
1476
1557
|
"export GCLOUD_PROJECT_NUMBER=$(gcloud projects describe google-project-id --format="value(projectNumber)")",
|
|
1477
1558
|
"echo "GCLOUD_PROJECT_NUMBER: $GCLOUD_PROJECT_NUMBER"",
|
|
1478
1559
|
"echo -e "\\e[0Ksection_end:$(date +%s):prepare\\r\\e[0K"",
|
|
1560
|
+
"echo -e "\\e[0Ksection_start:$(date +%s):writeenvvars[collapsed=true]\\r\\e[0KWrite env vars to file"",
|
|
1561
|
+
"cat > ____envvars.yaml <<EOF
|
|
1562
|
+
ENV_SHORT: |-
|
|
1563
|
+
prod
|
|
1564
|
+
APP_DIR: |-
|
|
1565
|
+
api
|
|
1566
|
+
ENV_TYPE: |-
|
|
1567
|
+
prod
|
|
1568
|
+
BUILD_INFO_BUILD_ID: |-
|
|
1569
|
+
$(printf %s "$(git describe --tags 2>/dev/null || git rev-parse HEAD)" | sed 's/^/ /')
|
|
1570
|
+
BUILD_INFO_BUILD_TIME: |-
|
|
1571
|
+
$(printf %s "$CI_JOB_STARTED_AT" | sed 's/^/ /')
|
|
1572
|
+
BUILD_INFO_CURRENT_VERSION: |-
|
|
1573
|
+
$(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\\///'); [ -z "$tag" ] && echo "v0.0.0" || echo "$tag")" | sed 's/^/ /')
|
|
1574
|
+
HOST: |-
|
|
1575
|
+
$(printf %s "$(printf %s "pan-test-app-prod-api-$CL_prod_api_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')" | sed 's/^/ /')
|
|
1576
|
+
ROOT_URL: |-
|
|
1577
|
+
$(printf %s "https://$(printf %s "pan-test-app-prod-api-$CL_prod_api_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')" | sed 's/^/ /')
|
|
1578
|
+
HOST_INTERNAL: |-
|
|
1579
|
+
$(printf %s "$(printf %s "pan-test-app-prod-api-$CL_prod_api_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')" | sed 's/^/ /')
|
|
1580
|
+
HOST_CANONICAL: |-
|
|
1581
|
+
$(printf %s "$(printf %s "pan-test-app-prod-api-$CL_prod_api_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')" | sed 's/^/ /')
|
|
1582
|
+
ROOT_URL_INTERNAL: |-
|
|
1583
|
+
$(printf %s "https://$(printf %s "pan-test-app-prod-api-$CL_prod_api_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')" | sed 's/^/ /')
|
|
1584
|
+
DEPLOY_CLOUD_RUN_PROJECT_ID: |-
|
|
1585
|
+
google-project-id
|
|
1586
|
+
DEPLOY_CLOUD_RUN_REGION: |-
|
|
1587
|
+
europe-west6
|
|
1588
|
+
GCLOUD_RUN_canonicalHostSuffix: |-
|
|
1589
|
+
$(printf %s "$CL_prod_api_GCLOUD_RUN_canonicalHostSuffix" | sed 's/^/ /')
|
|
1590
|
+
_ALL_ENV_VAR_KEYS: |-
|
|
1591
|
+
["ENV_SHORT","APP_DIR","ENV_TYPE","BUILD_INFO_BUILD_ID","BUILD_INFO_BUILD_TIME","BUILD_INFO_CURRENT_VERSION","HOST","ROOT_URL","HOST_INTERNAL","HOST_CANONICAL","ROOT_URL_INTERNAL","DEPLOY_CLOUD_RUN_PROJECT_ID","DEPLOY_CLOUD_RUN_REGION","GCLOUD_DEPLOY_credentialsKey","GCLOUD_RUN_canonicalHostSuffix"]
|
|
1592
|
+
|
|
1593
|
+
EOF
|
|
1594
|
+
",
|
|
1595
|
+
"echo -e "\\e[0Ksection_end:$(date +%s):writeenvvars\\r\\e[0K"",
|
|
1479
1596
|
"echo -e "\\e[0Ksection_start:$(date +%s):deploy[collapsed=true]\\r\\e[0KDeploy to cloud run"",
|
|
1480
|
-
"echo "$ENV_VARS" > ____envvars.yaml",
|
|
1481
1597
|
"gcloud run deploy pan-test-app-prod-api --command="yarn,start" --image=europe-west6-docker.pkg.dev/google-project-id/catladder-deploy/pan-test-app/prod/api:$DOCKER_IMAGE_TAG --project=google-project-id --region=europe-west6 --labels=customer-name=pan,component-name=api,app-name=test-app,env-type=prod,env-name=prod,build-type=node,cloud-run-service-name=pan-test-app-prod-api --env-vars-file=____envvars.yaml --min-instances=0 --max-instances=100 --cpu-throttling --allow-unauthenticated --ingress=all --cpu-boost --execution-environment=gen2",
|
|
1482
1598
|
"echo -e "\\e[0Ksection_end:$(date +%s):deploy\\r\\e[0K"",
|
|
1483
1599
|
"echo -e "\\e[0Ksection_start:$(date +%s):cleanup[collapsed=true]\\r\\e[0KCleanup"",
|
|
@@ -1486,76 +1602,28 @@ COPY --chown=node:node .yarn /app/.yarn",
|
|
|
1486
1602
|
"gcloud artifacts docker images list europe-west6-docker.pkg.dev/google-project-id/catladder-deploy/pan-test-app/caches/api --sort-by=~CREATE_TIME --format="value(version)" | tail -n +2 | while read -r version; do gcloud artifacts docker images delete europe-west6-docker.pkg.dev/google-project-id/catladder-deploy/pan-test-app/caches/api@$version --quiet --delete-tags; done",
|
|
1487
1603
|
"echo -e "\\e[0Ksection_end:$(date +%s):cleanup\\r\\e[0K"",
|
|
1488
1604
|
"echo Uploading SBOM to Dependency Track",
|
|
1489
|
-
"/dtrackuploader https://dep.panter.swiss/ "$DT_KEY_PROD" upload "pan-test-app/api" "https
|
|
1490
|
-
|
|
1491
|
-
"services": [
|
|
1492
|
-
{
|
|
1493
|
-
"command": [
|
|
1494
|
-
"--tls=false",
|
|
1495
|
-
],
|
|
1496
|
-
"name": "docker:24.0.6-dind",
|
|
1497
|
-
},
|
|
1605
|
+
"/dtrackuploader https://dep.panter.swiss/ "$DT_KEY_PROD" upload "pan-test-app/api" "https://$(printf %s "pan-test-app-prod-api-$CL_prod_api_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')" "__sbom.json" vex.json || true",
|
|
1606
|
+
"echo "CL_GITLAB_ENVIRONMENT_URL=https://$(printf %s "pan-test-app-prod-api-$CL_prod_api_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')" >> gitlab_environment.env",
|
|
1498
1607
|
],
|
|
1499
1608
|
"stage": "deploy prod",
|
|
1500
1609
|
"variables": {
|
|
1501
|
-
"APP_DIR": "api",
|
|
1502
|
-
"BUILD_INFO_BUILD_TIME": "01-01-2023 12:13:14",
|
|
1503
|
-
"BUILD_INFO_CURRENT_VERSION": "3.2.1",
|
|
1504
|
-
"BUILD_INFO_ID": "some-id",
|
|
1505
|
-
"CLOUDSDK_CORE_DISABLE_PROMPTS": "1",
|
|
1506
|
-
"DEPLOY_CLOUD_RUN_PROJECT_ID": "google-project-id",
|
|
1507
|
-
"DEPLOY_CLOUD_RUN_REGION": "europe-west6",
|
|
1508
|
-
"DOCKER_BUILDKIT": "1",
|
|
1509
|
-
"DOCKER_CACHE_IMAGE": "europe-west6-docker.pkg.dev/google-project-id/catladder-deploy/pan-test-app/caches/api",
|
|
1510
|
-
"DOCKER_DRIVER": "overlay2",
|
|
1511
|
-
"DOCKER_HOST": "tcp://0.0.0.0:2375",
|
|
1512
|
-
"DOCKER_IMAGE": "europe-west6-docker.pkg.dev/google-project-id/catladder-deploy/pan-test-app/prod/api",
|
|
1513
|
-
"DOCKER_IMAGE_TAG": "$CI_COMMIT_SHA",
|
|
1514
|
-
"DOCKER_REGISTRY": "europe-west6-docker.pkg.dev",
|
|
1515
|
-
"DOCKER_TLS_CERTDIR": "",
|
|
1516
|
-
"ENV_SHORT": "prod",
|
|
1517
|
-
"ENV_TYPE": "prod",
|
|
1518
|
-
"ENV_VARS": "ENV_SHORT: 'prod'
|
|
1519
|
-
APP_DIR: 'api'
|
|
1520
|
-
ENV_TYPE: 'prod'
|
|
1521
|
-
BUILD_INFO_ID: 'some-id'
|
|
1522
|
-
BUILD_INFO_BUILD_TIME: '01-01-2023 12:13:14'
|
|
1523
|
-
BUILD_INFO_CURRENT_VERSION: '3.2.1'
|
|
1524
|
-
HOST: 'pan-test-app-prod-api-unknown-host.example.com'
|
|
1525
|
-
ROOT_URL: 'https://pan-test-app-prod-api-unknown-host.example.com'
|
|
1526
|
-
HOST_CANONICAL: 'pan-test-app-prod-api-unknown-host.example.com'
|
|
1527
|
-
ROOT_URL_INTERNAL: 'https://pan-test-app-prod-api-unknown-host.example.com'
|
|
1528
|
-
HOST_INTERNAL: 'pan-test-app-prod-api-unknown-host.example.com'
|
|
1529
|
-
DEPLOY_CLOUD_RUN_PROJECT_ID: 'google-project-id'
|
|
1530
|
-
DEPLOY_CLOUD_RUN_REGION: 'europe-west6'
|
|
1531
|
-
GCLOUD_RUN_canonicalHostSuffix: '$CL_prod_api_GCLOUD_RUN_canonicalHostSuffix'
|
|
1532
|
-
_ALL_ENV_VAR_KEYS: '["ENV_SHORT","APP_DIR","ENV_TYPE","BUILD_INFO_ID","BUILD_INFO_BUILD_TIME","BUILD_INFO_CURRENT_VERSION","HOST","ROOT_URL","HOST_CANONICAL","ROOT_URL_INTERNAL","HOST_INTERNAL","DEPLOY_CLOUD_RUN_PROJECT_ID","DEPLOY_CLOUD_RUN_REGION","GCLOUD_DEPLOY_credentialsKey","GCLOUD_RUN_canonicalHostSuffix"]'
|
|
1533
|
-
",
|
|
1534
|
-
"GCLOUD_DEPLOY_credentialsKey": "$CL_prod_api_GCLOUD_DEPLOY_credentialsKey",
|
|
1535
|
-
"GCLOUD_RUN_canonicalHostSuffix": "$CL_prod_api_GCLOUD_RUN_canonicalHostSuffix",
|
|
1536
|
-
"HOST": "pan-test-app-prod-api-unknown-host.example.com",
|
|
1537
|
-
"HOST_CANONICAL": "pan-test-app-prod-api-unknown-host.example.com",
|
|
1538
|
-
"HOST_INTERNAL": "pan-test-app-prod-api-unknown-host.example.com",
|
|
1539
1610
|
"KUBERNETES_CPU_REQUEST": "0.5",
|
|
1540
1611
|
"KUBERNETES_MEMORY_LIMIT": "400Mi",
|
|
1541
1612
|
"KUBERNETES_MEMORY_REQUEST": "200Mi",
|
|
1542
|
-
"ROOT_URL": "https://pan-test-app-prod-api-unknown-host.example.com",
|
|
1543
|
-
"ROOT_URL_INTERNAL": "https://pan-test-app-prod-api-unknown-host.example.com",
|
|
1544
|
-
"_ALL_ENV_VAR_KEYS": "["ENV_SHORT","APP_DIR","ENV_TYPE","BUILD_INFO_ID","BUILD_INFO_BUILD_TIME","BUILD_INFO_CURRENT_VERSION","HOST","ROOT_URL","HOST_CANONICAL","ROOT_URL_INTERNAL","HOST_INTERNAL","DEPLOY_CLOUD_RUN_PROJECT_ID","DEPLOY_CLOUD_RUN_REGION","GCLOUD_DEPLOY_credentialsKey","GCLOUD_RUN_canonicalHostSuffix"]",
|
|
1545
1613
|
},
|
|
1546
1614
|
},
|
|
1547
1615
|
"api 🚀 Deploy | stage ": {
|
|
1548
1616
|
"allow_failure": false,
|
|
1549
1617
|
"artifacts": {
|
|
1550
|
-
"
|
|
1551
|
-
"
|
|
1552
|
-
|
|
1618
|
+
"reports": {
|
|
1619
|
+
"dotenv": "gitlab_environment.env",
|
|
1620
|
+
},
|
|
1553
1621
|
},
|
|
1554
1622
|
"environment": {
|
|
1555
1623
|
"auto_stop_in": undefined,
|
|
1556
1624
|
"name": "stage/api",
|
|
1557
1625
|
"on_stop": "api 🛑 Stop ⚠️ | stage ",
|
|
1558
|
-
"url": "
|
|
1626
|
+
"url": "$CL_GITLAB_ENVIRONMENT_URL",
|
|
1559
1627
|
},
|
|
1560
1628
|
"image": "path/to/docker/gcloud:the-version",
|
|
1561
1629
|
"interruptible": true,
|
|
@@ -1586,13 +1654,71 @@ _ALL_ENV_VAR_KEYS: '["ENV_SHORT","APP_DIR","ENV_TYPE","BUILD_INFO_ID","BUILD_INF
|
|
|
1586
1654
|
},
|
|
1587
1655
|
],
|
|
1588
1656
|
"script": [
|
|
1657
|
+
"echo -e "\\e[0Ksection_start:$(date +%s):injectvars[collapsed=true]\\r\\e[0KInjecting variables"",
|
|
1658
|
+
"export ENV_SHORT="stage"",
|
|
1659
|
+
"export APP_DIR="api"",
|
|
1660
|
+
"export ENV_TYPE="stage"",
|
|
1661
|
+
"export BUILD_INFO_BUILD_ID="$(git describe --tags 2>/dev/null || git rev-parse HEAD)"",
|
|
1662
|
+
"export BUILD_INFO_BUILD_TIME="$CI_JOB_STARTED_AT"",
|
|
1663
|
+
"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\\///'); [ -z "$tag" ] && echo "v0.0.0" || echo "$tag")"",
|
|
1664
|
+
"export HOST="$(printf %s "pan-test-app-stage-api-$CL_stage_api_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')"",
|
|
1665
|
+
"export ROOT_URL="https://$(printf %s "pan-test-app-stage-api-$CL_stage_api_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')"",
|
|
1666
|
+
"export HOST_INTERNAL="$(printf %s "pan-test-app-stage-api-$CL_stage_api_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')"",
|
|
1667
|
+
"export HOST_CANONICAL="$(printf %s "pan-test-app-stage-api-$CL_stage_api_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')"",
|
|
1668
|
+
"export ROOT_URL_INTERNAL="https://$(printf %s "pan-test-app-stage-api-$CL_stage_api_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')"",
|
|
1669
|
+
"export DEPLOY_CLOUD_RUN_PROJECT_ID="google-project-id"",
|
|
1670
|
+
"export DEPLOY_CLOUD_RUN_REGION="europe-west6"",
|
|
1671
|
+
"export GCLOUD_DEPLOY_credentialsKey="$CL_stage_api_GCLOUD_DEPLOY_credentialsKey"",
|
|
1672
|
+
"export GCLOUD_RUN_canonicalHostSuffix="$CL_stage_api_GCLOUD_RUN_canonicalHostSuffix"",
|
|
1673
|
+
"export _ALL_ENV_VAR_KEYS="[\\"ENV_SHORT\\",\\"APP_DIR\\",\\"ENV_TYPE\\",\\"BUILD_INFO_BUILD_ID\\",\\"BUILD_INFO_BUILD_TIME\\",\\"BUILD_INFO_CURRENT_VERSION\\",\\"HOST\\",\\"ROOT_URL\\",\\"HOST_INTERNAL\\",\\"HOST_CANONICAL\\",\\"ROOT_URL_INTERNAL\\",\\"DEPLOY_CLOUD_RUN_PROJECT_ID\\",\\"DEPLOY_CLOUD_RUN_REGION\\",\\"GCLOUD_DEPLOY_credentialsKey\\",\\"GCLOUD_RUN_canonicalHostSuffix\\"]"",
|
|
1674
|
+
"export DOCKER_REGISTRY="europe-west6-docker.pkg.dev"",
|
|
1675
|
+
"export DOCKER_IMAGE="europe-west6-docker.pkg.dev/google-project-id/catladder-deploy/pan-test-app/stage/api"",
|
|
1676
|
+
"export DOCKER_CACHE_IMAGE="europe-west6-docker.pkg.dev/google-project-id/catladder-deploy/pan-test-app/caches/api"",
|
|
1677
|
+
"export DOCKER_IMAGE_TAG="$CI_COMMIT_SHA"",
|
|
1678
|
+
"export CLOUDSDK_CORE_DISABLE_PROMPTS="1"",
|
|
1679
|
+
"echo -e "\\e[0Ksection_end:$(date +%s):injectvars\\r\\e[0K"",
|
|
1589
1680
|
"echo -e "\\e[0Ksection_start:$(date +%s):prepare[collapsed=true]\\r\\e[0KPrepare..."",
|
|
1590
1681
|
"gcloud auth activate-service-account --key-file=<(echo "$CL_stage_api_GCLOUD_DEPLOY_credentialsKey")",
|
|
1591
1682
|
"export GCLOUD_PROJECT_NUMBER=$(gcloud projects describe google-project-id --format="value(projectNumber)")",
|
|
1592
1683
|
"echo "GCLOUD_PROJECT_NUMBER: $GCLOUD_PROJECT_NUMBER"",
|
|
1593
1684
|
"echo -e "\\e[0Ksection_end:$(date +%s):prepare\\r\\e[0K"",
|
|
1685
|
+
"echo -e "\\e[0Ksection_start:$(date +%s):writeenvvars[collapsed=true]\\r\\e[0KWrite env vars to file"",
|
|
1686
|
+
"cat > ____envvars.yaml <<EOF
|
|
1687
|
+
ENV_SHORT: |-
|
|
1688
|
+
stage
|
|
1689
|
+
APP_DIR: |-
|
|
1690
|
+
api
|
|
1691
|
+
ENV_TYPE: |-
|
|
1692
|
+
stage
|
|
1693
|
+
BUILD_INFO_BUILD_ID: |-
|
|
1694
|
+
$(printf %s "$(git describe --tags 2>/dev/null || git rev-parse HEAD)" | sed 's/^/ /')
|
|
1695
|
+
BUILD_INFO_BUILD_TIME: |-
|
|
1696
|
+
$(printf %s "$CI_JOB_STARTED_AT" | sed 's/^/ /')
|
|
1697
|
+
BUILD_INFO_CURRENT_VERSION: |-
|
|
1698
|
+
$(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\\///'); [ -z "$tag" ] && echo "v0.0.0" || echo "$tag")" | sed 's/^/ /')
|
|
1699
|
+
HOST: |-
|
|
1700
|
+
$(printf %s "$(printf %s "pan-test-app-stage-api-$CL_stage_api_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')" | sed 's/^/ /')
|
|
1701
|
+
ROOT_URL: |-
|
|
1702
|
+
$(printf %s "https://$(printf %s "pan-test-app-stage-api-$CL_stage_api_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')" | sed 's/^/ /')
|
|
1703
|
+
HOST_INTERNAL: |-
|
|
1704
|
+
$(printf %s "$(printf %s "pan-test-app-stage-api-$CL_stage_api_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')" | sed 's/^/ /')
|
|
1705
|
+
HOST_CANONICAL: |-
|
|
1706
|
+
$(printf %s "$(printf %s "pan-test-app-stage-api-$CL_stage_api_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')" | sed 's/^/ /')
|
|
1707
|
+
ROOT_URL_INTERNAL: |-
|
|
1708
|
+
$(printf %s "https://$(printf %s "pan-test-app-stage-api-$CL_stage_api_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')" | sed 's/^/ /')
|
|
1709
|
+
DEPLOY_CLOUD_RUN_PROJECT_ID: |-
|
|
1710
|
+
google-project-id
|
|
1711
|
+
DEPLOY_CLOUD_RUN_REGION: |-
|
|
1712
|
+
europe-west6
|
|
1713
|
+
GCLOUD_RUN_canonicalHostSuffix: |-
|
|
1714
|
+
$(printf %s "$CL_stage_api_GCLOUD_RUN_canonicalHostSuffix" | sed 's/^/ /')
|
|
1715
|
+
_ALL_ENV_VAR_KEYS: |-
|
|
1716
|
+
["ENV_SHORT","APP_DIR","ENV_TYPE","BUILD_INFO_BUILD_ID","BUILD_INFO_BUILD_TIME","BUILD_INFO_CURRENT_VERSION","HOST","ROOT_URL","HOST_INTERNAL","HOST_CANONICAL","ROOT_URL_INTERNAL","DEPLOY_CLOUD_RUN_PROJECT_ID","DEPLOY_CLOUD_RUN_REGION","GCLOUD_DEPLOY_credentialsKey","GCLOUD_RUN_canonicalHostSuffix"]
|
|
1717
|
+
|
|
1718
|
+
EOF
|
|
1719
|
+
",
|
|
1720
|
+
"echo -e "\\e[0Ksection_end:$(date +%s):writeenvvars\\r\\e[0K"",
|
|
1594
1721
|
"echo -e "\\e[0Ksection_start:$(date +%s):deploy[collapsed=true]\\r\\e[0KDeploy to cloud run"",
|
|
1595
|
-
"echo "$ENV_VARS" > ____envvars.yaml",
|
|
1596
1722
|
"gcloud run deploy pan-test-app-stage-api --command="yarn,start" --image=europe-west6-docker.pkg.dev/google-project-id/catladder-deploy/pan-test-app/stage/api:$DOCKER_IMAGE_TAG --project=google-project-id --region=europe-west6 --labels=customer-name=pan,component-name=api,app-name=test-app,env-type=stage,env-name=stage,build-type=node,cloud-run-service-name=pan-test-app-stage-api --env-vars-file=____envvars.yaml --min-instances=0 --max-instances=100 --cpu-throttling --allow-unauthenticated --ingress=all --cpu-boost --execution-environment=gen2",
|
|
1597
1723
|
"echo -e "\\e[0Ksection_end:$(date +%s):deploy\\r\\e[0K"",
|
|
1598
1724
|
"echo -e "\\e[0Ksection_start:$(date +%s):cleanup[collapsed=true]\\r\\e[0KCleanup"",
|
|
@@ -1601,69 +1727,27 @@ _ALL_ENV_VAR_KEYS: '["ENV_SHORT","APP_DIR","ENV_TYPE","BUILD_INFO_ID","BUILD_INF
|
|
|
1601
1727
|
"gcloud artifacts docker images list europe-west6-docker.pkg.dev/google-project-id/catladder-deploy/pan-test-app/caches/api --sort-by=~CREATE_TIME --format="value(version)" | tail -n +2 | while read -r version; do gcloud artifacts docker images delete europe-west6-docker.pkg.dev/google-project-id/catladder-deploy/pan-test-app/caches/api@$version --quiet --delete-tags; done",
|
|
1602
1728
|
"echo -e "\\e[0Ksection_end:$(date +%s):cleanup\\r\\e[0K"",
|
|
1603
1729
|
"echo Uploading SBOM to Dependency Track",
|
|
1604
|
-
"/dtrackuploader https://dep.panter.swiss/ "$DT_KEY_PROD" upload "pan-test-app/api" "https
|
|
1605
|
-
|
|
1606
|
-
"services": [
|
|
1607
|
-
{
|
|
1608
|
-
"command": [
|
|
1609
|
-
"--tls=false",
|
|
1610
|
-
],
|
|
1611
|
-
"name": "docker:24.0.6-dind",
|
|
1612
|
-
},
|
|
1730
|
+
"/dtrackuploader https://dep.panter.swiss/ "$DT_KEY_PROD" upload "pan-test-app/api" "https://$(printf %s "pan-test-app-stage-api-$CL_stage_api_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')" "__sbom.json" vex.json || true",
|
|
1731
|
+
"echo "CL_GITLAB_ENVIRONMENT_URL=https://$(printf %s "pan-test-app-stage-api-$CL_stage_api_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')" >> gitlab_environment.env",
|
|
1613
1732
|
],
|
|
1614
1733
|
"stage": "deploy stage",
|
|
1615
1734
|
"variables": {
|
|
1616
|
-
"APP_DIR": "api",
|
|
1617
|
-
"BUILD_INFO_BUILD_TIME": "01-01-2023 12:13:14",
|
|
1618
|
-
"BUILD_INFO_CURRENT_VERSION": "3.2.1",
|
|
1619
|
-
"BUILD_INFO_ID": "some-id",
|
|
1620
|
-
"CLOUDSDK_CORE_DISABLE_PROMPTS": "1",
|
|
1621
|
-
"DEPLOY_CLOUD_RUN_PROJECT_ID": "google-project-id",
|
|
1622
|
-
"DEPLOY_CLOUD_RUN_REGION": "europe-west6",
|
|
1623
|
-
"DOCKER_BUILDKIT": "1",
|
|
1624
|
-
"DOCKER_CACHE_IMAGE": "europe-west6-docker.pkg.dev/google-project-id/catladder-deploy/pan-test-app/caches/api",
|
|
1625
|
-
"DOCKER_DRIVER": "overlay2",
|
|
1626
|
-
"DOCKER_HOST": "tcp://0.0.0.0:2375",
|
|
1627
|
-
"DOCKER_IMAGE": "europe-west6-docker.pkg.dev/google-project-id/catladder-deploy/pan-test-app/stage/api",
|
|
1628
|
-
"DOCKER_IMAGE_TAG": "$CI_COMMIT_SHA",
|
|
1629
|
-
"DOCKER_REGISTRY": "europe-west6-docker.pkg.dev",
|
|
1630
|
-
"DOCKER_TLS_CERTDIR": "",
|
|
1631
|
-
"ENV_SHORT": "stage",
|
|
1632
|
-
"ENV_TYPE": "stage",
|
|
1633
|
-
"ENV_VARS": "ENV_SHORT: 'stage'
|
|
1634
|
-
APP_DIR: 'api'
|
|
1635
|
-
ENV_TYPE: 'stage'
|
|
1636
|
-
BUILD_INFO_ID: 'some-id'
|
|
1637
|
-
BUILD_INFO_BUILD_TIME: '01-01-2023 12:13:14'
|
|
1638
|
-
BUILD_INFO_CURRENT_VERSION: '3.2.1'
|
|
1639
|
-
HOST: 'pan-test-app-stage-api-unknown-host.example.com'
|
|
1640
|
-
ROOT_URL: 'https://pan-test-app-stage-api-unknown-host.example.com'
|
|
1641
|
-
HOST_CANONICAL: 'pan-test-app-stage-api-unknown-host.example.com'
|
|
1642
|
-
ROOT_URL_INTERNAL: 'https://pan-test-app-stage-api-unknown-host.example.com'
|
|
1643
|
-
HOST_INTERNAL: 'pan-test-app-stage-api-unknown-host.example.com'
|
|
1644
|
-
DEPLOY_CLOUD_RUN_PROJECT_ID: 'google-project-id'
|
|
1645
|
-
DEPLOY_CLOUD_RUN_REGION: 'europe-west6'
|
|
1646
|
-
GCLOUD_RUN_canonicalHostSuffix: '$CL_stage_api_GCLOUD_RUN_canonicalHostSuffix'
|
|
1647
|
-
_ALL_ENV_VAR_KEYS: '["ENV_SHORT","APP_DIR","ENV_TYPE","BUILD_INFO_ID","BUILD_INFO_BUILD_TIME","BUILD_INFO_CURRENT_VERSION","HOST","ROOT_URL","HOST_CANONICAL","ROOT_URL_INTERNAL","HOST_INTERNAL","DEPLOY_CLOUD_RUN_PROJECT_ID","DEPLOY_CLOUD_RUN_REGION","GCLOUD_DEPLOY_credentialsKey","GCLOUD_RUN_canonicalHostSuffix"]'
|
|
1648
|
-
",
|
|
1649
|
-
"GCLOUD_DEPLOY_credentialsKey": "$CL_stage_api_GCLOUD_DEPLOY_credentialsKey",
|
|
1650
|
-
"GCLOUD_RUN_canonicalHostSuffix": "$CL_stage_api_GCLOUD_RUN_canonicalHostSuffix",
|
|
1651
|
-
"HOST": "pan-test-app-stage-api-unknown-host.example.com",
|
|
1652
|
-
"HOST_CANONICAL": "pan-test-app-stage-api-unknown-host.example.com",
|
|
1653
|
-
"HOST_INTERNAL": "pan-test-app-stage-api-unknown-host.example.com",
|
|
1654
1735
|
"KUBERNETES_CPU_REQUEST": "0.5",
|
|
1655
1736
|
"KUBERNETES_MEMORY_LIMIT": "400Mi",
|
|
1656
1737
|
"KUBERNETES_MEMORY_REQUEST": "200Mi",
|
|
1657
|
-
"ROOT_URL": "https://pan-test-app-stage-api-unknown-host.example.com",
|
|
1658
|
-
"ROOT_URL_INTERNAL": "https://pan-test-app-stage-api-unknown-host.example.com",
|
|
1659
|
-
"_ALL_ENV_VAR_KEYS": "["ENV_SHORT","APP_DIR","ENV_TYPE","BUILD_INFO_ID","BUILD_INFO_BUILD_TIME","BUILD_INFO_CURRENT_VERSION","HOST","ROOT_URL","HOST_CANONICAL","ROOT_URL_INTERNAL","HOST_INTERNAL","DEPLOY_CLOUD_RUN_PROJECT_ID","DEPLOY_CLOUD_RUN_REGION","GCLOUD_DEPLOY_credentialsKey","GCLOUD_RUN_canonicalHostSuffix"]",
|
|
1660
1738
|
},
|
|
1661
1739
|
},
|
|
1662
1740
|
"api 🛑 Stop ⚠️ | prod ": {
|
|
1741
|
+
"allow_failure": true,
|
|
1742
|
+
"artifacts": {
|
|
1743
|
+
"reports": {
|
|
1744
|
+
"dotenv": "gitlab_environment.env",
|
|
1745
|
+
},
|
|
1746
|
+
},
|
|
1663
1747
|
"environment": {
|
|
1664
1748
|
"action": "stop",
|
|
1665
1749
|
"name": "prod/api",
|
|
1666
|
-
"url": "
|
|
1750
|
+
"url": "$CL_GITLAB_ENVIRONMENT_URL",
|
|
1667
1751
|
},
|
|
1668
1752
|
"image": "path/to/docker/gcloud:the-version",
|
|
1669
1753
|
"interruptible": true,
|
|
@@ -1677,28 +1761,29 @@ _ALL_ENV_VAR_KEYS: '["ENV_SHORT","APP_DIR","ENV_TYPE","BUILD_INFO_ID","BUILD_INF
|
|
|
1677
1761
|
},
|
|
1678
1762
|
"rules": [
|
|
1679
1763
|
{
|
|
1680
|
-
"allow_failure": true,
|
|
1681
1764
|
"if": "$CI_COMMIT_BRANCH =~ /^[0-9]+\\.([0-9]+|x)\\.x$/",
|
|
1682
1765
|
"when": "on_success",
|
|
1683
1766
|
},
|
|
1684
1767
|
{
|
|
1685
|
-
"allow_failure": true,
|
|
1686
1768
|
"when": "manual",
|
|
1687
1769
|
},
|
|
1688
1770
|
],
|
|
1689
1771
|
"script": [
|
|
1772
|
+
"echo -e "\\e[0Ksection_start:$(date +%s):injectvars[collapsed=true]\\r\\e[0KInjecting variables"",
|
|
1773
|
+
"export CLOUDSDK_CORE_DISABLE_PROMPTS="1"",
|
|
1774
|
+
"echo -e "\\e[0Ksection_end:$(date +%s):injectvars\\r\\e[0K"",
|
|
1690
1775
|
"set +e",
|
|
1691
1776
|
"gcloud auth activate-service-account --key-file=<(echo "$CL_prod_api_GCLOUD_DEPLOY_credentialsKey")",
|
|
1692
1777
|
"gcloud run services delete pan-test-app-prod-api --project=google-project-id --region=europe-west6",
|
|
1693
1778
|
"gcloud artifacts docker images delete europe-west6-docker.pkg.dev/google-project-id/catladder-deploy/pan-test-app/prod/api --quiet --delete-tags",
|
|
1694
1779
|
"gcloud artifacts docker images list europe-west6-docker.pkg.dev/google-project-id/catladder-deploy/pan-test-app/caches/api --sort-by=~CREATE_TIME --format="value(version)" | tail -n +2 | while read -r version; do gcloud artifacts docker images delete europe-west6-docker.pkg.dev/google-project-id/catladder-deploy/pan-test-app/caches/api@$version --quiet --delete-tags; done",
|
|
1695
1780
|
"echo Disabling component in Dependency Track",
|
|
1696
|
-
"/dtrackuploader https://dep.panter.swiss/ "$DT_KEY_PROD" disable "pan-test-app/api" "https
|
|
1781
|
+
"/dtrackuploader https://dep.panter.swiss/ "$DT_KEY_PROD" disable "pan-test-app/api" "https://$(printf %s "pan-test-app-prod-api-$CL_prod_api_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')" || true",
|
|
1697
1782
|
"set -e",
|
|
1783
|
+
"echo "CL_GITLAB_ENVIRONMENT_URL=https://$(printf %s "pan-test-app-prod-api-$CL_prod_api_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')" >> gitlab_environment.env",
|
|
1698
1784
|
],
|
|
1699
1785
|
"stage": "stop prod",
|
|
1700
1786
|
"variables": {
|
|
1701
|
-
"CLOUDSDK_CORE_DISABLE_PROMPTS": "1",
|
|
1702
1787
|
"GIT_STRATEGY": "none",
|
|
1703
1788
|
"KUBERNETES_CPU_REQUEST": "0.5",
|
|
1704
1789
|
"KUBERNETES_MEMORY_LIMIT": "400Mi",
|
|
@@ -1706,10 +1791,16 @@ _ALL_ENV_VAR_KEYS: '["ENV_SHORT","APP_DIR","ENV_TYPE","BUILD_INFO_ID","BUILD_INF
|
|
|
1706
1791
|
},
|
|
1707
1792
|
},
|
|
1708
1793
|
"api 🛑 Stop ⚠️ | stage ": {
|
|
1794
|
+
"allow_failure": true,
|
|
1795
|
+
"artifacts": {
|
|
1796
|
+
"reports": {
|
|
1797
|
+
"dotenv": "gitlab_environment.env",
|
|
1798
|
+
},
|
|
1799
|
+
},
|
|
1709
1800
|
"environment": {
|
|
1710
1801
|
"action": "stop",
|
|
1711
1802
|
"name": "stage/api",
|
|
1712
|
-
"url": "
|
|
1803
|
+
"url": "$CL_GITLAB_ENVIRONMENT_URL",
|
|
1713
1804
|
},
|
|
1714
1805
|
"image": "path/to/docker/gcloud:the-version",
|
|
1715
1806
|
"interruptible": true,
|
|
@@ -1723,28 +1814,29 @@ _ALL_ENV_VAR_KEYS: '["ENV_SHORT","APP_DIR","ENV_TYPE","BUILD_INFO_ID","BUILD_INF
|
|
|
1723
1814
|
},
|
|
1724
1815
|
"rules": [
|
|
1725
1816
|
{
|
|
1726
|
-
"allow_failure": true,
|
|
1727
1817
|
"if": "$CI_COMMIT_BRANCH =~ /^[0-9]+\\.([0-9]+|x)\\.x$/",
|
|
1728
1818
|
"when": "on_success",
|
|
1729
1819
|
},
|
|
1730
1820
|
{
|
|
1731
|
-
"allow_failure": true,
|
|
1732
1821
|
"when": "manual",
|
|
1733
1822
|
},
|
|
1734
1823
|
],
|
|
1735
1824
|
"script": [
|
|
1825
|
+
"echo -e "\\e[0Ksection_start:$(date +%s):injectvars[collapsed=true]\\r\\e[0KInjecting variables"",
|
|
1826
|
+
"export CLOUDSDK_CORE_DISABLE_PROMPTS="1"",
|
|
1827
|
+
"echo -e "\\e[0Ksection_end:$(date +%s):injectvars\\r\\e[0K"",
|
|
1736
1828
|
"set +e",
|
|
1737
1829
|
"gcloud auth activate-service-account --key-file=<(echo "$CL_stage_api_GCLOUD_DEPLOY_credentialsKey")",
|
|
1738
1830
|
"gcloud run services delete pan-test-app-stage-api --project=google-project-id --region=europe-west6",
|
|
1739
1831
|
"gcloud artifacts docker images delete europe-west6-docker.pkg.dev/google-project-id/catladder-deploy/pan-test-app/stage/api --quiet --delete-tags",
|
|
1740
1832
|
"gcloud artifacts docker images list europe-west6-docker.pkg.dev/google-project-id/catladder-deploy/pan-test-app/caches/api --sort-by=~CREATE_TIME --format="value(version)" | tail -n +2 | while read -r version; do gcloud artifacts docker images delete europe-west6-docker.pkg.dev/google-project-id/catladder-deploy/pan-test-app/caches/api@$version --quiet --delete-tags; done",
|
|
1741
1833
|
"echo Disabling component in Dependency Track",
|
|
1742
|
-
"/dtrackuploader https://dep.panter.swiss/ "$DT_KEY_PROD" disable "pan-test-app/api" "https
|
|
1834
|
+
"/dtrackuploader https://dep.panter.swiss/ "$DT_KEY_PROD" disable "pan-test-app/api" "https://$(printf %s "pan-test-app-stage-api-$CL_stage_api_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')" || true",
|
|
1743
1835
|
"set -e",
|
|
1836
|
+
"echo "CL_GITLAB_ENVIRONMENT_URL=https://$(printf %s "pan-test-app-stage-api-$CL_stage_api_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')" >> gitlab_environment.env",
|
|
1744
1837
|
],
|
|
1745
1838
|
"stage": "stop stage",
|
|
1746
1839
|
"variables": {
|
|
1747
|
-
"CLOUDSDK_CORE_DISABLE_PROMPTS": "1",
|
|
1748
1840
|
"GIT_STRATEGY": "none",
|
|
1749
1841
|
"KUBERNETES_CPU_REQUEST": "0.5",
|
|
1750
1842
|
"KUBERNETES_MEMORY_LIMIT": "400Mi",
|
|
@@ -1769,6 +1861,8 @@ _ALL_ENV_VAR_KEYS: '["ENV_SHORT","APP_DIR","ENV_TYPE","BUILD_INFO_ID","BUILD_INF
|
|
|
1769
1861
|
],
|
|
1770
1862
|
},
|
|
1771
1863
|
"script": [
|
|
1864
|
+
"echo -e "\\e[0Ksection_start:$(date +%s):injectvars[collapsed=true]\\r\\e[0KInjecting variables"",
|
|
1865
|
+
"echo -e "\\e[0Ksection_end:$(date +%s):injectvars\\r\\e[0K"",
|
|
1772
1866
|
"trivy fs --quiet --format cyclonedx --output "__sbom.json" api",
|
|
1773
1867
|
],
|
|
1774
1868
|
"stage": "build",
|
|
@@ -1792,6 +1886,8 @@ _ALL_ENV_VAR_KEYS: '["ENV_SHORT","APP_DIR","ENV_TYPE","BUILD_INFO_ID","BUILD_INF
|
|
|
1792
1886
|
],
|
|
1793
1887
|
},
|
|
1794
1888
|
"script": [
|
|
1889
|
+
"echo -e "\\e[0Ksection_start:$(date +%s):injectvars[collapsed=true]\\r\\e[0KInjecting variables"",
|
|
1890
|
+
"echo -e "\\e[0Ksection_end:$(date +%s):injectvars\\r\\e[0K"",
|
|
1795
1891
|
"trivy fs --quiet --format cyclonedx --output "__sbom.json" api",
|
|
1796
1892
|
],
|
|
1797
1893
|
"stage": "build",
|
|
@@ -1844,7 +1940,7 @@ _ALL_ENV_VAR_KEYS: '["ENV_SHORT","APP_DIR","ENV_TYPE","BUILD_INFO_ID","BUILD_INF
|
|
|
1844
1940
|
],
|
|
1845
1941
|
"variables": {
|
|
1846
1942
|
"FF_USE_FASTZIP": "true",
|
|
1847
|
-
"GIT_DEPTH": 1,
|
|
1943
|
+
"GIT_DEPTH": "1",
|
|
1848
1944
|
},
|
|
1849
1945
|
"workflow": {
|
|
1850
1946
|
"rules": [
|