@catladder/pipeline 1.144.1 → 1.145.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 +41 -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 +9 -2
- 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 +3 -2
- 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/custom-deploy.ts +7 -7
- package/examples/multiline-var.ts +64 -0
- package/package.json +5 -8
- 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/createAppBuildJob.ts +6 -2
- package/src/build/base/writeBuildInfo.ts +1 -1
- package/src/build/base/writeDotEnv.ts +6 -1
- package/src/build/custom/buildJob.ts +2 -4
- package/src/build/custom/testJob.ts +3 -2
- package/src/build/docker.ts +15 -7
- package/src/build/node/buildJob.ts +1 -3
- package/src/build/node/testJob.ts +3 -2
- package/src/build/node/yarn.ts +9 -4
- 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/readConfig.ts +2 -3
- 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/getEnvironment.ts +7 -30
- package/src/context/getEnvironmentContext.ts +25 -29
- package/src/context/getEnvironmentVariables.ts +61 -36
- package/src/context/getReviewSlug.ts +27 -0
- package/src/context/index.ts +24 -23
- package/src/context/resolveReferences.ts +28 -8
- package/src/context/transformJobOnlyVars.ts +5 -2
- package/src/context/utils/envVars.ts +2 -1
- package/src/deploy/base/deploy.ts +20 -18
- package/src/deploy/base/rollback.ts +8 -10
- package/src/deploy/base/stop.ts +8 -9
- package/src/deploy/cloudRun/artifactsRegistry.ts +9 -4
- package/src/deploy/cloudRun/createJobs/cloudRunJobs.ts +12 -7
- package/src/deploy/cloudRun/createJobs/cloudRunServices.ts +3 -2
- package/src/deploy/cloudRun/createJobs/constants.ts +1 -0
- package/src/deploy/cloudRun/createJobs/getCloudRunDeployScripts.ts +20 -2
- package/src/deploy/cloudRun/createJobs/index.ts +17 -8
- package/src/deploy/cloudRun/index.ts +14 -6
- package/src/deploy/cloudRun/utils/createArgsString.ts +2 -1
- package/src/deploy/cloudRun/utils/database.ts +2 -2
- package/src/deploy/cloudRun/utils/jobName.ts +7 -2
- package/src/deploy/cloudSql/utils.ts +12 -9
- package/src/deploy/index.ts +2 -1
- package/src/deploy/kubernetes/cloudSql/index.ts +3 -2
- package/src/deploy/kubernetes/deployJob.ts +24 -10
- package/src/deploy/kubernetes/index.ts +15 -8
- package/src/deploy/kubernetes/kubeEnv.ts +8 -6
- package/src/deploy/kubernetes/kubeValues.ts +0 -1
- package/src/deploy/kubernetes/processSecretsAsFiles.ts +2 -1
- package/src/deploy/types/base.ts +6 -0
- package/src/deploy/types/googleCloudRun.ts +2 -0
- package/src/index.ts +2 -1
- package/src/packageInfos.ts +10 -0
- package/src/pipeline/createAllJobs.ts +24 -10
- package/src/pipeline/createChildPipeline.ts +19 -8
- package/src/pipeline/createJobsForComponent.ts +14 -22
- package/src/pipeline/createMainPipeline.ts +88 -0
- package/src/pipeline/generatePipelineFiles.ts +29 -0
- package/src/pipeline/gitlab/createGitlabJobs.ts +174 -51
- 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/rules/index.ts +15 -9
- package/src/types/config.ts +11 -2
- package/src/types/context.ts +39 -26
- package/src/types/environmentContext.ts +12 -6
- package/src/types/gitlab-ci-yml.ts +0 -1
- package/src/types/gitlab-types.ts +5 -4
- package/src/types/jobs.ts +28 -3
- package/src/types/pipeline.ts +4 -0
- 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,26 @@ 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 CLOUD_RUN_JOB_TRIGGER_URL_migrate="https://europe-west6-run.googleapis.com/apis/run.googleapis.com/v1/namespaces/google-project-id/jobs/pan-test-app-dev-api-migrate:run"",
|
|
120
|
+
"export DEPLOY_CLOUD_RUN_PROJECT_ID="google-project-id"",
|
|
121
|
+
"export DEPLOY_CLOUD_RUN_REGION="europe-west6"",
|
|
122
|
+
"export GCLOUD_DEPLOY_credentialsKey="$CL_dev_api_GCLOUD_DEPLOY_credentialsKey"",
|
|
123
|
+
"export GCLOUD_RUN_canonicalHostSuffix="$CL_dev_api_GCLOUD_RUN_canonicalHostSuffix"",
|
|
124
|
+
"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_migrate\\",\\"DEPLOY_CLOUD_RUN_PROJECT_ID\\",\\"DEPLOY_CLOUD_RUN_REGION\\",\\"GCLOUD_DEPLOY_credentialsKey\\",\\"GCLOUD_RUN_canonicalHostSuffix\\"]"",
|
|
125
|
+
"echo -e "\\e[0Ksection_end:$(date +%s):injectvars\\r\\e[0K"",
|
|
126
|
+
"echo '{"id":"$(git describe --tags 2>/dev/null || git rev-parse HEAD)","time":"$CI_JOB_STARTED_AT"}' > api/__build_info.json",
|
|
106
127
|
"echo -e "\\e[0Ksection_start:$(date +%s):nodeinstall[collapsed=true]\\r\\e[0KEnsure node version"",
|
|
107
128
|
"if [ -f ~/.nvm/nvm.sh ]; then source ~/.nvm/nvm.sh; fi",
|
|
108
129
|
"if command -v nvm &> /dev/null && [ -f ./.nvmrc ]; then nvm install; fi",
|
|
@@ -119,26 +140,9 @@ exports[`matches snapshot 1`] = `
|
|
|
119
140
|
],
|
|
120
141
|
"stage": "build",
|
|
121
142
|
"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
|
-
"CLOUD_RUN_JOB_TRIGGER_URL_migrate": "https://europe-west6-run.googleapis.com/apis/run.googleapis.com/v1/namespaces/google-project-id/jobs/pan-test-app-dev-api-migrate:run",
|
|
127
|
-
"DEPLOY_CLOUD_RUN_PROJECT_ID": "google-project-id",
|
|
128
|
-
"DEPLOY_CLOUD_RUN_REGION": "europe-west6",
|
|
129
|
-
"ENV_SHORT": "dev",
|
|
130
|
-
"ENV_TYPE": "dev",
|
|
131
|
-
"GCLOUD_DEPLOY_credentialsKey": "$CL_dev_api_GCLOUD_DEPLOY_credentialsKey",
|
|
132
|
-
"GCLOUD_RUN_canonicalHostSuffix": "$CL_dev_api_GCLOUD_RUN_canonicalHostSuffix",
|
|
133
|
-
"HOST": "pan-test-app-dev-api-unknown-host.example.com",
|
|
134
|
-
"HOST_CANONICAL": "pan-test-app-dev-api-unknown-host.example.com",
|
|
135
|
-
"HOST_INTERNAL": "pan-test-app-dev-api-unknown-host.example.com",
|
|
136
143
|
"KUBERNETES_CPU_REQUEST": "0.5",
|
|
137
144
|
"KUBERNETES_MEMORY_LIMIT": "4Gi",
|
|
138
145
|
"KUBERNETES_MEMORY_REQUEST": "2Gi",
|
|
139
|
-
"ROOT_URL": "https://pan-test-app-dev-api-unknown-host.example.com",
|
|
140
|
-
"ROOT_URL_INTERNAL": "https://pan-test-app-dev-api-unknown-host.example.com",
|
|
141
|
-
"_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_migrate","DEPLOY_CLOUD_RUN_PROJECT_ID","DEPLOY_CLOUD_RUN_REGION","GCLOUD_DEPLOY_credentialsKey","GCLOUD_RUN_canonicalHostSuffix"]",
|
|
142
146
|
},
|
|
143
147
|
},
|
|
144
148
|
"api 🔨 docker | dev ": {
|
|
@@ -164,6 +168,21 @@ exports[`matches snapshot 1`] = `
|
|
|
164
168
|
],
|
|
165
169
|
},
|
|
166
170
|
"script": [
|
|
171
|
+
"echo -e "\\e[0Ksection_start:$(date +%s):injectvars[collapsed=true]\\r\\e[0KInjecting variables"",
|
|
172
|
+
"export APP_DIR="api"",
|
|
173
|
+
"export DOCKER_DIR="."",
|
|
174
|
+
"export DOCKER_REGISTRY="europe-west6-docker.pkg.dev"",
|
|
175
|
+
"export DOCKER_IMAGE="europe-west6-docker.pkg.dev/google-project-id/catladder-deploy/pan-test-app/dev/api"",
|
|
176
|
+
"export DOCKER_CACHE_IMAGE="europe-west6-docker.pkg.dev/google-project-id/catladder-deploy/pan-test-app/caches/api"",
|
|
177
|
+
"export DOCKER_IMAGE_TAG="$CI_COMMIT_SHA"",
|
|
178
|
+
"export DOCKER_COPY_AND_INSTALL_APP="COPY --chown=node:node $APP_DIR .
|
|
179
|
+
RUN yarn plugin import workspace-tools
|
|
180
|
+
RUN yarn workspaces focus --production && yarn rebuild"",
|
|
181
|
+
"export DOCKER_COPY_WORKSPACE_FILES="COPY --chown=node:node api/package.json /app/api/package.json
|
|
182
|
+
COPY --chown=node:node api/yarn.lock /app/api/yarn.lock
|
|
183
|
+
COPY --chown=node:node .yarnrc.yml /app/.yarnrc.yml
|
|
184
|
+
COPY --chown=node:node .yarn /app/.yarn"",
|
|
185
|
+
"echo -e "\\e[0Ksection_end:$(date +%s):injectvars\\r\\e[0K"",
|
|
167
186
|
"ensureNodeDockerfile",
|
|
168
187
|
"echo -e "\\e[0Ksection_start:$(date +%s):docker-login[collapsed=true]\\r\\e[0KDocker Login"",
|
|
169
188
|
"gcloud auth activate-service-account --key-file=<(echo "$CL_dev_api_GCLOUD_DEPLOY_credentialsKey")",
|
|
@@ -188,24 +207,9 @@ exports[`matches snapshot 1`] = `
|
|
|
188
207
|
],
|
|
189
208
|
"stage": "build",
|
|
190
209
|
"variables": {
|
|
191
|
-
"APP_DIR": "api",
|
|
192
|
-
"DOCKERFILE_ADDITIONS": undefined,
|
|
193
|
-
"DOCKERFILE_ADDITIONS_END": undefined,
|
|
194
210
|
"DOCKER_BUILDKIT": "1",
|
|
195
|
-
"DOCKER_CACHE_IMAGE": "europe-west6-docker.pkg.dev/google-project-id/catladder-deploy/pan-test-app/caches/api",
|
|
196
|
-
"DOCKER_COPY_AND_INSTALL_APP": "COPY --chown=node:node $APP_DIR .
|
|
197
|
-
RUN yarn plugin import workspace-tools
|
|
198
|
-
RUN yarn workspaces focus --production && yarn rebuild",
|
|
199
|
-
"DOCKER_COPY_WORKSPACE_FILES": "COPY --chown=node:node api/package.json /app/api/package.json
|
|
200
|
-
COPY --chown=node:node api/yarn.lock /app/api/yarn.lock
|
|
201
|
-
COPY --chown=node:node .yarnrc.yml /app/.yarnrc.yml
|
|
202
|
-
COPY --chown=node:node .yarn /app/.yarn",
|
|
203
|
-
"DOCKER_DIR": ".",
|
|
204
211
|
"DOCKER_DRIVER": "overlay2",
|
|
205
212
|
"DOCKER_HOST": "tcp://0.0.0.0:2375",
|
|
206
|
-
"DOCKER_IMAGE": "europe-west6-docker.pkg.dev/google-project-id/catladder-deploy/pan-test-app/dev/api",
|
|
207
|
-
"DOCKER_IMAGE_TAG": "$CI_COMMIT_SHA",
|
|
208
|
-
"DOCKER_REGISTRY": "europe-west6-docker.pkg.dev",
|
|
209
213
|
"DOCKER_TLS_CERTDIR": "",
|
|
210
214
|
"KUBERNETES_CPU_REQUEST": "0.5",
|
|
211
215
|
"KUBERNETES_MEMORY_LIMIT": "2Gi",
|
|
@@ -215,15 +219,15 @@ COPY --chown=node:node .yarn /app/.yarn",
|
|
|
215
219
|
"api 🚀 Deploy | dev ": {
|
|
216
220
|
"allow_failure": false,
|
|
217
221
|
"artifacts": {
|
|
218
|
-
"
|
|
219
|
-
"
|
|
220
|
-
|
|
222
|
+
"reports": {
|
|
223
|
+
"dotenv": "gitlab_environment.env",
|
|
224
|
+
},
|
|
221
225
|
},
|
|
222
226
|
"environment": {
|
|
223
227
|
"auto_stop_in": "4 weeks",
|
|
224
228
|
"name": "dev/api",
|
|
225
229
|
"on_stop": "api 🛑 Stop ⚠️ | dev ",
|
|
226
|
-
"url": "
|
|
230
|
+
"url": "$CL_GITLAB_ENVIRONMENT_URL",
|
|
227
231
|
},
|
|
228
232
|
"image": "path/to/docker/gcloud:the-version",
|
|
229
233
|
"interruptible": true,
|
|
@@ -266,13 +270,74 @@ COPY --chown=node:node .yarn /app/.yarn",
|
|
|
266
270
|
},
|
|
267
271
|
],
|
|
268
272
|
"script": [
|
|
273
|
+
"echo -e "\\e[0Ksection_start:$(date +%s):injectvars[collapsed=true]\\r\\e[0KInjecting variables"",
|
|
274
|
+
"export ENV_SHORT="dev"",
|
|
275
|
+
"export APP_DIR="api"",
|
|
276
|
+
"export ENV_TYPE="dev"",
|
|
277
|
+
"export BUILD_INFO_BUILD_ID="$(git describe --tags 2>/dev/null || git rev-parse HEAD)"",
|
|
278
|
+
"export BUILD_INFO_BUILD_TIME="$CI_JOB_STARTED_AT"",
|
|
279
|
+
"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")"",
|
|
280
|
+
"export HOST="$(printf %s "pan-test-app-dev-api-$CL_dev_api_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')"",
|
|
281
|
+
"export ROOT_URL="https://$(printf %s "pan-test-app-dev-api-$CL_dev_api_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')"",
|
|
282
|
+
"export HOST_INTERNAL="$(printf %s "pan-test-app-dev-api-$CL_dev_api_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')"",
|
|
283
|
+
"export HOST_CANONICAL="$(printf %s "pan-test-app-dev-api-$CL_dev_api_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')"",
|
|
284
|
+
"export ROOT_URL_INTERNAL="https://$(printf %s "pan-test-app-dev-api-$CL_dev_api_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')"",
|
|
285
|
+
"export CLOUD_RUN_JOB_TRIGGER_URL_migrate="https://europe-west6-run.googleapis.com/apis/run.googleapis.com/v1/namespaces/google-project-id/jobs/pan-test-app-dev-api-migrate:run"",
|
|
286
|
+
"export DEPLOY_CLOUD_RUN_PROJECT_ID="google-project-id"",
|
|
287
|
+
"export DEPLOY_CLOUD_RUN_REGION="europe-west6"",
|
|
288
|
+
"export GCLOUD_DEPLOY_credentialsKey="$CL_dev_api_GCLOUD_DEPLOY_credentialsKey"",
|
|
289
|
+
"export GCLOUD_RUN_canonicalHostSuffix="$CL_dev_api_GCLOUD_RUN_canonicalHostSuffix"",
|
|
290
|
+
"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_migrate\\",\\"DEPLOY_CLOUD_RUN_PROJECT_ID\\",\\"DEPLOY_CLOUD_RUN_REGION\\",\\"GCLOUD_DEPLOY_credentialsKey\\",\\"GCLOUD_RUN_canonicalHostSuffix\\"]"",
|
|
291
|
+
"export DOCKER_REGISTRY="europe-west6-docker.pkg.dev"",
|
|
292
|
+
"export DOCKER_IMAGE="europe-west6-docker.pkg.dev/google-project-id/catladder-deploy/pan-test-app/dev/api"",
|
|
293
|
+
"export DOCKER_CACHE_IMAGE="europe-west6-docker.pkg.dev/google-project-id/catladder-deploy/pan-test-app/caches/api"",
|
|
294
|
+
"export DOCKER_IMAGE_TAG="$CI_COMMIT_SHA"",
|
|
295
|
+
"export CLOUDSDK_CORE_DISABLE_PROMPTS="1"",
|
|
296
|
+
"echo -e "\\e[0Ksection_end:$(date +%s):injectvars\\r\\e[0K"",
|
|
269
297
|
"echo -e "\\e[0Ksection_start:$(date +%s):prepare[collapsed=true]\\r\\e[0KPrepare..."",
|
|
270
298
|
"gcloud auth activate-service-account --key-file=<(echo "$CL_dev_api_GCLOUD_DEPLOY_credentialsKey")",
|
|
271
299
|
"export GCLOUD_PROJECT_NUMBER=$(gcloud projects describe google-project-id --format="value(projectNumber)")",
|
|
272
300
|
"echo "GCLOUD_PROJECT_NUMBER: $GCLOUD_PROJECT_NUMBER"",
|
|
273
301
|
"echo -e "\\e[0Ksection_end:$(date +%s):prepare\\r\\e[0K"",
|
|
302
|
+
"echo -e "\\e[0Ksection_start:$(date +%s):writeenvvars[collapsed=true]\\r\\e[0KWrite env vars to file"",
|
|
303
|
+
"cat > ____envvars.yaml <<EOF
|
|
304
|
+
ENV_SHORT: |-
|
|
305
|
+
dev
|
|
306
|
+
APP_DIR: |-
|
|
307
|
+
api
|
|
308
|
+
ENV_TYPE: |-
|
|
309
|
+
dev
|
|
310
|
+
BUILD_INFO_BUILD_ID: |-
|
|
311
|
+
$(printf %s "$(git describe --tags 2>/dev/null || git rev-parse HEAD)" | sed 's/^/ /')
|
|
312
|
+
BUILD_INFO_BUILD_TIME: |-
|
|
313
|
+
$(printf %s "$CI_JOB_STARTED_AT" | sed 's/^/ /')
|
|
314
|
+
BUILD_INFO_CURRENT_VERSION: |-
|
|
315
|
+
$(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/^/ /')
|
|
316
|
+
HOST: |-
|
|
317
|
+
$(printf %s "$(printf %s "pan-test-app-dev-api-$CL_dev_api_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')" | sed 's/^/ /')
|
|
318
|
+
ROOT_URL: |-
|
|
319
|
+
$(printf %s "https://$(printf %s "pan-test-app-dev-api-$CL_dev_api_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')" | sed 's/^/ /')
|
|
320
|
+
HOST_INTERNAL: |-
|
|
321
|
+
$(printf %s "$(printf %s "pan-test-app-dev-api-$CL_dev_api_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')" | sed 's/^/ /')
|
|
322
|
+
HOST_CANONICAL: |-
|
|
323
|
+
$(printf %s "$(printf %s "pan-test-app-dev-api-$CL_dev_api_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')" | sed 's/^/ /')
|
|
324
|
+
ROOT_URL_INTERNAL: |-
|
|
325
|
+
$(printf %s "https://$(printf %s "pan-test-app-dev-api-$CL_dev_api_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')" | sed 's/^/ /')
|
|
326
|
+
CLOUD_RUN_JOB_TRIGGER_URL_migrate: |-
|
|
327
|
+
https://europe-west6-run.googleapis.com/apis/run.googleapis.com/v1/namespaces/google-project-id/jobs/pan-test-app-dev-api-migrate:run
|
|
328
|
+
DEPLOY_CLOUD_RUN_PROJECT_ID: |-
|
|
329
|
+
google-project-id
|
|
330
|
+
DEPLOY_CLOUD_RUN_REGION: |-
|
|
331
|
+
europe-west6
|
|
332
|
+
GCLOUD_RUN_canonicalHostSuffix: |-
|
|
333
|
+
$(printf %s "$CL_dev_api_GCLOUD_RUN_canonicalHostSuffix" | sed 's/^/ /')
|
|
334
|
+
_ALL_ENV_VAR_KEYS: |-
|
|
335
|
+
["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_migrate","DEPLOY_CLOUD_RUN_PROJECT_ID","DEPLOY_CLOUD_RUN_REGION","GCLOUD_DEPLOY_credentialsKey","GCLOUD_RUN_canonicalHostSuffix"]
|
|
336
|
+
|
|
337
|
+
EOF
|
|
338
|
+
",
|
|
339
|
+
"echo -e "\\e[0Ksection_end:$(date +%s):writeenvvars\\r\\e[0K"",
|
|
274
340
|
"echo -e "\\e[0Ksection_start:$(date +%s):deploy[collapsed=true]\\r\\e[0KDeploy to cloud run"",
|
|
275
|
-
"echo "$ENV_VARS" > ____envvars.yaml",
|
|
276
341
|
"set +e",
|
|
277
342
|
"gcloud run jobs create pan-test-app-dev-api-migrate --command="migrate" --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-job-name=pan-test-app-dev-api-migrate --memory=512Mi --task-timeout=10m --parallelism=1 --env-vars-file=____envvars.yaml --max-retries=0",
|
|
278
343
|
"set -e",
|
|
@@ -286,71 +351,27 @@ COPY --chown=node:node .yarn /app/.yarn",
|
|
|
286
351
|
"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",
|
|
287
352
|
"echo -e "\\e[0Ksection_end:$(date +%s):cleanup\\r\\e[0K"",
|
|
288
353
|
"echo Uploading SBOM to Dependency Track",
|
|
289
|
-
"/dtrackuploader https://dep.panter.swiss/ "$DT_KEY_PROD" upload "pan-test-app/api" "https
|
|
290
|
-
|
|
291
|
-
"services": [
|
|
292
|
-
{
|
|
293
|
-
"command": [
|
|
294
|
-
"--tls=false",
|
|
295
|
-
],
|
|
296
|
-
"name": "docker:24.0.6-dind",
|
|
297
|
-
},
|
|
354
|
+
"/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",
|
|
355
|
+
"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",
|
|
298
356
|
],
|
|
299
357
|
"stage": "deploy dev",
|
|
300
358
|
"variables": {
|
|
301
|
-
"APP_DIR": "api",
|
|
302
|
-
"BUILD_INFO_BUILD_TIME": "01-01-2023 12:13:14",
|
|
303
|
-
"BUILD_INFO_CURRENT_VERSION": "3.2.1",
|
|
304
|
-
"BUILD_INFO_ID": "some-id",
|
|
305
|
-
"CLOUDSDK_CORE_DISABLE_PROMPTS": "1",
|
|
306
|
-
"CLOUD_RUN_JOB_TRIGGER_URL_migrate": "https://europe-west6-run.googleapis.com/apis/run.googleapis.com/v1/namespaces/google-project-id/jobs/pan-test-app-dev-api-migrate:run",
|
|
307
|
-
"DEPLOY_CLOUD_RUN_PROJECT_ID": "google-project-id",
|
|
308
|
-
"DEPLOY_CLOUD_RUN_REGION": "europe-west6",
|
|
309
|
-
"DOCKER_BUILDKIT": "1",
|
|
310
|
-
"DOCKER_CACHE_IMAGE": "europe-west6-docker.pkg.dev/google-project-id/catladder-deploy/pan-test-app/caches/api",
|
|
311
|
-
"DOCKER_DRIVER": "overlay2",
|
|
312
|
-
"DOCKER_HOST": "tcp://0.0.0.0:2375",
|
|
313
|
-
"DOCKER_IMAGE": "europe-west6-docker.pkg.dev/google-project-id/catladder-deploy/pan-test-app/dev/api",
|
|
314
|
-
"DOCKER_IMAGE_TAG": "$CI_COMMIT_SHA",
|
|
315
|
-
"DOCKER_REGISTRY": "europe-west6-docker.pkg.dev",
|
|
316
|
-
"DOCKER_TLS_CERTDIR": "",
|
|
317
|
-
"ENV_SHORT": "dev",
|
|
318
|
-
"ENV_TYPE": "dev",
|
|
319
|
-
"ENV_VARS": "ENV_SHORT: 'dev'
|
|
320
|
-
APP_DIR: 'api'
|
|
321
|
-
ENV_TYPE: 'dev'
|
|
322
|
-
BUILD_INFO_ID: 'some-id'
|
|
323
|
-
BUILD_INFO_BUILD_TIME: '01-01-2023 12:13:14'
|
|
324
|
-
BUILD_INFO_CURRENT_VERSION: '3.2.1'
|
|
325
|
-
HOST: 'pan-test-app-dev-api-unknown-host.example.com'
|
|
326
|
-
ROOT_URL: 'https://pan-test-app-dev-api-unknown-host.example.com'
|
|
327
|
-
HOST_CANONICAL: 'pan-test-app-dev-api-unknown-host.example.com'
|
|
328
|
-
ROOT_URL_INTERNAL: 'https://pan-test-app-dev-api-unknown-host.example.com'
|
|
329
|
-
HOST_INTERNAL: 'pan-test-app-dev-api-unknown-host.example.com'
|
|
330
|
-
CLOUD_RUN_JOB_TRIGGER_URL_migrate: 'https://europe-west6-run.googleapis.com/apis/run.googleapis.com/v1/namespaces/google-project-id/jobs/pan-test-app-dev-api-migrate:run'
|
|
331
|
-
DEPLOY_CLOUD_RUN_PROJECT_ID: 'google-project-id'
|
|
332
|
-
DEPLOY_CLOUD_RUN_REGION: 'europe-west6'
|
|
333
|
-
GCLOUD_RUN_canonicalHostSuffix: '$CL_dev_api_GCLOUD_RUN_canonicalHostSuffix'
|
|
334
|
-
_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_migrate","DEPLOY_CLOUD_RUN_PROJECT_ID","DEPLOY_CLOUD_RUN_REGION","GCLOUD_DEPLOY_credentialsKey","GCLOUD_RUN_canonicalHostSuffix"]'
|
|
335
|
-
",
|
|
336
|
-
"GCLOUD_DEPLOY_credentialsKey": "$CL_dev_api_GCLOUD_DEPLOY_credentialsKey",
|
|
337
|
-
"GCLOUD_RUN_canonicalHostSuffix": "$CL_dev_api_GCLOUD_RUN_canonicalHostSuffix",
|
|
338
|
-
"HOST": "pan-test-app-dev-api-unknown-host.example.com",
|
|
339
|
-
"HOST_CANONICAL": "pan-test-app-dev-api-unknown-host.example.com",
|
|
340
|
-
"HOST_INTERNAL": "pan-test-app-dev-api-unknown-host.example.com",
|
|
341
359
|
"KUBERNETES_CPU_REQUEST": "0.5",
|
|
342
360
|
"KUBERNETES_MEMORY_LIMIT": "400Mi",
|
|
343
361
|
"KUBERNETES_MEMORY_REQUEST": "200Mi",
|
|
344
|
-
"ROOT_URL": "https://pan-test-app-dev-api-unknown-host.example.com",
|
|
345
|
-
"ROOT_URL_INTERNAL": "https://pan-test-app-dev-api-unknown-host.example.com",
|
|
346
|
-
"_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_migrate","DEPLOY_CLOUD_RUN_PROJECT_ID","DEPLOY_CLOUD_RUN_REGION","GCLOUD_DEPLOY_credentialsKey","GCLOUD_RUN_canonicalHostSuffix"]",
|
|
347
362
|
},
|
|
348
363
|
},
|
|
349
364
|
"api 🛑 Stop ⚠️ | dev ": {
|
|
365
|
+
"allow_failure": true,
|
|
366
|
+
"artifacts": {
|
|
367
|
+
"reports": {
|
|
368
|
+
"dotenv": "gitlab_environment.env",
|
|
369
|
+
},
|
|
370
|
+
},
|
|
350
371
|
"environment": {
|
|
351
372
|
"action": "stop",
|
|
352
373
|
"name": "dev/api",
|
|
353
|
-
"url": "
|
|
374
|
+
"url": "$CL_GITLAB_ENVIRONMENT_URL",
|
|
354
375
|
},
|
|
355
376
|
"image": "path/to/docker/gcloud:the-version",
|
|
356
377
|
"interruptible": true,
|
|
@@ -364,16 +385,17 @@ _ALL_ENV_VAR_KEYS: '["ENV_SHORT","APP_DIR","ENV_TYPE","BUILD_INFO_ID","BUILD_INF
|
|
|
364
385
|
},
|
|
365
386
|
"rules": [
|
|
366
387
|
{
|
|
367
|
-
"allow_failure": true,
|
|
368
388
|
"if": "$CI_COMMIT_BRANCH =~ /^[0-9]+\\.([0-9]+|x)\\.x$/",
|
|
369
389
|
"when": "on_success",
|
|
370
390
|
},
|
|
371
391
|
{
|
|
372
|
-
"allow_failure": true,
|
|
373
392
|
"when": "manual",
|
|
374
393
|
},
|
|
375
394
|
],
|
|
376
395
|
"script": [
|
|
396
|
+
"echo -e "\\e[0Ksection_start:$(date +%s):injectvars[collapsed=true]\\r\\e[0KInjecting variables"",
|
|
397
|
+
"export CLOUDSDK_CORE_DISABLE_PROMPTS="1"",
|
|
398
|
+
"echo -e "\\e[0Ksection_end:$(date +%s):injectvars\\r\\e[0K"",
|
|
377
399
|
"set +e",
|
|
378
400
|
"gcloud auth activate-service-account --key-file=<(echo "$CL_dev_api_GCLOUD_DEPLOY_credentialsKey")",
|
|
379
401
|
"gcloud run services delete pan-test-app-dev-api --project=google-project-id --region=europe-west6",
|
|
@@ -382,12 +404,12 @@ _ALL_ENV_VAR_KEYS: '["ENV_SHORT","APP_DIR","ENV_TYPE","BUILD_INFO_ID","BUILD_INF
|
|
|
382
404
|
"gcloud artifacts docker images delete europe-west6-docker.pkg.dev/google-project-id/catladder-deploy/pan-test-app/dev/api --quiet --delete-tags",
|
|
383
405
|
"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",
|
|
384
406
|
"echo Disabling component in Dependency Track",
|
|
385
|
-
"/dtrackuploader https://dep.panter.swiss/ "$DT_KEY_PROD" disable "pan-test-app/api" "https
|
|
407
|
+
"/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",
|
|
386
408
|
"set -e",
|
|
409
|
+
"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",
|
|
387
410
|
],
|
|
388
411
|
"stage": "stop dev",
|
|
389
412
|
"variables": {
|
|
390
|
-
"CLOUDSDK_CORE_DISABLE_PROMPTS": "1",
|
|
391
413
|
"GIT_STRATEGY": "none",
|
|
392
414
|
"KUBERNETES_CPU_REQUEST": "0.5",
|
|
393
415
|
"KUBERNETES_MEMORY_LIMIT": "400Mi",
|
|
@@ -407,12 +429,14 @@ _ALL_ENV_VAR_KEYS: '["ENV_SHORT","APP_DIR","ENV_TYPE","BUILD_INFO_ID","BUILD_INF
|
|
|
407
429
|
],
|
|
408
430
|
},
|
|
409
431
|
"script": [
|
|
432
|
+
"echo -e "\\e[0Ksection_start:$(date +%s):injectvars[collapsed=true]\\r\\e[0KInjecting variables"",
|
|
433
|
+
"export APP_PATH="api"",
|
|
434
|
+
"echo -e "\\e[0Ksection_end:$(date +%s):injectvars\\r\\e[0K"",
|
|
410
435
|
"cd api",
|
|
411
436
|
"yarn npm audit --environment production",
|
|
412
437
|
],
|
|
413
438
|
"stage": "test",
|
|
414
439
|
"variables": {
|
|
415
|
-
"APP_PATH": "api",
|
|
416
440
|
"KUBERNETES_CPU_REQUEST": "0.5",
|
|
417
441
|
"KUBERNETES_MEMORY_LIMIT": "4Gi",
|
|
418
442
|
"KUBERNETES_MEMORY_REQUEST": "2Gi",
|
|
@@ -446,6 +470,9 @@ _ALL_ENV_VAR_KEYS: '["ENV_SHORT","APP_DIR","ENV_TYPE","BUILD_INFO_ID","BUILD_INF
|
|
|
446
470
|
],
|
|
447
471
|
},
|
|
448
472
|
"script": [
|
|
473
|
+
"echo -e "\\e[0Ksection_start:$(date +%s):injectvars[collapsed=true]\\r\\e[0KInjecting variables"",
|
|
474
|
+
"export APP_PATH="api"",
|
|
475
|
+
"echo -e "\\e[0Ksection_end:$(date +%s):injectvars\\r\\e[0K"",
|
|
449
476
|
"echo -e "\\e[0Ksection_start:$(date +%s):nodeinstall[collapsed=true]\\r\\e[0KEnsure node version"",
|
|
450
477
|
"if [ -f ~/.nvm/nvm.sh ]; then source ~/.nvm/nvm.sh; fi",
|
|
451
478
|
"if command -v nvm &> /dev/null && [ -f ./.nvmrc ]; then nvm install; fi",
|
|
@@ -462,7 +489,6 @@ _ALL_ENV_VAR_KEYS: '["ENV_SHORT","APP_DIR","ENV_TYPE","BUILD_INFO_ID","BUILD_INF
|
|
|
462
489
|
],
|
|
463
490
|
"stage": "test",
|
|
464
491
|
"variables": {
|
|
465
|
-
"APP_PATH": "api",
|
|
466
492
|
"KUBERNETES_CPU_REQUEST": "0.5",
|
|
467
493
|
"KUBERNETES_MEMORY_LIMIT": "4Gi",
|
|
468
494
|
"KUBERNETES_MEMORY_REQUEST": "2Gi",
|
|
@@ -486,6 +512,8 @@ _ALL_ENV_VAR_KEYS: '["ENV_SHORT","APP_DIR","ENV_TYPE","BUILD_INFO_ID","BUILD_INF
|
|
|
486
512
|
],
|
|
487
513
|
},
|
|
488
514
|
"script": [
|
|
515
|
+
"echo -e "\\e[0Ksection_start:$(date +%s):injectvars[collapsed=true]\\r\\e[0KInjecting variables"",
|
|
516
|
+
"echo -e "\\e[0Ksection_end:$(date +%s):injectvars\\r\\e[0K"",
|
|
489
517
|
"trivy fs --quiet --format cyclonedx --output "__sbom.json" api",
|
|
490
518
|
],
|
|
491
519
|
"stage": "build",
|
|
@@ -538,7 +566,7 @@ _ALL_ENV_VAR_KEYS: '["ENV_SHORT","APP_DIR","ENV_TYPE","BUILD_INFO_ID","BUILD_INF
|
|
|
538
566
|
],
|
|
539
567
|
"variables": {
|
|
540
568
|
"FF_USE_FASTZIP": "true",
|
|
541
|
-
"GIT_DEPTH": 1,
|
|
569
|
+
"GIT_DEPTH": "1",
|
|
542
570
|
},
|
|
543
571
|
"workflow": {
|
|
544
572
|
"rules": [
|
|
@@ -596,6 +624,9 @@ _ALL_ENV_VAR_KEYS: '["ENV_SHORT","APP_DIR","ENV_TYPE","BUILD_INFO_ID","BUILD_INF
|
|
|
596
624
|
],
|
|
597
625
|
},
|
|
598
626
|
"script": [
|
|
627
|
+
"echo -e "\\e[0Ksection_start:$(date +%s):injectvars[collapsed=true]\\r\\e[0KInjecting variables"",
|
|
628
|
+
"export APP_PATH="api"",
|
|
629
|
+
"echo -e "\\e[0Ksection_end:$(date +%s):injectvars\\r\\e[0K"",
|
|
599
630
|
"echo -e "\\e[0Ksection_start:$(date +%s):nodeinstall[collapsed=true]\\r\\e[0KEnsure node version"",
|
|
600
631
|
"if [ -f ~/.nvm/nvm.sh ]; then source ~/.nvm/nvm.sh; fi",
|
|
601
632
|
"if command -v nvm &> /dev/null && [ -f ./.nvmrc ]; then nvm install; fi",
|
|
@@ -612,7 +643,6 @@ _ALL_ENV_VAR_KEYS: '["ENV_SHORT","APP_DIR","ENV_TYPE","BUILD_INFO_ID","BUILD_INF
|
|
|
612
643
|
],
|
|
613
644
|
"stage": "test",
|
|
614
645
|
"variables": {
|
|
615
|
-
"APP_PATH": "api",
|
|
616
646
|
"KUBERNETES_CPU_REQUEST": "0.5",
|
|
617
647
|
"KUBERNETES_MEMORY_LIMIT": "4Gi",
|
|
618
648
|
"KUBERNETES_MEMORY_REQUEST": "2Gi",
|
|
@@ -665,7 +695,26 @@ _ALL_ENV_VAR_KEYS: '["ENV_SHORT","APP_DIR","ENV_TYPE","BUILD_INFO_ID","BUILD_INF
|
|
|
665
695
|
],
|
|
666
696
|
},
|
|
667
697
|
"script": [
|
|
668
|
-
"echo
|
|
698
|
+
"echo -e "\\e[0Ksection_start:$(date +%s):injectvars[collapsed=true]\\r\\e[0KInjecting variables"",
|
|
699
|
+
"export ENV_SHORT="review"",
|
|
700
|
+
"export APP_DIR="api"",
|
|
701
|
+
"export ENV_TYPE="review"",
|
|
702
|
+
"export BUILD_INFO_BUILD_ID="$(git describe --tags 2>/dev/null || git rev-parse HEAD)"",
|
|
703
|
+
"export BUILD_INFO_BUILD_TIME="$CI_JOB_STARTED_AT"",
|
|
704
|
+
"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")"",
|
|
705
|
+
"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)}')"",
|
|
706
|
+
"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)}')"",
|
|
707
|
+
"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)}')"",
|
|
708
|
+
"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)}')"",
|
|
709
|
+
"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)}')"",
|
|
710
|
+
"export CLOUD_RUN_JOB_TRIGGER_URL_migrate="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)}')-migrate:run"",
|
|
711
|
+
"export DEPLOY_CLOUD_RUN_PROJECT_ID="google-project-id"",
|
|
712
|
+
"export DEPLOY_CLOUD_RUN_REGION="europe-west6"",
|
|
713
|
+
"export GCLOUD_DEPLOY_credentialsKey="$CL_review_api_GCLOUD_DEPLOY_credentialsKey"",
|
|
714
|
+
"export GCLOUD_RUN_canonicalHostSuffix="$CL_review_api_GCLOUD_RUN_canonicalHostSuffix"",
|
|
715
|
+
"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_migrate\\",\\"DEPLOY_CLOUD_RUN_PROJECT_ID\\",\\"DEPLOY_CLOUD_RUN_REGION\\",\\"GCLOUD_DEPLOY_credentialsKey\\",\\"GCLOUD_RUN_canonicalHostSuffix\\"]"",
|
|
716
|
+
"echo -e "\\e[0Ksection_end:$(date +%s):injectvars\\r\\e[0K"",
|
|
717
|
+
"echo '{"id":"$(git describe --tags 2>/dev/null || git rev-parse HEAD)","time":"$CI_JOB_STARTED_AT"}' > api/__build_info.json",
|
|
669
718
|
"echo -e "\\e[0Ksection_start:$(date +%s):nodeinstall[collapsed=true]\\r\\e[0KEnsure node version"",
|
|
670
719
|
"if [ -f ~/.nvm/nvm.sh ]; then source ~/.nvm/nvm.sh; fi",
|
|
671
720
|
"if command -v nvm &> /dev/null && [ -f ./.nvmrc ]; then nvm install; fi",
|
|
@@ -682,26 +731,9 @@ _ALL_ENV_VAR_KEYS: '["ENV_SHORT","APP_DIR","ENV_TYPE","BUILD_INFO_ID","BUILD_INF
|
|
|
682
731
|
],
|
|
683
732
|
"stage": "build",
|
|
684
733
|
"variables": {
|
|
685
|
-
"APP_DIR": "api",
|
|
686
|
-
"BUILD_INFO_BUILD_TIME": "01-01-2023 12:13:14",
|
|
687
|
-
"BUILD_INFO_CURRENT_VERSION": "3.2.1",
|
|
688
|
-
"BUILD_INFO_ID": "some-id",
|
|
689
|
-
"CLOUD_RUN_JOB_TRIGGER_URL_migrate": "https://europe-west6-run.googleapis.com/apis/run.googleapis.com/v1/namespaces/google-project-id/jobs/pan-test-app-review-mr1234-api-migrate:run",
|
|
690
|
-
"DEPLOY_CLOUD_RUN_PROJECT_ID": "google-project-id",
|
|
691
|
-
"DEPLOY_CLOUD_RUN_REGION": "europe-west6",
|
|
692
|
-
"ENV_SHORT": "review",
|
|
693
|
-
"ENV_TYPE": "review",
|
|
694
|
-
"GCLOUD_DEPLOY_credentialsKey": "$CL_review_api_GCLOUD_DEPLOY_credentialsKey",
|
|
695
|
-
"GCLOUD_RUN_canonicalHostSuffix": "$CL_review_api_GCLOUD_RUN_canonicalHostSuffix",
|
|
696
|
-
"HOST": "pan-test-app-review-mr1234-api-unknown-host.example.com",
|
|
697
|
-
"HOST_CANONICAL": "pan-test-app-review-mr1234-api-unknown-host.example.com",
|
|
698
|
-
"HOST_INTERNAL": "pan-test-app-review-mr1234-api-unknown-host.example.com",
|
|
699
734
|
"KUBERNETES_CPU_REQUEST": "0.5",
|
|
700
735
|
"KUBERNETES_MEMORY_LIMIT": "4Gi",
|
|
701
736
|
"KUBERNETES_MEMORY_REQUEST": "2Gi",
|
|
702
|
-
"ROOT_URL": "https://pan-test-app-review-mr1234-api-unknown-host.example.com",
|
|
703
|
-
"ROOT_URL_INTERNAL": "https://pan-test-app-review-mr1234-api-unknown-host.example.com",
|
|
704
|
-
"_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_migrate","DEPLOY_CLOUD_RUN_PROJECT_ID","DEPLOY_CLOUD_RUN_REGION","GCLOUD_DEPLOY_credentialsKey","GCLOUD_RUN_canonicalHostSuffix"]",
|
|
705
737
|
},
|
|
706
738
|
},
|
|
707
739
|
"api 🔨 docker | review ": {
|
|
@@ -727,6 +759,21 @@ _ALL_ENV_VAR_KEYS: '["ENV_SHORT","APP_DIR","ENV_TYPE","BUILD_INFO_ID","BUILD_INF
|
|
|
727
759
|
],
|
|
728
760
|
},
|
|
729
761
|
"script": [
|
|
762
|
+
"echo -e "\\e[0Ksection_start:$(date +%s):injectvars[collapsed=true]\\r\\e[0KInjecting variables"",
|
|
763
|
+
"export APP_DIR="api"",
|
|
764
|
+
"export DOCKER_DIR="."",
|
|
765
|
+
"export DOCKER_REGISTRY="europe-west6-docker.pkg.dev"",
|
|
766
|
+
"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"; })"",
|
|
767
|
+
"export DOCKER_CACHE_IMAGE="europe-west6-docker.pkg.dev/google-project-id/catladder-deploy/pan-test-app/caches/api"",
|
|
768
|
+
"export DOCKER_IMAGE_TAG="$CI_COMMIT_SHA"",
|
|
769
|
+
"export DOCKER_COPY_AND_INSTALL_APP="COPY --chown=node:node $APP_DIR .
|
|
770
|
+
RUN yarn plugin import workspace-tools
|
|
771
|
+
RUN yarn workspaces focus --production && yarn rebuild"",
|
|
772
|
+
"export DOCKER_COPY_WORKSPACE_FILES="COPY --chown=node:node api/package.json /app/api/package.json
|
|
773
|
+
COPY --chown=node:node api/yarn.lock /app/api/yarn.lock
|
|
774
|
+
COPY --chown=node:node .yarnrc.yml /app/.yarnrc.yml
|
|
775
|
+
COPY --chown=node:node .yarn /app/.yarn"",
|
|
776
|
+
"echo -e "\\e[0Ksection_end:$(date +%s):injectvars\\r\\e[0K"",
|
|
730
777
|
"ensureNodeDockerfile",
|
|
731
778
|
"echo -e "\\e[0Ksection_start:$(date +%s):docker-login[collapsed=true]\\r\\e[0KDocker Login"",
|
|
732
779
|
"gcloud auth activate-service-account --key-file=<(echo "$CL_review_api_GCLOUD_DEPLOY_credentialsKey")",
|
|
@@ -751,24 +798,9 @@ _ALL_ENV_VAR_KEYS: '["ENV_SHORT","APP_DIR","ENV_TYPE","BUILD_INFO_ID","BUILD_INF
|
|
|
751
798
|
],
|
|
752
799
|
"stage": "build",
|
|
753
800
|
"variables": {
|
|
754
|
-
"APP_DIR": "api",
|
|
755
|
-
"DOCKERFILE_ADDITIONS": undefined,
|
|
756
|
-
"DOCKERFILE_ADDITIONS_END": undefined,
|
|
757
801
|
"DOCKER_BUILDKIT": "1",
|
|
758
|
-
"DOCKER_CACHE_IMAGE": "europe-west6-docker.pkg.dev/google-project-id/catladder-deploy/pan-test-app/caches/api",
|
|
759
|
-
"DOCKER_COPY_AND_INSTALL_APP": "COPY --chown=node:node $APP_DIR .
|
|
760
|
-
RUN yarn plugin import workspace-tools
|
|
761
|
-
RUN yarn workspaces focus --production && yarn rebuild",
|
|
762
|
-
"DOCKER_COPY_WORKSPACE_FILES": "COPY --chown=node:node api/package.json /app/api/package.json
|
|
763
|
-
COPY --chown=node:node api/yarn.lock /app/api/yarn.lock
|
|
764
|
-
COPY --chown=node:node .yarnrc.yml /app/.yarnrc.yml
|
|
765
|
-
COPY --chown=node:node .yarn /app/.yarn",
|
|
766
|
-
"DOCKER_DIR": ".",
|
|
767
802
|
"DOCKER_DRIVER": "overlay2",
|
|
768
803
|
"DOCKER_HOST": "tcp://0.0.0.0:2375",
|
|
769
|
-
"DOCKER_IMAGE": "europe-west6-docker.pkg.dev/google-project-id/catladder-deploy/pan-test-app/review/api/mr1234",
|
|
770
|
-
"DOCKER_IMAGE_TAG": "$CI_COMMIT_SHA",
|
|
771
|
-
"DOCKER_REGISTRY": "europe-west6-docker.pkg.dev",
|
|
772
804
|
"DOCKER_TLS_CERTDIR": "",
|
|
773
805
|
"KUBERNETES_CPU_REQUEST": "0.5",
|
|
774
806
|
"KUBERNETES_MEMORY_LIMIT": "2Gi",
|
|
@@ -778,15 +810,15 @@ COPY --chown=node:node .yarn /app/.yarn",
|
|
|
778
810
|
"api 🚀 Deploy | review ": {
|
|
779
811
|
"allow_failure": false,
|
|
780
812
|
"artifacts": {
|
|
781
|
-
"
|
|
782
|
-
"
|
|
783
|
-
|
|
813
|
+
"reports": {
|
|
814
|
+
"dotenv": "gitlab_environment.env",
|
|
815
|
+
},
|
|
784
816
|
},
|
|
785
817
|
"environment": {
|
|
786
818
|
"auto_stop_in": "1 week",
|
|
787
|
-
"name": "review/
|
|
819
|
+
"name": "review/$CI_COMMIT_REF_NAME/api",
|
|
788
820
|
"on_stop": "api 🛑 Stop ⚠️ | review ",
|
|
789
|
-
"url": "
|
|
821
|
+
"url": "$CL_GITLAB_ENVIRONMENT_URL",
|
|
790
822
|
},
|
|
791
823
|
"image": "path/to/docker/gcloud:the-version",
|
|
792
824
|
"interruptible": true,
|
|
@@ -829,94 +861,111 @@ COPY --chown=node:node .yarn /app/.yarn",
|
|
|
829
861
|
},
|
|
830
862
|
],
|
|
831
863
|
"script": [
|
|
864
|
+
"echo -e "\\e[0Ksection_start:$(date +%s):injectvars[collapsed=true]\\r\\e[0KInjecting variables"",
|
|
865
|
+
"export ENV_SHORT="review"",
|
|
866
|
+
"export APP_DIR="api"",
|
|
867
|
+
"export ENV_TYPE="review"",
|
|
868
|
+
"export BUILD_INFO_BUILD_ID="$(git describe --tags 2>/dev/null || git rev-parse HEAD)"",
|
|
869
|
+
"export BUILD_INFO_BUILD_TIME="$CI_JOB_STARTED_AT"",
|
|
870
|
+
"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")"",
|
|
871
|
+
"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)}')"",
|
|
872
|
+
"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)}')"",
|
|
873
|
+
"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)}')"",
|
|
874
|
+
"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)}')"",
|
|
875
|
+
"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)}')"",
|
|
876
|
+
"export CLOUD_RUN_JOB_TRIGGER_URL_migrate="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)}')-migrate:run"",
|
|
877
|
+
"export DEPLOY_CLOUD_RUN_PROJECT_ID="google-project-id"",
|
|
878
|
+
"export DEPLOY_CLOUD_RUN_REGION="europe-west6"",
|
|
879
|
+
"export GCLOUD_DEPLOY_credentialsKey="$CL_review_api_GCLOUD_DEPLOY_credentialsKey"",
|
|
880
|
+
"export GCLOUD_RUN_canonicalHostSuffix="$CL_review_api_GCLOUD_RUN_canonicalHostSuffix"",
|
|
881
|
+
"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_migrate\\",\\"DEPLOY_CLOUD_RUN_PROJECT_ID\\",\\"DEPLOY_CLOUD_RUN_REGION\\",\\"GCLOUD_DEPLOY_credentialsKey\\",\\"GCLOUD_RUN_canonicalHostSuffix\\"]"",
|
|
882
|
+
"export DOCKER_REGISTRY="europe-west6-docker.pkg.dev"",
|
|
883
|
+
"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"; })"",
|
|
884
|
+
"export DOCKER_CACHE_IMAGE="europe-west6-docker.pkg.dev/google-project-id/catladder-deploy/pan-test-app/caches/api"",
|
|
885
|
+
"export DOCKER_IMAGE_TAG="$CI_COMMIT_SHA"",
|
|
886
|
+
"export CLOUDSDK_CORE_DISABLE_PROMPTS="1"",
|
|
887
|
+
"echo -e "\\e[0Ksection_end:$(date +%s):injectvars\\r\\e[0K"",
|
|
832
888
|
"echo -e "\\e[0Ksection_start:$(date +%s):prepare[collapsed=true]\\r\\e[0KPrepare..."",
|
|
833
889
|
"gcloud auth activate-service-account --key-file=<(echo "$CL_review_api_GCLOUD_DEPLOY_credentialsKey")",
|
|
834
890
|
"export GCLOUD_PROJECT_NUMBER=$(gcloud projects describe google-project-id --format="value(projectNumber)")",
|
|
835
891
|
"echo "GCLOUD_PROJECT_NUMBER: $GCLOUD_PROJECT_NUMBER"",
|
|
836
892
|
"echo -e "\\e[0Ksection_end:$(date +%s):prepare\\r\\e[0K"",
|
|
893
|
+
"echo -e "\\e[0Ksection_start:$(date +%s):writeenvvars[collapsed=true]\\r\\e[0KWrite env vars to file"",
|
|
894
|
+
"cat > ____envvars.yaml <<EOF
|
|
895
|
+
ENV_SHORT: |-
|
|
896
|
+
review
|
|
897
|
+
APP_DIR: |-
|
|
898
|
+
api
|
|
899
|
+
ENV_TYPE: |-
|
|
900
|
+
review
|
|
901
|
+
BUILD_INFO_BUILD_ID: |-
|
|
902
|
+
$(printf %s "$(git describe --tags 2>/dev/null || git rev-parse HEAD)" | sed 's/^/ /')
|
|
903
|
+
BUILD_INFO_BUILD_TIME: |-
|
|
904
|
+
$(printf %s "$CI_JOB_STARTED_AT" | sed 's/^/ /')
|
|
905
|
+
BUILD_INFO_CURRENT_VERSION: |-
|
|
906
|
+
$(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/^/ /')
|
|
907
|
+
HOST: |-
|
|
908
|
+
$(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/^/ /')
|
|
909
|
+
ROOT_URL: |-
|
|
910
|
+
$(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/^/ /')
|
|
911
|
+
HOST_INTERNAL: |-
|
|
912
|
+
$(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/^/ /')
|
|
913
|
+
HOST_CANONICAL: |-
|
|
914
|
+
$(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/^/ /')
|
|
915
|
+
ROOT_URL_INTERNAL: |-
|
|
916
|
+
$(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/^/ /')
|
|
917
|
+
CLOUD_RUN_JOB_TRIGGER_URL_migrate: |-
|
|
918
|
+
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)}')-migrate:run
|
|
919
|
+
DEPLOY_CLOUD_RUN_PROJECT_ID: |-
|
|
920
|
+
google-project-id
|
|
921
|
+
DEPLOY_CLOUD_RUN_REGION: |-
|
|
922
|
+
europe-west6
|
|
923
|
+
GCLOUD_RUN_canonicalHostSuffix: |-
|
|
924
|
+
$(printf %s "$CL_review_api_GCLOUD_RUN_canonicalHostSuffix" | sed 's/^/ /')
|
|
925
|
+
_ALL_ENV_VAR_KEYS: |-
|
|
926
|
+
["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_migrate","DEPLOY_CLOUD_RUN_PROJECT_ID","DEPLOY_CLOUD_RUN_REGION","GCLOUD_DEPLOY_credentialsKey","GCLOUD_RUN_canonicalHostSuffix"]
|
|
927
|
+
|
|
928
|
+
EOF
|
|
929
|
+
",
|
|
930
|
+
"echo -e "\\e[0Ksection_end:$(date +%s):writeenvvars\\r\\e[0K"",
|
|
837
931
|
"echo -e "\\e[0Ksection_start:$(date +%s):deploy[collapsed=true]\\r\\e[0KDeploy to cloud run"",
|
|
838
|
-
"echo "$ENV_VARS" > ____envvars.yaml",
|
|
839
932
|
"set +e",
|
|
840
|
-
"gcloud run jobs create pan-test-app-review-
|
|
933
|
+
"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)}')-migrate --command="migrate" --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-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)}')-migrate --memory=512Mi --task-timeout=10m --parallelism=1 --env-vars-file=____envvars.yaml --max-retries=0",
|
|
841
934
|
"set -e",
|
|
842
|
-
"gcloud beta run jobs update pan-test-app-review-
|
|
843
|
-
"gcloud beta run deploy pan-test-app-review-
|
|
844
|
-
"gcloud run jobs execute pan-test-app-review-
|
|
935
|
+
"gcloud beta 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)}')-migrate --command="migrate" --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-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)}')-migrate --memory=512Mi --task-timeout=10m --parallelism=1 --env-vars-file=____envvars.yaml --max-retries=0 --add-volume=name=myMount,type=cloud-storage,bucket=my-bucket --add-volume-mount=volume=myMount,mount-path=/mnt/my-mount",
|
|
936
|
+
"gcloud beta 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 --add-volume=name=myMount,type=cloud-storage,bucket=my-bucket --add-volume-mount=volume=myMount,mount-path=/mnt/my-mount --add-volume=name=myOtherMount,type=cloud-storage,bucket=some-other-bucket,readonly=true --add-volume-mount=volume=myOtherMount,mount-path=/mnt/my-second-mount --execution-environment=gen2",
|
|
937
|
+
"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)}')-migrate --project=google-project-id --region=europe-west6",
|
|
845
938
|
"echo -e "\\e[0Ksection_end:$(date +%s):deploy\\r\\e[0K"",
|
|
846
939
|
"echo -e "\\e[0Ksection_start:$(date +%s):cleanup[collapsed=true]\\r\\e[0KCleanup"",
|
|
847
|
-
"gcloud run revisions list --project=google-project-id --region=europe-west6 --service
|
|
848
|
-
"gcloud artifacts docker images list europe-west6-docker.pkg.dev/google-project-id/catladder-deploy/pan-test-app/review/api
|
|
940
|
+
"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",
|
|
941
|
+
"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",
|
|
849
942
|
"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",
|
|
850
943
|
"set +e",
|
|
851
944
|
"gcloud artifacts docker images delete europe-west6-docker.pkg.dev/google-project-id/catladder-deploy/pan-test-app/review/api --quiet --delete-tags",
|
|
852
945
|
"set -e",
|
|
853
946
|
"echo -e "\\e[0Ksection_end:$(date +%s):cleanup\\r\\e[0K"",
|
|
854
947
|
"echo Uploading SBOM to Dependency Track",
|
|
855
|
-
"/dtrackuploader https://dep.panter.swiss/ "$DT_KEY_PROD" upload "pan-test-app/api" "https
|
|
856
|
-
|
|
857
|
-
"services": [
|
|
858
|
-
{
|
|
859
|
-
"command": [
|
|
860
|
-
"--tls=false",
|
|
861
|
-
],
|
|
862
|
-
"name": "docker:24.0.6-dind",
|
|
863
|
-
},
|
|
948
|
+
"/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",
|
|
949
|
+
"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",
|
|
864
950
|
],
|
|
865
951
|
"stage": "deploy review",
|
|
866
952
|
"variables": {
|
|
867
|
-
"APP_DIR": "api",
|
|
868
|
-
"BUILD_INFO_BUILD_TIME": "01-01-2023 12:13:14",
|
|
869
|
-
"BUILD_INFO_CURRENT_VERSION": "3.2.1",
|
|
870
|
-
"BUILD_INFO_ID": "some-id",
|
|
871
|
-
"CLOUDSDK_CORE_DISABLE_PROMPTS": "1",
|
|
872
|
-
"CLOUD_RUN_JOB_TRIGGER_URL_migrate": "https://europe-west6-run.googleapis.com/apis/run.googleapis.com/v1/namespaces/google-project-id/jobs/pan-test-app-review-mr1234-api-migrate:run",
|
|
873
|
-
"DEPLOY_CLOUD_RUN_PROJECT_ID": "google-project-id",
|
|
874
|
-
"DEPLOY_CLOUD_RUN_REGION": "europe-west6",
|
|
875
|
-
"DOCKER_BUILDKIT": "1",
|
|
876
|
-
"DOCKER_CACHE_IMAGE": "europe-west6-docker.pkg.dev/google-project-id/catladder-deploy/pan-test-app/caches/api",
|
|
877
|
-
"DOCKER_DRIVER": "overlay2",
|
|
878
|
-
"DOCKER_HOST": "tcp://0.0.0.0:2375",
|
|
879
|
-
"DOCKER_IMAGE": "europe-west6-docker.pkg.dev/google-project-id/catladder-deploy/pan-test-app/review/api/mr1234",
|
|
880
|
-
"DOCKER_IMAGE_TAG": "$CI_COMMIT_SHA",
|
|
881
|
-
"DOCKER_REGISTRY": "europe-west6-docker.pkg.dev",
|
|
882
|
-
"DOCKER_TLS_CERTDIR": "",
|
|
883
|
-
"ENV_SHORT": "review",
|
|
884
|
-
"ENV_TYPE": "review",
|
|
885
|
-
"ENV_VARS": "ENV_SHORT: 'review'
|
|
886
|
-
APP_DIR: 'api'
|
|
887
|
-
ENV_TYPE: 'review'
|
|
888
|
-
BUILD_INFO_ID: 'some-id'
|
|
889
|
-
BUILD_INFO_BUILD_TIME: '01-01-2023 12:13:14'
|
|
890
|
-
BUILD_INFO_CURRENT_VERSION: '3.2.1'
|
|
891
|
-
HOST: 'pan-test-app-review-mr1234-api-unknown-host.example.com'
|
|
892
|
-
ROOT_URL: 'https://pan-test-app-review-mr1234-api-unknown-host.example.com'
|
|
893
|
-
HOST_CANONICAL: 'pan-test-app-review-mr1234-api-unknown-host.example.com'
|
|
894
|
-
ROOT_URL_INTERNAL: 'https://pan-test-app-review-mr1234-api-unknown-host.example.com'
|
|
895
|
-
HOST_INTERNAL: 'pan-test-app-review-mr1234-api-unknown-host.example.com'
|
|
896
|
-
CLOUD_RUN_JOB_TRIGGER_URL_migrate: 'https://europe-west6-run.googleapis.com/apis/run.googleapis.com/v1/namespaces/google-project-id/jobs/pan-test-app-review-mr1234-api-migrate:run'
|
|
897
|
-
DEPLOY_CLOUD_RUN_PROJECT_ID: 'google-project-id'
|
|
898
|
-
DEPLOY_CLOUD_RUN_REGION: 'europe-west6'
|
|
899
|
-
GCLOUD_RUN_canonicalHostSuffix: '$CL_review_api_GCLOUD_RUN_canonicalHostSuffix'
|
|
900
|
-
_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_migrate","DEPLOY_CLOUD_RUN_PROJECT_ID","DEPLOY_CLOUD_RUN_REGION","GCLOUD_DEPLOY_credentialsKey","GCLOUD_RUN_canonicalHostSuffix"]'
|
|
901
|
-
",
|
|
902
|
-
"GCLOUD_DEPLOY_credentialsKey": "$CL_review_api_GCLOUD_DEPLOY_credentialsKey",
|
|
903
|
-
"GCLOUD_RUN_canonicalHostSuffix": "$CL_review_api_GCLOUD_RUN_canonicalHostSuffix",
|
|
904
|
-
"HOST": "pan-test-app-review-mr1234-api-unknown-host.example.com",
|
|
905
|
-
"HOST_CANONICAL": "pan-test-app-review-mr1234-api-unknown-host.example.com",
|
|
906
|
-
"HOST_INTERNAL": "pan-test-app-review-mr1234-api-unknown-host.example.com",
|
|
907
953
|
"KUBERNETES_CPU_REQUEST": "0.5",
|
|
908
954
|
"KUBERNETES_MEMORY_LIMIT": "400Mi",
|
|
909
955
|
"KUBERNETES_MEMORY_REQUEST": "200Mi",
|
|
910
|
-
"ROOT_URL": "https://pan-test-app-review-mr1234-api-unknown-host.example.com",
|
|
911
|
-
"ROOT_URL_INTERNAL": "https://pan-test-app-review-mr1234-api-unknown-host.example.com",
|
|
912
|
-
"_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_migrate","DEPLOY_CLOUD_RUN_PROJECT_ID","DEPLOY_CLOUD_RUN_REGION","GCLOUD_DEPLOY_credentialsKey","GCLOUD_RUN_canonicalHostSuffix"]",
|
|
913
956
|
},
|
|
914
957
|
},
|
|
915
958
|
"api 🛑 Stop ⚠️ | review ": {
|
|
959
|
+
"allow_failure": true,
|
|
960
|
+
"artifacts": {
|
|
961
|
+
"reports": {
|
|
962
|
+
"dotenv": "gitlab_environment.env",
|
|
963
|
+
},
|
|
964
|
+
},
|
|
916
965
|
"environment": {
|
|
917
966
|
"action": "stop",
|
|
918
|
-
"name": "review/
|
|
919
|
-
"url": "
|
|
967
|
+
"name": "review/$CI_COMMIT_REF_NAME/api",
|
|
968
|
+
"url": "$CL_GITLAB_ENVIRONMENT_URL",
|
|
920
969
|
},
|
|
921
970
|
"image": "path/to/docker/gcloud:the-version",
|
|
922
971
|
"interruptible": true,
|
|
@@ -930,33 +979,34 @@ _ALL_ENV_VAR_KEYS: '["ENV_SHORT","APP_DIR","ENV_TYPE","BUILD_INFO_ID","BUILD_INF
|
|
|
930
979
|
},
|
|
931
980
|
"rules": [
|
|
932
981
|
{
|
|
933
|
-
"allow_failure": true,
|
|
934
982
|
"if": "$CI_COMMIT_BRANCH =~ /^[0-9]+\\.([0-9]+|x)\\.x$/",
|
|
935
983
|
"when": "on_success",
|
|
936
984
|
},
|
|
937
985
|
{
|
|
938
|
-
"allow_failure": true,
|
|
939
986
|
"when": "manual",
|
|
940
987
|
},
|
|
941
988
|
],
|
|
942
989
|
"script": [
|
|
990
|
+
"echo -e "\\e[0Ksection_start:$(date +%s):injectvars[collapsed=true]\\r\\e[0KInjecting variables"",
|
|
991
|
+
"export CLOUDSDK_CORE_DISABLE_PROMPTS="1"",
|
|
992
|
+
"echo -e "\\e[0Ksection_end:$(date +%s):injectvars\\r\\e[0K"",
|
|
943
993
|
"set +e",
|
|
944
994
|
"gcloud auth activate-service-account --key-file=<(echo "$CL_review_api_GCLOUD_DEPLOY_credentialsKey")",
|
|
945
|
-
"gcloud run services delete pan-test-app-review-
|
|
946
|
-
"gcloud run jobs executions list --project=google-project-id --region=europe-west6 --job pan-test-app-review-
|
|
947
|
-
"gcloud run jobs delete pan-test-app-review-
|
|
948
|
-
"gcloud artifacts docker images delete europe-west6-docker.pkg.dev/google-project-id/catladder-deploy/pan-test-app/review/api
|
|
995
|
+
"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",
|
|
996
|
+
"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)}')-migrate --format="value(name)" | xargs -I {} gcloud run jobs executions delete {} --quiet --project=google-project-id --region=europe-west6",
|
|
997
|
+
"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)}')-migrate --project=google-project-id --region=europe-west6",
|
|
998
|
+
"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",
|
|
949
999
|
"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",
|
|
950
1000
|
"set +e",
|
|
951
1001
|
"gcloud artifacts docker images delete europe-west6-docker.pkg.dev/google-project-id/catladder-deploy/pan-test-app/review/api --quiet --delete-tags",
|
|
952
1002
|
"set -e",
|
|
953
1003
|
"echo Disabling component in Dependency Track",
|
|
954
|
-
"/dtrackuploader https://dep.panter.swiss/ "$DT_KEY_PROD" disable "pan-test-app/api" "https
|
|
1004
|
+
"/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",
|
|
955
1005
|
"set -e",
|
|
1006
|
+
"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",
|
|
956
1007
|
],
|
|
957
1008
|
"stage": "stop review",
|
|
958
1009
|
"variables": {
|
|
959
|
-
"CLOUDSDK_CORE_DISABLE_PROMPTS": "1",
|
|
960
1010
|
"GIT_STRATEGY": "none",
|
|
961
1011
|
"KUBERNETES_CPU_REQUEST": "0.5",
|
|
962
1012
|
"KUBERNETES_MEMORY_LIMIT": "400Mi",
|
|
@@ -976,12 +1026,14 @@ _ALL_ENV_VAR_KEYS: '["ENV_SHORT","APP_DIR","ENV_TYPE","BUILD_INFO_ID","BUILD_INF
|
|
|
976
1026
|
],
|
|
977
1027
|
},
|
|
978
1028
|
"script": [
|
|
1029
|
+
"echo -e "\\e[0Ksection_start:$(date +%s):injectvars[collapsed=true]\\r\\e[0KInjecting variables"",
|
|
1030
|
+
"export APP_PATH="api"",
|
|
1031
|
+
"echo -e "\\e[0Ksection_end:$(date +%s):injectvars\\r\\e[0K"",
|
|
979
1032
|
"cd api",
|
|
980
1033
|
"yarn npm audit --environment production",
|
|
981
1034
|
],
|
|
982
1035
|
"stage": "test",
|
|
983
1036
|
"variables": {
|
|
984
|
-
"APP_PATH": "api",
|
|
985
1037
|
"KUBERNETES_CPU_REQUEST": "0.5",
|
|
986
1038
|
"KUBERNETES_MEMORY_LIMIT": "4Gi",
|
|
987
1039
|
"KUBERNETES_MEMORY_REQUEST": "2Gi",
|
|
@@ -1015,6 +1067,9 @@ _ALL_ENV_VAR_KEYS: '["ENV_SHORT","APP_DIR","ENV_TYPE","BUILD_INFO_ID","BUILD_INF
|
|
|
1015
1067
|
],
|
|
1016
1068
|
},
|
|
1017
1069
|
"script": [
|
|
1070
|
+
"echo -e "\\e[0Ksection_start:$(date +%s):injectvars[collapsed=true]\\r\\e[0KInjecting variables"",
|
|
1071
|
+
"export APP_PATH="api"",
|
|
1072
|
+
"echo -e "\\e[0Ksection_end:$(date +%s):injectvars\\r\\e[0K"",
|
|
1018
1073
|
"echo -e "\\e[0Ksection_start:$(date +%s):nodeinstall[collapsed=true]\\r\\e[0KEnsure node version"",
|
|
1019
1074
|
"if [ -f ~/.nvm/nvm.sh ]; then source ~/.nvm/nvm.sh; fi",
|
|
1020
1075
|
"if command -v nvm &> /dev/null && [ -f ./.nvmrc ]; then nvm install; fi",
|
|
@@ -1031,7 +1086,6 @@ _ALL_ENV_VAR_KEYS: '["ENV_SHORT","APP_DIR","ENV_TYPE","BUILD_INFO_ID","BUILD_INF
|
|
|
1031
1086
|
],
|
|
1032
1087
|
"stage": "test",
|
|
1033
1088
|
"variables": {
|
|
1034
|
-
"APP_PATH": "api",
|
|
1035
1089
|
"KUBERNETES_CPU_REQUEST": "0.5",
|
|
1036
1090
|
"KUBERNETES_MEMORY_LIMIT": "4Gi",
|
|
1037
1091
|
"KUBERNETES_MEMORY_REQUEST": "2Gi",
|
|
@@ -1055,6 +1109,8 @@ _ALL_ENV_VAR_KEYS: '["ENV_SHORT","APP_DIR","ENV_TYPE","BUILD_INFO_ID","BUILD_INF
|
|
|
1055
1109
|
],
|
|
1056
1110
|
},
|
|
1057
1111
|
"script": [
|
|
1112
|
+
"echo -e "\\e[0Ksection_start:$(date +%s):injectvars[collapsed=true]\\r\\e[0KInjecting variables"",
|
|
1113
|
+
"echo -e "\\e[0Ksection_end:$(date +%s):injectvars\\r\\e[0K"",
|
|
1058
1114
|
"trivy fs --quiet --format cyclonedx --output "__sbom.json" api",
|
|
1059
1115
|
],
|
|
1060
1116
|
"stage": "build",
|
|
@@ -1107,7 +1163,7 @@ _ALL_ENV_VAR_KEYS: '["ENV_SHORT","APP_DIR","ENV_TYPE","BUILD_INFO_ID","BUILD_INF
|
|
|
1107
1163
|
],
|
|
1108
1164
|
"variables": {
|
|
1109
1165
|
"FF_USE_FASTZIP": "true",
|
|
1110
|
-
"GIT_DEPTH": 1,
|
|
1166
|
+
"GIT_DEPTH": "1",
|
|
1111
1167
|
},
|
|
1112
1168
|
"workflow": {
|
|
1113
1169
|
"rules": [
|
|
@@ -1184,7 +1240,26 @@ _ALL_ENV_VAR_KEYS: '["ENV_SHORT","APP_DIR","ENV_TYPE","BUILD_INFO_ID","BUILD_INF
|
|
|
1184
1240
|
],
|
|
1185
1241
|
},
|
|
1186
1242
|
"script": [
|
|
1187
|
-
"echo
|
|
1243
|
+
"echo -e "\\e[0Ksection_start:$(date +%s):injectvars[collapsed=true]\\r\\e[0KInjecting variables"",
|
|
1244
|
+
"export ENV_SHORT="prod"",
|
|
1245
|
+
"export APP_DIR="api"",
|
|
1246
|
+
"export ENV_TYPE="prod"",
|
|
1247
|
+
"export BUILD_INFO_BUILD_ID="$(git describe --tags 2>/dev/null || git rev-parse HEAD)"",
|
|
1248
|
+
"export BUILD_INFO_BUILD_TIME="$CI_JOB_STARTED_AT"",
|
|
1249
|
+
"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")"",
|
|
1250
|
+
"export HOST="$(printf %s "pan-test-app-prod-api-$CL_prod_api_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')"",
|
|
1251
|
+
"export ROOT_URL="https://$(printf %s "pan-test-app-prod-api-$CL_prod_api_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')"",
|
|
1252
|
+
"export HOST_INTERNAL="$(printf %s "pan-test-app-prod-api-$CL_prod_api_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')"",
|
|
1253
|
+
"export HOST_CANONICAL="$(printf %s "pan-test-app-prod-api-$CL_prod_api_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')"",
|
|
1254
|
+
"export ROOT_URL_INTERNAL="https://$(printf %s "pan-test-app-prod-api-$CL_prod_api_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')"",
|
|
1255
|
+
"export CLOUD_RUN_JOB_TRIGGER_URL_migrate="https://europe-west6-run.googleapis.com/apis/run.googleapis.com/v1/namespaces/google-project-id/jobs/pan-test-app-prod-api-migrate:run"",
|
|
1256
|
+
"export DEPLOY_CLOUD_RUN_PROJECT_ID="google-project-id"",
|
|
1257
|
+
"export DEPLOY_CLOUD_RUN_REGION="europe-west6"",
|
|
1258
|
+
"export GCLOUD_DEPLOY_credentialsKey="$CL_prod_api_GCLOUD_DEPLOY_credentialsKey"",
|
|
1259
|
+
"export GCLOUD_RUN_canonicalHostSuffix="$CL_prod_api_GCLOUD_RUN_canonicalHostSuffix"",
|
|
1260
|
+
"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_migrate\\",\\"DEPLOY_CLOUD_RUN_PROJECT_ID\\",\\"DEPLOY_CLOUD_RUN_REGION\\",\\"GCLOUD_DEPLOY_credentialsKey\\",\\"GCLOUD_RUN_canonicalHostSuffix\\"]"",
|
|
1261
|
+
"echo -e "\\e[0Ksection_end:$(date +%s):injectvars\\r\\e[0K"",
|
|
1262
|
+
"echo '{"id":"$(git describe --tags 2>/dev/null || git rev-parse HEAD)","time":"$CI_JOB_STARTED_AT"}' > api/__build_info.json",
|
|
1188
1263
|
"echo -e "\\e[0Ksection_start:$(date +%s):nodeinstall[collapsed=true]\\r\\e[0KEnsure node version"",
|
|
1189
1264
|
"if [ -f ~/.nvm/nvm.sh ]; then source ~/.nvm/nvm.sh; fi",
|
|
1190
1265
|
"if command -v nvm &> /dev/null && [ -f ./.nvmrc ]; then nvm install; fi",
|
|
@@ -1201,26 +1276,9 @@ _ALL_ENV_VAR_KEYS: '["ENV_SHORT","APP_DIR","ENV_TYPE","BUILD_INFO_ID","BUILD_INF
|
|
|
1201
1276
|
],
|
|
1202
1277
|
"stage": "build",
|
|
1203
1278
|
"variables": {
|
|
1204
|
-
"APP_DIR": "api",
|
|
1205
|
-
"BUILD_INFO_BUILD_TIME": "01-01-2023 12:13:14",
|
|
1206
|
-
"BUILD_INFO_CURRENT_VERSION": "3.2.1",
|
|
1207
|
-
"BUILD_INFO_ID": "some-id",
|
|
1208
|
-
"CLOUD_RUN_JOB_TRIGGER_URL_migrate": "https://europe-west6-run.googleapis.com/apis/run.googleapis.com/v1/namespaces/google-project-id/jobs/pan-test-app-prod-api-migrate:run",
|
|
1209
|
-
"DEPLOY_CLOUD_RUN_PROJECT_ID": "google-project-id",
|
|
1210
|
-
"DEPLOY_CLOUD_RUN_REGION": "europe-west6",
|
|
1211
|
-
"ENV_SHORT": "prod",
|
|
1212
|
-
"ENV_TYPE": "prod",
|
|
1213
|
-
"GCLOUD_DEPLOY_credentialsKey": "$CL_prod_api_GCLOUD_DEPLOY_credentialsKey",
|
|
1214
|
-
"GCLOUD_RUN_canonicalHostSuffix": "$CL_prod_api_GCLOUD_RUN_canonicalHostSuffix",
|
|
1215
|
-
"HOST": "pan-test-app-prod-api-unknown-host.example.com",
|
|
1216
|
-
"HOST_CANONICAL": "pan-test-app-prod-api-unknown-host.example.com",
|
|
1217
|
-
"HOST_INTERNAL": "pan-test-app-prod-api-unknown-host.example.com",
|
|
1218
1279
|
"KUBERNETES_CPU_REQUEST": "0.5",
|
|
1219
1280
|
"KUBERNETES_MEMORY_LIMIT": "4Gi",
|
|
1220
1281
|
"KUBERNETES_MEMORY_REQUEST": "2Gi",
|
|
1221
|
-
"ROOT_URL": "https://pan-test-app-prod-api-unknown-host.example.com",
|
|
1222
|
-
"ROOT_URL_INTERNAL": "https://pan-test-app-prod-api-unknown-host.example.com",
|
|
1223
|
-
"_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_migrate","DEPLOY_CLOUD_RUN_PROJECT_ID","DEPLOY_CLOUD_RUN_REGION","GCLOUD_DEPLOY_credentialsKey","GCLOUD_RUN_canonicalHostSuffix"]",
|
|
1224
1282
|
},
|
|
1225
1283
|
},
|
|
1226
1284
|
"api 🔨 app | stage ": {
|
|
@@ -1270,7 +1328,26 @@ _ALL_ENV_VAR_KEYS: '["ENV_SHORT","APP_DIR","ENV_TYPE","BUILD_INFO_ID","BUILD_INF
|
|
|
1270
1328
|
],
|
|
1271
1329
|
},
|
|
1272
1330
|
"script": [
|
|
1273
|
-
"echo
|
|
1331
|
+
"echo -e "\\e[0Ksection_start:$(date +%s):injectvars[collapsed=true]\\r\\e[0KInjecting variables"",
|
|
1332
|
+
"export ENV_SHORT="stage"",
|
|
1333
|
+
"export APP_DIR="api"",
|
|
1334
|
+
"export ENV_TYPE="stage"",
|
|
1335
|
+
"export BUILD_INFO_BUILD_ID="$(git describe --tags 2>/dev/null || git rev-parse HEAD)"",
|
|
1336
|
+
"export BUILD_INFO_BUILD_TIME="$CI_JOB_STARTED_AT"",
|
|
1337
|
+
"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")"",
|
|
1338
|
+
"export HOST="$(printf %s "pan-test-app-stage-api-$CL_stage_api_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')"",
|
|
1339
|
+
"export ROOT_URL="https://$(printf %s "pan-test-app-stage-api-$CL_stage_api_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')"",
|
|
1340
|
+
"export HOST_INTERNAL="$(printf %s "pan-test-app-stage-api-$CL_stage_api_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')"",
|
|
1341
|
+
"export HOST_CANONICAL="$(printf %s "pan-test-app-stage-api-$CL_stage_api_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')"",
|
|
1342
|
+
"export ROOT_URL_INTERNAL="https://$(printf %s "pan-test-app-stage-api-$CL_stage_api_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')"",
|
|
1343
|
+
"export CLOUD_RUN_JOB_TRIGGER_URL_migrate="https://europe-west6-run.googleapis.com/apis/run.googleapis.com/v1/namespaces/google-project-id/jobs/pan-test-app-stage-api-migrate:run"",
|
|
1344
|
+
"export DEPLOY_CLOUD_RUN_PROJECT_ID="google-project-id"",
|
|
1345
|
+
"export DEPLOY_CLOUD_RUN_REGION="europe-west6"",
|
|
1346
|
+
"export GCLOUD_DEPLOY_credentialsKey="$CL_stage_api_GCLOUD_DEPLOY_credentialsKey"",
|
|
1347
|
+
"export GCLOUD_RUN_canonicalHostSuffix="$CL_stage_api_GCLOUD_RUN_canonicalHostSuffix"",
|
|
1348
|
+
"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_migrate\\",\\"DEPLOY_CLOUD_RUN_PROJECT_ID\\",\\"DEPLOY_CLOUD_RUN_REGION\\",\\"GCLOUD_DEPLOY_credentialsKey\\",\\"GCLOUD_RUN_canonicalHostSuffix\\"]"",
|
|
1349
|
+
"echo -e "\\e[0Ksection_end:$(date +%s):injectvars\\r\\e[0K"",
|
|
1350
|
+
"echo '{"id":"$(git describe --tags 2>/dev/null || git rev-parse HEAD)","time":"$CI_JOB_STARTED_AT"}' > api/__build_info.json",
|
|
1274
1351
|
"echo -e "\\e[0Ksection_start:$(date +%s):nodeinstall[collapsed=true]\\r\\e[0KEnsure node version"",
|
|
1275
1352
|
"if [ -f ~/.nvm/nvm.sh ]; then source ~/.nvm/nvm.sh; fi",
|
|
1276
1353
|
"if command -v nvm &> /dev/null && [ -f ./.nvmrc ]; then nvm install; fi",
|
|
@@ -1287,26 +1364,9 @@ _ALL_ENV_VAR_KEYS: '["ENV_SHORT","APP_DIR","ENV_TYPE","BUILD_INFO_ID","BUILD_INF
|
|
|
1287
1364
|
],
|
|
1288
1365
|
"stage": "build",
|
|
1289
1366
|
"variables": {
|
|
1290
|
-
"APP_DIR": "api",
|
|
1291
|
-
"BUILD_INFO_BUILD_TIME": "01-01-2023 12:13:14",
|
|
1292
|
-
"BUILD_INFO_CURRENT_VERSION": "3.2.1",
|
|
1293
|
-
"BUILD_INFO_ID": "some-id",
|
|
1294
|
-
"CLOUD_RUN_JOB_TRIGGER_URL_migrate": "https://europe-west6-run.googleapis.com/apis/run.googleapis.com/v1/namespaces/google-project-id/jobs/pan-test-app-stage-api-migrate:run",
|
|
1295
|
-
"DEPLOY_CLOUD_RUN_PROJECT_ID": "google-project-id",
|
|
1296
|
-
"DEPLOY_CLOUD_RUN_REGION": "europe-west6",
|
|
1297
|
-
"ENV_SHORT": "stage",
|
|
1298
|
-
"ENV_TYPE": "stage",
|
|
1299
|
-
"GCLOUD_DEPLOY_credentialsKey": "$CL_stage_api_GCLOUD_DEPLOY_credentialsKey",
|
|
1300
|
-
"GCLOUD_RUN_canonicalHostSuffix": "$CL_stage_api_GCLOUD_RUN_canonicalHostSuffix",
|
|
1301
|
-
"HOST": "pan-test-app-stage-api-unknown-host.example.com",
|
|
1302
|
-
"HOST_CANONICAL": "pan-test-app-stage-api-unknown-host.example.com",
|
|
1303
|
-
"HOST_INTERNAL": "pan-test-app-stage-api-unknown-host.example.com",
|
|
1304
1367
|
"KUBERNETES_CPU_REQUEST": "0.5",
|
|
1305
1368
|
"KUBERNETES_MEMORY_LIMIT": "4Gi",
|
|
1306
1369
|
"KUBERNETES_MEMORY_REQUEST": "2Gi",
|
|
1307
|
-
"ROOT_URL": "https://pan-test-app-stage-api-unknown-host.example.com",
|
|
1308
|
-
"ROOT_URL_INTERNAL": "https://pan-test-app-stage-api-unknown-host.example.com",
|
|
1309
|
-
"_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_migrate","DEPLOY_CLOUD_RUN_PROJECT_ID","DEPLOY_CLOUD_RUN_REGION","GCLOUD_DEPLOY_credentialsKey","GCLOUD_RUN_canonicalHostSuffix"]",
|
|
1310
1370
|
},
|
|
1311
1371
|
},
|
|
1312
1372
|
"api 🔨 docker | prod ": {
|
|
@@ -1332,6 +1392,21 @@ _ALL_ENV_VAR_KEYS: '["ENV_SHORT","APP_DIR","ENV_TYPE","BUILD_INFO_ID","BUILD_INF
|
|
|
1332
1392
|
],
|
|
1333
1393
|
},
|
|
1334
1394
|
"script": [
|
|
1395
|
+
"echo -e "\\e[0Ksection_start:$(date +%s):injectvars[collapsed=true]\\r\\e[0KInjecting variables"",
|
|
1396
|
+
"export APP_DIR="api"",
|
|
1397
|
+
"export DOCKER_DIR="."",
|
|
1398
|
+
"export DOCKER_REGISTRY="europe-west6-docker.pkg.dev"",
|
|
1399
|
+
"export DOCKER_IMAGE="europe-west6-docker.pkg.dev/google-project-id/catladder-deploy/pan-test-app/prod/api"",
|
|
1400
|
+
"export DOCKER_CACHE_IMAGE="europe-west6-docker.pkg.dev/google-project-id/catladder-deploy/pan-test-app/caches/api"",
|
|
1401
|
+
"export DOCKER_IMAGE_TAG="$CI_COMMIT_SHA"",
|
|
1402
|
+
"export DOCKER_COPY_AND_INSTALL_APP="COPY --chown=node:node $APP_DIR .
|
|
1403
|
+
RUN yarn plugin import workspace-tools
|
|
1404
|
+
RUN yarn workspaces focus --production && yarn rebuild"",
|
|
1405
|
+
"export DOCKER_COPY_WORKSPACE_FILES="COPY --chown=node:node api/package.json /app/api/package.json
|
|
1406
|
+
COPY --chown=node:node api/yarn.lock /app/api/yarn.lock
|
|
1407
|
+
COPY --chown=node:node .yarnrc.yml /app/.yarnrc.yml
|
|
1408
|
+
COPY --chown=node:node .yarn /app/.yarn"",
|
|
1409
|
+
"echo -e "\\e[0Ksection_end:$(date +%s):injectvars\\r\\e[0K"",
|
|
1335
1410
|
"ensureNodeDockerfile",
|
|
1336
1411
|
"echo -e "\\e[0Ksection_start:$(date +%s):docker-login[collapsed=true]\\r\\e[0KDocker Login"",
|
|
1337
1412
|
"gcloud auth activate-service-account --key-file=<(echo "$CL_prod_api_GCLOUD_DEPLOY_credentialsKey")",
|
|
@@ -1356,24 +1431,9 @@ _ALL_ENV_VAR_KEYS: '["ENV_SHORT","APP_DIR","ENV_TYPE","BUILD_INFO_ID","BUILD_INF
|
|
|
1356
1431
|
],
|
|
1357
1432
|
"stage": "build",
|
|
1358
1433
|
"variables": {
|
|
1359
|
-
"APP_DIR": "api",
|
|
1360
|
-
"DOCKERFILE_ADDITIONS": undefined,
|
|
1361
|
-
"DOCKERFILE_ADDITIONS_END": undefined,
|
|
1362
1434
|
"DOCKER_BUILDKIT": "1",
|
|
1363
|
-
"DOCKER_CACHE_IMAGE": "europe-west6-docker.pkg.dev/google-project-id/catladder-deploy/pan-test-app/caches/api",
|
|
1364
|
-
"DOCKER_COPY_AND_INSTALL_APP": "COPY --chown=node:node $APP_DIR .
|
|
1365
|
-
RUN yarn plugin import workspace-tools
|
|
1366
|
-
RUN yarn workspaces focus --production && yarn rebuild",
|
|
1367
|
-
"DOCKER_COPY_WORKSPACE_FILES": "COPY --chown=node:node api/package.json /app/api/package.json
|
|
1368
|
-
COPY --chown=node:node api/yarn.lock /app/api/yarn.lock
|
|
1369
|
-
COPY --chown=node:node .yarnrc.yml /app/.yarnrc.yml
|
|
1370
|
-
COPY --chown=node:node .yarn /app/.yarn",
|
|
1371
|
-
"DOCKER_DIR": ".",
|
|
1372
1435
|
"DOCKER_DRIVER": "overlay2",
|
|
1373
1436
|
"DOCKER_HOST": "tcp://0.0.0.0:2375",
|
|
1374
|
-
"DOCKER_IMAGE": "europe-west6-docker.pkg.dev/google-project-id/catladder-deploy/pan-test-app/prod/api",
|
|
1375
|
-
"DOCKER_IMAGE_TAG": "$CI_COMMIT_SHA",
|
|
1376
|
-
"DOCKER_REGISTRY": "europe-west6-docker.pkg.dev",
|
|
1377
1437
|
"DOCKER_TLS_CERTDIR": "",
|
|
1378
1438
|
"KUBERNETES_CPU_REQUEST": "0.5",
|
|
1379
1439
|
"KUBERNETES_MEMORY_LIMIT": "2Gi",
|
|
@@ -1403,6 +1463,21 @@ COPY --chown=node:node .yarn /app/.yarn",
|
|
|
1403
1463
|
],
|
|
1404
1464
|
},
|
|
1405
1465
|
"script": [
|
|
1466
|
+
"echo -e "\\e[0Ksection_start:$(date +%s):injectvars[collapsed=true]\\r\\e[0KInjecting variables"",
|
|
1467
|
+
"export APP_DIR="api"",
|
|
1468
|
+
"export DOCKER_DIR="."",
|
|
1469
|
+
"export DOCKER_REGISTRY="europe-west6-docker.pkg.dev"",
|
|
1470
|
+
"export DOCKER_IMAGE="europe-west6-docker.pkg.dev/google-project-id/catladder-deploy/pan-test-app/stage/api"",
|
|
1471
|
+
"export DOCKER_CACHE_IMAGE="europe-west6-docker.pkg.dev/google-project-id/catladder-deploy/pan-test-app/caches/api"",
|
|
1472
|
+
"export DOCKER_IMAGE_TAG="$CI_COMMIT_SHA"",
|
|
1473
|
+
"export DOCKER_COPY_AND_INSTALL_APP="COPY --chown=node:node $APP_DIR .
|
|
1474
|
+
RUN yarn plugin import workspace-tools
|
|
1475
|
+
RUN yarn workspaces focus --production && yarn rebuild"",
|
|
1476
|
+
"export DOCKER_COPY_WORKSPACE_FILES="COPY --chown=node:node api/package.json /app/api/package.json
|
|
1477
|
+
COPY --chown=node:node api/yarn.lock /app/api/yarn.lock
|
|
1478
|
+
COPY --chown=node:node .yarnrc.yml /app/.yarnrc.yml
|
|
1479
|
+
COPY --chown=node:node .yarn /app/.yarn"",
|
|
1480
|
+
"echo -e "\\e[0Ksection_end:$(date +%s):injectvars\\r\\e[0K"",
|
|
1406
1481
|
"ensureNodeDockerfile",
|
|
1407
1482
|
"echo -e "\\e[0Ksection_start:$(date +%s):docker-login[collapsed=true]\\r\\e[0KDocker Login"",
|
|
1408
1483
|
"gcloud auth activate-service-account --key-file=<(echo "$CL_stage_api_GCLOUD_DEPLOY_credentialsKey")",
|
|
@@ -1427,24 +1502,9 @@ COPY --chown=node:node .yarn /app/.yarn",
|
|
|
1427
1502
|
],
|
|
1428
1503
|
"stage": "build",
|
|
1429
1504
|
"variables": {
|
|
1430
|
-
"APP_DIR": "api",
|
|
1431
|
-
"DOCKERFILE_ADDITIONS": undefined,
|
|
1432
|
-
"DOCKERFILE_ADDITIONS_END": undefined,
|
|
1433
1505
|
"DOCKER_BUILDKIT": "1",
|
|
1434
|
-
"DOCKER_CACHE_IMAGE": "europe-west6-docker.pkg.dev/google-project-id/catladder-deploy/pan-test-app/caches/api",
|
|
1435
|
-
"DOCKER_COPY_AND_INSTALL_APP": "COPY --chown=node:node $APP_DIR .
|
|
1436
|
-
RUN yarn plugin import workspace-tools
|
|
1437
|
-
RUN yarn workspaces focus --production && yarn rebuild",
|
|
1438
|
-
"DOCKER_COPY_WORKSPACE_FILES": "COPY --chown=node:node api/package.json /app/api/package.json
|
|
1439
|
-
COPY --chown=node:node api/yarn.lock /app/api/yarn.lock
|
|
1440
|
-
COPY --chown=node:node .yarnrc.yml /app/.yarnrc.yml
|
|
1441
|
-
COPY --chown=node:node .yarn /app/.yarn",
|
|
1442
|
-
"DOCKER_DIR": ".",
|
|
1443
1506
|
"DOCKER_DRIVER": "overlay2",
|
|
1444
1507
|
"DOCKER_HOST": "tcp://0.0.0.0:2375",
|
|
1445
|
-
"DOCKER_IMAGE": "europe-west6-docker.pkg.dev/google-project-id/catladder-deploy/pan-test-app/stage/api",
|
|
1446
|
-
"DOCKER_IMAGE_TAG": "$CI_COMMIT_SHA",
|
|
1447
|
-
"DOCKER_REGISTRY": "europe-west6-docker.pkg.dev",
|
|
1448
1508
|
"DOCKER_TLS_CERTDIR": "",
|
|
1449
1509
|
"KUBERNETES_CPU_REQUEST": "0.5",
|
|
1450
1510
|
"KUBERNETES_MEMORY_LIMIT": "2Gi",
|
|
@@ -1454,15 +1514,15 @@ COPY --chown=node:node .yarn /app/.yarn",
|
|
|
1454
1514
|
"api 🚀 Deploy | prod ": {
|
|
1455
1515
|
"allow_failure": true,
|
|
1456
1516
|
"artifacts": {
|
|
1457
|
-
"
|
|
1458
|
-
"
|
|
1459
|
-
|
|
1517
|
+
"reports": {
|
|
1518
|
+
"dotenv": "gitlab_environment.env",
|
|
1519
|
+
},
|
|
1460
1520
|
},
|
|
1461
1521
|
"environment": {
|
|
1462
1522
|
"auto_stop_in": undefined,
|
|
1463
1523
|
"name": "prod/api",
|
|
1464
1524
|
"on_stop": "api 🛑 Stop ⚠️ | prod ",
|
|
1465
|
-
"url": "
|
|
1525
|
+
"url": "$CL_GITLAB_ENVIRONMENT_URL",
|
|
1466
1526
|
},
|
|
1467
1527
|
"image": "path/to/docker/gcloud:the-version",
|
|
1468
1528
|
"interruptible": true,
|
|
@@ -1493,13 +1553,74 @@ COPY --chown=node:node .yarn /app/.yarn",
|
|
|
1493
1553
|
},
|
|
1494
1554
|
],
|
|
1495
1555
|
"script": [
|
|
1556
|
+
"echo -e "\\e[0Ksection_start:$(date +%s):injectvars[collapsed=true]\\r\\e[0KInjecting variables"",
|
|
1557
|
+
"export ENV_SHORT="prod"",
|
|
1558
|
+
"export APP_DIR="api"",
|
|
1559
|
+
"export ENV_TYPE="prod"",
|
|
1560
|
+
"export BUILD_INFO_BUILD_ID="$(git describe --tags 2>/dev/null || git rev-parse HEAD)"",
|
|
1561
|
+
"export BUILD_INFO_BUILD_TIME="$CI_JOB_STARTED_AT"",
|
|
1562
|
+
"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")"",
|
|
1563
|
+
"export HOST="$(printf %s "pan-test-app-prod-api-$CL_prod_api_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')"",
|
|
1564
|
+
"export ROOT_URL="https://$(printf %s "pan-test-app-prod-api-$CL_prod_api_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')"",
|
|
1565
|
+
"export HOST_INTERNAL="$(printf %s "pan-test-app-prod-api-$CL_prod_api_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')"",
|
|
1566
|
+
"export HOST_CANONICAL="$(printf %s "pan-test-app-prod-api-$CL_prod_api_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')"",
|
|
1567
|
+
"export ROOT_URL_INTERNAL="https://$(printf %s "pan-test-app-prod-api-$CL_prod_api_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')"",
|
|
1568
|
+
"export CLOUD_RUN_JOB_TRIGGER_URL_migrate="https://europe-west6-run.googleapis.com/apis/run.googleapis.com/v1/namespaces/google-project-id/jobs/pan-test-app-prod-api-migrate:run"",
|
|
1569
|
+
"export DEPLOY_CLOUD_RUN_PROJECT_ID="google-project-id"",
|
|
1570
|
+
"export DEPLOY_CLOUD_RUN_REGION="europe-west6"",
|
|
1571
|
+
"export GCLOUD_DEPLOY_credentialsKey="$CL_prod_api_GCLOUD_DEPLOY_credentialsKey"",
|
|
1572
|
+
"export GCLOUD_RUN_canonicalHostSuffix="$CL_prod_api_GCLOUD_RUN_canonicalHostSuffix"",
|
|
1573
|
+
"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_migrate\\",\\"DEPLOY_CLOUD_RUN_PROJECT_ID\\",\\"DEPLOY_CLOUD_RUN_REGION\\",\\"GCLOUD_DEPLOY_credentialsKey\\",\\"GCLOUD_RUN_canonicalHostSuffix\\"]"",
|
|
1574
|
+
"export DOCKER_REGISTRY="europe-west6-docker.pkg.dev"",
|
|
1575
|
+
"export DOCKER_IMAGE="europe-west6-docker.pkg.dev/google-project-id/catladder-deploy/pan-test-app/prod/api"",
|
|
1576
|
+
"export DOCKER_CACHE_IMAGE="europe-west6-docker.pkg.dev/google-project-id/catladder-deploy/pan-test-app/caches/api"",
|
|
1577
|
+
"export DOCKER_IMAGE_TAG="$CI_COMMIT_SHA"",
|
|
1578
|
+
"export CLOUDSDK_CORE_DISABLE_PROMPTS="1"",
|
|
1579
|
+
"echo -e "\\e[0Ksection_end:$(date +%s):injectvars\\r\\e[0K"",
|
|
1496
1580
|
"echo -e "\\e[0Ksection_start:$(date +%s):prepare[collapsed=true]\\r\\e[0KPrepare..."",
|
|
1497
1581
|
"gcloud auth activate-service-account --key-file=<(echo "$CL_prod_api_GCLOUD_DEPLOY_credentialsKey")",
|
|
1498
1582
|
"export GCLOUD_PROJECT_NUMBER=$(gcloud projects describe google-project-id --format="value(projectNumber)")",
|
|
1499
1583
|
"echo "GCLOUD_PROJECT_NUMBER: $GCLOUD_PROJECT_NUMBER"",
|
|
1500
1584
|
"echo -e "\\e[0Ksection_end:$(date +%s):prepare\\r\\e[0K"",
|
|
1585
|
+
"echo -e "\\e[0Ksection_start:$(date +%s):writeenvvars[collapsed=true]\\r\\e[0KWrite env vars to file"",
|
|
1586
|
+
"cat > ____envvars.yaml <<EOF
|
|
1587
|
+
ENV_SHORT: |-
|
|
1588
|
+
prod
|
|
1589
|
+
APP_DIR: |-
|
|
1590
|
+
api
|
|
1591
|
+
ENV_TYPE: |-
|
|
1592
|
+
prod
|
|
1593
|
+
BUILD_INFO_BUILD_ID: |-
|
|
1594
|
+
$(printf %s "$(git describe --tags 2>/dev/null || git rev-parse HEAD)" | sed 's/^/ /')
|
|
1595
|
+
BUILD_INFO_BUILD_TIME: |-
|
|
1596
|
+
$(printf %s "$CI_JOB_STARTED_AT" | sed 's/^/ /')
|
|
1597
|
+
BUILD_INFO_CURRENT_VERSION: |-
|
|
1598
|
+
$(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/^/ /')
|
|
1599
|
+
HOST: |-
|
|
1600
|
+
$(printf %s "$(printf %s "pan-test-app-prod-api-$CL_prod_api_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')" | sed 's/^/ /')
|
|
1601
|
+
ROOT_URL: |-
|
|
1602
|
+
$(printf %s "https://$(printf %s "pan-test-app-prod-api-$CL_prod_api_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')" | sed 's/^/ /')
|
|
1603
|
+
HOST_INTERNAL: |-
|
|
1604
|
+
$(printf %s "$(printf %s "pan-test-app-prod-api-$CL_prod_api_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')" | sed 's/^/ /')
|
|
1605
|
+
HOST_CANONICAL: |-
|
|
1606
|
+
$(printf %s "$(printf %s "pan-test-app-prod-api-$CL_prod_api_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')" | sed 's/^/ /')
|
|
1607
|
+
ROOT_URL_INTERNAL: |-
|
|
1608
|
+
$(printf %s "https://$(printf %s "pan-test-app-prod-api-$CL_prod_api_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')" | sed 's/^/ /')
|
|
1609
|
+
CLOUD_RUN_JOB_TRIGGER_URL_migrate: |-
|
|
1610
|
+
https://europe-west6-run.googleapis.com/apis/run.googleapis.com/v1/namespaces/google-project-id/jobs/pan-test-app-prod-api-migrate:run
|
|
1611
|
+
DEPLOY_CLOUD_RUN_PROJECT_ID: |-
|
|
1612
|
+
google-project-id
|
|
1613
|
+
DEPLOY_CLOUD_RUN_REGION: |-
|
|
1614
|
+
europe-west6
|
|
1615
|
+
GCLOUD_RUN_canonicalHostSuffix: |-
|
|
1616
|
+
$(printf %s "$CL_prod_api_GCLOUD_RUN_canonicalHostSuffix" | sed 's/^/ /')
|
|
1617
|
+
_ALL_ENV_VAR_KEYS: |-
|
|
1618
|
+
["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_migrate","DEPLOY_CLOUD_RUN_PROJECT_ID","DEPLOY_CLOUD_RUN_REGION","GCLOUD_DEPLOY_credentialsKey","GCLOUD_RUN_canonicalHostSuffix"]
|
|
1619
|
+
|
|
1620
|
+
EOF
|
|
1621
|
+
",
|
|
1622
|
+
"echo -e "\\e[0Ksection_end:$(date +%s):writeenvvars\\r\\e[0K"",
|
|
1501
1623
|
"echo -e "\\e[0Ksection_start:$(date +%s):deploy[collapsed=true]\\r\\e[0KDeploy to cloud run"",
|
|
1502
|
-
"echo "$ENV_VARS" > ____envvars.yaml",
|
|
1503
1624
|
"set +e",
|
|
1504
1625
|
"gcloud run jobs create pan-test-app-prod-api-migrate --command="migrate" --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-job-name=pan-test-app-prod-api-migrate --memory=512Mi --task-timeout=10m --parallelism=1 --env-vars-file=____envvars.yaml --max-retries=0",
|
|
1505
1626
|
"set -e",
|
|
@@ -1513,78 +1634,28 @@ COPY --chown=node:node .yarn /app/.yarn",
|
|
|
1513
1634
|
"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",
|
|
1514
1635
|
"echo -e "\\e[0Ksection_end:$(date +%s):cleanup\\r\\e[0K"",
|
|
1515
1636
|
"echo Uploading SBOM to Dependency Track",
|
|
1516
|
-
"/dtrackuploader https://dep.panter.swiss/ "$DT_KEY_PROD" upload "pan-test-app/api" "https
|
|
1517
|
-
|
|
1518
|
-
"services": [
|
|
1519
|
-
{
|
|
1520
|
-
"command": [
|
|
1521
|
-
"--tls=false",
|
|
1522
|
-
],
|
|
1523
|
-
"name": "docker:24.0.6-dind",
|
|
1524
|
-
},
|
|
1637
|
+
"/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",
|
|
1638
|
+
"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",
|
|
1525
1639
|
],
|
|
1526
1640
|
"stage": "deploy prod",
|
|
1527
1641
|
"variables": {
|
|
1528
|
-
"APP_DIR": "api",
|
|
1529
|
-
"BUILD_INFO_BUILD_TIME": "01-01-2023 12:13:14",
|
|
1530
|
-
"BUILD_INFO_CURRENT_VERSION": "3.2.1",
|
|
1531
|
-
"BUILD_INFO_ID": "some-id",
|
|
1532
|
-
"CLOUDSDK_CORE_DISABLE_PROMPTS": "1",
|
|
1533
|
-
"CLOUD_RUN_JOB_TRIGGER_URL_migrate": "https://europe-west6-run.googleapis.com/apis/run.googleapis.com/v1/namespaces/google-project-id/jobs/pan-test-app-prod-api-migrate:run",
|
|
1534
|
-
"DEPLOY_CLOUD_RUN_PROJECT_ID": "google-project-id",
|
|
1535
|
-
"DEPLOY_CLOUD_RUN_REGION": "europe-west6",
|
|
1536
|
-
"DOCKER_BUILDKIT": "1",
|
|
1537
|
-
"DOCKER_CACHE_IMAGE": "europe-west6-docker.pkg.dev/google-project-id/catladder-deploy/pan-test-app/caches/api",
|
|
1538
|
-
"DOCKER_DRIVER": "overlay2",
|
|
1539
|
-
"DOCKER_HOST": "tcp://0.0.0.0:2375",
|
|
1540
|
-
"DOCKER_IMAGE": "europe-west6-docker.pkg.dev/google-project-id/catladder-deploy/pan-test-app/prod/api",
|
|
1541
|
-
"DOCKER_IMAGE_TAG": "$CI_COMMIT_SHA",
|
|
1542
|
-
"DOCKER_REGISTRY": "europe-west6-docker.pkg.dev",
|
|
1543
|
-
"DOCKER_TLS_CERTDIR": "",
|
|
1544
|
-
"ENV_SHORT": "prod",
|
|
1545
|
-
"ENV_TYPE": "prod",
|
|
1546
|
-
"ENV_VARS": "ENV_SHORT: 'prod'
|
|
1547
|
-
APP_DIR: 'api'
|
|
1548
|
-
ENV_TYPE: 'prod'
|
|
1549
|
-
BUILD_INFO_ID: 'some-id'
|
|
1550
|
-
BUILD_INFO_BUILD_TIME: '01-01-2023 12:13:14'
|
|
1551
|
-
BUILD_INFO_CURRENT_VERSION: '3.2.1'
|
|
1552
|
-
HOST: 'pan-test-app-prod-api-unknown-host.example.com'
|
|
1553
|
-
ROOT_URL: 'https://pan-test-app-prod-api-unknown-host.example.com'
|
|
1554
|
-
HOST_CANONICAL: 'pan-test-app-prod-api-unknown-host.example.com'
|
|
1555
|
-
ROOT_URL_INTERNAL: 'https://pan-test-app-prod-api-unknown-host.example.com'
|
|
1556
|
-
HOST_INTERNAL: 'pan-test-app-prod-api-unknown-host.example.com'
|
|
1557
|
-
CLOUD_RUN_JOB_TRIGGER_URL_migrate: 'https://europe-west6-run.googleapis.com/apis/run.googleapis.com/v1/namespaces/google-project-id/jobs/pan-test-app-prod-api-migrate:run'
|
|
1558
|
-
DEPLOY_CLOUD_RUN_PROJECT_ID: 'google-project-id'
|
|
1559
|
-
DEPLOY_CLOUD_RUN_REGION: 'europe-west6'
|
|
1560
|
-
GCLOUD_RUN_canonicalHostSuffix: '$CL_prod_api_GCLOUD_RUN_canonicalHostSuffix'
|
|
1561
|
-
_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_migrate","DEPLOY_CLOUD_RUN_PROJECT_ID","DEPLOY_CLOUD_RUN_REGION","GCLOUD_DEPLOY_credentialsKey","GCLOUD_RUN_canonicalHostSuffix"]'
|
|
1562
|
-
",
|
|
1563
|
-
"GCLOUD_DEPLOY_credentialsKey": "$CL_prod_api_GCLOUD_DEPLOY_credentialsKey",
|
|
1564
|
-
"GCLOUD_RUN_canonicalHostSuffix": "$CL_prod_api_GCLOUD_RUN_canonicalHostSuffix",
|
|
1565
|
-
"HOST": "pan-test-app-prod-api-unknown-host.example.com",
|
|
1566
|
-
"HOST_CANONICAL": "pan-test-app-prod-api-unknown-host.example.com",
|
|
1567
|
-
"HOST_INTERNAL": "pan-test-app-prod-api-unknown-host.example.com",
|
|
1568
1642
|
"KUBERNETES_CPU_REQUEST": "0.5",
|
|
1569
1643
|
"KUBERNETES_MEMORY_LIMIT": "400Mi",
|
|
1570
1644
|
"KUBERNETES_MEMORY_REQUEST": "200Mi",
|
|
1571
|
-
"ROOT_URL": "https://pan-test-app-prod-api-unknown-host.example.com",
|
|
1572
|
-
"ROOT_URL_INTERNAL": "https://pan-test-app-prod-api-unknown-host.example.com",
|
|
1573
|
-
"_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_migrate","DEPLOY_CLOUD_RUN_PROJECT_ID","DEPLOY_CLOUD_RUN_REGION","GCLOUD_DEPLOY_credentialsKey","GCLOUD_RUN_canonicalHostSuffix"]",
|
|
1574
1645
|
},
|
|
1575
1646
|
},
|
|
1576
1647
|
"api 🚀 Deploy | stage ": {
|
|
1577
1648
|
"allow_failure": false,
|
|
1578
1649
|
"artifacts": {
|
|
1579
|
-
"
|
|
1580
|
-
"
|
|
1581
|
-
|
|
1650
|
+
"reports": {
|
|
1651
|
+
"dotenv": "gitlab_environment.env",
|
|
1652
|
+
},
|
|
1582
1653
|
},
|
|
1583
1654
|
"environment": {
|
|
1584
1655
|
"auto_stop_in": undefined,
|
|
1585
1656
|
"name": "stage/api",
|
|
1586
1657
|
"on_stop": "api 🛑 Stop ⚠️ | stage ",
|
|
1587
|
-
"url": "
|
|
1658
|
+
"url": "$CL_GITLAB_ENVIRONMENT_URL",
|
|
1588
1659
|
},
|
|
1589
1660
|
"image": "path/to/docker/gcloud:the-version",
|
|
1590
1661
|
"interruptible": true,
|
|
@@ -1615,13 +1686,74 @@ _ALL_ENV_VAR_KEYS: '["ENV_SHORT","APP_DIR","ENV_TYPE","BUILD_INFO_ID","BUILD_INF
|
|
|
1615
1686
|
},
|
|
1616
1687
|
],
|
|
1617
1688
|
"script": [
|
|
1689
|
+
"echo -e "\\e[0Ksection_start:$(date +%s):injectvars[collapsed=true]\\r\\e[0KInjecting variables"",
|
|
1690
|
+
"export ENV_SHORT="stage"",
|
|
1691
|
+
"export APP_DIR="api"",
|
|
1692
|
+
"export ENV_TYPE="stage"",
|
|
1693
|
+
"export BUILD_INFO_BUILD_ID="$(git describe --tags 2>/dev/null || git rev-parse HEAD)"",
|
|
1694
|
+
"export BUILD_INFO_BUILD_TIME="$CI_JOB_STARTED_AT"",
|
|
1695
|
+
"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")"",
|
|
1696
|
+
"export HOST="$(printf %s "pan-test-app-stage-api-$CL_stage_api_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')"",
|
|
1697
|
+
"export ROOT_URL="https://$(printf %s "pan-test-app-stage-api-$CL_stage_api_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')"",
|
|
1698
|
+
"export HOST_INTERNAL="$(printf %s "pan-test-app-stage-api-$CL_stage_api_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')"",
|
|
1699
|
+
"export HOST_CANONICAL="$(printf %s "pan-test-app-stage-api-$CL_stage_api_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')"",
|
|
1700
|
+
"export ROOT_URL_INTERNAL="https://$(printf %s "pan-test-app-stage-api-$CL_stage_api_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')"",
|
|
1701
|
+
"export CLOUD_RUN_JOB_TRIGGER_URL_migrate="https://europe-west6-run.googleapis.com/apis/run.googleapis.com/v1/namespaces/google-project-id/jobs/pan-test-app-stage-api-migrate:run"",
|
|
1702
|
+
"export DEPLOY_CLOUD_RUN_PROJECT_ID="google-project-id"",
|
|
1703
|
+
"export DEPLOY_CLOUD_RUN_REGION="europe-west6"",
|
|
1704
|
+
"export GCLOUD_DEPLOY_credentialsKey="$CL_stage_api_GCLOUD_DEPLOY_credentialsKey"",
|
|
1705
|
+
"export GCLOUD_RUN_canonicalHostSuffix="$CL_stage_api_GCLOUD_RUN_canonicalHostSuffix"",
|
|
1706
|
+
"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_migrate\\",\\"DEPLOY_CLOUD_RUN_PROJECT_ID\\",\\"DEPLOY_CLOUD_RUN_REGION\\",\\"GCLOUD_DEPLOY_credentialsKey\\",\\"GCLOUD_RUN_canonicalHostSuffix\\"]"",
|
|
1707
|
+
"export DOCKER_REGISTRY="europe-west6-docker.pkg.dev"",
|
|
1708
|
+
"export DOCKER_IMAGE="europe-west6-docker.pkg.dev/google-project-id/catladder-deploy/pan-test-app/stage/api"",
|
|
1709
|
+
"export DOCKER_CACHE_IMAGE="europe-west6-docker.pkg.dev/google-project-id/catladder-deploy/pan-test-app/caches/api"",
|
|
1710
|
+
"export DOCKER_IMAGE_TAG="$CI_COMMIT_SHA"",
|
|
1711
|
+
"export CLOUDSDK_CORE_DISABLE_PROMPTS="1"",
|
|
1712
|
+
"echo -e "\\e[0Ksection_end:$(date +%s):injectvars\\r\\e[0K"",
|
|
1618
1713
|
"echo -e "\\e[0Ksection_start:$(date +%s):prepare[collapsed=true]\\r\\e[0KPrepare..."",
|
|
1619
1714
|
"gcloud auth activate-service-account --key-file=<(echo "$CL_stage_api_GCLOUD_DEPLOY_credentialsKey")",
|
|
1620
1715
|
"export GCLOUD_PROJECT_NUMBER=$(gcloud projects describe google-project-id --format="value(projectNumber)")",
|
|
1621
1716
|
"echo "GCLOUD_PROJECT_NUMBER: $GCLOUD_PROJECT_NUMBER"",
|
|
1622
1717
|
"echo -e "\\e[0Ksection_end:$(date +%s):prepare\\r\\e[0K"",
|
|
1718
|
+
"echo -e "\\e[0Ksection_start:$(date +%s):writeenvvars[collapsed=true]\\r\\e[0KWrite env vars to file"",
|
|
1719
|
+
"cat > ____envvars.yaml <<EOF
|
|
1720
|
+
ENV_SHORT: |-
|
|
1721
|
+
stage
|
|
1722
|
+
APP_DIR: |-
|
|
1723
|
+
api
|
|
1724
|
+
ENV_TYPE: |-
|
|
1725
|
+
stage
|
|
1726
|
+
BUILD_INFO_BUILD_ID: |-
|
|
1727
|
+
$(printf %s "$(git describe --tags 2>/dev/null || git rev-parse HEAD)" | sed 's/^/ /')
|
|
1728
|
+
BUILD_INFO_BUILD_TIME: |-
|
|
1729
|
+
$(printf %s "$CI_JOB_STARTED_AT" | sed 's/^/ /')
|
|
1730
|
+
BUILD_INFO_CURRENT_VERSION: |-
|
|
1731
|
+
$(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/^/ /')
|
|
1732
|
+
HOST: |-
|
|
1733
|
+
$(printf %s "$(printf %s "pan-test-app-stage-api-$CL_stage_api_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')" | sed 's/^/ /')
|
|
1734
|
+
ROOT_URL: |-
|
|
1735
|
+
$(printf %s "https://$(printf %s "pan-test-app-stage-api-$CL_stage_api_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')" | sed 's/^/ /')
|
|
1736
|
+
HOST_INTERNAL: |-
|
|
1737
|
+
$(printf %s "$(printf %s "pan-test-app-stage-api-$CL_stage_api_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')" | sed 's/^/ /')
|
|
1738
|
+
HOST_CANONICAL: |-
|
|
1739
|
+
$(printf %s "$(printf %s "pan-test-app-stage-api-$CL_stage_api_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')" | sed 's/^/ /')
|
|
1740
|
+
ROOT_URL_INTERNAL: |-
|
|
1741
|
+
$(printf %s "https://$(printf %s "pan-test-app-stage-api-$CL_stage_api_GCLOUD_RUN_canonicalHostSuffix" | awk '{print tolower($0)}')" | sed 's/^/ /')
|
|
1742
|
+
CLOUD_RUN_JOB_TRIGGER_URL_migrate: |-
|
|
1743
|
+
https://europe-west6-run.googleapis.com/apis/run.googleapis.com/v1/namespaces/google-project-id/jobs/pan-test-app-stage-api-migrate:run
|
|
1744
|
+
DEPLOY_CLOUD_RUN_PROJECT_ID: |-
|
|
1745
|
+
google-project-id
|
|
1746
|
+
DEPLOY_CLOUD_RUN_REGION: |-
|
|
1747
|
+
europe-west6
|
|
1748
|
+
GCLOUD_RUN_canonicalHostSuffix: |-
|
|
1749
|
+
$(printf %s "$CL_stage_api_GCLOUD_RUN_canonicalHostSuffix" | sed 's/^/ /')
|
|
1750
|
+
_ALL_ENV_VAR_KEYS: |-
|
|
1751
|
+
["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_migrate","DEPLOY_CLOUD_RUN_PROJECT_ID","DEPLOY_CLOUD_RUN_REGION","GCLOUD_DEPLOY_credentialsKey","GCLOUD_RUN_canonicalHostSuffix"]
|
|
1752
|
+
|
|
1753
|
+
EOF
|
|
1754
|
+
",
|
|
1755
|
+
"echo -e "\\e[0Ksection_end:$(date +%s):writeenvvars\\r\\e[0K"",
|
|
1623
1756
|
"echo -e "\\e[0Ksection_start:$(date +%s):deploy[collapsed=true]\\r\\e[0KDeploy to cloud run"",
|
|
1624
|
-
"echo "$ENV_VARS" > ____envvars.yaml",
|
|
1625
1757
|
"set +e",
|
|
1626
1758
|
"gcloud run jobs create pan-test-app-stage-api-migrate --command="migrate" --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-job-name=pan-test-app-stage-api-migrate --memory=512Mi --task-timeout=10m --parallelism=1 --env-vars-file=____envvars.yaml --max-retries=0",
|
|
1627
1759
|
"set -e",
|
|
@@ -1635,71 +1767,27 @@ _ALL_ENV_VAR_KEYS: '["ENV_SHORT","APP_DIR","ENV_TYPE","BUILD_INFO_ID","BUILD_INF
|
|
|
1635
1767
|
"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",
|
|
1636
1768
|
"echo -e "\\e[0Ksection_end:$(date +%s):cleanup\\r\\e[0K"",
|
|
1637
1769
|
"echo Uploading SBOM to Dependency Track",
|
|
1638
|
-
"/dtrackuploader https://dep.panter.swiss/ "$DT_KEY_PROD" upload "pan-test-app/api" "https
|
|
1639
|
-
|
|
1640
|
-
"services": [
|
|
1641
|
-
{
|
|
1642
|
-
"command": [
|
|
1643
|
-
"--tls=false",
|
|
1644
|
-
],
|
|
1645
|
-
"name": "docker:24.0.6-dind",
|
|
1646
|
-
},
|
|
1770
|
+
"/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",
|
|
1771
|
+
"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",
|
|
1647
1772
|
],
|
|
1648
1773
|
"stage": "deploy stage",
|
|
1649
1774
|
"variables": {
|
|
1650
|
-
"APP_DIR": "api",
|
|
1651
|
-
"BUILD_INFO_BUILD_TIME": "01-01-2023 12:13:14",
|
|
1652
|
-
"BUILD_INFO_CURRENT_VERSION": "3.2.1",
|
|
1653
|
-
"BUILD_INFO_ID": "some-id",
|
|
1654
|
-
"CLOUDSDK_CORE_DISABLE_PROMPTS": "1",
|
|
1655
|
-
"CLOUD_RUN_JOB_TRIGGER_URL_migrate": "https://europe-west6-run.googleapis.com/apis/run.googleapis.com/v1/namespaces/google-project-id/jobs/pan-test-app-stage-api-migrate:run",
|
|
1656
|
-
"DEPLOY_CLOUD_RUN_PROJECT_ID": "google-project-id",
|
|
1657
|
-
"DEPLOY_CLOUD_RUN_REGION": "europe-west6",
|
|
1658
|
-
"DOCKER_BUILDKIT": "1",
|
|
1659
|
-
"DOCKER_CACHE_IMAGE": "europe-west6-docker.pkg.dev/google-project-id/catladder-deploy/pan-test-app/caches/api",
|
|
1660
|
-
"DOCKER_DRIVER": "overlay2",
|
|
1661
|
-
"DOCKER_HOST": "tcp://0.0.0.0:2375",
|
|
1662
|
-
"DOCKER_IMAGE": "europe-west6-docker.pkg.dev/google-project-id/catladder-deploy/pan-test-app/stage/api",
|
|
1663
|
-
"DOCKER_IMAGE_TAG": "$CI_COMMIT_SHA",
|
|
1664
|
-
"DOCKER_REGISTRY": "europe-west6-docker.pkg.dev",
|
|
1665
|
-
"DOCKER_TLS_CERTDIR": "",
|
|
1666
|
-
"ENV_SHORT": "stage",
|
|
1667
|
-
"ENV_TYPE": "stage",
|
|
1668
|
-
"ENV_VARS": "ENV_SHORT: 'stage'
|
|
1669
|
-
APP_DIR: 'api'
|
|
1670
|
-
ENV_TYPE: 'stage'
|
|
1671
|
-
BUILD_INFO_ID: 'some-id'
|
|
1672
|
-
BUILD_INFO_BUILD_TIME: '01-01-2023 12:13:14'
|
|
1673
|
-
BUILD_INFO_CURRENT_VERSION: '3.2.1'
|
|
1674
|
-
HOST: 'pan-test-app-stage-api-unknown-host.example.com'
|
|
1675
|
-
ROOT_URL: 'https://pan-test-app-stage-api-unknown-host.example.com'
|
|
1676
|
-
HOST_CANONICAL: 'pan-test-app-stage-api-unknown-host.example.com'
|
|
1677
|
-
ROOT_URL_INTERNAL: 'https://pan-test-app-stage-api-unknown-host.example.com'
|
|
1678
|
-
HOST_INTERNAL: 'pan-test-app-stage-api-unknown-host.example.com'
|
|
1679
|
-
CLOUD_RUN_JOB_TRIGGER_URL_migrate: 'https://europe-west6-run.googleapis.com/apis/run.googleapis.com/v1/namespaces/google-project-id/jobs/pan-test-app-stage-api-migrate:run'
|
|
1680
|
-
DEPLOY_CLOUD_RUN_PROJECT_ID: 'google-project-id'
|
|
1681
|
-
DEPLOY_CLOUD_RUN_REGION: 'europe-west6'
|
|
1682
|
-
GCLOUD_RUN_canonicalHostSuffix: '$CL_stage_api_GCLOUD_RUN_canonicalHostSuffix'
|
|
1683
|
-
_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_migrate","DEPLOY_CLOUD_RUN_PROJECT_ID","DEPLOY_CLOUD_RUN_REGION","GCLOUD_DEPLOY_credentialsKey","GCLOUD_RUN_canonicalHostSuffix"]'
|
|
1684
|
-
",
|
|
1685
|
-
"GCLOUD_DEPLOY_credentialsKey": "$CL_stage_api_GCLOUD_DEPLOY_credentialsKey",
|
|
1686
|
-
"GCLOUD_RUN_canonicalHostSuffix": "$CL_stage_api_GCLOUD_RUN_canonicalHostSuffix",
|
|
1687
|
-
"HOST": "pan-test-app-stage-api-unknown-host.example.com",
|
|
1688
|
-
"HOST_CANONICAL": "pan-test-app-stage-api-unknown-host.example.com",
|
|
1689
|
-
"HOST_INTERNAL": "pan-test-app-stage-api-unknown-host.example.com",
|
|
1690
1775
|
"KUBERNETES_CPU_REQUEST": "0.5",
|
|
1691
1776
|
"KUBERNETES_MEMORY_LIMIT": "400Mi",
|
|
1692
1777
|
"KUBERNETES_MEMORY_REQUEST": "200Mi",
|
|
1693
|
-
"ROOT_URL": "https://pan-test-app-stage-api-unknown-host.example.com",
|
|
1694
|
-
"ROOT_URL_INTERNAL": "https://pan-test-app-stage-api-unknown-host.example.com",
|
|
1695
|
-
"_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_migrate","DEPLOY_CLOUD_RUN_PROJECT_ID","DEPLOY_CLOUD_RUN_REGION","GCLOUD_DEPLOY_credentialsKey","GCLOUD_RUN_canonicalHostSuffix"]",
|
|
1696
1778
|
},
|
|
1697
1779
|
},
|
|
1698
1780
|
"api 🛑 Stop ⚠️ | prod ": {
|
|
1781
|
+
"allow_failure": true,
|
|
1782
|
+
"artifacts": {
|
|
1783
|
+
"reports": {
|
|
1784
|
+
"dotenv": "gitlab_environment.env",
|
|
1785
|
+
},
|
|
1786
|
+
},
|
|
1699
1787
|
"environment": {
|
|
1700
1788
|
"action": "stop",
|
|
1701
1789
|
"name": "prod/api",
|
|
1702
|
-
"url": "
|
|
1790
|
+
"url": "$CL_GITLAB_ENVIRONMENT_URL",
|
|
1703
1791
|
},
|
|
1704
1792
|
"image": "path/to/docker/gcloud:the-version",
|
|
1705
1793
|
"interruptible": true,
|
|
@@ -1713,16 +1801,17 @@ _ALL_ENV_VAR_KEYS: '["ENV_SHORT","APP_DIR","ENV_TYPE","BUILD_INFO_ID","BUILD_INF
|
|
|
1713
1801
|
},
|
|
1714
1802
|
"rules": [
|
|
1715
1803
|
{
|
|
1716
|
-
"allow_failure": true,
|
|
1717
1804
|
"if": "$CI_COMMIT_BRANCH =~ /^[0-9]+\\.([0-9]+|x)\\.x$/",
|
|
1718
1805
|
"when": "on_success",
|
|
1719
1806
|
},
|
|
1720
1807
|
{
|
|
1721
|
-
"allow_failure": true,
|
|
1722
1808
|
"when": "manual",
|
|
1723
1809
|
},
|
|
1724
1810
|
],
|
|
1725
1811
|
"script": [
|
|
1812
|
+
"echo -e "\\e[0Ksection_start:$(date +%s):injectvars[collapsed=true]\\r\\e[0KInjecting variables"",
|
|
1813
|
+
"export CLOUDSDK_CORE_DISABLE_PROMPTS="1"",
|
|
1814
|
+
"echo -e "\\e[0Ksection_end:$(date +%s):injectvars\\r\\e[0K"",
|
|
1726
1815
|
"set +e",
|
|
1727
1816
|
"gcloud auth activate-service-account --key-file=<(echo "$CL_prod_api_GCLOUD_DEPLOY_credentialsKey")",
|
|
1728
1817
|
"gcloud run services delete pan-test-app-prod-api --project=google-project-id --region=europe-west6",
|
|
@@ -1731,12 +1820,12 @@ _ALL_ENV_VAR_KEYS: '["ENV_SHORT","APP_DIR","ENV_TYPE","BUILD_INFO_ID","BUILD_INF
|
|
|
1731
1820
|
"gcloud artifacts docker images delete europe-west6-docker.pkg.dev/google-project-id/catladder-deploy/pan-test-app/prod/api --quiet --delete-tags",
|
|
1732
1821
|
"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",
|
|
1733
1822
|
"echo Disabling component in Dependency Track",
|
|
1734
|
-
"/dtrackuploader https://dep.panter.swiss/ "$DT_KEY_PROD" disable "pan-test-app/api" "https
|
|
1823
|
+
"/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",
|
|
1735
1824
|
"set -e",
|
|
1825
|
+
"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",
|
|
1736
1826
|
],
|
|
1737
1827
|
"stage": "stop prod",
|
|
1738
1828
|
"variables": {
|
|
1739
|
-
"CLOUDSDK_CORE_DISABLE_PROMPTS": "1",
|
|
1740
1829
|
"GIT_STRATEGY": "none",
|
|
1741
1830
|
"KUBERNETES_CPU_REQUEST": "0.5",
|
|
1742
1831
|
"KUBERNETES_MEMORY_LIMIT": "400Mi",
|
|
@@ -1744,10 +1833,16 @@ _ALL_ENV_VAR_KEYS: '["ENV_SHORT","APP_DIR","ENV_TYPE","BUILD_INFO_ID","BUILD_INF
|
|
|
1744
1833
|
},
|
|
1745
1834
|
},
|
|
1746
1835
|
"api 🛑 Stop ⚠️ | stage ": {
|
|
1836
|
+
"allow_failure": true,
|
|
1837
|
+
"artifacts": {
|
|
1838
|
+
"reports": {
|
|
1839
|
+
"dotenv": "gitlab_environment.env",
|
|
1840
|
+
},
|
|
1841
|
+
},
|
|
1747
1842
|
"environment": {
|
|
1748
1843
|
"action": "stop",
|
|
1749
1844
|
"name": "stage/api",
|
|
1750
|
-
"url": "
|
|
1845
|
+
"url": "$CL_GITLAB_ENVIRONMENT_URL",
|
|
1751
1846
|
},
|
|
1752
1847
|
"image": "path/to/docker/gcloud:the-version",
|
|
1753
1848
|
"interruptible": true,
|
|
@@ -1761,16 +1856,17 @@ _ALL_ENV_VAR_KEYS: '["ENV_SHORT","APP_DIR","ENV_TYPE","BUILD_INFO_ID","BUILD_INF
|
|
|
1761
1856
|
},
|
|
1762
1857
|
"rules": [
|
|
1763
1858
|
{
|
|
1764
|
-
"allow_failure": true,
|
|
1765
1859
|
"if": "$CI_COMMIT_BRANCH =~ /^[0-9]+\\.([0-9]+|x)\\.x$/",
|
|
1766
1860
|
"when": "on_success",
|
|
1767
1861
|
},
|
|
1768
1862
|
{
|
|
1769
|
-
"allow_failure": true,
|
|
1770
1863
|
"when": "manual",
|
|
1771
1864
|
},
|
|
1772
1865
|
],
|
|
1773
1866
|
"script": [
|
|
1867
|
+
"echo -e "\\e[0Ksection_start:$(date +%s):injectvars[collapsed=true]\\r\\e[0KInjecting variables"",
|
|
1868
|
+
"export CLOUDSDK_CORE_DISABLE_PROMPTS="1"",
|
|
1869
|
+
"echo -e "\\e[0Ksection_end:$(date +%s):injectvars\\r\\e[0K"",
|
|
1774
1870
|
"set +e",
|
|
1775
1871
|
"gcloud auth activate-service-account --key-file=<(echo "$CL_stage_api_GCLOUD_DEPLOY_credentialsKey")",
|
|
1776
1872
|
"gcloud run services delete pan-test-app-stage-api --project=google-project-id --region=europe-west6",
|
|
@@ -1779,12 +1875,12 @@ _ALL_ENV_VAR_KEYS: '["ENV_SHORT","APP_DIR","ENV_TYPE","BUILD_INFO_ID","BUILD_INF
|
|
|
1779
1875
|
"gcloud artifacts docker images delete europe-west6-docker.pkg.dev/google-project-id/catladder-deploy/pan-test-app/stage/api --quiet --delete-tags",
|
|
1780
1876
|
"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",
|
|
1781
1877
|
"echo Disabling component in Dependency Track",
|
|
1782
|
-
"/dtrackuploader https://dep.panter.swiss/ "$DT_KEY_PROD" disable "pan-test-app/api" "https
|
|
1878
|
+
"/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",
|
|
1783
1879
|
"set -e",
|
|
1880
|
+
"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",
|
|
1784
1881
|
],
|
|
1785
1882
|
"stage": "stop stage",
|
|
1786
1883
|
"variables": {
|
|
1787
|
-
"CLOUDSDK_CORE_DISABLE_PROMPTS": "1",
|
|
1788
1884
|
"GIT_STRATEGY": "none",
|
|
1789
1885
|
"KUBERNETES_CPU_REQUEST": "0.5",
|
|
1790
1886
|
"KUBERNETES_MEMORY_LIMIT": "400Mi",
|
|
@@ -1809,6 +1905,8 @@ _ALL_ENV_VAR_KEYS: '["ENV_SHORT","APP_DIR","ENV_TYPE","BUILD_INFO_ID","BUILD_INF
|
|
|
1809
1905
|
],
|
|
1810
1906
|
},
|
|
1811
1907
|
"script": [
|
|
1908
|
+
"echo -e "\\e[0Ksection_start:$(date +%s):injectvars[collapsed=true]\\r\\e[0KInjecting variables"",
|
|
1909
|
+
"echo -e "\\e[0Ksection_end:$(date +%s):injectvars\\r\\e[0K"",
|
|
1812
1910
|
"trivy fs --quiet --format cyclonedx --output "__sbom.json" api",
|
|
1813
1911
|
],
|
|
1814
1912
|
"stage": "build",
|
|
@@ -1832,6 +1930,8 @@ _ALL_ENV_VAR_KEYS: '["ENV_SHORT","APP_DIR","ENV_TYPE","BUILD_INFO_ID","BUILD_INF
|
|
|
1832
1930
|
],
|
|
1833
1931
|
},
|
|
1834
1932
|
"script": [
|
|
1933
|
+
"echo -e "\\e[0Ksection_start:$(date +%s):injectvars[collapsed=true]\\r\\e[0KInjecting variables"",
|
|
1934
|
+
"echo -e "\\e[0Ksection_end:$(date +%s):injectvars\\r\\e[0K"",
|
|
1835
1935
|
"trivy fs --quiet --format cyclonedx --output "__sbom.json" api",
|
|
1836
1936
|
],
|
|
1837
1937
|
"stage": "build",
|
|
@@ -1884,7 +1984,7 @@ _ALL_ENV_VAR_KEYS: '["ENV_SHORT","APP_DIR","ENV_TYPE","BUILD_INFO_ID","BUILD_INF
|
|
|
1884
1984
|
],
|
|
1885
1985
|
"variables": {
|
|
1886
1986
|
"FF_USE_FASTZIP": "true",
|
|
1887
|
-
"GIT_DEPTH": 1,
|
|
1987
|
+
"GIT_DEPTH": "1",
|
|
1888
1988
|
},
|
|
1889
1989
|
"workflow": {
|
|
1890
1990
|
"rules": [
|