@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",
|
|
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,26 @@ _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 CLOUD_RUN_JOB_TRIGGER_URL_drop_db="https://europe-west6-run.googleapis.com/apis/run.googleapis.com/v1/namespaces/google-project-id/jobs/$(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)}')-drop-db:run"",
|
|
700
|
+
"export DEPLOY_CLOUD_RUN_PROJECT_ID="google-project-id"",
|
|
701
|
+
"export DEPLOY_CLOUD_RUN_REGION="europe-west6"",
|
|
702
|
+
"export GCLOUD_DEPLOY_credentialsKey="$CL_review_api_GCLOUD_DEPLOY_credentialsKey"",
|
|
703
|
+
"export GCLOUD_RUN_canonicalHostSuffix="$CL_review_api_GCLOUD_RUN_canonicalHostSuffix"",
|
|
704
|
+
"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\\",\\"CLOUD_RUN_JOB_TRIGGER_URL_drop_db\\",\\"DEPLOY_CLOUD_RUN_PROJECT_ID\\",\\"DEPLOY_CLOUD_RUN_REGION\\",\\"GCLOUD_DEPLOY_credentialsKey\\",\\"GCLOUD_RUN_canonicalHostSuffix\\"]"",
|
|
705
|
+
"echo -e "\\e[0Ksection_end:$(date +%s):injectvars\\r\\e[0K"",
|
|
706
|
+
"echo '{"id":"$(git describe --tags 2>/dev/null || git rev-parse HEAD)","time":"$CI_JOB_STARTED_AT"}' > api/__build_info.json",
|
|
659
707
|
"echo -e "\\e[0Ksection_start:$(date +%s):nodeinstall[collapsed=true]\\r\\e[0KEnsure node version"",
|
|
660
708
|
"if [ -f ~/.nvm/nvm.sh ]; then source ~/.nvm/nvm.sh; fi",
|
|
661
709
|
"if command -v nvm &> /dev/null && [ -f ./.nvmrc ]; then nvm install; fi",
|
|
@@ -672,26 +720,9 @@ _ALL_ENV_VAR_KEYS: '["ENV_SHORT","APP_DIR","ENV_TYPE","BUILD_INFO_ID","BUILD_INF
|
|
|
672
720
|
],
|
|
673
721
|
"stage": "build",
|
|
674
722
|
"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
|
-
"CLOUD_RUN_JOB_TRIGGER_URL_drop_db": "https://europe-west6-run.googleapis.com/apis/run.googleapis.com/v1/namespaces/google-project-id/jobs/pan-test-app-review-mr1234-api-drop-db:run",
|
|
680
|
-
"DEPLOY_CLOUD_RUN_PROJECT_ID": "google-project-id",
|
|
681
|
-
"DEPLOY_CLOUD_RUN_REGION": "europe-west6",
|
|
682
|
-
"ENV_SHORT": "review",
|
|
683
|
-
"ENV_TYPE": "review",
|
|
684
|
-
"GCLOUD_DEPLOY_credentialsKey": "$CL_review_api_GCLOUD_DEPLOY_credentialsKey",
|
|
685
|
-
"GCLOUD_RUN_canonicalHostSuffix": "$CL_review_api_GCLOUD_RUN_canonicalHostSuffix",
|
|
686
|
-
"HOST": "pan-test-app-review-mr1234-api-unknown-host.example.com",
|
|
687
|
-
"HOST_CANONICAL": "pan-test-app-review-mr1234-api-unknown-host.example.com",
|
|
688
|
-
"HOST_INTERNAL": "pan-test-app-review-mr1234-api-unknown-host.example.com",
|
|
689
723
|
"KUBERNETES_CPU_REQUEST": "0.5",
|
|
690
724
|
"KUBERNETES_MEMORY_LIMIT": "4Gi",
|
|
691
725
|
"KUBERNETES_MEMORY_REQUEST": "2Gi",
|
|
692
|
-
"ROOT_URL": "https://pan-test-app-review-mr1234-api-unknown-host.example.com",
|
|
693
|
-
"ROOT_URL_INTERNAL": "https://pan-test-app-review-mr1234-api-unknown-host.example.com",
|
|
694
|
-
"_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","CLOUD_RUN_JOB_TRIGGER_URL_drop_db","DEPLOY_CLOUD_RUN_PROJECT_ID","DEPLOY_CLOUD_RUN_REGION","GCLOUD_DEPLOY_credentialsKey","GCLOUD_RUN_canonicalHostSuffix"]",
|
|
695
726
|
},
|
|
696
727
|
},
|
|
697
728
|
"api 🔨 docker | review ": {
|
|
@@ -717,6 +748,21 @@ _ALL_ENV_VAR_KEYS: '["ENV_SHORT","APP_DIR","ENV_TYPE","BUILD_INFO_ID","BUILD_INF
|
|
|
717
748
|
],
|
|
718
749
|
},
|
|
719
750
|
"script": [
|
|
751
|
+
"echo -e "\\e[0Ksection_start:$(date +%s):injectvars[collapsed=true]\\r\\e[0KInjecting variables"",
|
|
752
|
+
"export APP_DIR="api"",
|
|
753
|
+
"export DOCKER_DIR="."",
|
|
754
|
+
"export DOCKER_REGISTRY="europe-west6-docker.pkg.dev"",
|
|
755
|
+
"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"; })"",
|
|
756
|
+
"export DOCKER_CACHE_IMAGE="europe-west6-docker.pkg.dev/google-project-id/catladder-deploy/pan-test-app/caches/api"",
|
|
757
|
+
"export DOCKER_IMAGE_TAG="$CI_COMMIT_SHA"",
|
|
758
|
+
"export DOCKER_COPY_AND_INSTALL_APP="COPY --chown=node:node $APP_DIR .
|
|
759
|
+
RUN yarn plugin import workspace-tools
|
|
760
|
+
RUN yarn workspaces focus --production && yarn rebuild"",
|
|
761
|
+
"export DOCKER_COPY_WORKSPACE_FILES="COPY --chown=node:node api/package.json /app/api/package.json
|
|
762
|
+
COPY --chown=node:node api/yarn.lock /app/api/yarn.lock
|
|
763
|
+
COPY --chown=node:node .yarnrc.yml /app/.yarnrc.yml
|
|
764
|
+
COPY --chown=node:node .yarn /app/.yarn"",
|
|
765
|
+
"echo -e "\\e[0Ksection_end:$(date +%s):injectvars\\r\\e[0K"",
|
|
720
766
|
"ensureNodeDockerfile",
|
|
721
767
|
"echo -e "\\e[0Ksection_start:$(date +%s):docker-login[collapsed=true]\\r\\e[0KDocker Login"",
|
|
722
768
|
"gcloud auth activate-service-account --key-file=<(echo "$CL_review_api_GCLOUD_DEPLOY_credentialsKey")",
|
|
@@ -741,24 +787,9 @@ _ALL_ENV_VAR_KEYS: '["ENV_SHORT","APP_DIR","ENV_TYPE","BUILD_INFO_ID","BUILD_INF
|
|
|
741
787
|
],
|
|
742
788
|
"stage": "build",
|
|
743
789
|
"variables": {
|
|
744
|
-
"APP_DIR": "api",
|
|
745
|
-
"DOCKERFILE_ADDITIONS": undefined,
|
|
746
|
-
"DOCKERFILE_ADDITIONS_END": undefined,
|
|
747
790
|
"DOCKER_BUILDKIT": "1",
|
|
748
|
-
"DOCKER_CACHE_IMAGE": "europe-west6-docker.pkg.dev/google-project-id/catladder-deploy/pan-test-app/caches/api",
|
|
749
|
-
"DOCKER_COPY_AND_INSTALL_APP": "COPY --chown=node:node $APP_DIR .
|
|
750
|
-
RUN yarn plugin import workspace-tools
|
|
751
|
-
RUN yarn workspaces focus --production && yarn rebuild",
|
|
752
|
-
"DOCKER_COPY_WORKSPACE_FILES": "COPY --chown=node:node api/package.json /app/api/package.json
|
|
753
|
-
COPY --chown=node:node api/yarn.lock /app/api/yarn.lock
|
|
754
|
-
COPY --chown=node:node .yarnrc.yml /app/.yarnrc.yml
|
|
755
|
-
COPY --chown=node:node .yarn /app/.yarn",
|
|
756
|
-
"DOCKER_DIR": ".",
|
|
757
791
|
"DOCKER_DRIVER": "overlay2",
|
|
758
792
|
"DOCKER_HOST": "tcp://0.0.0.0:2375",
|
|
759
|
-
"DOCKER_IMAGE": "europe-west6-docker.pkg.dev/google-project-id/catladder-deploy/pan-test-app/review/api/mr1234",
|
|
760
|
-
"DOCKER_IMAGE_TAG": "$CI_COMMIT_SHA",
|
|
761
|
-
"DOCKER_REGISTRY": "europe-west6-docker.pkg.dev",
|
|
762
793
|
"DOCKER_TLS_CERTDIR": "",
|
|
763
794
|
"KUBERNETES_CPU_REQUEST": "0.5",
|
|
764
795
|
"KUBERNETES_MEMORY_LIMIT": "2Gi",
|
|
@@ -768,15 +799,15 @@ COPY --chown=node:node .yarn /app/.yarn",
|
|
|
768
799
|
"api 🚀 Deploy | review ": {
|
|
769
800
|
"allow_failure": false,
|
|
770
801
|
"artifacts": {
|
|
771
|
-
"
|
|
772
|
-
"
|
|
773
|
-
|
|
802
|
+
"reports": {
|
|
803
|
+
"dotenv": "gitlab_environment.env",
|
|
804
|
+
},
|
|
774
805
|
},
|
|
775
806
|
"environment": {
|
|
776
807
|
"auto_stop_in": "1 week",
|
|
777
|
-
"name": "review/
|
|
808
|
+
"name": "review/$CI_COMMIT_REF_NAME/api",
|
|
778
809
|
"on_stop": "api 🛑 Stop ⚠️ | review ",
|
|
779
|
-
"url": "
|
|
810
|
+
"url": "$CL_GITLAB_ENVIRONMENT_URL",
|
|
780
811
|
},
|
|
781
812
|
"image": "path/to/docker/gcloud:the-version",
|
|
782
813
|
"interruptible": true,
|
|
@@ -819,93 +850,110 @@ COPY --chown=node:node .yarn /app/.yarn",
|
|
|
819
850
|
},
|
|
820
851
|
],
|
|
821
852
|
"script": [
|
|
853
|
+
"echo -e "\\e[0Ksection_start:$(date +%s):injectvars[collapsed=true]\\r\\e[0KInjecting variables"",
|
|
854
|
+
"export ENV_SHORT="review"",
|
|
855
|
+
"export APP_DIR="api"",
|
|
856
|
+
"export ENV_TYPE="review"",
|
|
857
|
+
"export BUILD_INFO_BUILD_ID="$(git describe --tags 2>/dev/null || git rev-parse HEAD)"",
|
|
858
|
+
"export BUILD_INFO_BUILD_TIME="$CI_JOB_STARTED_AT"",
|
|
859
|
+
"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")"",
|
|
860
|
+
"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)}')"",
|
|
861
|
+
"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)}')"",
|
|
862
|
+
"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)}')"",
|
|
863
|
+
"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)}')"",
|
|
864
|
+
"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)}')"",
|
|
865
|
+
"export CLOUD_RUN_JOB_TRIGGER_URL_drop_db="https://europe-west6-run.googleapis.com/apis/run.googleapis.com/v1/namespaces/google-project-id/jobs/$(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)}')-drop-db:run"",
|
|
866
|
+
"export DEPLOY_CLOUD_RUN_PROJECT_ID="google-project-id"",
|
|
867
|
+
"export DEPLOY_CLOUD_RUN_REGION="europe-west6"",
|
|
868
|
+
"export GCLOUD_DEPLOY_credentialsKey="$CL_review_api_GCLOUD_DEPLOY_credentialsKey"",
|
|
869
|
+
"export GCLOUD_RUN_canonicalHostSuffix="$CL_review_api_GCLOUD_RUN_canonicalHostSuffix"",
|
|
870
|
+
"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\\",\\"CLOUD_RUN_JOB_TRIGGER_URL_drop_db\\",\\"DEPLOY_CLOUD_RUN_PROJECT_ID\\",\\"DEPLOY_CLOUD_RUN_REGION\\",\\"GCLOUD_DEPLOY_credentialsKey\\",\\"GCLOUD_RUN_canonicalHostSuffix\\"]"",
|
|
871
|
+
"export DOCKER_REGISTRY="europe-west6-docker.pkg.dev"",
|
|
872
|
+
"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"; })"",
|
|
873
|
+
"export DOCKER_CACHE_IMAGE="europe-west6-docker.pkg.dev/google-project-id/catladder-deploy/pan-test-app/caches/api"",
|
|
874
|
+
"export DOCKER_IMAGE_TAG="$CI_COMMIT_SHA"",
|
|
875
|
+
"export CLOUDSDK_CORE_DISABLE_PROMPTS="1"",
|
|
876
|
+
"echo -e "\\e[0Ksection_end:$(date +%s):injectvars\\r\\e[0K"",
|
|
822
877
|
"echo -e "\\e[0Ksection_start:$(date +%s):prepare[collapsed=true]\\r\\e[0KPrepare..."",
|
|
823
878
|
"gcloud auth activate-service-account --key-file=<(echo "$CL_review_api_GCLOUD_DEPLOY_credentialsKey")",
|
|
824
879
|
"export GCLOUD_PROJECT_NUMBER=$(gcloud projects describe google-project-id --format="value(projectNumber)")",
|
|
825
880
|
"echo "GCLOUD_PROJECT_NUMBER: $GCLOUD_PROJECT_NUMBER"",
|
|
826
881
|
"echo -e "\\e[0Ksection_end:$(date +%s):prepare\\r\\e[0K"",
|
|
882
|
+
"echo -e "\\e[0Ksection_start:$(date +%s):writeenvvars[collapsed=true]\\r\\e[0KWrite env vars to file"",
|
|
883
|
+
"cat > ____envvars.yaml <<EOF
|
|
884
|
+
ENV_SHORT: |-
|
|
885
|
+
review
|
|
886
|
+
APP_DIR: |-
|
|
887
|
+
api
|
|
888
|
+
ENV_TYPE: |-
|
|
889
|
+
review
|
|
890
|
+
BUILD_INFO_BUILD_ID: |-
|
|
891
|
+
$(printf %s "$(git describe --tags 2>/dev/null || git rev-parse HEAD)" | sed 's/^/ /')
|
|
892
|
+
BUILD_INFO_BUILD_TIME: |-
|
|
893
|
+
$(printf %s "$CI_JOB_STARTED_AT" | sed 's/^/ /')
|
|
894
|
+
BUILD_INFO_CURRENT_VERSION: |-
|
|
895
|
+
$(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/^/ /')
|
|
896
|
+
HOST: |-
|
|
897
|
+
$(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/^/ /')
|
|
898
|
+
ROOT_URL: |-
|
|
899
|
+
$(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/^/ /')
|
|
900
|
+
HOST_INTERNAL: |-
|
|
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
|
+
HOST_CANONICAL: |-
|
|
903
|
+
$(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/^/ /')
|
|
904
|
+
ROOT_URL_INTERNAL: |-
|
|
905
|
+
$(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/^/ /')
|
|
906
|
+
CLOUD_RUN_JOB_TRIGGER_URL_drop_db: |-
|
|
907
|
+
https://europe-west6-run.googleapis.com/apis/run.googleapis.com/v1/namespaces/google-project-id/jobs/$(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)}')-drop-db:run
|
|
908
|
+
DEPLOY_CLOUD_RUN_PROJECT_ID: |-
|
|
909
|
+
google-project-id
|
|
910
|
+
DEPLOY_CLOUD_RUN_REGION: |-
|
|
911
|
+
europe-west6
|
|
912
|
+
GCLOUD_RUN_canonicalHostSuffix: |-
|
|
913
|
+
$(printf %s "$CL_review_api_GCLOUD_RUN_canonicalHostSuffix" | sed 's/^/ /')
|
|
914
|
+
_ALL_ENV_VAR_KEYS: |-
|
|
915
|
+
["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","CLOUD_RUN_JOB_TRIGGER_URL_drop_db","DEPLOY_CLOUD_RUN_PROJECT_ID","DEPLOY_CLOUD_RUN_REGION","GCLOUD_DEPLOY_credentialsKey","GCLOUD_RUN_canonicalHostSuffix"]
|
|
916
|
+
|
|
917
|
+
EOF
|
|
918
|
+
",
|
|
919
|
+
"echo -e "\\e[0Ksection_end:$(date +%s):writeenvvars\\r\\e[0K"",
|
|
827
920
|
"echo -e "\\e[0Ksection_start:$(date +%s):deploy[collapsed=true]\\r\\e[0KDeploy to cloud run"",
|
|
828
|
-
"echo "$ENV_VARS" > ____envvars.yaml",
|
|
829
921
|
"set +e",
|
|
830
|
-
"gcloud run jobs create pan-test-app-review-
|
|
922
|
+
"gcloud run jobs create $(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)}')-drop-db --command="/bin/sh,-c,mongosh \\$MONGO_URL --eval 'db.dropDatabase()'" --image=rtsp/mongosh:latest --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-job-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)}')-drop-db --memory=512Mi --task-timeout=10m --parallelism=1 --env-vars-file=____envvars.yaml --max-retries=0",
|
|
831
923
|
"set -e",
|
|
832
|
-
"gcloud run jobs update pan-test-app-review-
|
|
833
|
-
"gcloud run deploy pan-test-app-review-
|
|
924
|
+
"gcloud run jobs update $(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)}')-drop-db --command="/bin/sh,-c,mongosh \\$MONGO_URL --eval 'db.dropDatabase()'" --image=rtsp/mongosh:latest --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-job-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)}')-drop-db --memory=512Mi --task-timeout=10m --parallelism=1 --env-vars-file=____envvars.yaml --max-retries=0 ",
|
|
925
|
+
"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",
|
|
834
926
|
"echo -e "\\e[0Ksection_end:$(date +%s):deploy\\r\\e[0K"",
|
|
835
927
|
"echo -e "\\e[0Ksection_start:$(date +%s):cleanup[collapsed=true]\\r\\e[0KCleanup"",
|
|
836
|
-
"gcloud run revisions list --project=google-project-id --region=europe-west6 --service
|
|
837
|
-
"gcloud artifacts docker images list europe-west6-docker.pkg.dev/google-project-id/catladder-deploy/pan-test-app/review/api
|
|
928
|
+
"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",
|
|
929
|
+
"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",
|
|
838
930
|
"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",
|
|
839
931
|
"set +e",
|
|
840
932
|
"gcloud artifacts docker images delete europe-west6-docker.pkg.dev/google-project-id/catladder-deploy/pan-test-app/review/api --quiet --delete-tags",
|
|
841
933
|
"set -e",
|
|
842
934
|
"echo -e "\\e[0Ksection_end:$(date +%s):cleanup\\r\\e[0K"",
|
|
843
935
|
"echo Uploading SBOM to Dependency Track",
|
|
844
|
-
"/dtrackuploader https://dep.panter.swiss/ "$DT_KEY_PROD" upload "pan-test-app/api" "https
|
|
845
|
-
|
|
846
|
-
"services": [
|
|
847
|
-
{
|
|
848
|
-
"command": [
|
|
849
|
-
"--tls=false",
|
|
850
|
-
],
|
|
851
|
-
"name": "docker:24.0.6-dind",
|
|
852
|
-
},
|
|
936
|
+
"/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",
|
|
937
|
+
"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",
|
|
853
938
|
],
|
|
854
939
|
"stage": "deploy review",
|
|
855
940
|
"variables": {
|
|
856
|
-
"APP_DIR": "api",
|
|
857
|
-
"BUILD_INFO_BUILD_TIME": "01-01-2023 12:13:14",
|
|
858
|
-
"BUILD_INFO_CURRENT_VERSION": "3.2.1",
|
|
859
|
-
"BUILD_INFO_ID": "some-id",
|
|
860
|
-
"CLOUDSDK_CORE_DISABLE_PROMPTS": "1",
|
|
861
|
-
"CLOUD_RUN_JOB_TRIGGER_URL_drop_db": "https://europe-west6-run.googleapis.com/apis/run.googleapis.com/v1/namespaces/google-project-id/jobs/pan-test-app-review-mr1234-api-drop-db:run",
|
|
862
|
-
"DEPLOY_CLOUD_RUN_PROJECT_ID": "google-project-id",
|
|
863
|
-
"DEPLOY_CLOUD_RUN_REGION": "europe-west6",
|
|
864
|
-
"DOCKER_BUILDKIT": "1",
|
|
865
|
-
"DOCKER_CACHE_IMAGE": "europe-west6-docker.pkg.dev/google-project-id/catladder-deploy/pan-test-app/caches/api",
|
|
866
|
-
"DOCKER_DRIVER": "overlay2",
|
|
867
|
-
"DOCKER_HOST": "tcp://0.0.0.0:2375",
|
|
868
|
-
"DOCKER_IMAGE": "europe-west6-docker.pkg.dev/google-project-id/catladder-deploy/pan-test-app/review/api/mr1234",
|
|
869
|
-
"DOCKER_IMAGE_TAG": "$CI_COMMIT_SHA",
|
|
870
|
-
"DOCKER_REGISTRY": "europe-west6-docker.pkg.dev",
|
|
871
|
-
"DOCKER_TLS_CERTDIR": "",
|
|
872
|
-
"ENV_SHORT": "review",
|
|
873
|
-
"ENV_TYPE": "review",
|
|
874
|
-
"ENV_VARS": "ENV_SHORT: 'review'
|
|
875
|
-
APP_DIR: 'api'
|
|
876
|
-
ENV_TYPE: 'review'
|
|
877
|
-
BUILD_INFO_ID: 'some-id'
|
|
878
|
-
BUILD_INFO_BUILD_TIME: '01-01-2023 12:13:14'
|
|
879
|
-
BUILD_INFO_CURRENT_VERSION: '3.2.1'
|
|
880
|
-
HOST: 'pan-test-app-review-mr1234-api-unknown-host.example.com'
|
|
881
|
-
ROOT_URL: 'https://pan-test-app-review-mr1234-api-unknown-host.example.com'
|
|
882
|
-
HOST_CANONICAL: 'pan-test-app-review-mr1234-api-unknown-host.example.com'
|
|
883
|
-
ROOT_URL_INTERNAL: 'https://pan-test-app-review-mr1234-api-unknown-host.example.com'
|
|
884
|
-
HOST_INTERNAL: 'pan-test-app-review-mr1234-api-unknown-host.example.com'
|
|
885
|
-
CLOUD_RUN_JOB_TRIGGER_URL_drop_db: 'https://europe-west6-run.googleapis.com/apis/run.googleapis.com/v1/namespaces/google-project-id/jobs/pan-test-app-review-mr1234-api-drop-db:run'
|
|
886
|
-
DEPLOY_CLOUD_RUN_PROJECT_ID: 'google-project-id'
|
|
887
|
-
DEPLOY_CLOUD_RUN_REGION: 'europe-west6'
|
|
888
|
-
GCLOUD_RUN_canonicalHostSuffix: '$CL_review_api_GCLOUD_RUN_canonicalHostSuffix'
|
|
889
|
-
_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","CLOUD_RUN_JOB_TRIGGER_URL_drop_db","DEPLOY_CLOUD_RUN_PROJECT_ID","DEPLOY_CLOUD_RUN_REGION","GCLOUD_DEPLOY_credentialsKey","GCLOUD_RUN_canonicalHostSuffix"]'
|
|
890
|
-
",
|
|
891
|
-
"GCLOUD_DEPLOY_credentialsKey": "$CL_review_api_GCLOUD_DEPLOY_credentialsKey",
|
|
892
|
-
"GCLOUD_RUN_canonicalHostSuffix": "$CL_review_api_GCLOUD_RUN_canonicalHostSuffix",
|
|
893
|
-
"HOST": "pan-test-app-review-mr1234-api-unknown-host.example.com",
|
|
894
|
-
"HOST_CANONICAL": "pan-test-app-review-mr1234-api-unknown-host.example.com",
|
|
895
|
-
"HOST_INTERNAL": "pan-test-app-review-mr1234-api-unknown-host.example.com",
|
|
896
941
|
"KUBERNETES_CPU_REQUEST": "0.5",
|
|
897
942
|
"KUBERNETES_MEMORY_LIMIT": "400Mi",
|
|
898
943
|
"KUBERNETES_MEMORY_REQUEST": "200Mi",
|
|
899
|
-
"ROOT_URL": "https://pan-test-app-review-mr1234-api-unknown-host.example.com",
|
|
900
|
-
"ROOT_URL_INTERNAL": "https://pan-test-app-review-mr1234-api-unknown-host.example.com",
|
|
901
|
-
"_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","CLOUD_RUN_JOB_TRIGGER_URL_drop_db","DEPLOY_CLOUD_RUN_PROJECT_ID","DEPLOY_CLOUD_RUN_REGION","GCLOUD_DEPLOY_credentialsKey","GCLOUD_RUN_canonicalHostSuffix"]",
|
|
902
944
|
},
|
|
903
945
|
},
|
|
904
946
|
"api 🛑 Stop ⚠️ | review ": {
|
|
947
|
+
"allow_failure": true,
|
|
948
|
+
"artifacts": {
|
|
949
|
+
"reports": {
|
|
950
|
+
"dotenv": "gitlab_environment.env",
|
|
951
|
+
},
|
|
952
|
+
},
|
|
905
953
|
"environment": {
|
|
906
954
|
"action": "stop",
|
|
907
|
-
"name": "review/
|
|
908
|
-
"url": "
|
|
955
|
+
"name": "review/$CI_COMMIT_REF_NAME/api",
|
|
956
|
+
"url": "$CL_GITLAB_ENVIRONMENT_URL",
|
|
909
957
|
},
|
|
910
958
|
"image": "path/to/docker/gcloud:the-version",
|
|
911
959
|
"interruptible": true,
|
|
@@ -919,34 +967,35 @@ _ALL_ENV_VAR_KEYS: '["ENV_SHORT","APP_DIR","ENV_TYPE","BUILD_INFO_ID","BUILD_INF
|
|
|
919
967
|
},
|
|
920
968
|
"rules": [
|
|
921
969
|
{
|
|
922
|
-
"allow_failure": true,
|
|
923
970
|
"if": "$CI_COMMIT_BRANCH =~ /^[0-9]+\\.([0-9]+|x)\\.x$/",
|
|
924
971
|
"when": "on_success",
|
|
925
972
|
},
|
|
926
973
|
{
|
|
927
|
-
"allow_failure": true,
|
|
928
974
|
"when": "manual",
|
|
929
975
|
},
|
|
930
976
|
],
|
|
931
977
|
"script": [
|
|
978
|
+
"echo -e "\\e[0Ksection_start:$(date +%s):injectvars[collapsed=true]\\r\\e[0KInjecting variables"",
|
|
979
|
+
"export CLOUDSDK_CORE_DISABLE_PROMPTS="1"",
|
|
980
|
+
"echo -e "\\e[0Ksection_end:$(date +%s):injectvars\\r\\e[0K"",
|
|
932
981
|
"set +e",
|
|
933
982
|
"gcloud auth activate-service-account --key-file=<(echo "$CL_review_api_GCLOUD_DEPLOY_credentialsKey")",
|
|
934
|
-
"gcloud run services delete pan-test-app-review-
|
|
935
|
-
"gcloud run jobs execute pan-test-app-review-
|
|
936
|
-
"gcloud run jobs executions list --project=google-project-id --region=europe-west6 --job pan-test-app-review-
|
|
937
|
-
"gcloud run jobs delete pan-test-app-review-
|
|
938
|
-
"gcloud artifacts docker images delete europe-west6-docker.pkg.dev/google-project-id/catladder-deploy/pan-test-app/review/api
|
|
983
|
+
"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",
|
|
984
|
+
"gcloud run jobs execute $(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)}')-drop-db --project=google-project-id --region=europe-west6 --wait",
|
|
985
|
+
"gcloud run jobs executions list --project=google-project-id --region=europe-west6 --job $(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)}')-drop-db --format="value(name)" | xargs -I {} gcloud run jobs executions delete {} --quiet --project=google-project-id --region=europe-west6",
|
|
986
|
+
"gcloud run jobs 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)}')-drop-db --project=google-project-id --region=europe-west6",
|
|
987
|
+
"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",
|
|
939
988
|
"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",
|
|
940
989
|
"set +e",
|
|
941
990
|
"gcloud artifacts docker images delete europe-west6-docker.pkg.dev/google-project-id/catladder-deploy/pan-test-app/review/api --quiet --delete-tags",
|
|
942
991
|
"set -e",
|
|
943
992
|
"echo Disabling component in Dependency Track",
|
|
944
|
-
"/dtrackuploader https://dep.panter.swiss/ "$DT_KEY_PROD" disable "pan-test-app/api" "https
|
|
993
|
+
"/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",
|
|
945
994
|
"set -e",
|
|
995
|
+
"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",
|
|
946
996
|
],
|
|
947
997
|
"stage": "stop review",
|
|
948
998
|
"variables": {
|
|
949
|
-
"CLOUDSDK_CORE_DISABLE_PROMPTS": "1",
|
|
950
999
|
"GIT_STRATEGY": "none",
|
|
951
1000
|
"KUBERNETES_CPU_REQUEST": "0.5",
|
|
952
1001
|
"KUBERNETES_MEMORY_LIMIT": "400Mi",
|
|
@@ -966,12 +1015,14 @@ _ALL_ENV_VAR_KEYS: '["ENV_SHORT","APP_DIR","ENV_TYPE","BUILD_INFO_ID","BUILD_INF
|
|
|
966
1015
|
],
|
|
967
1016
|
},
|
|
968
1017
|
"script": [
|
|
1018
|
+
"echo -e "\\e[0Ksection_start:$(date +%s):injectvars[collapsed=true]\\r\\e[0KInjecting variables"",
|
|
1019
|
+
"export APP_PATH="api"",
|
|
1020
|
+
"echo -e "\\e[0Ksection_end:$(date +%s):injectvars\\r\\e[0K"",
|
|
969
1021
|
"cd api",
|
|
970
1022
|
"yarn npm audit --environment production",
|
|
971
1023
|
],
|
|
972
1024
|
"stage": "test",
|
|
973
1025
|
"variables": {
|
|
974
|
-
"APP_PATH": "api",
|
|
975
1026
|
"KUBERNETES_CPU_REQUEST": "0.5",
|
|
976
1027
|
"KUBERNETES_MEMORY_LIMIT": "4Gi",
|
|
977
1028
|
"KUBERNETES_MEMORY_REQUEST": "2Gi",
|
|
@@ -1005,6 +1056,9 @@ _ALL_ENV_VAR_KEYS: '["ENV_SHORT","APP_DIR","ENV_TYPE","BUILD_INFO_ID","BUILD_INF
|
|
|
1005
1056
|
],
|
|
1006
1057
|
},
|
|
1007
1058
|
"script": [
|
|
1059
|
+
"echo -e "\\e[0Ksection_start:$(date +%s):injectvars[collapsed=true]\\r\\e[0KInjecting variables"",
|
|
1060
|
+
"export APP_PATH="api"",
|
|
1061
|
+
"echo -e "\\e[0Ksection_end:$(date +%s):injectvars\\r\\e[0K"",
|
|
1008
1062
|
"echo -e "\\e[0Ksection_start:$(date +%s):nodeinstall[collapsed=true]\\r\\e[0KEnsure node version"",
|
|
1009
1063
|
"if [ -f ~/.nvm/nvm.sh ]; then source ~/.nvm/nvm.sh; fi",
|
|
1010
1064
|
"if command -v nvm &> /dev/null && [ -f ./.nvmrc ]; then nvm install; fi",
|
|
@@ -1021,7 +1075,6 @@ _ALL_ENV_VAR_KEYS: '["ENV_SHORT","APP_DIR","ENV_TYPE","BUILD_INFO_ID","BUILD_INF
|
|
|
1021
1075
|
],
|
|
1022
1076
|
"stage": "test",
|
|
1023
1077
|
"variables": {
|
|
1024
|
-
"APP_PATH": "api",
|
|
1025
1078
|
"KUBERNETES_CPU_REQUEST": "0.5",
|
|
1026
1079
|
"KUBERNETES_MEMORY_LIMIT": "4Gi",
|
|
1027
1080
|
"KUBERNETES_MEMORY_REQUEST": "2Gi",
|
|
@@ -1045,6 +1098,8 @@ _ALL_ENV_VAR_KEYS: '["ENV_SHORT","APP_DIR","ENV_TYPE","BUILD_INFO_ID","BUILD_INF
|
|
|
1045
1098
|
],
|
|
1046
1099
|
},
|
|
1047
1100
|
"script": [
|
|
1101
|
+
"echo -e "\\e[0Ksection_start:$(date +%s):injectvars[collapsed=true]\\r\\e[0KInjecting variables"",
|
|
1102
|
+
"echo -e "\\e[0Ksection_end:$(date +%s):injectvars\\r\\e[0K"",
|
|
1048
1103
|
"trivy fs --quiet --format cyclonedx --output "__sbom.json" api",
|
|
1049
1104
|
],
|
|
1050
1105
|
"stage": "build",
|
|
@@ -1097,7 +1152,7 @@ _ALL_ENV_VAR_KEYS: '["ENV_SHORT","APP_DIR","ENV_TYPE","BUILD_INFO_ID","BUILD_INF
|
|
|
1097
1152
|
],
|
|
1098
1153
|
"variables": {
|
|
1099
1154
|
"FF_USE_FASTZIP": "true",
|
|
1100
|
-
"GIT_DEPTH": 1,
|
|
1155
|
+
"GIT_DEPTH": "1",
|
|
1101
1156
|
},
|
|
1102
1157
|
"workflow": {
|
|
1103
1158
|
"rules": [
|
|
@@ -1174,7 +1229,25 @@ _ALL_ENV_VAR_KEYS: '["ENV_SHORT","APP_DIR","ENV_TYPE","BUILD_INFO_ID","BUILD_INF
|
|
|
1174
1229
|
],
|
|
1175
1230
|
},
|
|
1176
1231
|
"script": [
|
|
1177
|
-
"echo
|
|
1232
|
+
"echo -e "\\e[0Ksection_start:$(date +%s):injectvars[collapsed=true]\\r\\e[0KInjecting variables"",
|
|
1233
|
+
"export ENV_SHORT="prod"",
|
|
1234
|
+
"export APP_DIR="api"",
|
|
1235
|
+
"export ENV_TYPE="prod"",
|
|
1236
|
+
"export BUILD_INFO_BUILD_ID="$(git describe --tags 2>/dev/null || git rev-parse HEAD)"",
|
|
1237
|
+
"export BUILD_INFO_BUILD_TIME="$CI_JOB_STARTED_AT"",
|
|
1238
|
+
"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")"",
|
|
1239
|
+
"export HOST="$(printf %s "pan-test-app-prod-api-$CL_prod_api_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')"",
|
|
1240
|
+
"export ROOT_URL="https://$(printf %s "pan-test-app-prod-api-$CL_prod_api_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')"",
|
|
1241
|
+
"export HOST_INTERNAL="$(printf %s "pan-test-app-prod-api-$CL_prod_api_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')"",
|
|
1242
|
+
"export HOST_CANONICAL="$(printf %s "pan-test-app-prod-api-$CL_prod_api_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')"",
|
|
1243
|
+
"export ROOT_URL_INTERNAL="https://$(printf %s "pan-test-app-prod-api-$CL_prod_api_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')"",
|
|
1244
|
+
"export DEPLOY_CLOUD_RUN_PROJECT_ID="google-project-id"",
|
|
1245
|
+
"export DEPLOY_CLOUD_RUN_REGION="europe-west6"",
|
|
1246
|
+
"export GCLOUD_DEPLOY_credentialsKey="$CL_prod_api_GCLOUD_DEPLOY_credentialsKey"",
|
|
1247
|
+
"export GCLOUD_RUN_canonicalHostSuffix="$CL_prod_api_GCLOUD_RUN_canonicalHostSuffix"",
|
|
1248
|
+
"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\\"]"",
|
|
1249
|
+
"echo -e "\\e[0Ksection_end:$(date +%s):injectvars\\r\\e[0K"",
|
|
1250
|
+
"echo '{"id":"$(git describe --tags 2>/dev/null || git rev-parse HEAD)","time":"$CI_JOB_STARTED_AT"}' > api/__build_info.json",
|
|
1178
1251
|
"echo -e "\\e[0Ksection_start:$(date +%s):nodeinstall[collapsed=true]\\r\\e[0KEnsure node version"",
|
|
1179
1252
|
"if [ -f ~/.nvm/nvm.sh ]; then source ~/.nvm/nvm.sh; fi",
|
|
1180
1253
|
"if command -v nvm &> /dev/null && [ -f ./.nvmrc ]; then nvm install; fi",
|
|
@@ -1191,25 +1264,9 @@ _ALL_ENV_VAR_KEYS: '["ENV_SHORT","APP_DIR","ENV_TYPE","BUILD_INFO_ID","BUILD_INF
|
|
|
1191
1264
|
],
|
|
1192
1265
|
"stage": "build",
|
|
1193
1266
|
"variables": {
|
|
1194
|
-
"APP_DIR": "api",
|
|
1195
|
-
"BUILD_INFO_BUILD_TIME": "01-01-2023 12:13:14",
|
|
1196
|
-
"BUILD_INFO_CURRENT_VERSION": "3.2.1",
|
|
1197
|
-
"BUILD_INFO_ID": "some-id",
|
|
1198
|
-
"DEPLOY_CLOUD_RUN_PROJECT_ID": "google-project-id",
|
|
1199
|
-
"DEPLOY_CLOUD_RUN_REGION": "europe-west6",
|
|
1200
|
-
"ENV_SHORT": "prod",
|
|
1201
|
-
"ENV_TYPE": "prod",
|
|
1202
|
-
"GCLOUD_DEPLOY_credentialsKey": "$CL_prod_api_GCLOUD_DEPLOY_credentialsKey",
|
|
1203
|
-
"GCLOUD_RUN_canonicalHostSuffix": "$CL_prod_api_GCLOUD_RUN_canonicalHostSuffix",
|
|
1204
|
-
"HOST": "pan-test-app-prod-api-unknown-host.example.com",
|
|
1205
|
-
"HOST_CANONICAL": "pan-test-app-prod-api-unknown-host.example.com",
|
|
1206
|
-
"HOST_INTERNAL": "pan-test-app-prod-api-unknown-host.example.com",
|
|
1207
1267
|
"KUBERNETES_CPU_REQUEST": "0.5",
|
|
1208
1268
|
"KUBERNETES_MEMORY_LIMIT": "4Gi",
|
|
1209
1269
|
"KUBERNETES_MEMORY_REQUEST": "2Gi",
|
|
1210
|
-
"ROOT_URL": "https://pan-test-app-prod-api-unknown-host.example.com",
|
|
1211
|
-
"ROOT_URL_INTERNAL": "https://pan-test-app-prod-api-unknown-host.example.com",
|
|
1212
|
-
"_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"]",
|
|
1213
1270
|
},
|
|
1214
1271
|
},
|
|
1215
1272
|
"api 🔨 app | stage ": {
|
|
@@ -1259,7 +1316,25 @@ _ALL_ENV_VAR_KEYS: '["ENV_SHORT","APP_DIR","ENV_TYPE","BUILD_INFO_ID","BUILD_INF
|
|
|
1259
1316
|
],
|
|
1260
1317
|
},
|
|
1261
1318
|
"script": [
|
|
1262
|
-
"echo
|
|
1319
|
+
"echo -e "\\e[0Ksection_start:$(date +%s):injectvars[collapsed=true]\\r\\e[0KInjecting variables"",
|
|
1320
|
+
"export ENV_SHORT="stage"",
|
|
1321
|
+
"export APP_DIR="api"",
|
|
1322
|
+
"export ENV_TYPE="stage"",
|
|
1323
|
+
"export BUILD_INFO_BUILD_ID="$(git describe --tags 2>/dev/null || git rev-parse HEAD)"",
|
|
1324
|
+
"export BUILD_INFO_BUILD_TIME="$CI_JOB_STARTED_AT"",
|
|
1325
|
+
"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")"",
|
|
1326
|
+
"export HOST="$(printf %s "pan-test-app-stage-api-$CL_stage_api_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')"",
|
|
1327
|
+
"export ROOT_URL="https://$(printf %s "pan-test-app-stage-api-$CL_stage_api_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')"",
|
|
1328
|
+
"export HOST_INTERNAL="$(printf %s "pan-test-app-stage-api-$CL_stage_api_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')"",
|
|
1329
|
+
"export HOST_CANONICAL="$(printf %s "pan-test-app-stage-api-$CL_stage_api_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')"",
|
|
1330
|
+
"export ROOT_URL_INTERNAL="https://$(printf %s "pan-test-app-stage-api-$CL_stage_api_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')"",
|
|
1331
|
+
"export DEPLOY_CLOUD_RUN_PROJECT_ID="google-project-id"",
|
|
1332
|
+
"export DEPLOY_CLOUD_RUN_REGION="europe-west6"",
|
|
1333
|
+
"export GCLOUD_DEPLOY_credentialsKey="$CL_stage_api_GCLOUD_DEPLOY_credentialsKey"",
|
|
1334
|
+
"export GCLOUD_RUN_canonicalHostSuffix="$CL_stage_api_GCLOUD_RUN_canonicalHostSuffix"",
|
|
1335
|
+
"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\\"]"",
|
|
1336
|
+
"echo -e "\\e[0Ksection_end:$(date +%s):injectvars\\r\\e[0K"",
|
|
1337
|
+
"echo '{"id":"$(git describe --tags 2>/dev/null || git rev-parse HEAD)","time":"$CI_JOB_STARTED_AT"}' > api/__build_info.json",
|
|
1263
1338
|
"echo -e "\\e[0Ksection_start:$(date +%s):nodeinstall[collapsed=true]\\r\\e[0KEnsure node version"",
|
|
1264
1339
|
"if [ -f ~/.nvm/nvm.sh ]; then source ~/.nvm/nvm.sh; fi",
|
|
1265
1340
|
"if command -v nvm &> /dev/null && [ -f ./.nvmrc ]; then nvm install; fi",
|
|
@@ -1276,25 +1351,9 @@ _ALL_ENV_VAR_KEYS: '["ENV_SHORT","APP_DIR","ENV_TYPE","BUILD_INFO_ID","BUILD_INF
|
|
|
1276
1351
|
],
|
|
1277
1352
|
"stage": "build",
|
|
1278
1353
|
"variables": {
|
|
1279
|
-
"APP_DIR": "api",
|
|
1280
|
-
"BUILD_INFO_BUILD_TIME": "01-01-2023 12:13:14",
|
|
1281
|
-
"BUILD_INFO_CURRENT_VERSION": "3.2.1",
|
|
1282
|
-
"BUILD_INFO_ID": "some-id",
|
|
1283
|
-
"DEPLOY_CLOUD_RUN_PROJECT_ID": "google-project-id",
|
|
1284
|
-
"DEPLOY_CLOUD_RUN_REGION": "europe-west6",
|
|
1285
|
-
"ENV_SHORT": "stage",
|
|
1286
|
-
"ENV_TYPE": "stage",
|
|
1287
|
-
"GCLOUD_DEPLOY_credentialsKey": "$CL_stage_api_GCLOUD_DEPLOY_credentialsKey",
|
|
1288
|
-
"GCLOUD_RUN_canonicalHostSuffix": "$CL_stage_api_GCLOUD_RUN_canonicalHostSuffix",
|
|
1289
|
-
"HOST": "pan-test-app-stage-api-unknown-host.example.com",
|
|
1290
|
-
"HOST_CANONICAL": "pan-test-app-stage-api-unknown-host.example.com",
|
|
1291
|
-
"HOST_INTERNAL": "pan-test-app-stage-api-unknown-host.example.com",
|
|
1292
1354
|
"KUBERNETES_CPU_REQUEST": "0.5",
|
|
1293
1355
|
"KUBERNETES_MEMORY_LIMIT": "4Gi",
|
|
1294
1356
|
"KUBERNETES_MEMORY_REQUEST": "2Gi",
|
|
1295
|
-
"ROOT_URL": "https://pan-test-app-stage-api-unknown-host.example.com",
|
|
1296
|
-
"ROOT_URL_INTERNAL": "https://pan-test-app-stage-api-unknown-host.example.com",
|
|
1297
|
-
"_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"]",
|
|
1298
1357
|
},
|
|
1299
1358
|
},
|
|
1300
1359
|
"api 🔨 docker | prod ": {
|
|
@@ -1320,6 +1379,21 @@ _ALL_ENV_VAR_KEYS: '["ENV_SHORT","APP_DIR","ENV_TYPE","BUILD_INFO_ID","BUILD_INF
|
|
|
1320
1379
|
],
|
|
1321
1380
|
},
|
|
1322
1381
|
"script": [
|
|
1382
|
+
"echo -e "\\e[0Ksection_start:$(date +%s):injectvars[collapsed=true]\\r\\e[0KInjecting variables"",
|
|
1383
|
+
"export APP_DIR="api"",
|
|
1384
|
+
"export DOCKER_DIR="."",
|
|
1385
|
+
"export DOCKER_REGISTRY="europe-west6-docker.pkg.dev"",
|
|
1386
|
+
"export DOCKER_IMAGE="europe-west6-docker.pkg.dev/google-project-id/catladder-deploy/pan-test-app/prod/api"",
|
|
1387
|
+
"export DOCKER_CACHE_IMAGE="europe-west6-docker.pkg.dev/google-project-id/catladder-deploy/pan-test-app/caches/api"",
|
|
1388
|
+
"export DOCKER_IMAGE_TAG="$CI_COMMIT_SHA"",
|
|
1389
|
+
"export DOCKER_COPY_AND_INSTALL_APP="COPY --chown=node:node $APP_DIR .
|
|
1390
|
+
RUN yarn plugin import workspace-tools
|
|
1391
|
+
RUN yarn workspaces focus --production && yarn rebuild"",
|
|
1392
|
+
"export DOCKER_COPY_WORKSPACE_FILES="COPY --chown=node:node api/package.json /app/api/package.json
|
|
1393
|
+
COPY --chown=node:node api/yarn.lock /app/api/yarn.lock
|
|
1394
|
+
COPY --chown=node:node .yarnrc.yml /app/.yarnrc.yml
|
|
1395
|
+
COPY --chown=node:node .yarn /app/.yarn"",
|
|
1396
|
+
"echo -e "\\e[0Ksection_end:$(date +%s):injectvars\\r\\e[0K"",
|
|
1323
1397
|
"ensureNodeDockerfile",
|
|
1324
1398
|
"echo -e "\\e[0Ksection_start:$(date +%s):docker-login[collapsed=true]\\r\\e[0KDocker Login"",
|
|
1325
1399
|
"gcloud auth activate-service-account --key-file=<(echo "$CL_prod_api_GCLOUD_DEPLOY_credentialsKey")",
|
|
@@ -1344,24 +1418,9 @@ _ALL_ENV_VAR_KEYS: '["ENV_SHORT","APP_DIR","ENV_TYPE","BUILD_INFO_ID","BUILD_INF
|
|
|
1344
1418
|
],
|
|
1345
1419
|
"stage": "build",
|
|
1346
1420
|
"variables": {
|
|
1347
|
-
"APP_DIR": "api",
|
|
1348
|
-
"DOCKERFILE_ADDITIONS": undefined,
|
|
1349
|
-
"DOCKERFILE_ADDITIONS_END": undefined,
|
|
1350
1421
|
"DOCKER_BUILDKIT": "1",
|
|
1351
|
-
"DOCKER_CACHE_IMAGE": "europe-west6-docker.pkg.dev/google-project-id/catladder-deploy/pan-test-app/caches/api",
|
|
1352
|
-
"DOCKER_COPY_AND_INSTALL_APP": "COPY --chown=node:node $APP_DIR .
|
|
1353
|
-
RUN yarn plugin import workspace-tools
|
|
1354
|
-
RUN yarn workspaces focus --production && yarn rebuild",
|
|
1355
|
-
"DOCKER_COPY_WORKSPACE_FILES": "COPY --chown=node:node api/package.json /app/api/package.json
|
|
1356
|
-
COPY --chown=node:node api/yarn.lock /app/api/yarn.lock
|
|
1357
|
-
COPY --chown=node:node .yarnrc.yml /app/.yarnrc.yml
|
|
1358
|
-
COPY --chown=node:node .yarn /app/.yarn",
|
|
1359
|
-
"DOCKER_DIR": ".",
|
|
1360
1422
|
"DOCKER_DRIVER": "overlay2",
|
|
1361
1423
|
"DOCKER_HOST": "tcp://0.0.0.0:2375",
|
|
1362
|
-
"DOCKER_IMAGE": "europe-west6-docker.pkg.dev/google-project-id/catladder-deploy/pan-test-app/prod/api",
|
|
1363
|
-
"DOCKER_IMAGE_TAG": "$CI_COMMIT_SHA",
|
|
1364
|
-
"DOCKER_REGISTRY": "europe-west6-docker.pkg.dev",
|
|
1365
1424
|
"DOCKER_TLS_CERTDIR": "",
|
|
1366
1425
|
"KUBERNETES_CPU_REQUEST": "0.5",
|
|
1367
1426
|
"KUBERNETES_MEMORY_LIMIT": "2Gi",
|
|
@@ -1391,6 +1450,21 @@ COPY --chown=node:node .yarn /app/.yarn",
|
|
|
1391
1450
|
],
|
|
1392
1451
|
},
|
|
1393
1452
|
"script": [
|
|
1453
|
+
"echo -e "\\e[0Ksection_start:$(date +%s):injectvars[collapsed=true]\\r\\e[0KInjecting variables"",
|
|
1454
|
+
"export APP_DIR="api"",
|
|
1455
|
+
"export DOCKER_DIR="."",
|
|
1456
|
+
"export DOCKER_REGISTRY="europe-west6-docker.pkg.dev"",
|
|
1457
|
+
"export DOCKER_IMAGE="europe-west6-docker.pkg.dev/google-project-id/catladder-deploy/pan-test-app/stage/api"",
|
|
1458
|
+
"export DOCKER_CACHE_IMAGE="europe-west6-docker.pkg.dev/google-project-id/catladder-deploy/pan-test-app/caches/api"",
|
|
1459
|
+
"export DOCKER_IMAGE_TAG="$CI_COMMIT_SHA"",
|
|
1460
|
+
"export DOCKER_COPY_AND_INSTALL_APP="COPY --chown=node:node $APP_DIR .
|
|
1461
|
+
RUN yarn plugin import workspace-tools
|
|
1462
|
+
RUN yarn workspaces focus --production && yarn rebuild"",
|
|
1463
|
+
"export DOCKER_COPY_WORKSPACE_FILES="COPY --chown=node:node api/package.json /app/api/package.json
|
|
1464
|
+
COPY --chown=node:node api/yarn.lock /app/api/yarn.lock
|
|
1465
|
+
COPY --chown=node:node .yarnrc.yml /app/.yarnrc.yml
|
|
1466
|
+
COPY --chown=node:node .yarn /app/.yarn"",
|
|
1467
|
+
"echo -e "\\e[0Ksection_end:$(date +%s):injectvars\\r\\e[0K"",
|
|
1394
1468
|
"ensureNodeDockerfile",
|
|
1395
1469
|
"echo -e "\\e[0Ksection_start:$(date +%s):docker-login[collapsed=true]\\r\\e[0KDocker Login"",
|
|
1396
1470
|
"gcloud auth activate-service-account --key-file=<(echo "$CL_stage_api_GCLOUD_DEPLOY_credentialsKey")",
|
|
@@ -1415,24 +1489,9 @@ COPY --chown=node:node .yarn /app/.yarn",
|
|
|
1415
1489
|
],
|
|
1416
1490
|
"stage": "build",
|
|
1417
1491
|
"variables": {
|
|
1418
|
-
"APP_DIR": "api",
|
|
1419
|
-
"DOCKERFILE_ADDITIONS": undefined,
|
|
1420
|
-
"DOCKERFILE_ADDITIONS_END": undefined,
|
|
1421
1492
|
"DOCKER_BUILDKIT": "1",
|
|
1422
|
-
"DOCKER_CACHE_IMAGE": "europe-west6-docker.pkg.dev/google-project-id/catladder-deploy/pan-test-app/caches/api",
|
|
1423
|
-
"DOCKER_COPY_AND_INSTALL_APP": "COPY --chown=node:node $APP_DIR .
|
|
1424
|
-
RUN yarn plugin import workspace-tools
|
|
1425
|
-
RUN yarn workspaces focus --production && yarn rebuild",
|
|
1426
|
-
"DOCKER_COPY_WORKSPACE_FILES": "COPY --chown=node:node api/package.json /app/api/package.json
|
|
1427
|
-
COPY --chown=node:node api/yarn.lock /app/api/yarn.lock
|
|
1428
|
-
COPY --chown=node:node .yarnrc.yml /app/.yarnrc.yml
|
|
1429
|
-
COPY --chown=node:node .yarn /app/.yarn",
|
|
1430
|
-
"DOCKER_DIR": ".",
|
|
1431
1493
|
"DOCKER_DRIVER": "overlay2",
|
|
1432
1494
|
"DOCKER_HOST": "tcp://0.0.0.0:2375",
|
|
1433
|
-
"DOCKER_IMAGE": "europe-west6-docker.pkg.dev/google-project-id/catladder-deploy/pan-test-app/stage/api",
|
|
1434
|
-
"DOCKER_IMAGE_TAG": "$CI_COMMIT_SHA",
|
|
1435
|
-
"DOCKER_REGISTRY": "europe-west6-docker.pkg.dev",
|
|
1436
1495
|
"DOCKER_TLS_CERTDIR": "",
|
|
1437
1496
|
"KUBERNETES_CPU_REQUEST": "0.5",
|
|
1438
1497
|
"KUBERNETES_MEMORY_LIMIT": "2Gi",
|
|
@@ -1442,15 +1501,15 @@ COPY --chown=node:node .yarn /app/.yarn",
|
|
|
1442
1501
|
"api 🚀 Deploy | prod ": {
|
|
1443
1502
|
"allow_failure": true,
|
|
1444
1503
|
"artifacts": {
|
|
1445
|
-
"
|
|
1446
|
-
"
|
|
1447
|
-
|
|
1504
|
+
"reports": {
|
|
1505
|
+
"dotenv": "gitlab_environment.env",
|
|
1506
|
+
},
|
|
1448
1507
|
},
|
|
1449
1508
|
"environment": {
|
|
1450
1509
|
"auto_stop_in": undefined,
|
|
1451
1510
|
"name": "prod/api",
|
|
1452
1511
|
"on_stop": "api 🛑 Stop ⚠️ | prod ",
|
|
1453
|
-
"url": "
|
|
1512
|
+
"url": "$CL_GITLAB_ENVIRONMENT_URL",
|
|
1454
1513
|
},
|
|
1455
1514
|
"image": "path/to/docker/gcloud:the-version",
|
|
1456
1515
|
"interruptible": true,
|
|
@@ -1481,13 +1540,71 @@ COPY --chown=node:node .yarn /app/.yarn",
|
|
|
1481
1540
|
},
|
|
1482
1541
|
],
|
|
1483
1542
|
"script": [
|
|
1543
|
+
"echo -e "\\e[0Ksection_start:$(date +%s):injectvars[collapsed=true]\\r\\e[0KInjecting variables"",
|
|
1544
|
+
"export ENV_SHORT="prod"",
|
|
1545
|
+
"export APP_DIR="api"",
|
|
1546
|
+
"export ENV_TYPE="prod"",
|
|
1547
|
+
"export BUILD_INFO_BUILD_ID="$(git describe --tags 2>/dev/null || git rev-parse HEAD)"",
|
|
1548
|
+
"export BUILD_INFO_BUILD_TIME="$CI_JOB_STARTED_AT"",
|
|
1549
|
+
"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")"",
|
|
1550
|
+
"export HOST="$(printf %s "pan-test-app-prod-api-$CL_prod_api_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')"",
|
|
1551
|
+
"export ROOT_URL="https://$(printf %s "pan-test-app-prod-api-$CL_prod_api_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')"",
|
|
1552
|
+
"export HOST_INTERNAL="$(printf %s "pan-test-app-prod-api-$CL_prod_api_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')"",
|
|
1553
|
+
"export HOST_CANONICAL="$(printf %s "pan-test-app-prod-api-$CL_prod_api_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')"",
|
|
1554
|
+
"export ROOT_URL_INTERNAL="https://$(printf %s "pan-test-app-prod-api-$CL_prod_api_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')"",
|
|
1555
|
+
"export DEPLOY_CLOUD_RUN_PROJECT_ID="google-project-id"",
|
|
1556
|
+
"export DEPLOY_CLOUD_RUN_REGION="europe-west6"",
|
|
1557
|
+
"export GCLOUD_DEPLOY_credentialsKey="$CL_prod_api_GCLOUD_DEPLOY_credentialsKey"",
|
|
1558
|
+
"export GCLOUD_RUN_canonicalHostSuffix="$CL_prod_api_GCLOUD_RUN_canonicalHostSuffix"",
|
|
1559
|
+
"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\\"]"",
|
|
1560
|
+
"export DOCKER_REGISTRY="europe-west6-docker.pkg.dev"",
|
|
1561
|
+
"export DOCKER_IMAGE="europe-west6-docker.pkg.dev/google-project-id/catladder-deploy/pan-test-app/prod/api"",
|
|
1562
|
+
"export DOCKER_CACHE_IMAGE="europe-west6-docker.pkg.dev/google-project-id/catladder-deploy/pan-test-app/caches/api"",
|
|
1563
|
+
"export DOCKER_IMAGE_TAG="$CI_COMMIT_SHA"",
|
|
1564
|
+
"export CLOUDSDK_CORE_DISABLE_PROMPTS="1"",
|
|
1565
|
+
"echo -e "\\e[0Ksection_end:$(date +%s):injectvars\\r\\e[0K"",
|
|
1484
1566
|
"echo -e "\\e[0Ksection_start:$(date +%s):prepare[collapsed=true]\\r\\e[0KPrepare..."",
|
|
1485
1567
|
"gcloud auth activate-service-account --key-file=<(echo "$CL_prod_api_GCLOUD_DEPLOY_credentialsKey")",
|
|
1486
1568
|
"export GCLOUD_PROJECT_NUMBER=$(gcloud projects describe google-project-id --format="value(projectNumber)")",
|
|
1487
1569
|
"echo "GCLOUD_PROJECT_NUMBER: $GCLOUD_PROJECT_NUMBER"",
|
|
1488
1570
|
"echo -e "\\e[0Ksection_end:$(date +%s):prepare\\r\\e[0K"",
|
|
1571
|
+
"echo -e "\\e[0Ksection_start:$(date +%s):writeenvvars[collapsed=true]\\r\\e[0KWrite env vars to file"",
|
|
1572
|
+
"cat > ____envvars.yaml <<EOF
|
|
1573
|
+
ENV_SHORT: |-
|
|
1574
|
+
prod
|
|
1575
|
+
APP_DIR: |-
|
|
1576
|
+
api
|
|
1577
|
+
ENV_TYPE: |-
|
|
1578
|
+
prod
|
|
1579
|
+
BUILD_INFO_BUILD_ID: |-
|
|
1580
|
+
$(printf %s "$(git describe --tags 2>/dev/null || git rev-parse HEAD)" | sed 's/^/ /')
|
|
1581
|
+
BUILD_INFO_BUILD_TIME: |-
|
|
1582
|
+
$(printf %s "$CI_JOB_STARTED_AT" | sed 's/^/ /')
|
|
1583
|
+
BUILD_INFO_CURRENT_VERSION: |-
|
|
1584
|
+
$(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/^/ /')
|
|
1585
|
+
HOST: |-
|
|
1586
|
+
$(printf %s "$(printf %s "pan-test-app-prod-api-$CL_prod_api_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')" | sed 's/^/ /')
|
|
1587
|
+
ROOT_URL: |-
|
|
1588
|
+
$(printf %s "https://$(printf %s "pan-test-app-prod-api-$CL_prod_api_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')" | sed 's/^/ /')
|
|
1589
|
+
HOST_INTERNAL: |-
|
|
1590
|
+
$(printf %s "$(printf %s "pan-test-app-prod-api-$CL_prod_api_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')" | sed 's/^/ /')
|
|
1591
|
+
HOST_CANONICAL: |-
|
|
1592
|
+
$(printf %s "$(printf %s "pan-test-app-prod-api-$CL_prod_api_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')" | sed 's/^/ /')
|
|
1593
|
+
ROOT_URL_INTERNAL: |-
|
|
1594
|
+
$(printf %s "https://$(printf %s "pan-test-app-prod-api-$CL_prod_api_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')" | sed 's/^/ /')
|
|
1595
|
+
DEPLOY_CLOUD_RUN_PROJECT_ID: |-
|
|
1596
|
+
google-project-id
|
|
1597
|
+
DEPLOY_CLOUD_RUN_REGION: |-
|
|
1598
|
+
europe-west6
|
|
1599
|
+
GCLOUD_RUN_canonicalHostSuffix: |-
|
|
1600
|
+
$(printf %s "$CL_prod_api_GCLOUD_RUN_canonicalHostSuffix" | sed 's/^/ /')
|
|
1601
|
+
_ALL_ENV_VAR_KEYS: |-
|
|
1602
|
+
["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"]
|
|
1603
|
+
|
|
1604
|
+
EOF
|
|
1605
|
+
",
|
|
1606
|
+
"echo -e "\\e[0Ksection_end:$(date +%s):writeenvvars\\r\\e[0K"",
|
|
1489
1607
|
"echo -e "\\e[0Ksection_start:$(date +%s):deploy[collapsed=true]\\r\\e[0KDeploy to cloud run"",
|
|
1490
|
-
"echo "$ENV_VARS" > ____envvars.yaml",
|
|
1491
1608
|
"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",
|
|
1492
1609
|
"echo -e "\\e[0Ksection_end:$(date +%s):deploy\\r\\e[0K"",
|
|
1493
1610
|
"echo -e "\\e[0Ksection_start:$(date +%s):cleanup[collapsed=true]\\r\\e[0KCleanup"",
|
|
@@ -1496,76 +1613,28 @@ COPY --chown=node:node .yarn /app/.yarn",
|
|
|
1496
1613
|
"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",
|
|
1497
1614
|
"echo -e "\\e[0Ksection_end:$(date +%s):cleanup\\r\\e[0K"",
|
|
1498
1615
|
"echo Uploading SBOM to Dependency Track",
|
|
1499
|
-
"/dtrackuploader https://dep.panter.swiss/ "$DT_KEY_PROD" upload "pan-test-app/api" "https
|
|
1500
|
-
|
|
1501
|
-
"services": [
|
|
1502
|
-
{
|
|
1503
|
-
"command": [
|
|
1504
|
-
"--tls=false",
|
|
1505
|
-
],
|
|
1506
|
-
"name": "docker:24.0.6-dind",
|
|
1507
|
-
},
|
|
1616
|
+
"/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",
|
|
1617
|
+
"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",
|
|
1508
1618
|
],
|
|
1509
1619
|
"stage": "deploy prod",
|
|
1510
1620
|
"variables": {
|
|
1511
|
-
"APP_DIR": "api",
|
|
1512
|
-
"BUILD_INFO_BUILD_TIME": "01-01-2023 12:13:14",
|
|
1513
|
-
"BUILD_INFO_CURRENT_VERSION": "3.2.1",
|
|
1514
|
-
"BUILD_INFO_ID": "some-id",
|
|
1515
|
-
"CLOUDSDK_CORE_DISABLE_PROMPTS": "1",
|
|
1516
|
-
"DEPLOY_CLOUD_RUN_PROJECT_ID": "google-project-id",
|
|
1517
|
-
"DEPLOY_CLOUD_RUN_REGION": "europe-west6",
|
|
1518
|
-
"DOCKER_BUILDKIT": "1",
|
|
1519
|
-
"DOCKER_CACHE_IMAGE": "europe-west6-docker.pkg.dev/google-project-id/catladder-deploy/pan-test-app/caches/api",
|
|
1520
|
-
"DOCKER_DRIVER": "overlay2",
|
|
1521
|
-
"DOCKER_HOST": "tcp://0.0.0.0:2375",
|
|
1522
|
-
"DOCKER_IMAGE": "europe-west6-docker.pkg.dev/google-project-id/catladder-deploy/pan-test-app/prod/api",
|
|
1523
|
-
"DOCKER_IMAGE_TAG": "$CI_COMMIT_SHA",
|
|
1524
|
-
"DOCKER_REGISTRY": "europe-west6-docker.pkg.dev",
|
|
1525
|
-
"DOCKER_TLS_CERTDIR": "",
|
|
1526
|
-
"ENV_SHORT": "prod",
|
|
1527
|
-
"ENV_TYPE": "prod",
|
|
1528
|
-
"ENV_VARS": "ENV_SHORT: 'prod'
|
|
1529
|
-
APP_DIR: 'api'
|
|
1530
|
-
ENV_TYPE: 'prod'
|
|
1531
|
-
BUILD_INFO_ID: 'some-id'
|
|
1532
|
-
BUILD_INFO_BUILD_TIME: '01-01-2023 12:13:14'
|
|
1533
|
-
BUILD_INFO_CURRENT_VERSION: '3.2.1'
|
|
1534
|
-
HOST: 'pan-test-app-prod-api-unknown-host.example.com'
|
|
1535
|
-
ROOT_URL: 'https://pan-test-app-prod-api-unknown-host.example.com'
|
|
1536
|
-
HOST_CANONICAL: 'pan-test-app-prod-api-unknown-host.example.com'
|
|
1537
|
-
ROOT_URL_INTERNAL: 'https://pan-test-app-prod-api-unknown-host.example.com'
|
|
1538
|
-
HOST_INTERNAL: 'pan-test-app-prod-api-unknown-host.example.com'
|
|
1539
|
-
DEPLOY_CLOUD_RUN_PROJECT_ID: 'google-project-id'
|
|
1540
|
-
DEPLOY_CLOUD_RUN_REGION: 'europe-west6'
|
|
1541
|
-
GCLOUD_RUN_canonicalHostSuffix: '$CL_prod_api_GCLOUD_RUN_canonicalHostSuffix'
|
|
1542
|
-
_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"]'
|
|
1543
|
-
",
|
|
1544
|
-
"GCLOUD_DEPLOY_credentialsKey": "$CL_prod_api_GCLOUD_DEPLOY_credentialsKey",
|
|
1545
|
-
"GCLOUD_RUN_canonicalHostSuffix": "$CL_prod_api_GCLOUD_RUN_canonicalHostSuffix",
|
|
1546
|
-
"HOST": "pan-test-app-prod-api-unknown-host.example.com",
|
|
1547
|
-
"HOST_CANONICAL": "pan-test-app-prod-api-unknown-host.example.com",
|
|
1548
|
-
"HOST_INTERNAL": "pan-test-app-prod-api-unknown-host.example.com",
|
|
1549
1621
|
"KUBERNETES_CPU_REQUEST": "0.5",
|
|
1550
1622
|
"KUBERNETES_MEMORY_LIMIT": "400Mi",
|
|
1551
1623
|
"KUBERNETES_MEMORY_REQUEST": "200Mi",
|
|
1552
|
-
"ROOT_URL": "https://pan-test-app-prod-api-unknown-host.example.com",
|
|
1553
|
-
"ROOT_URL_INTERNAL": "https://pan-test-app-prod-api-unknown-host.example.com",
|
|
1554
|
-
"_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"]",
|
|
1555
1624
|
},
|
|
1556
1625
|
},
|
|
1557
1626
|
"api 🚀 Deploy | stage ": {
|
|
1558
1627
|
"allow_failure": false,
|
|
1559
1628
|
"artifacts": {
|
|
1560
|
-
"
|
|
1561
|
-
"
|
|
1562
|
-
|
|
1629
|
+
"reports": {
|
|
1630
|
+
"dotenv": "gitlab_environment.env",
|
|
1631
|
+
},
|
|
1563
1632
|
},
|
|
1564
1633
|
"environment": {
|
|
1565
1634
|
"auto_stop_in": undefined,
|
|
1566
1635
|
"name": "stage/api",
|
|
1567
1636
|
"on_stop": "api 🛑 Stop ⚠️ | stage ",
|
|
1568
|
-
"url": "
|
|
1637
|
+
"url": "$CL_GITLAB_ENVIRONMENT_URL",
|
|
1569
1638
|
},
|
|
1570
1639
|
"image": "path/to/docker/gcloud:the-version",
|
|
1571
1640
|
"interruptible": true,
|
|
@@ -1596,13 +1665,71 @@ _ALL_ENV_VAR_KEYS: '["ENV_SHORT","APP_DIR","ENV_TYPE","BUILD_INFO_ID","BUILD_INF
|
|
|
1596
1665
|
},
|
|
1597
1666
|
],
|
|
1598
1667
|
"script": [
|
|
1668
|
+
"echo -e "\\e[0Ksection_start:$(date +%s):injectvars[collapsed=true]\\r\\e[0KInjecting variables"",
|
|
1669
|
+
"export ENV_SHORT="stage"",
|
|
1670
|
+
"export APP_DIR="api"",
|
|
1671
|
+
"export ENV_TYPE="stage"",
|
|
1672
|
+
"export BUILD_INFO_BUILD_ID="$(git describe --tags 2>/dev/null || git rev-parse HEAD)"",
|
|
1673
|
+
"export BUILD_INFO_BUILD_TIME="$CI_JOB_STARTED_AT"",
|
|
1674
|
+
"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")"",
|
|
1675
|
+
"export HOST="$(printf %s "pan-test-app-stage-api-$CL_stage_api_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')"",
|
|
1676
|
+
"export ROOT_URL="https://$(printf %s "pan-test-app-stage-api-$CL_stage_api_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')"",
|
|
1677
|
+
"export HOST_INTERNAL="$(printf %s "pan-test-app-stage-api-$CL_stage_api_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')"",
|
|
1678
|
+
"export HOST_CANONICAL="$(printf %s "pan-test-app-stage-api-$CL_stage_api_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')"",
|
|
1679
|
+
"export ROOT_URL_INTERNAL="https://$(printf %s "pan-test-app-stage-api-$CL_stage_api_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')"",
|
|
1680
|
+
"export DEPLOY_CLOUD_RUN_PROJECT_ID="google-project-id"",
|
|
1681
|
+
"export DEPLOY_CLOUD_RUN_REGION="europe-west6"",
|
|
1682
|
+
"export GCLOUD_DEPLOY_credentialsKey="$CL_stage_api_GCLOUD_DEPLOY_credentialsKey"",
|
|
1683
|
+
"export GCLOUD_RUN_canonicalHostSuffix="$CL_stage_api_GCLOUD_RUN_canonicalHostSuffix"",
|
|
1684
|
+
"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\\"]"",
|
|
1685
|
+
"export DOCKER_REGISTRY="europe-west6-docker.pkg.dev"",
|
|
1686
|
+
"export DOCKER_IMAGE="europe-west6-docker.pkg.dev/google-project-id/catladder-deploy/pan-test-app/stage/api"",
|
|
1687
|
+
"export DOCKER_CACHE_IMAGE="europe-west6-docker.pkg.dev/google-project-id/catladder-deploy/pan-test-app/caches/api"",
|
|
1688
|
+
"export DOCKER_IMAGE_TAG="$CI_COMMIT_SHA"",
|
|
1689
|
+
"export CLOUDSDK_CORE_DISABLE_PROMPTS="1"",
|
|
1690
|
+
"echo -e "\\e[0Ksection_end:$(date +%s):injectvars\\r\\e[0K"",
|
|
1599
1691
|
"echo -e "\\e[0Ksection_start:$(date +%s):prepare[collapsed=true]\\r\\e[0KPrepare..."",
|
|
1600
1692
|
"gcloud auth activate-service-account --key-file=<(echo "$CL_stage_api_GCLOUD_DEPLOY_credentialsKey")",
|
|
1601
1693
|
"export GCLOUD_PROJECT_NUMBER=$(gcloud projects describe google-project-id --format="value(projectNumber)")",
|
|
1602
1694
|
"echo "GCLOUD_PROJECT_NUMBER: $GCLOUD_PROJECT_NUMBER"",
|
|
1603
1695
|
"echo -e "\\e[0Ksection_end:$(date +%s):prepare\\r\\e[0K"",
|
|
1696
|
+
"echo -e "\\e[0Ksection_start:$(date +%s):writeenvvars[collapsed=true]\\r\\e[0KWrite env vars to file"",
|
|
1697
|
+
"cat > ____envvars.yaml <<EOF
|
|
1698
|
+
ENV_SHORT: |-
|
|
1699
|
+
stage
|
|
1700
|
+
APP_DIR: |-
|
|
1701
|
+
api
|
|
1702
|
+
ENV_TYPE: |-
|
|
1703
|
+
stage
|
|
1704
|
+
BUILD_INFO_BUILD_ID: |-
|
|
1705
|
+
$(printf %s "$(git describe --tags 2>/dev/null || git rev-parse HEAD)" | sed 's/^/ /')
|
|
1706
|
+
BUILD_INFO_BUILD_TIME: |-
|
|
1707
|
+
$(printf %s "$CI_JOB_STARTED_AT" | sed 's/^/ /')
|
|
1708
|
+
BUILD_INFO_CURRENT_VERSION: |-
|
|
1709
|
+
$(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/^/ /')
|
|
1710
|
+
HOST: |-
|
|
1711
|
+
$(printf %s "$(printf %s "pan-test-app-stage-api-$CL_stage_api_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')" | sed 's/^/ /')
|
|
1712
|
+
ROOT_URL: |-
|
|
1713
|
+
$(printf %s "https://$(printf %s "pan-test-app-stage-api-$CL_stage_api_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')" | sed 's/^/ /')
|
|
1714
|
+
HOST_INTERNAL: |-
|
|
1715
|
+
$(printf %s "$(printf %s "pan-test-app-stage-api-$CL_stage_api_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')" | sed 's/^/ /')
|
|
1716
|
+
HOST_CANONICAL: |-
|
|
1717
|
+
$(printf %s "$(printf %s "pan-test-app-stage-api-$CL_stage_api_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')" | sed 's/^/ /')
|
|
1718
|
+
ROOT_URL_INTERNAL: |-
|
|
1719
|
+
$(printf %s "https://$(printf %s "pan-test-app-stage-api-$CL_stage_api_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')" | sed 's/^/ /')
|
|
1720
|
+
DEPLOY_CLOUD_RUN_PROJECT_ID: |-
|
|
1721
|
+
google-project-id
|
|
1722
|
+
DEPLOY_CLOUD_RUN_REGION: |-
|
|
1723
|
+
europe-west6
|
|
1724
|
+
GCLOUD_RUN_canonicalHostSuffix: |-
|
|
1725
|
+
$(printf %s "$CL_stage_api_GCLOUD_RUN_canonicalHostSuffix" | sed 's/^/ /')
|
|
1726
|
+
_ALL_ENV_VAR_KEYS: |-
|
|
1727
|
+
["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"]
|
|
1728
|
+
|
|
1729
|
+
EOF
|
|
1730
|
+
",
|
|
1731
|
+
"echo -e "\\e[0Ksection_end:$(date +%s):writeenvvars\\r\\e[0K"",
|
|
1604
1732
|
"echo -e "\\e[0Ksection_start:$(date +%s):deploy[collapsed=true]\\r\\e[0KDeploy to cloud run"",
|
|
1605
|
-
"echo "$ENV_VARS" > ____envvars.yaml",
|
|
1606
1733
|
"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",
|
|
1607
1734
|
"echo -e "\\e[0Ksection_end:$(date +%s):deploy\\r\\e[0K"",
|
|
1608
1735
|
"echo -e "\\e[0Ksection_start:$(date +%s):cleanup[collapsed=true]\\r\\e[0KCleanup"",
|
|
@@ -1611,69 +1738,27 @@ _ALL_ENV_VAR_KEYS: '["ENV_SHORT","APP_DIR","ENV_TYPE","BUILD_INFO_ID","BUILD_INF
|
|
|
1611
1738
|
"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",
|
|
1612
1739
|
"echo -e "\\e[0Ksection_end:$(date +%s):cleanup\\r\\e[0K"",
|
|
1613
1740
|
"echo Uploading SBOM to Dependency Track",
|
|
1614
|
-
"/dtrackuploader https://dep.panter.swiss/ "$DT_KEY_PROD" upload "pan-test-app/api" "https
|
|
1615
|
-
|
|
1616
|
-
"services": [
|
|
1617
|
-
{
|
|
1618
|
-
"command": [
|
|
1619
|
-
"--tls=false",
|
|
1620
|
-
],
|
|
1621
|
-
"name": "docker:24.0.6-dind",
|
|
1622
|
-
},
|
|
1741
|
+
"/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",
|
|
1742
|
+
"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",
|
|
1623
1743
|
],
|
|
1624
1744
|
"stage": "deploy stage",
|
|
1625
1745
|
"variables": {
|
|
1626
|
-
"APP_DIR": "api",
|
|
1627
|
-
"BUILD_INFO_BUILD_TIME": "01-01-2023 12:13:14",
|
|
1628
|
-
"BUILD_INFO_CURRENT_VERSION": "3.2.1",
|
|
1629
|
-
"BUILD_INFO_ID": "some-id",
|
|
1630
|
-
"CLOUDSDK_CORE_DISABLE_PROMPTS": "1",
|
|
1631
|
-
"DEPLOY_CLOUD_RUN_PROJECT_ID": "google-project-id",
|
|
1632
|
-
"DEPLOY_CLOUD_RUN_REGION": "europe-west6",
|
|
1633
|
-
"DOCKER_BUILDKIT": "1",
|
|
1634
|
-
"DOCKER_CACHE_IMAGE": "europe-west6-docker.pkg.dev/google-project-id/catladder-deploy/pan-test-app/caches/api",
|
|
1635
|
-
"DOCKER_DRIVER": "overlay2",
|
|
1636
|
-
"DOCKER_HOST": "tcp://0.0.0.0:2375",
|
|
1637
|
-
"DOCKER_IMAGE": "europe-west6-docker.pkg.dev/google-project-id/catladder-deploy/pan-test-app/stage/api",
|
|
1638
|
-
"DOCKER_IMAGE_TAG": "$CI_COMMIT_SHA",
|
|
1639
|
-
"DOCKER_REGISTRY": "europe-west6-docker.pkg.dev",
|
|
1640
|
-
"DOCKER_TLS_CERTDIR": "",
|
|
1641
|
-
"ENV_SHORT": "stage",
|
|
1642
|
-
"ENV_TYPE": "stage",
|
|
1643
|
-
"ENV_VARS": "ENV_SHORT: 'stage'
|
|
1644
|
-
APP_DIR: 'api'
|
|
1645
|
-
ENV_TYPE: 'stage'
|
|
1646
|
-
BUILD_INFO_ID: 'some-id'
|
|
1647
|
-
BUILD_INFO_BUILD_TIME: '01-01-2023 12:13:14'
|
|
1648
|
-
BUILD_INFO_CURRENT_VERSION: '3.2.1'
|
|
1649
|
-
HOST: 'pan-test-app-stage-api-unknown-host.example.com'
|
|
1650
|
-
ROOT_URL: 'https://pan-test-app-stage-api-unknown-host.example.com'
|
|
1651
|
-
HOST_CANONICAL: 'pan-test-app-stage-api-unknown-host.example.com'
|
|
1652
|
-
ROOT_URL_INTERNAL: 'https://pan-test-app-stage-api-unknown-host.example.com'
|
|
1653
|
-
HOST_INTERNAL: 'pan-test-app-stage-api-unknown-host.example.com'
|
|
1654
|
-
DEPLOY_CLOUD_RUN_PROJECT_ID: 'google-project-id'
|
|
1655
|
-
DEPLOY_CLOUD_RUN_REGION: 'europe-west6'
|
|
1656
|
-
GCLOUD_RUN_canonicalHostSuffix: '$CL_stage_api_GCLOUD_RUN_canonicalHostSuffix'
|
|
1657
|
-
_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"]'
|
|
1658
|
-
",
|
|
1659
|
-
"GCLOUD_DEPLOY_credentialsKey": "$CL_stage_api_GCLOUD_DEPLOY_credentialsKey",
|
|
1660
|
-
"GCLOUD_RUN_canonicalHostSuffix": "$CL_stage_api_GCLOUD_RUN_canonicalHostSuffix",
|
|
1661
|
-
"HOST": "pan-test-app-stage-api-unknown-host.example.com",
|
|
1662
|
-
"HOST_CANONICAL": "pan-test-app-stage-api-unknown-host.example.com",
|
|
1663
|
-
"HOST_INTERNAL": "pan-test-app-stage-api-unknown-host.example.com",
|
|
1664
1746
|
"KUBERNETES_CPU_REQUEST": "0.5",
|
|
1665
1747
|
"KUBERNETES_MEMORY_LIMIT": "400Mi",
|
|
1666
1748
|
"KUBERNETES_MEMORY_REQUEST": "200Mi",
|
|
1667
|
-
"ROOT_URL": "https://pan-test-app-stage-api-unknown-host.example.com",
|
|
1668
|
-
"ROOT_URL_INTERNAL": "https://pan-test-app-stage-api-unknown-host.example.com",
|
|
1669
|
-
"_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"]",
|
|
1670
1749
|
},
|
|
1671
1750
|
},
|
|
1672
1751
|
"api 🛑 Stop ⚠️ | prod ": {
|
|
1752
|
+
"allow_failure": true,
|
|
1753
|
+
"artifacts": {
|
|
1754
|
+
"reports": {
|
|
1755
|
+
"dotenv": "gitlab_environment.env",
|
|
1756
|
+
},
|
|
1757
|
+
},
|
|
1673
1758
|
"environment": {
|
|
1674
1759
|
"action": "stop",
|
|
1675
1760
|
"name": "prod/api",
|
|
1676
|
-
"url": "
|
|
1761
|
+
"url": "$CL_GITLAB_ENVIRONMENT_URL",
|
|
1677
1762
|
},
|
|
1678
1763
|
"image": "path/to/docker/gcloud:the-version",
|
|
1679
1764
|
"interruptible": true,
|
|
@@ -1687,28 +1772,29 @@ _ALL_ENV_VAR_KEYS: '["ENV_SHORT","APP_DIR","ENV_TYPE","BUILD_INFO_ID","BUILD_INF
|
|
|
1687
1772
|
},
|
|
1688
1773
|
"rules": [
|
|
1689
1774
|
{
|
|
1690
|
-
"allow_failure": true,
|
|
1691
1775
|
"if": "$CI_COMMIT_BRANCH =~ /^[0-9]+\\.([0-9]+|x)\\.x$/",
|
|
1692
1776
|
"when": "on_success",
|
|
1693
1777
|
},
|
|
1694
1778
|
{
|
|
1695
|
-
"allow_failure": true,
|
|
1696
1779
|
"when": "manual",
|
|
1697
1780
|
},
|
|
1698
1781
|
],
|
|
1699
1782
|
"script": [
|
|
1783
|
+
"echo -e "\\e[0Ksection_start:$(date +%s):injectvars[collapsed=true]\\r\\e[0KInjecting variables"",
|
|
1784
|
+
"export CLOUDSDK_CORE_DISABLE_PROMPTS="1"",
|
|
1785
|
+
"echo -e "\\e[0Ksection_end:$(date +%s):injectvars\\r\\e[0K"",
|
|
1700
1786
|
"set +e",
|
|
1701
1787
|
"gcloud auth activate-service-account --key-file=<(echo "$CL_prod_api_GCLOUD_DEPLOY_credentialsKey")",
|
|
1702
1788
|
"gcloud run services delete pan-test-app-prod-api --project=google-project-id --region=europe-west6",
|
|
1703
1789
|
"gcloud artifacts docker images delete europe-west6-docker.pkg.dev/google-project-id/catladder-deploy/pan-test-app/prod/api --quiet --delete-tags",
|
|
1704
1790
|
"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",
|
|
1705
1791
|
"echo Disabling component in Dependency Track",
|
|
1706
|
-
"/dtrackuploader https://dep.panter.swiss/ "$DT_KEY_PROD" disable "pan-test-app/api" "https
|
|
1792
|
+
"/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",
|
|
1707
1793
|
"set -e",
|
|
1794
|
+
"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",
|
|
1708
1795
|
],
|
|
1709
1796
|
"stage": "stop prod",
|
|
1710
1797
|
"variables": {
|
|
1711
|
-
"CLOUDSDK_CORE_DISABLE_PROMPTS": "1",
|
|
1712
1798
|
"GIT_STRATEGY": "none",
|
|
1713
1799
|
"KUBERNETES_CPU_REQUEST": "0.5",
|
|
1714
1800
|
"KUBERNETES_MEMORY_LIMIT": "400Mi",
|
|
@@ -1716,10 +1802,16 @@ _ALL_ENV_VAR_KEYS: '["ENV_SHORT","APP_DIR","ENV_TYPE","BUILD_INFO_ID","BUILD_INF
|
|
|
1716
1802
|
},
|
|
1717
1803
|
},
|
|
1718
1804
|
"api 🛑 Stop ⚠️ | stage ": {
|
|
1805
|
+
"allow_failure": true,
|
|
1806
|
+
"artifacts": {
|
|
1807
|
+
"reports": {
|
|
1808
|
+
"dotenv": "gitlab_environment.env",
|
|
1809
|
+
},
|
|
1810
|
+
},
|
|
1719
1811
|
"environment": {
|
|
1720
1812
|
"action": "stop",
|
|
1721
1813
|
"name": "stage/api",
|
|
1722
|
-
"url": "
|
|
1814
|
+
"url": "$CL_GITLAB_ENVIRONMENT_URL",
|
|
1723
1815
|
},
|
|
1724
1816
|
"image": "path/to/docker/gcloud:the-version",
|
|
1725
1817
|
"interruptible": true,
|
|
@@ -1733,28 +1825,29 @@ _ALL_ENV_VAR_KEYS: '["ENV_SHORT","APP_DIR","ENV_TYPE","BUILD_INFO_ID","BUILD_INF
|
|
|
1733
1825
|
},
|
|
1734
1826
|
"rules": [
|
|
1735
1827
|
{
|
|
1736
|
-
"allow_failure": true,
|
|
1737
1828
|
"if": "$CI_COMMIT_BRANCH =~ /^[0-9]+\\.([0-9]+|x)\\.x$/",
|
|
1738
1829
|
"when": "on_success",
|
|
1739
1830
|
},
|
|
1740
1831
|
{
|
|
1741
|
-
"allow_failure": true,
|
|
1742
1832
|
"when": "manual",
|
|
1743
1833
|
},
|
|
1744
1834
|
],
|
|
1745
1835
|
"script": [
|
|
1836
|
+
"echo -e "\\e[0Ksection_start:$(date +%s):injectvars[collapsed=true]\\r\\e[0KInjecting variables"",
|
|
1837
|
+
"export CLOUDSDK_CORE_DISABLE_PROMPTS="1"",
|
|
1838
|
+
"echo -e "\\e[0Ksection_end:$(date +%s):injectvars\\r\\e[0K"",
|
|
1746
1839
|
"set +e",
|
|
1747
1840
|
"gcloud auth activate-service-account --key-file=<(echo "$CL_stage_api_GCLOUD_DEPLOY_credentialsKey")",
|
|
1748
1841
|
"gcloud run services delete pan-test-app-stage-api --project=google-project-id --region=europe-west6",
|
|
1749
1842
|
"gcloud artifacts docker images delete europe-west6-docker.pkg.dev/google-project-id/catladder-deploy/pan-test-app/stage/api --quiet --delete-tags",
|
|
1750
1843
|
"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",
|
|
1751
1844
|
"echo Disabling component in Dependency Track",
|
|
1752
|
-
"/dtrackuploader https://dep.panter.swiss/ "$DT_KEY_PROD" disable "pan-test-app/api" "https
|
|
1845
|
+
"/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",
|
|
1753
1846
|
"set -e",
|
|
1847
|
+
"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",
|
|
1754
1848
|
],
|
|
1755
1849
|
"stage": "stop stage",
|
|
1756
1850
|
"variables": {
|
|
1757
|
-
"CLOUDSDK_CORE_DISABLE_PROMPTS": "1",
|
|
1758
1851
|
"GIT_STRATEGY": "none",
|
|
1759
1852
|
"KUBERNETES_CPU_REQUEST": "0.5",
|
|
1760
1853
|
"KUBERNETES_MEMORY_LIMIT": "400Mi",
|
|
@@ -1779,6 +1872,8 @@ _ALL_ENV_VAR_KEYS: '["ENV_SHORT","APP_DIR","ENV_TYPE","BUILD_INFO_ID","BUILD_INF
|
|
|
1779
1872
|
],
|
|
1780
1873
|
},
|
|
1781
1874
|
"script": [
|
|
1875
|
+
"echo -e "\\e[0Ksection_start:$(date +%s):injectvars[collapsed=true]\\r\\e[0KInjecting variables"",
|
|
1876
|
+
"echo -e "\\e[0Ksection_end:$(date +%s):injectvars\\r\\e[0K"",
|
|
1782
1877
|
"trivy fs --quiet --format cyclonedx --output "__sbom.json" api",
|
|
1783
1878
|
],
|
|
1784
1879
|
"stage": "build",
|
|
@@ -1802,6 +1897,8 @@ _ALL_ENV_VAR_KEYS: '["ENV_SHORT","APP_DIR","ENV_TYPE","BUILD_INFO_ID","BUILD_INF
|
|
|
1802
1897
|
],
|
|
1803
1898
|
},
|
|
1804
1899
|
"script": [
|
|
1900
|
+
"echo -e "\\e[0Ksection_start:$(date +%s):injectvars[collapsed=true]\\r\\e[0KInjecting variables"",
|
|
1901
|
+
"echo -e "\\e[0Ksection_end:$(date +%s):injectvars\\r\\e[0K"",
|
|
1805
1902
|
"trivy fs --quiet --format cyclonedx --output "__sbom.json" api",
|
|
1806
1903
|
],
|
|
1807
1904
|
"stage": "build",
|
|
@@ -1854,7 +1951,7 @@ _ALL_ENV_VAR_KEYS: '["ENV_SHORT","APP_DIR","ENV_TYPE","BUILD_INFO_ID","BUILD_INF
|
|
|
1854
1951
|
],
|
|
1855
1952
|
"variables": {
|
|
1856
1953
|
"FF_USE_FASTZIP": "true",
|
|
1857
|
-
"GIT_DEPTH": 1,
|
|
1954
|
+
"GIT_DEPTH": "1",
|
|
1858
1955
|
},
|
|
1859
1956
|
"workflow": {
|
|
1860
1957
|
"rules": [
|