@catladder/pipeline 1.144.1 โ 1.146.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/bash/BashExpression.d.ts +40 -0
- package/dist/bash/BashExpression.js +124 -0
- package/dist/bash/bashExpressionPerPipelineType.d.ts +6 -0
- package/dist/bash/bashExpressionPerPipelineType.js +11 -0
- package/dist/bash/bashYaml.d.ts +10 -0
- package/dist/bash/bashYaml.js +46 -0
- package/dist/bash/getInjectVarsScript.d.ts +2 -0
- package/dist/bash/getInjectVarsScript.js +45 -0
- package/dist/bash/replaceAsync.d.ts +2 -0
- package/dist/{pipeline/commitInfo/getCommitInfo.js โ bash/replaceAsync.js} +49 -21
- package/dist/build/base/__tests__/createArtifactsConfig.test.js +3 -1
- package/dist/build/base/constants.js +3 -1
- package/dist/build/base/createAppBuildJob.d.ts +2 -1
- package/dist/build/base/createAppBuildJob.js +10 -6
- package/dist/build/base/createArtifactsConfig.d.ts +1 -1
- package/dist/build/base/createArtifactsConfig.js +3 -1
- package/dist/build/base/index.js +3 -1
- package/dist/build/base/writeBuildInfo.js +4 -3
- package/dist/build/base/writeDotEnv.js +12 -3
- package/dist/build/custom/__tests__/testJob.test.js +3 -1
- package/dist/build/custom/buildJob.js +4 -12
- package/dist/build/custom/index.js +3 -1
- package/dist/build/custom/testJob.d.ts +1 -1
- package/dist/build/custom/testJob.js +18 -14
- package/dist/build/docker.d.ts +5 -31
- package/dist/build/docker.js +16 -9
- package/dist/build/index.d.ts +1 -1
- package/dist/build/index.js +13 -7
- package/dist/build/node/buildJob.js +4 -12
- package/dist/build/node/cache.js +6 -3
- package/dist/build/node/constants.js +3 -1
- package/dist/build/node/index.js +3 -1
- package/dist/build/node/meteor.js +5 -2
- package/dist/build/node/testJob.js +18 -14
- package/dist/build/node/yarn.d.ts +3 -2
- package/dist/build/node/yarn.js +6 -3
- package/dist/build/rails/build.js +3 -1
- package/dist/build/rails/index.js +3 -1
- package/dist/build/rails/test.js +15 -11
- package/dist/build/sbom.js +3 -1
- package/dist/build/types.d.ts +24 -18
- package/dist/build/types.js +3 -1
- package/dist/bundles/catladder-gitlab/index.js +3 -3
- package/dist/catladder-gitlab.js +10 -54
- package/dist/config/__tests__/configruedEnvs.test.js +3 -1
- package/dist/config/configruedEnvs.js +3 -1
- package/dist/config/index.js +13 -7
- package/dist/config/readConfig.js +6 -5
- package/dist/constants.js +5 -3
- package/dist/context/__tests__/resolveReferences.test.js +40 -8
- package/dist/context/getBuildInfoVariables.d.ts +7 -0
- package/dist/context/getBuildInfoVariables.js +29 -0
- package/dist/context/getEnvConfig.js +3 -1
- package/dist/context/getEnvType.js +3 -1
- package/dist/context/getEnvironment.d.ts +3 -3
- package/dist/context/getEnvironment.js +10 -14
- package/dist/context/getEnvironmentContext.d.ts +7 -3
- package/dist/context/getEnvironmentContext.js +21 -11
- package/dist/context/getEnvironmentVariables.d.ts +26 -5
- package/dist/context/getEnvironmentVariables.js +40 -25
- package/dist/context/getLabels.js +4 -2
- package/dist/context/getReviewSlug.d.ts +4 -0
- package/dist/context/getReviewSlug.js +22 -0
- package/dist/context/index.d.ts +12 -3
- package/dist/context/index.js +21 -15
- package/dist/context/resolveReferences.d.ts +3 -1
- package/dist/context/resolveReferences.js +53 -21
- package/dist/context/transformJobOnlyVars.d.ts +5 -2
- package/dist/context/transformJobOnlyVars.js +4 -2
- package/dist/context/utils/envVars.d.ts +1 -1
- package/dist/context/utils/envVars.js +5 -2
- package/dist/defaults/index.js +3 -1
- package/dist/deploy/base/deploy.d.ts +1 -1
- package/dist/deploy/base/deploy.js +12 -11
- package/dist/deploy/base/index.js +3 -1
- package/dist/deploy/base/rollback.d.ts +1 -1
- package/dist/deploy/base/rollback.js +13 -9
- package/dist/deploy/base/stop.d.ts +1 -1
- package/dist/deploy/base/stop.js +16 -11
- package/dist/deploy/base/types.d.ts +1 -1
- package/dist/deploy/base/types.js +3 -1
- package/dist/deploy/base/variables.js +3 -1
- package/dist/deploy/cloudRun/artifactsRegistry.d.ts +2 -1
- package/dist/deploy/cloudRun/artifactsRegistry.js +6 -4
- package/dist/deploy/cloudRun/cleanup.js +3 -1
- package/dist/deploy/cloudRun/cloudRunRevisions.js +3 -1
- package/dist/deploy/cloudRun/createJobs/cloudRunJobs.js +8 -5
- package/dist/deploy/cloudRun/createJobs/cloudRunServices.d.ts +2 -2
- package/dist/deploy/cloudRun/createJobs/cloudRunServices.js +6 -3
- package/dist/deploy/cloudRun/createJobs/common.d.ts +3 -3
- package/dist/deploy/cloudRun/createJobs/common.js +3 -1
- package/dist/deploy/cloudRun/createJobs/constants.d.ts +1 -0
- package/dist/deploy/cloudRun/createJobs/constants.js +7 -0
- package/dist/deploy/cloudRun/createJobs/getCloudRunDeployScripts.js +10 -4
- package/dist/deploy/cloudRun/createJobs/getCloudRunStopScripts.js +3 -1
- package/dist/deploy/cloudRun/createJobs/index.js +25 -8
- package/dist/deploy/cloudRun/createJobs/volumes.js +3 -1
- package/dist/deploy/cloudRun/index.js +5 -3
- package/dist/deploy/cloudRun/utils/createArgsString.d.ts +2 -1
- package/dist/deploy/cloudRun/utils/createArgsString.js +3 -1
- package/dist/deploy/cloudRun/utils/database.js +13 -13
- package/dist/deploy/cloudRun/utils/gcloudServiceAccountLoginCommands.js +3 -1
- package/dist/deploy/cloudRun/utils/getServiceName.d.ts +1 -1
- package/dist/deploy/cloudRun/utils/getServiceName.js +3 -1
- package/dist/deploy/cloudRun/utils/jobName.d.ts +2 -1
- package/dist/deploy/cloudRun/utils/jobName.js +4 -2
- package/dist/deploy/cloudRun/utils/removeFirstLinesFromCommandOutput.js +3 -1
- package/dist/deploy/cloudSql/utils.d.ts +2 -1
- package/dist/deploy/cloudSql/utils.js +7 -2
- package/dist/deploy/custom/deployJob.js +3 -1
- package/dist/deploy/custom/index.js +3 -1
- package/dist/deploy/dockerTag/deployJob.js +3 -1
- package/dist/deploy/dockerTag/index.js +3 -1
- package/dist/deploy/index.d.ts +4 -3
- package/dist/deploy/index.js +13 -7
- package/dist/deploy/kubernetes/additionalSecretKeys.js +3 -1
- package/dist/deploy/kubernetes/cloudSql/index.d.ts +3 -2
- package/dist/deploy/kubernetes/cloudSql/index.js +6 -4
- package/dist/deploy/kubernetes/deployJob.js +22 -15
- package/dist/deploy/kubernetes/index.js +51 -14
- package/dist/deploy/kubernetes/kubeEnv.d.ts +3 -2
- package/dist/deploy/kubernetes/kubeEnv.js +7 -4
- package/dist/deploy/kubernetes/kubeValues.d.ts +2 -2
- package/dist/deploy/kubernetes/kubeValues.js +4 -5
- package/dist/deploy/kubernetes/mongodb.js +3 -1
- package/dist/deploy/kubernetes/processSecretsAsFiles.d.ts +2 -1
- package/dist/deploy/kubernetes/processSecretsAsFiles.js +3 -1
- package/dist/deploy/sbom.js +3 -1
- package/dist/deploy/types/base.d.ts +8 -2
- package/dist/deploy/types/base.js +3 -1
- package/dist/deploy/types/custom.d.ts +1 -1
- package/dist/deploy/types/custom.js +3 -1
- package/dist/deploy/types/dockerTag.d.ts +1 -1
- package/dist/deploy/types/dockerTag.js +3 -1
- package/dist/deploy/types/googleCloudRun.d.ts +19 -18
- package/dist/deploy/types/googleCloudRun.js +3 -1
- package/dist/deploy/types/index.d.ts +6 -6
- package/dist/deploy/types/index.js +13 -7
- package/dist/deploy/types/kubernetes.d.ts +22 -22
- package/dist/deploy/types/kubernetes.js +3 -1
- package/dist/deploy/utils.js +3 -1
- package/dist/index.d.ts +3 -2
- package/dist/index.js +16 -9
- package/dist/packageInfos.d.ts +2 -0
- package/dist/packageInfos.js +14 -0
- package/dist/pipeline/createAllJobs.d.ts +13 -5
- package/dist/pipeline/createAllJobs.js +21 -10
- package/dist/pipeline/createChildPipeline.d.ts +1 -1
- package/dist/pipeline/createChildPipeline.js +24 -7
- package/dist/pipeline/createJobsForComponent.d.ts +3 -3
- package/dist/pipeline/createJobsForComponent.js +19 -18
- package/dist/pipeline/createMainPipeline.d.ts +3 -0
- package/dist/pipeline/createMainPipeline.js +248 -0
- package/dist/pipeline/generatePipelineFiles.d.ts +2 -0
- package/dist/pipeline/generatePipelineFiles.js +178 -0
- package/dist/pipeline/getPipelineStages.js +3 -1
- package/dist/pipeline/gitlab/createGitlabJobs.d.ts +15 -5
- package/dist/pipeline/gitlab/createGitlabJobs.js +98 -25
- package/dist/pipeline/gitlab/createGitlabPipeline.d.ts +7 -2
- package/dist/pipeline/gitlab/createGitlabPipeline.js +34 -17
- package/dist/pipeline/gitlab/getPipelineTriggerForGitlabChildPipeline.d.ts +1 -0
- package/dist/pipeline/gitlab/getPipelineTriggerForGitlabChildPipeline.js +29 -0
- package/dist/pipeline/gitlab/gitlabReleaseJobs.d.ts +33 -0
- package/dist/pipeline/gitlab/gitlabReleaseJobs.js +24 -0
- package/dist/pipeline/index.d.ts +3 -1
- package/dist/pipeline/index.js +16 -8
- package/dist/pipeline/packageManager.js +4 -2
- package/dist/pipeline/yarn/yarnUtils.js +6 -4
- package/dist/rules/index.d.ts +4 -1
- package/dist/rules/index.js +25 -18
- package/dist/runner/index.d.ts +1 -1
- package/dist/runner/index.js +3 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/dist/types/config.d.ts +18 -15
- package/dist/types/config.js +5 -2
- package/dist/types/context.d.ts +37 -32
- package/dist/types/context.js +3 -1
- package/dist/types/environmentContext.d.ts +11 -7
- package/dist/types/environmentContext.js +3 -1
- package/dist/types/gitlab-ci-yml.d.ts +30 -30
- package/dist/types/gitlab-ci-yml.js +3 -2
- package/dist/types/gitlab-types.d.ts +4 -6
- package/dist/types/gitlab-types.js +3 -1
- package/dist/types/index.js +13 -7
- package/dist/types/jobs.d.ts +23 -6
- package/dist/types/jobs.js +3 -1
- package/dist/types/pipeline.d.ts +4 -3
- package/dist/types/pipeline.js +3 -1
- package/dist/types/utils.d.ts +1 -1
- package/dist/types/utils.js +3 -1
- package/dist/utils/gitlab.js +3 -1
- package/dist/utils/index.d.ts +1 -1
- package/dist/utils/index.js +3 -1
- package/dist/utils/writeFiles.d.ts +7 -0
- package/dist/{pipeline/commitInfo/getBuildId.js โ utils/writeFiles.js} +39 -22
- package/examples/__snapshots__/cloud-run-memory-limit.ts.snap +480 -384
- package/examples/__snapshots__/cloud-run-meteor-with-worker.ts.snap +462 -366
- package/examples/__snapshots__/cloud-run-no-cpu-throttling.ts.snap +480 -384
- package/examples/__snapshots__/cloud-run-no-service.ts.snap +501 -393
- package/examples/__snapshots__/cloud-run-non-public.ts.snap +480 -384
- package/examples/__snapshots__/cloud-run-post-stop-job.ts.snap +489 -392
- package/examples/__snapshots__/cloud-run-service-gen2.ts.snap +480 -384
- package/examples/__snapshots__/cloud-run-service-with-volumes.ts.snap +501 -401
- package/examples/__snapshots__/cloud-run-with-sql-reuse-db.ts.snap +1155 -915
- package/examples/__snapshots__/cloud-run-with-sql.ts.snap +1116 -888
- package/examples/__snapshots__/cloud-run-with-worker.ts.snap +482 -386
- package/examples/__snapshots__/custom-build-job-with-tests.ts.snap +452 -356
- package/examples/__snapshots__/custom-build-job.ts.snap +434 -350
- package/examples/__snapshots__/custom-deploy.ts.snap +319 -223
- package/examples/__snapshots__/custom-envs.ts.snap +123 -81
- package/examples/__snapshots__/custom-sbom-java.ts.snap +434 -350
- package/examples/__snapshots__/kubernetes-application-customization.ts.snap +846 -969
- package/examples/__snapshots__/kubernetes-with-cloud-sql-legacy.ts.snap +886 -957
- package/examples/__snapshots__/kubernetes-with-cloud-sql.ts.snap +894 -969
- package/examples/__snapshots__/kubernetes-with-jobs.ts.snap +1626 -1728
- package/examples/__snapshots__/kubernetes-with-mongodb.ts.snap +974 -1137
- package/examples/__snapshots__/local-dot-env.ts.snap +480 -384
- package/examples/__snapshots__/meteor-kubernetes.ts.snap +906 -1069
- package/examples/__snapshots__/multiline-var.ts.snap +4500 -0
- package/examples/__snapshots__/native-app.ts.snap +706 -578
- package/examples/__snapshots__/node-build-with-custom-image.ts.snap +480 -384
- package/examples/__snapshots__/node-build-with-docker-additions.ts.snap +488 -384
- package/examples/__snapshots__/rails-k8s-with-worker.ts.snap +1656 -1942
- package/examples/__snapshots__/wait-for-other-deploy.ts.snap +287 -231
- package/examples/__utils__/helpers.ts +2 -2
- package/examples/custom-deploy.ts +7 -7
- package/examples/multiline-var.ts +64 -0
- package/package.json +5 -8
- package/scripts/generate-gitlab-ci-types.ts +2 -2
- package/src/bash/BashExpression.ts +81 -0
- package/src/bash/bashExpressionPerPipelineType.ts +16 -0
- package/src/bash/bashYaml.ts +46 -0
- package/src/bash/getInjectVarsScript.ts +12 -0
- package/src/bash/replaceAsync.ts +50 -0
- package/src/build/base/__tests__/createArtifactsConfig.test.ts +3 -3
- package/src/build/base/createAppBuildJob.ts +8 -4
- package/src/build/base/createArtifactsConfig.ts +2 -2
- package/src/build/base/index.ts +1 -1
- package/src/build/base/writeBuildInfo.ts +1 -1
- package/src/build/base/writeDotEnv.ts +6 -1
- package/src/build/custom/__tests__/testJob.test.ts +1 -1
- package/src/build/custom/buildJob.ts +4 -6
- package/src/build/custom/testJob.ts +6 -5
- package/src/build/docker.ts +21 -13
- package/src/build/index.ts +1 -1
- package/src/build/node/buildJob.ts +3 -5
- package/src/build/node/cache.ts +4 -4
- package/src/build/node/meteor.ts +1 -1
- package/src/build/node/testJob.ts +6 -5
- package/src/build/node/yarn.ts +14 -9
- package/src/build/rails/test.ts +2 -1
- package/src/build/types.ts +8 -1
- package/src/catladder-gitlab.ts +8 -55
- package/src/config/configruedEnvs.ts +6 -6
- package/src/config/readConfig.ts +4 -5
- package/src/constants.ts +5 -2
- package/src/context/__tests__/resolveReferences.test.ts +11 -6
- package/src/context/getBuildInfoVariables.ts +40 -0
- package/src/context/getEnvConfig.ts +1 -1
- package/src/context/getEnvType.ts +1 -1
- package/src/context/getEnvironment.ts +7 -30
- package/src/context/getEnvironmentContext.ts +25 -29
- package/src/context/getEnvironmentVariables.ts +72 -47
- package/src/context/getReviewSlug.ts +27 -0
- package/src/context/index.ts +26 -25
- package/src/context/resolveReferences.ts +40 -17
- package/src/context/transformJobOnlyVars.ts +6 -3
- package/src/context/utils/envVars.ts +5 -4
- package/src/deploy/base/deploy.ts +25 -23
- package/src/deploy/base/index.ts +1 -1
- package/src/deploy/base/rollback.ts +9 -11
- package/src/deploy/base/stop.ts +9 -10
- package/src/deploy/cloudRun/artifactsRegistry.ts +13 -8
- package/src/deploy/cloudRun/cleanup.ts +3 -3
- package/src/deploy/cloudRun/cloudRunRevisions.ts +3 -3
- package/src/deploy/cloudRun/createJobs/cloudRunJobs.ts +22 -17
- package/src/deploy/cloudRun/createJobs/cloudRunServices.ts +7 -6
- package/src/deploy/cloudRun/createJobs/common.ts +1 -1
- package/src/deploy/cloudRun/createJobs/constants.ts +1 -0
- package/src/deploy/cloudRun/createJobs/getCloudRunDeployScripts.ts +25 -7
- package/src/deploy/cloudRun/createJobs/getCloudRunStopScripts.ts +1 -1
- package/src/deploy/cloudRun/createJobs/index.ts +18 -9
- package/src/deploy/cloudRun/createJobs/volumes.ts +2 -2
- package/src/deploy/cloudRun/index.ts +22 -10
- package/src/deploy/cloudRun/utils/createArgsString.ts +3 -2
- package/src/deploy/cloudRun/utils/database.ts +7 -7
- package/src/deploy/cloudRun/utils/gcloudServiceAccountLoginCommands.ts +1 -1
- package/src/deploy/cloudRun/utils/jobName.ts +7 -2
- package/src/deploy/cloudRun/utils/removeFirstLinesFromCommandOutput.ts +1 -1
- package/src/deploy/cloudSql/utils.ts +13 -10
- package/src/deploy/index.ts +5 -4
- package/src/deploy/kubernetes/cloudSql/index.ts +6 -5
- package/src/deploy/kubernetes/deployJob.ts +28 -14
- package/src/deploy/kubernetes/index.ts +15 -8
- package/src/deploy/kubernetes/kubeEnv.ts +9 -7
- package/src/deploy/kubernetes/kubeValues.ts +5 -6
- package/src/deploy/kubernetes/mongodb.ts +1 -1
- package/src/deploy/kubernetes/processSecretsAsFiles.ts +5 -4
- package/src/deploy/types/base.ts +6 -0
- package/src/deploy/types/googleCloudRun.ts +2 -0
- package/src/deploy/utils.ts +2 -2
- package/src/index.ts +2 -1
- package/src/packageInfos.ts +10 -0
- package/src/pipeline/createAllJobs.ts +28 -14
- package/src/pipeline/createChildPipeline.ts +20 -9
- package/src/pipeline/createJobsForComponent.ts +15 -23
- package/src/pipeline/createMainPipeline.ts +91 -0
- package/src/pipeline/generatePipelineFiles.ts +29 -0
- package/src/pipeline/getPipelineStages.ts +1 -1
- package/src/pipeline/gitlab/createGitlabJobs.ts +182 -59
- package/src/pipeline/gitlab/createGitlabPipeline.ts +16 -14
- package/src/pipeline/gitlab/getPipelineTriggerForGitlabChildPipeline.ts +46 -0
- package/src/pipeline/gitlab/gitlabReleaseJobs.ts +20 -0
- package/src/pipeline/index.ts +2 -0
- package/src/pipeline/packageManager.ts +2 -2
- package/src/pipeline/yarn/yarnUtils.ts +7 -7
- package/src/rules/index.ts +15 -9
- package/src/types/config.ts +12 -3
- package/src/types/context.ts +39 -26
- package/src/types/environmentContext.ts +13 -7
- package/src/types/gitlab-ci-yml.ts +0 -1
- package/src/types/gitlab-types.ts +5 -4
- package/src/types/jobs.ts +29 -4
- package/src/types/pipeline.ts +4 -0
- package/src/types/utils.ts +4 -4
- package/src/utils/gitlab.ts +1 -1
- package/src/utils/index.ts +2 -2
- package/src/utils/writeFiles.ts +40 -0
- package/dist/deploy/cloudRun/createJobs/variables.d.ts +0 -5
- package/dist/deploy/cloudRun/createJobs/variables.js +0 -19
- package/dist/pipeline/commitInfo/getBuildId.d.ts +0 -6
- package/dist/pipeline/commitInfo/getCommitInfo.d.ts +0 -2
- package/src/deploy/cloudRun/createJobs/variables.ts +0 -21
- package/src/pipeline/commitInfo/getBuildId.ts +0 -17
- package/src/pipeline/commitInfo/getCommitInfo.ts +0 -15
|
@@ -6,10 +6,16 @@ exports[`matches snapshot 1`] = `
|
|
|
6
6
|
"image": "path/to/docker/jobs-default:the-version",
|
|
7
7
|
"jobs": {
|
|
8
8
|
"web โฉ๏ธ Rollback โ ๏ธ | dev ": {
|
|
9
|
+
"allow_failure": true,
|
|
10
|
+
"artifacts": {
|
|
11
|
+
"reports": {
|
|
12
|
+
"dotenv": "gitlab_environment.env",
|
|
13
|
+
},
|
|
14
|
+
},
|
|
9
15
|
"environment": {
|
|
10
16
|
"action": "access",
|
|
11
17
|
"name": "dev/web",
|
|
12
|
-
"url": "
|
|
18
|
+
"url": "$CL_GITLAB_ENVIRONMENT_URL",
|
|
13
19
|
},
|
|
14
20
|
"image": "path/to/docker/kubernetes:the-version",
|
|
15
21
|
"interruptible": true,
|
|
@@ -23,97 +29,48 @@ exports[`matches snapshot 1`] = `
|
|
|
23
29
|
},
|
|
24
30
|
"rules": [
|
|
25
31
|
{
|
|
26
|
-
"allow_failure": true,
|
|
27
32
|
"when": "manual",
|
|
28
33
|
},
|
|
29
34
|
],
|
|
30
35
|
"script": [
|
|
36
|
+
"echo -e "\\e[0Ksection_start:$(date +%s):injectvars[collapsed=true]\\r\\e[0KInjecting variables"",
|
|
37
|
+
"export ENV_SHORT="dev"",
|
|
38
|
+
"export APP_DIR="app"",
|
|
39
|
+
"export ENV_TYPE="dev"",
|
|
40
|
+
"export BUILD_INFO_BUILD_ID="$(git describe --tags 2>/dev/null || git rev-parse HEAD)"",
|
|
41
|
+
"export BUILD_INFO_BUILD_TIME="$CI_JOB_STARTED_AT"",
|
|
42
|
+
"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")"",
|
|
43
|
+
"export HOST="web.dev.my-app.pan.panter.cloud"",
|
|
44
|
+
"export ROOT_URL="https://web.dev.my-app.pan.panter.cloud"",
|
|
45
|
+
"export HOST_INTERNAL="web.dev.my-app.pan.panter.cloud"",
|
|
46
|
+
"export HOST_CANONICAL="web.dev.my-app.pan.panter.cloud"",
|
|
47
|
+
"export ROOT_URL_INTERNAL="https://web.dev.my-app.pan.panter.cloud"",
|
|
48
|
+
"export KUBE_NAMESPACE="pan-my-app-dev"",
|
|
49
|
+
"export KUBE_APP_NAME="web"",
|
|
50
|
+
"export KUBE_APP_NAME_PREFIX=""",
|
|
51
|
+
"export MONGODB_ROOT_PASSWORD="$CL_dev_web_MONGODB_ROOT_PASSWORD"",
|
|
52
|
+
"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\\",\\"KUBE_NAMESPACE\\",\\"KUBE_APP_NAME\\",\\"KUBE_APP_NAME_PREFIX\\",\\"MONGODB_ROOT_PASSWORD\\"]"",
|
|
53
|
+
"export RELEASE_NAME="pan-my-app-dev-web"",
|
|
54
|
+
"export HELM_EXPERIMENTAL_OCI="1"",
|
|
55
|
+
"export KUBE_DOCKER_IMAGE_PULL_SECRET="gitlab-registry-web"",
|
|
56
|
+
"export HELM_GITLAB_CHART_NAME="/helm-charts/the-panter-chart"",
|
|
57
|
+
"export HELM_ARGS=""",
|
|
58
|
+
"export COMPONENT_NAME="web"",
|
|
59
|
+
"export BUILD_ID="$(git describe --tags 2>/dev/null || git rev-parse HEAD)"",
|
|
60
|
+
"echo -e "\\e[0Ksection_end:$(date +%s):injectvars\\r\\e[0K"",
|
|
31
61
|
"kubectl config set-cluster "kube-pan-my-app-dev-web" --server="$CL_dev_web_KUBE_URL" --certificate-authority <(echo $CL_dev_web_KUBE_CA_PEM | base64 -d) --embed-certs=true",
|
|
32
62
|
"kubectl config set-credentials "kube-pan-my-app-dev-web" --token="$CL_dev_web_KUBE_TOKEN"",
|
|
33
63
|
"kubectl config set-context "kube-pan-my-app-dev-web" --cluster="kube-pan-my-app-dev-web" --user="kube-pan-my-app-dev-web" --namespace="pan-my-app-dev"",
|
|
34
64
|
"kubectl config use-context "kube-pan-my-app-dev-web"",
|
|
35
65
|
"kubernetesRollback",
|
|
66
|
+
"echo "CL_GITLAB_ENVIRONMENT_URL=https://web.dev.my-app.pan.panter.cloud" >> gitlab_environment.env",
|
|
36
67
|
],
|
|
37
68
|
"stage": "rollback dev",
|
|
38
69
|
"variables": {
|
|
39
|
-
"APP_DIR": "app",
|
|
40
|
-
"BUILD_ID": "some-id",
|
|
41
|
-
"BUILD_INFO_BUILD_TIME": "01-01-2023 12:13:14",
|
|
42
|
-
"BUILD_INFO_CURRENT_VERSION": "3.2.1",
|
|
43
|
-
"BUILD_INFO_ID": "some-id",
|
|
44
|
-
"COMPONENT_NAME": "web",
|
|
45
|
-
"ENV_SHORT": "dev",
|
|
46
|
-
"ENV_TYPE": "dev",
|
|
47
70
|
"GIT_STRATEGY": "none",
|
|
48
|
-
"HELM_ARGS": "",
|
|
49
|
-
"HELM_EXPERIMENTAL_OCI": "1",
|
|
50
|
-
"HELM_GITLAB_CHART_NAME": "/helm-charts/the-panter-chart",
|
|
51
|
-
"HOST": "web.dev.my-app.pan.panter.cloud",
|
|
52
|
-
"HOST_CANONICAL": "web.dev.my-app.pan.panter.cloud",
|
|
53
|
-
"HOST_INTERNAL": "web.dev.my-app.pan.panter.cloud",
|
|
54
71
|
"KUBERNETES_CPU_REQUEST": "0.5",
|
|
55
72
|
"KUBERNETES_MEMORY_LIMIT": "400Mi",
|
|
56
73
|
"KUBERNETES_MEMORY_REQUEST": "200Mi",
|
|
57
|
-
"KUBE_APP_NAME": "web",
|
|
58
|
-
"KUBE_APP_NAME_PREFIX": "",
|
|
59
|
-
"KUBE_DOCKER_IMAGE_PULL_SECRET": "gitlab-registry-web",
|
|
60
|
-
"KUBE_NAMESPACE": "pan-my-app-dev",
|
|
61
|
-
"KUBE_VALUES": "env:
|
|
62
|
-
secret:
|
|
63
|
-
MONGODB_ROOT_PASSWORD: '$CL_dev_web_MONGODB_ROOT_PASSWORD'
|
|
64
|
-
MONGO_URL: 'mongodb://root:$CL_dev_web_MONGODB_ROOT_PASSWORD@web-mongodb.pan-my-app-dev.svc.cluster.local:27017/app?authSource=admin'
|
|
65
|
-
public:
|
|
66
|
-
ENV_SHORT: 'dev'
|
|
67
|
-
APP_DIR: 'app'
|
|
68
|
-
ENV_TYPE: 'dev'
|
|
69
|
-
BUILD_INFO_ID: 'some-id'
|
|
70
|
-
BUILD_INFO_BUILD_TIME: '01-01-2023 12:13:14'
|
|
71
|
-
BUILD_INFO_CURRENT_VERSION: '3.2.1'
|
|
72
|
-
HOST: 'web.dev.my-app.pan.panter.cloud'
|
|
73
|
-
ROOT_URL: 'https://web.dev.my-app.pan.panter.cloud'
|
|
74
|
-
HOST_CANONICAL: 'web.dev.my-app.pan.panter.cloud'
|
|
75
|
-
ROOT_URL_INTERNAL: 'https://web.dev.my-app.pan.panter.cloud'
|
|
76
|
-
KUBE_NAMESPACE: 'pan-my-app-dev'
|
|
77
|
-
KUBE_APP_NAME: 'web'
|
|
78
|
-
KUBE_APP_NAME_PREFIX: ''
|
|
79
|
-
HOST_INTERNAL: 'web.dev.my-app.pan.panter.cloud'
|
|
80
|
-
_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","KUBE_NAMESPACE","KUBE_APP_NAME","KUBE_APP_NAME_PREFIX","HOST_INTERNAL","MONGODB_ROOT_PASSWORD"]'
|
|
81
|
-
application:
|
|
82
|
-
host: 'web.dev.my-app.pan.panter.cloud'
|
|
83
|
-
command: 'node main.js'
|
|
84
|
-
livenessProbe:
|
|
85
|
-
httpGet:
|
|
86
|
-
path: '__health'
|
|
87
|
-
readinessProbe:
|
|
88
|
-
httpGet:
|
|
89
|
-
path: '__health'
|
|
90
|
-
startupProbe:
|
|
91
|
-
httpGet:
|
|
92
|
-
path: '__health'
|
|
93
|
-
worker:
|
|
94
|
-
enabled: true
|
|
95
|
-
mongodb:
|
|
96
|
-
enabled: true
|
|
97
|
-
auth:
|
|
98
|
-
enabled: true
|
|
99
|
-
rootPassword: '$CL_dev_web_MONGODB_ROOT_PASSWORD'
|
|
100
|
-
replicaSetKey: '$CL_dev_web_MONGODB_REPLICASET_KEY'
|
|
101
|
-
persistence:
|
|
102
|
-
storageClass: 'standard-rwo'
|
|
103
|
-
backup:
|
|
104
|
-
enabled: false
|
|
105
|
-
hostToBackup: 'web-mongodb.pan-my-app-dev.svc.cluster.local:27017'
|
|
106
|
-
pvcToBackup: 'web-mongodb'
|
|
107
|
-
image: 'mrelite/kubectlmongoshell:v1.0'
|
|
108
|
-
schedule: '0 4 * * *'
|
|
109
|
-
volumeSnapshotClass: 'snapshotclass'
|
|
110
|
-
architecture: 'standalone'
|
|
111
|
-
",
|
|
112
|
-
"MONGODB_ROOT_PASSWORD": "$CL_dev_web_MONGODB_ROOT_PASSWORD",
|
|
113
|
-
"RELEASE_NAME": "pan-my-app-dev-web",
|
|
114
|
-
"ROOT_URL": "https://web.dev.my-app.pan.panter.cloud",
|
|
115
|
-
"ROOT_URL_INTERNAL": "https://web.dev.my-app.pan.panter.cloud",
|
|
116
|
-
"_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","KUBE_NAMESPACE","KUBE_APP_NAME","KUBE_APP_NAME_PREFIX","HOST_INTERNAL","MONGODB_ROOT_PASSWORD"]",
|
|
117
74
|
},
|
|
118
75
|
},
|
|
119
76
|
"web ๐ฎ lint": {
|
|
@@ -144,6 +101,9 @@ mongodb:
|
|
|
144
101
|
],
|
|
145
102
|
},
|
|
146
103
|
"script": [
|
|
104
|
+
"echo -e "\\e[0Ksection_start:$(date +%s):injectvars[collapsed=true]\\r\\e[0KInjecting variables"",
|
|
105
|
+
"export APP_PATH="app"",
|
|
106
|
+
"echo -e "\\e[0Ksection_end:$(date +%s):injectvars\\r\\e[0K"",
|
|
147
107
|
"echo -e "\\e[0Ksection_start:$(date +%s):nodeinstall[collapsed=true]\\r\\e[0KEnsure node version"",
|
|
148
108
|
"if [ -f ~/.nvm/nvm.sh ]; then source ~/.nvm/nvm.sh; fi",
|
|
149
109
|
"if command -v nvm &> /dev/null && [ -f ./.nvmrc ]; then nvm install; fi",
|
|
@@ -160,7 +120,6 @@ mongodb:
|
|
|
160
120
|
],
|
|
161
121
|
"stage": "test",
|
|
162
122
|
"variables": {
|
|
163
|
-
"APP_PATH": "app",
|
|
164
123
|
"KUBERNETES_CPU_REQUEST": "0.5",
|
|
165
124
|
"KUBERNETES_MEMORY_LIMIT": "4Gi",
|
|
166
125
|
"KUBERNETES_MEMORY_REQUEST": "2Gi",
|
|
@@ -213,7 +172,26 @@ mongodb:
|
|
|
213
172
|
],
|
|
214
173
|
},
|
|
215
174
|
"script": [
|
|
216
|
-
"echo
|
|
175
|
+
"echo -e "\\e[0Ksection_start:$(date +%s):injectvars[collapsed=true]\\r\\e[0KInjecting variables"",
|
|
176
|
+
"export METEOR_DISABLE_OPTIMISTIC_CACHING="1"",
|
|
177
|
+
"export ENV_SHORT="dev"",
|
|
178
|
+
"export APP_DIR="app"",
|
|
179
|
+
"export ENV_TYPE="dev"",
|
|
180
|
+
"export BUILD_INFO_BUILD_ID="$(git describe --tags 2>/dev/null || git rev-parse HEAD)"",
|
|
181
|
+
"export BUILD_INFO_BUILD_TIME="$CI_JOB_STARTED_AT"",
|
|
182
|
+
"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")"",
|
|
183
|
+
"export HOST="web.dev.my-app.pan.panter.cloud"",
|
|
184
|
+
"export ROOT_URL="https://web.dev.my-app.pan.panter.cloud"",
|
|
185
|
+
"export HOST_INTERNAL="web.dev.my-app.pan.panter.cloud"",
|
|
186
|
+
"export HOST_CANONICAL="web.dev.my-app.pan.panter.cloud"",
|
|
187
|
+
"export ROOT_URL_INTERNAL="https://web.dev.my-app.pan.panter.cloud"",
|
|
188
|
+
"export KUBE_NAMESPACE="pan-my-app-dev"",
|
|
189
|
+
"export KUBE_APP_NAME="web"",
|
|
190
|
+
"export KUBE_APP_NAME_PREFIX=""",
|
|
191
|
+
"export MONGODB_ROOT_PASSWORD="$CL_dev_web_MONGODB_ROOT_PASSWORD"",
|
|
192
|
+
"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\\",\\"KUBE_NAMESPACE\\",\\"KUBE_APP_NAME\\",\\"KUBE_APP_NAME_PREFIX\\",\\"MONGODB_ROOT_PASSWORD\\"]"",
|
|
193
|
+
"echo -e "\\e[0Ksection_end:$(date +%s):injectvars\\r\\e[0K"",
|
|
194
|
+
"echo '{"id":"$(git describe --tags 2>/dev/null || git rev-parse HEAD)","time":"$CI_JOB_STARTED_AT"}' > app/__build_info.json",
|
|
217
195
|
"echo -e "\\e[0Ksection_start:$(date +%s):nodeinstall[collapsed=true]\\r\\e[0KEnsure node version"",
|
|
218
196
|
"if [ -f ~/.nvm/nvm.sh ]; then source ~/.nvm/nvm.sh; fi",
|
|
219
197
|
"if command -v nvm &> /dev/null && [ -f ./.nvmrc ]; then nvm install; fi",
|
|
@@ -234,26 +212,9 @@ mongodb:
|
|
|
234
212
|
],
|
|
235
213
|
"stage": "build",
|
|
236
214
|
"variables": {
|
|
237
|
-
"APP_DIR": "app",
|
|
238
|
-
"BUILD_INFO_BUILD_TIME": "01-01-2023 12:13:14",
|
|
239
|
-
"BUILD_INFO_CURRENT_VERSION": "3.2.1",
|
|
240
|
-
"BUILD_INFO_ID": "some-id",
|
|
241
|
-
"ENV_SHORT": "dev",
|
|
242
|
-
"ENV_TYPE": "dev",
|
|
243
|
-
"HOST": "web.dev.my-app.pan.panter.cloud",
|
|
244
|
-
"HOST_CANONICAL": "web.dev.my-app.pan.panter.cloud",
|
|
245
|
-
"HOST_INTERNAL": "web.dev.my-app.pan.panter.cloud",
|
|
246
215
|
"KUBERNETES_CPU_REQUEST": "0.5",
|
|
247
216
|
"KUBERNETES_MEMORY_LIMIT": "4Gi",
|
|
248
217
|
"KUBERNETES_MEMORY_REQUEST": "1Gi",
|
|
249
|
-
"KUBE_APP_NAME": "web",
|
|
250
|
-
"KUBE_APP_NAME_PREFIX": "",
|
|
251
|
-
"KUBE_NAMESPACE": "pan-my-app-dev",
|
|
252
|
-
"METEOR_DISABLE_OPTIMISTIC_CACHING": "1",
|
|
253
|
-
"MONGODB_ROOT_PASSWORD": "$CL_dev_web_MONGODB_ROOT_PASSWORD",
|
|
254
|
-
"ROOT_URL": "https://web.dev.my-app.pan.panter.cloud",
|
|
255
|
-
"ROOT_URL_INTERNAL": "https://web.dev.my-app.pan.panter.cloud",
|
|
256
|
-
"_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","KUBE_NAMESPACE","KUBE_APP_NAME","KUBE_APP_NAME_PREFIX","HOST_INTERNAL","MONGODB_ROOT_PASSWORD"]",
|
|
257
218
|
},
|
|
258
219
|
},
|
|
259
220
|
"web ๐จ docker | dev ": {
|
|
@@ -270,6 +231,16 @@ mongodb:
|
|
|
270
231
|
],
|
|
271
232
|
},
|
|
272
233
|
"script": [
|
|
234
|
+
"echo -e "\\e[0Ksection_start:$(date +%s):injectvars[collapsed=true]\\r\\e[0KInjecting variables"",
|
|
235
|
+
"export APP_DIR="app"",
|
|
236
|
+
"export DOCKER_DIR="."",
|
|
237
|
+
"export DOCKER_REGISTRY="$CI_REGISTRY"",
|
|
238
|
+
"export DOCKER_CACHE_IMAGE="$CI_REGISTRY_IMAGE/caches/web"",
|
|
239
|
+
"export DOCKER_IMAGE_NAME="dev/web"",
|
|
240
|
+
"export DOCKER_IMAGE="$CI_REGISTRY_IMAGE/$DOCKER_IMAGE_NAME"",
|
|
241
|
+
"export DOCKER_IMAGE_TAG="$CI_COMMIT_SHA"",
|
|
242
|
+
"export METEOR_INSTALL_SCRIPTS=""",
|
|
243
|
+
"echo -e "\\e[0Ksection_end:$(date +%s):injectvars\\r\\e[0K"",
|
|
273
244
|
"ensureMeteorDockerfile",
|
|
274
245
|
"echo -e "\\e[0Ksection_start:$(date +%s):docker-login[collapsed=true]\\r\\e[0KDocker Login"",
|
|
275
246
|
"docker login --username gitlab-ci-token --password $CI_JOB_TOKEN $CI_REGISTRY",
|
|
@@ -293,32 +264,27 @@ mongodb:
|
|
|
293
264
|
],
|
|
294
265
|
"stage": "build",
|
|
295
266
|
"variables": {
|
|
296
|
-
"APP_DIR": "app",
|
|
297
|
-
"DOCKERFILE_ADDITIONS": undefined,
|
|
298
|
-
"DOCKERFILE_ADDITIONS_END": undefined,
|
|
299
267
|
"DOCKER_BUILDKIT": "1",
|
|
300
|
-
"DOCKER_CACHE_IMAGE": "$CI_REGISTRY_IMAGE/caches/web",
|
|
301
|
-
"DOCKER_DIR": ".",
|
|
302
268
|
"DOCKER_DRIVER": "overlay2",
|
|
303
269
|
"DOCKER_HOST": "tcp://0.0.0.0:2375",
|
|
304
|
-
"DOCKER_IMAGE": "$CI_REGISTRY_IMAGE/$DOCKER_IMAGE_NAME",
|
|
305
|
-
"DOCKER_IMAGE_NAME": "dev/web",
|
|
306
|
-
"DOCKER_IMAGE_TAG": "$CI_COMMIT_SHA",
|
|
307
|
-
"DOCKER_REGISTRY": "$CI_REGISTRY",
|
|
308
270
|
"DOCKER_TLS_CERTDIR": "",
|
|
309
271
|
"KUBERNETES_CPU_REQUEST": "0.5",
|
|
310
272
|
"KUBERNETES_MEMORY_LIMIT": "2Gi",
|
|
311
273
|
"KUBERNETES_MEMORY_REQUEST": "1Gi",
|
|
312
|
-
"METEOR_INSTALL_SCRIPTS": "",
|
|
313
274
|
},
|
|
314
275
|
},
|
|
315
276
|
"web ๐ Deploy | dev ": {
|
|
316
277
|
"allow_failure": false,
|
|
278
|
+
"artifacts": {
|
|
279
|
+
"reports": {
|
|
280
|
+
"dotenv": "gitlab_environment.env",
|
|
281
|
+
},
|
|
282
|
+
},
|
|
317
283
|
"environment": {
|
|
318
284
|
"auto_stop_in": "4 weeks",
|
|
319
285
|
"name": "dev/web",
|
|
320
286
|
"on_stop": "web ๐ Stop โ ๏ธ | dev ",
|
|
321
|
-
"url": "
|
|
287
|
+
"url": "$CL_GITLAB_ENVIRONMENT_URL",
|
|
322
288
|
},
|
|
323
289
|
"image": "path/to/docker/kubernetes:the-version",
|
|
324
290
|
"interruptible": true,
|
|
@@ -361,107 +327,151 @@ mongodb:
|
|
|
361
327
|
},
|
|
362
328
|
],
|
|
363
329
|
"script": [
|
|
330
|
+
"echo -e "\\e[0Ksection_start:$(date +%s):injectvars[collapsed=true]\\r\\e[0KInjecting variables"",
|
|
331
|
+
"export ENV_SHORT="dev"",
|
|
332
|
+
"export APP_DIR="app"",
|
|
333
|
+
"export ENV_TYPE="dev"",
|
|
334
|
+
"export BUILD_INFO_BUILD_ID="$(git describe --tags 2>/dev/null || git rev-parse HEAD)"",
|
|
335
|
+
"export BUILD_INFO_BUILD_TIME="$CI_JOB_STARTED_AT"",
|
|
336
|
+
"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")"",
|
|
337
|
+
"export HOST="web.dev.my-app.pan.panter.cloud"",
|
|
338
|
+
"export ROOT_URL="https://web.dev.my-app.pan.panter.cloud"",
|
|
339
|
+
"export HOST_INTERNAL="web.dev.my-app.pan.panter.cloud"",
|
|
340
|
+
"export HOST_CANONICAL="web.dev.my-app.pan.panter.cloud"",
|
|
341
|
+
"export ROOT_URL_INTERNAL="https://web.dev.my-app.pan.panter.cloud"",
|
|
342
|
+
"export KUBE_NAMESPACE="pan-my-app-dev"",
|
|
343
|
+
"export KUBE_APP_NAME="web"",
|
|
344
|
+
"export KUBE_APP_NAME_PREFIX=""",
|
|
345
|
+
"export MONGODB_ROOT_PASSWORD="$CL_dev_web_MONGODB_ROOT_PASSWORD"",
|
|
346
|
+
"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\\",\\"KUBE_NAMESPACE\\",\\"KUBE_APP_NAME\\",\\"KUBE_APP_NAME_PREFIX\\",\\"MONGODB_ROOT_PASSWORD\\"]"",
|
|
347
|
+
"export DOCKER_REGISTRY="$CI_REGISTRY"",
|
|
348
|
+
"export DOCKER_CACHE_IMAGE="$CI_REGISTRY_IMAGE/caches/web"",
|
|
349
|
+
"export DOCKER_IMAGE_NAME="dev/web"",
|
|
350
|
+
"export DOCKER_IMAGE="$CI_REGISTRY_IMAGE/$DOCKER_IMAGE_NAME"",
|
|
351
|
+
"export DOCKER_IMAGE_TAG="$CI_COMMIT_SHA"",
|
|
352
|
+
"export RELEASE_NAME="pan-my-app-dev-web"",
|
|
353
|
+
"export HELM_EXPERIMENTAL_OCI="1"",
|
|
354
|
+
"export KUBE_DOCKER_IMAGE_PULL_SECRET="gitlab-registry-web"",
|
|
355
|
+
"export HELM_GITLAB_CHART_NAME="/helm-charts/the-panter-chart"",
|
|
356
|
+
"export HELM_ARGS=""",
|
|
357
|
+
"export COMPONENT_NAME="web"",
|
|
358
|
+
"export BUILD_ID="$(git describe --tags 2>/dev/null || git rev-parse HEAD)"",
|
|
359
|
+
"echo -e "\\e[0Ksection_end:$(date +%s):injectvars\\r\\e[0K"",
|
|
364
360
|
"kubectl config set-cluster "kube-pan-my-app-dev-web" --server="$CL_dev_web_KUBE_URL" --certificate-authority <(echo $CL_dev_web_KUBE_CA_PEM | base64 -d) --embed-certs=true",
|
|
365
361
|
"kubectl config set-credentials "kube-pan-my-app-dev-web" --token="$CL_dev_web_KUBE_TOKEN"",
|
|
366
362
|
"kubectl config set-context "kube-pan-my-app-dev-web" --cluster="kube-pan-my-app-dev-web" --user="kube-pan-my-app-dev-web" --namespace="pan-my-app-dev"",
|
|
367
363
|
"kubectl config use-context "kube-pan-my-app-dev-web"",
|
|
368
|
-
"
|
|
369
|
-
"
|
|
370
|
-
|
|
371
|
-
"/dtrackuploader https://dep.panter.swiss/ "$DT_KEY_PROD" upload "pan-my-app/web" "https://web.dev.my-app.pan.panter.cloud" "__sbom.json" vex.json || true",
|
|
372
|
-
"echo deployment successful ๐ป",
|
|
373
|
-
],
|
|
374
|
-
"stage": "deploy dev",
|
|
375
|
-
"variables": {
|
|
376
|
-
"APP_DIR": "app",
|
|
377
|
-
"BUILD_ID": "some-id",
|
|
378
|
-
"BUILD_INFO_BUILD_TIME": "01-01-2023 12:13:14",
|
|
379
|
-
"BUILD_INFO_CURRENT_VERSION": "3.2.1",
|
|
380
|
-
"BUILD_INFO_ID": "some-id",
|
|
381
|
-
"COMPONENT_NAME": "web",
|
|
382
|
-
"DOCKER_CACHE_IMAGE": "$CI_REGISTRY_IMAGE/caches/web",
|
|
383
|
-
"DOCKER_IMAGE": "$CI_REGISTRY_IMAGE/$DOCKER_IMAGE_NAME",
|
|
384
|
-
"DOCKER_IMAGE_NAME": "dev/web",
|
|
385
|
-
"DOCKER_IMAGE_TAG": "$CI_COMMIT_SHA",
|
|
386
|
-
"DOCKER_REGISTRY": "$CI_REGISTRY",
|
|
387
|
-
"ENV_SHORT": "dev",
|
|
388
|
-
"ENV_TYPE": "dev",
|
|
389
|
-
"HELM_ARGS": "",
|
|
390
|
-
"HELM_EXPERIMENTAL_OCI": "1",
|
|
391
|
-
"HELM_GITLAB_CHART_NAME": "/helm-charts/the-panter-chart",
|
|
392
|
-
"HOST": "web.dev.my-app.pan.panter.cloud",
|
|
393
|
-
"HOST_CANONICAL": "web.dev.my-app.pan.panter.cloud",
|
|
394
|
-
"HOST_INTERNAL": "web.dev.my-app.pan.panter.cloud",
|
|
395
|
-
"KUBERNETES_CPU_REQUEST": "0.5",
|
|
396
|
-
"KUBERNETES_MEMORY_LIMIT": "400Mi",
|
|
397
|
-
"KUBERNETES_MEMORY_REQUEST": "200Mi",
|
|
398
|
-
"KUBE_APP_NAME": "web",
|
|
399
|
-
"KUBE_APP_NAME_PREFIX": "",
|
|
400
|
-
"KUBE_DOCKER_IMAGE_PULL_SECRET": "gitlab-registry-web",
|
|
401
|
-
"KUBE_NAMESPACE": "pan-my-app-dev",
|
|
402
|
-
"KUBE_VALUES": "env:
|
|
364
|
+
"echo -e "\\e[0Ksection_start:$(date +%s):writeallvalues[collapsed=true]\\r\\e[0KWrite __all_values.yml for helm deployment"",
|
|
365
|
+
"cat > __all_values.yml <<EOF
|
|
366
|
+
env:
|
|
403
367
|
secret:
|
|
404
|
-
MONGODB_ROOT_PASSWORD:
|
|
405
|
-
|
|
368
|
+
MONGODB_ROOT_PASSWORD: |-
|
|
369
|
+
$(printf %s "$CL_dev_web_MONGODB_ROOT_PASSWORD" | sed 's/^/ /')
|
|
370
|
+
MONGO_URL: |-
|
|
371
|
+
mongodb://root:$CL_dev_web_MONGODB_ROOT_PASSWORD@web-mongodb.pan-my-app-dev.svc.cluster.local:27017/app?authSource=admin
|
|
406
372
|
public:
|
|
407
|
-
ENV_SHORT:
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
|
|
420
|
-
|
|
421
|
-
|
|
373
|
+
ENV_SHORT: |-
|
|
374
|
+
dev
|
|
375
|
+
APP_DIR: |-
|
|
376
|
+
app
|
|
377
|
+
ENV_TYPE: |-
|
|
378
|
+
dev
|
|
379
|
+
BUILD_INFO_BUILD_ID: |-
|
|
380
|
+
$(printf %s "$(git describe --tags 2>/dev/null || git rev-parse HEAD)" | sed 's/^/ /')
|
|
381
|
+
BUILD_INFO_BUILD_TIME: |-
|
|
382
|
+
$(printf %s "$CI_JOB_STARTED_AT" | sed 's/^/ /')
|
|
383
|
+
BUILD_INFO_CURRENT_VERSION: |-
|
|
384
|
+
$(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/^/ /')
|
|
385
|
+
HOST: |-
|
|
386
|
+
web.dev.my-app.pan.panter.cloud
|
|
387
|
+
ROOT_URL: |-
|
|
388
|
+
https://web.dev.my-app.pan.panter.cloud
|
|
389
|
+
HOST_INTERNAL: |-
|
|
390
|
+
web.dev.my-app.pan.panter.cloud
|
|
391
|
+
HOST_CANONICAL: |-
|
|
392
|
+
web.dev.my-app.pan.panter.cloud
|
|
393
|
+
ROOT_URL_INTERNAL: |-
|
|
394
|
+
https://web.dev.my-app.pan.panter.cloud
|
|
395
|
+
KUBE_NAMESPACE: |-
|
|
396
|
+
pan-my-app-dev
|
|
397
|
+
KUBE_APP_NAME: |-
|
|
398
|
+
web
|
|
399
|
+
KUBE_APP_NAME_PREFIX: ""
|
|
400
|
+
_ALL_ENV_VAR_KEYS: |-
|
|
401
|
+
["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","KUBE_NAMESPACE","KUBE_APP_NAME","KUBE_APP_NAME_PREFIX","MONGODB_ROOT_PASSWORD"]
|
|
422
402
|
application:
|
|
423
|
-
host:
|
|
424
|
-
|
|
403
|
+
host: |-
|
|
404
|
+
web.dev.my-app.pan.panter.cloud
|
|
405
|
+
command: |-
|
|
406
|
+
node main.js
|
|
425
407
|
livenessProbe:
|
|
426
408
|
httpGet:
|
|
427
|
-
path:
|
|
409
|
+
path: |-
|
|
410
|
+
__health
|
|
428
411
|
readinessProbe:
|
|
429
412
|
httpGet:
|
|
430
|
-
path:
|
|
413
|
+
path: |-
|
|
414
|
+
__health
|
|
431
415
|
startupProbe:
|
|
432
416
|
httpGet:
|
|
433
|
-
path:
|
|
417
|
+
path: |-
|
|
418
|
+
__health
|
|
434
419
|
worker:
|
|
435
420
|
enabled: true
|
|
436
421
|
mongodb:
|
|
437
422
|
enabled: true
|
|
438
423
|
auth:
|
|
439
424
|
enabled: true
|
|
440
|
-
rootPassword:
|
|
441
|
-
|
|
425
|
+
rootPassword: |-
|
|
426
|
+
$CL_dev_web_MONGODB_ROOT_PASSWORD
|
|
427
|
+
replicaSetKey: |-
|
|
428
|
+
$CL_dev_web_MONGODB_REPLICASET_KEY
|
|
442
429
|
persistence:
|
|
443
|
-
storageClass:
|
|
430
|
+
storageClass: |-
|
|
431
|
+
standard-rwo
|
|
444
432
|
backup:
|
|
445
433
|
enabled: false
|
|
446
|
-
hostToBackup:
|
|
447
|
-
|
|
448
|
-
|
|
449
|
-
|
|
450
|
-
|
|
451
|
-
|
|
434
|
+
hostToBackup: |-
|
|
435
|
+
web-mongodb.pan-my-app-dev.svc.cluster.local:27017
|
|
436
|
+
pvcToBackup: |-
|
|
437
|
+
web-mongodb
|
|
438
|
+
image: |-
|
|
439
|
+
mrelite/kubectlmongoshell:v1.0
|
|
440
|
+
schedule: |-
|
|
441
|
+
0 4 * * *
|
|
442
|
+
volumeSnapshotClass: |-
|
|
443
|
+
snapshotclass
|
|
444
|
+
architecture: |-
|
|
445
|
+
standalone
|
|
446
|
+
|
|
447
|
+
EOF
|
|
452
448
|
",
|
|
453
|
-
"
|
|
454
|
-
"
|
|
455
|
-
"
|
|
456
|
-
"
|
|
457
|
-
"
|
|
449
|
+
"echo -e "\\e[0Ksection_end:$(date +%s):writeallvalues\\r\\e[0K"",
|
|
450
|
+
"kubernetesCreateSecret",
|
|
451
|
+
"kubernetesDeploy",
|
|
452
|
+
"echo Uploading SBOM to Dependency Track",
|
|
453
|
+
"/dtrackuploader https://dep.panter.swiss/ "$DT_KEY_PROD" upload "pan-my-app/web" "https://web.dev.my-app.pan.panter.cloud" "__sbom.json" vex.json || true",
|
|
454
|
+
"echo deployment successful ๐ป",
|
|
455
|
+
"echo "CL_GITLAB_ENVIRONMENT_URL=https://web.dev.my-app.pan.panter.cloud" >> gitlab_environment.env",
|
|
456
|
+
],
|
|
457
|
+
"stage": "deploy dev",
|
|
458
|
+
"variables": {
|
|
459
|
+
"KUBERNETES_CPU_REQUEST": "0.5",
|
|
460
|
+
"KUBERNETES_MEMORY_LIMIT": "400Mi",
|
|
461
|
+
"KUBERNETES_MEMORY_REQUEST": "200Mi",
|
|
458
462
|
},
|
|
459
463
|
},
|
|
460
464
|
"web ๐ Stop โ ๏ธ | dev ": {
|
|
465
|
+
"allow_failure": true,
|
|
466
|
+
"artifacts": {
|
|
467
|
+
"reports": {
|
|
468
|
+
"dotenv": "gitlab_environment.env",
|
|
469
|
+
},
|
|
470
|
+
},
|
|
461
471
|
"environment": {
|
|
462
472
|
"action": "stop",
|
|
463
473
|
"name": "dev/web",
|
|
464
|
-
"url": "
|
|
474
|
+
"url": "$CL_GITLAB_ENVIRONMENT_URL",
|
|
465
475
|
},
|
|
466
476
|
"image": "path/to/docker/kubernetes:the-version",
|
|
467
477
|
"interruptible": true,
|
|
@@ -475,16 +485,39 @@ mongodb:
|
|
|
475
485
|
},
|
|
476
486
|
"rules": [
|
|
477
487
|
{
|
|
478
|
-
"allow_failure": true,
|
|
479
488
|
"if": "$CI_COMMIT_BRANCH =~ /^[0-9]+\\.([0-9]+|x)\\.x$/",
|
|
480
489
|
"when": "on_success",
|
|
481
490
|
},
|
|
482
491
|
{
|
|
483
|
-
"allow_failure": true,
|
|
484
492
|
"when": "manual",
|
|
485
493
|
},
|
|
486
494
|
],
|
|
487
495
|
"script": [
|
|
496
|
+
"echo -e "\\e[0Ksection_start:$(date +%s):injectvars[collapsed=true]\\r\\e[0KInjecting variables"",
|
|
497
|
+
"export ENV_SHORT="dev"",
|
|
498
|
+
"export APP_DIR="app"",
|
|
499
|
+
"export ENV_TYPE="dev"",
|
|
500
|
+
"export BUILD_INFO_BUILD_ID="$(git describe --tags 2>/dev/null || git rev-parse HEAD)"",
|
|
501
|
+
"export BUILD_INFO_BUILD_TIME="$CI_JOB_STARTED_AT"",
|
|
502
|
+
"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")"",
|
|
503
|
+
"export HOST="web.dev.my-app.pan.panter.cloud"",
|
|
504
|
+
"export ROOT_URL="https://web.dev.my-app.pan.panter.cloud"",
|
|
505
|
+
"export HOST_INTERNAL="web.dev.my-app.pan.panter.cloud"",
|
|
506
|
+
"export HOST_CANONICAL="web.dev.my-app.pan.panter.cloud"",
|
|
507
|
+
"export ROOT_URL_INTERNAL="https://web.dev.my-app.pan.panter.cloud"",
|
|
508
|
+
"export KUBE_NAMESPACE="pan-my-app-dev"",
|
|
509
|
+
"export KUBE_APP_NAME="web"",
|
|
510
|
+
"export KUBE_APP_NAME_PREFIX=""",
|
|
511
|
+
"export MONGODB_ROOT_PASSWORD="$CL_dev_web_MONGODB_ROOT_PASSWORD"",
|
|
512
|
+
"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\\",\\"KUBE_NAMESPACE\\",\\"KUBE_APP_NAME\\",\\"KUBE_APP_NAME_PREFIX\\",\\"MONGODB_ROOT_PASSWORD\\"]"",
|
|
513
|
+
"export RELEASE_NAME="pan-my-app-dev-web"",
|
|
514
|
+
"export HELM_EXPERIMENTAL_OCI="1"",
|
|
515
|
+
"export KUBE_DOCKER_IMAGE_PULL_SECRET="gitlab-registry-web"",
|
|
516
|
+
"export HELM_GITLAB_CHART_NAME="/helm-charts/the-panter-chart"",
|
|
517
|
+
"export HELM_ARGS=""",
|
|
518
|
+
"export COMPONENT_NAME="web"",
|
|
519
|
+
"export BUILD_ID="$(git describe --tags 2>/dev/null || git rev-parse HEAD)"",
|
|
520
|
+
"echo -e "\\e[0Ksection_end:$(date +%s):injectvars\\r\\e[0K"",
|
|
488
521
|
"kubectl config set-cluster "kube-pan-my-app-dev-web" --server="$CL_dev_web_KUBE_URL" --certificate-authority <(echo $CL_dev_web_KUBE_CA_PEM | base64 -d) --embed-certs=true",
|
|
489
522
|
"kubectl config set-credentials "kube-pan-my-app-dev-web" --token="$CL_dev_web_KUBE_TOKEN"",
|
|
490
523
|
"kubectl config set-context "kube-pan-my-app-dev-web" --cluster="kube-pan-my-app-dev-web" --user="kube-pan-my-app-dev-web" --namespace="pan-my-app-dev"",
|
|
@@ -492,87 +525,14 @@ mongodb:
|
|
|
492
525
|
"kubernetesDelete",
|
|
493
526
|
"echo Disabling component in Dependency Track",
|
|
494
527
|
"/dtrackuploader https://dep.panter.swiss/ "$DT_KEY_PROD" disable "pan-my-app/web" "https://web.dev.my-app.pan.panter.cloud" || true",
|
|
528
|
+
"echo "CL_GITLAB_ENVIRONMENT_URL=https://web.dev.my-app.pan.panter.cloud" >> gitlab_environment.env",
|
|
495
529
|
],
|
|
496
530
|
"stage": "stop dev",
|
|
497
531
|
"variables": {
|
|
498
|
-
"APP_DIR": "app",
|
|
499
|
-
"BUILD_ID": "some-id",
|
|
500
|
-
"BUILD_INFO_BUILD_TIME": "01-01-2023 12:13:14",
|
|
501
|
-
"BUILD_INFO_CURRENT_VERSION": "3.2.1",
|
|
502
|
-
"BUILD_INFO_ID": "some-id",
|
|
503
|
-
"COMPONENT_NAME": "web",
|
|
504
|
-
"ENV_SHORT": "dev",
|
|
505
|
-
"ENV_TYPE": "dev",
|
|
506
532
|
"GIT_STRATEGY": "none",
|
|
507
|
-
"HELM_ARGS": "",
|
|
508
|
-
"HELM_EXPERIMENTAL_OCI": "1",
|
|
509
|
-
"HELM_GITLAB_CHART_NAME": "/helm-charts/the-panter-chart",
|
|
510
|
-
"HOST": "web.dev.my-app.pan.panter.cloud",
|
|
511
|
-
"HOST_CANONICAL": "web.dev.my-app.pan.panter.cloud",
|
|
512
|
-
"HOST_INTERNAL": "web.dev.my-app.pan.panter.cloud",
|
|
513
533
|
"KUBERNETES_CPU_REQUEST": "0.5",
|
|
514
534
|
"KUBERNETES_MEMORY_LIMIT": "400Mi",
|
|
515
535
|
"KUBERNETES_MEMORY_REQUEST": "200Mi",
|
|
516
|
-
"KUBE_APP_NAME": "web",
|
|
517
|
-
"KUBE_APP_NAME_PREFIX": "",
|
|
518
|
-
"KUBE_DOCKER_IMAGE_PULL_SECRET": "gitlab-registry-web",
|
|
519
|
-
"KUBE_NAMESPACE": "pan-my-app-dev",
|
|
520
|
-
"KUBE_VALUES": "env:
|
|
521
|
-
secret:
|
|
522
|
-
MONGODB_ROOT_PASSWORD: '$CL_dev_web_MONGODB_ROOT_PASSWORD'
|
|
523
|
-
MONGO_URL: 'mongodb://root:$CL_dev_web_MONGODB_ROOT_PASSWORD@web-mongodb.pan-my-app-dev.svc.cluster.local:27017/app?authSource=admin'
|
|
524
|
-
public:
|
|
525
|
-
ENV_SHORT: 'dev'
|
|
526
|
-
APP_DIR: 'app'
|
|
527
|
-
ENV_TYPE: 'dev'
|
|
528
|
-
BUILD_INFO_ID: 'some-id'
|
|
529
|
-
BUILD_INFO_BUILD_TIME: '01-01-2023 12:13:14'
|
|
530
|
-
BUILD_INFO_CURRENT_VERSION: '3.2.1'
|
|
531
|
-
HOST: 'web.dev.my-app.pan.panter.cloud'
|
|
532
|
-
ROOT_URL: 'https://web.dev.my-app.pan.panter.cloud'
|
|
533
|
-
HOST_CANONICAL: 'web.dev.my-app.pan.panter.cloud'
|
|
534
|
-
ROOT_URL_INTERNAL: 'https://web.dev.my-app.pan.panter.cloud'
|
|
535
|
-
KUBE_NAMESPACE: 'pan-my-app-dev'
|
|
536
|
-
KUBE_APP_NAME: 'web'
|
|
537
|
-
KUBE_APP_NAME_PREFIX: ''
|
|
538
|
-
HOST_INTERNAL: 'web.dev.my-app.pan.panter.cloud'
|
|
539
|
-
_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","KUBE_NAMESPACE","KUBE_APP_NAME","KUBE_APP_NAME_PREFIX","HOST_INTERNAL","MONGODB_ROOT_PASSWORD"]'
|
|
540
|
-
application:
|
|
541
|
-
host: 'web.dev.my-app.pan.panter.cloud'
|
|
542
|
-
command: 'node main.js'
|
|
543
|
-
livenessProbe:
|
|
544
|
-
httpGet:
|
|
545
|
-
path: '__health'
|
|
546
|
-
readinessProbe:
|
|
547
|
-
httpGet:
|
|
548
|
-
path: '__health'
|
|
549
|
-
startupProbe:
|
|
550
|
-
httpGet:
|
|
551
|
-
path: '__health'
|
|
552
|
-
worker:
|
|
553
|
-
enabled: true
|
|
554
|
-
mongodb:
|
|
555
|
-
enabled: true
|
|
556
|
-
auth:
|
|
557
|
-
enabled: true
|
|
558
|
-
rootPassword: '$CL_dev_web_MONGODB_ROOT_PASSWORD'
|
|
559
|
-
replicaSetKey: '$CL_dev_web_MONGODB_REPLICASET_KEY'
|
|
560
|
-
persistence:
|
|
561
|
-
storageClass: 'standard-rwo'
|
|
562
|
-
backup:
|
|
563
|
-
enabled: false
|
|
564
|
-
hostToBackup: 'web-mongodb.pan-my-app-dev.svc.cluster.local:27017'
|
|
565
|
-
pvcToBackup: 'web-mongodb'
|
|
566
|
-
image: 'mrelite/kubectlmongoshell:v1.0'
|
|
567
|
-
schedule: '0 4 * * *'
|
|
568
|
-
volumeSnapshotClass: 'snapshotclass'
|
|
569
|
-
architecture: 'standalone'
|
|
570
|
-
",
|
|
571
|
-
"MONGODB_ROOT_PASSWORD": "$CL_dev_web_MONGODB_ROOT_PASSWORD",
|
|
572
|
-
"RELEASE_NAME": "pan-my-app-dev-web",
|
|
573
|
-
"ROOT_URL": "https://web.dev.my-app.pan.panter.cloud",
|
|
574
|
-
"ROOT_URL_INTERNAL": "https://web.dev.my-app.pan.panter.cloud",
|
|
575
|
-
"_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","KUBE_NAMESPACE","KUBE_APP_NAME","KUBE_APP_NAME_PREFIX","HOST_INTERNAL","MONGODB_ROOT_PASSWORD"]",
|
|
576
536
|
},
|
|
577
537
|
},
|
|
578
538
|
"web ๐ก audit": {
|
|
@@ -588,12 +548,14 @@ mongodb:
|
|
|
588
548
|
],
|
|
589
549
|
},
|
|
590
550
|
"script": [
|
|
551
|
+
"echo -e "\\e[0Ksection_start:$(date +%s):injectvars[collapsed=true]\\r\\e[0KInjecting variables"",
|
|
552
|
+
"export APP_PATH="app"",
|
|
553
|
+
"echo -e "\\e[0Ksection_end:$(date +%s):injectvars\\r\\e[0K"",
|
|
591
554
|
"cd app",
|
|
592
555
|
"yarn npm audit --environment production",
|
|
593
556
|
],
|
|
594
557
|
"stage": "test",
|
|
595
558
|
"variables": {
|
|
596
|
-
"APP_PATH": "app",
|
|
597
559
|
"KUBERNETES_CPU_REQUEST": "0.5",
|
|
598
560
|
"KUBERNETES_MEMORY_LIMIT": "4Gi",
|
|
599
561
|
"KUBERNETES_MEMORY_REQUEST": "2Gi",
|
|
@@ -627,6 +589,9 @@ mongodb:
|
|
|
627
589
|
],
|
|
628
590
|
},
|
|
629
591
|
"script": [
|
|
592
|
+
"echo -e "\\e[0Ksection_start:$(date +%s):injectvars[collapsed=true]\\r\\e[0KInjecting variables"",
|
|
593
|
+
"export APP_PATH="app"",
|
|
594
|
+
"echo -e "\\e[0Ksection_end:$(date +%s):injectvars\\r\\e[0K"",
|
|
630
595
|
"echo -e "\\e[0Ksection_start:$(date +%s):nodeinstall[collapsed=true]\\r\\e[0KEnsure node version"",
|
|
631
596
|
"if [ -f ~/.nvm/nvm.sh ]; then source ~/.nvm/nvm.sh; fi",
|
|
632
597
|
"if command -v nvm &> /dev/null && [ -f ./.nvmrc ]; then nvm install; fi",
|
|
@@ -643,7 +608,6 @@ mongodb:
|
|
|
643
608
|
],
|
|
644
609
|
"stage": "test",
|
|
645
610
|
"variables": {
|
|
646
|
-
"APP_PATH": "app",
|
|
647
611
|
"KUBERNETES_CPU_REQUEST": "0.5",
|
|
648
612
|
"KUBERNETES_MEMORY_LIMIT": "4Gi",
|
|
649
613
|
"KUBERNETES_MEMORY_REQUEST": "2Gi",
|
|
@@ -667,6 +631,8 @@ mongodb:
|
|
|
667
631
|
],
|
|
668
632
|
},
|
|
669
633
|
"script": [
|
|
634
|
+
"echo -e "\\e[0Ksection_start:$(date +%s):injectvars[collapsed=true]\\r\\e[0KInjecting variables"",
|
|
635
|
+
"echo -e "\\e[0Ksection_end:$(date +%s):injectvars\\r\\e[0K"",
|
|
670
636
|
"trivy fs --quiet --format cyclonedx --output "__sbom.json" app",
|
|
671
637
|
],
|
|
672
638
|
"stage": "build",
|
|
@@ -719,7 +685,7 @@ mongodb:
|
|
|
719
685
|
],
|
|
720
686
|
"variables": {
|
|
721
687
|
"FF_USE_FASTZIP": "true",
|
|
722
|
-
"GIT_DEPTH": 1,
|
|
688
|
+
"GIT_DEPTH": "1",
|
|
723
689
|
},
|
|
724
690
|
"workflow": {
|
|
725
691
|
"rules": [
|
|
@@ -750,10 +716,16 @@ mongodb:
|
|
|
750
716
|
"image": "path/to/docker/jobs-default:the-version",
|
|
751
717
|
"jobs": {
|
|
752
718
|
"web โฉ๏ธ Rollback โ ๏ธ | review ": {
|
|
719
|
+
"allow_failure": true,
|
|
720
|
+
"artifacts": {
|
|
721
|
+
"reports": {
|
|
722
|
+
"dotenv": "gitlab_environment.env",
|
|
723
|
+
},
|
|
724
|
+
},
|
|
753
725
|
"environment": {
|
|
754
726
|
"action": "access",
|
|
755
|
-
"name": "review/
|
|
756
|
-
"url": "
|
|
727
|
+
"name": "review/$CI_COMMIT_REF_NAME/web",
|
|
728
|
+
"url": "$CL_GITLAB_ENVIRONMENT_URL",
|
|
757
729
|
},
|
|
758
730
|
"image": "path/to/docker/kubernetes:the-version",
|
|
759
731
|
"interruptible": true,
|
|
@@ -767,97 +739,48 @@ mongodb:
|
|
|
767
739
|
},
|
|
768
740
|
"rules": [
|
|
769
741
|
{
|
|
770
|
-
"allow_failure": true,
|
|
771
742
|
"when": "manual",
|
|
772
743
|
},
|
|
773
744
|
],
|
|
774
745
|
"script": [
|
|
775
|
-
"
|
|
776
|
-
"
|
|
777
|
-
"
|
|
778
|
-
"
|
|
746
|
+
"echo -e "\\e[0Ksection_start:$(date +%s):injectvars[collapsed=true]\\r\\e[0KInjecting variables"",
|
|
747
|
+
"export ENV_SHORT="review"",
|
|
748
|
+
"export APP_DIR="app"",
|
|
749
|
+
"export ENV_TYPE="review"",
|
|
750
|
+
"export BUILD_INFO_BUILD_ID="$(git describe --tags 2>/dev/null || git rev-parse HEAD)"",
|
|
751
|
+
"export BUILD_INFO_BUILD_TIME="$CI_JOB_STARTED_AT"",
|
|
752
|
+
"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")"",
|
|
753
|
+
"export HOST="web.$([ -n "$CI_MERGE_REQUEST_IID" ] && echo "mr$CI_MERGE_REQUEST_IID" || { [ -n "$CI_COMMIT_REF_SLUG" ] && echo "$CI_COMMIT_REF_SLUG" || echo "unknown"; }).review.my-app.pan.panter.cloud"",
|
|
754
|
+
"export ROOT_URL="https://web.$([ -n "$CI_MERGE_REQUEST_IID" ] && echo "mr$CI_MERGE_REQUEST_IID" || { [ -n "$CI_COMMIT_REF_SLUG" ] && echo "$CI_COMMIT_REF_SLUG" || echo "unknown"; }).review.my-app.pan.panter.cloud"",
|
|
755
|
+
"export HOST_INTERNAL="web.$([ -n "$CI_MERGE_REQUEST_IID" ] && echo "mr$CI_MERGE_REQUEST_IID" || { [ -n "$CI_COMMIT_REF_SLUG" ] && echo "$CI_COMMIT_REF_SLUG" || echo "unknown"; }).review.my-app.pan.panter.cloud"",
|
|
756
|
+
"export HOST_CANONICAL="web.$([ -n "$CI_MERGE_REQUEST_IID" ] && echo "mr$CI_MERGE_REQUEST_IID" || { [ -n "$CI_COMMIT_REF_SLUG" ] && echo "$CI_COMMIT_REF_SLUG" || echo "unknown"; }).review.my-app.pan.panter.cloud"",
|
|
757
|
+
"export ROOT_URL_INTERNAL="https://web.$([ -n "$CI_MERGE_REQUEST_IID" ] && echo "mr$CI_MERGE_REQUEST_IID" || { [ -n "$CI_COMMIT_REF_SLUG" ] && echo "$CI_COMMIT_REF_SLUG" || echo "unknown"; }).review.my-app.pan.panter.cloud"",
|
|
758
|
+
"export KUBE_NAMESPACE="pan-my-app-review"",
|
|
759
|
+
"export KUBE_APP_NAME="$([ -n "$CI_MERGE_REQUEST_IID" ] && echo "mr$CI_MERGE_REQUEST_IID" || { [ -n "$CI_COMMIT_REF_SLUG" ] && echo "$CI_COMMIT_REF_SLUG" || echo "unknown"; })-web"",
|
|
760
|
+
"export KUBE_APP_NAME_PREFIX="$([ -n "$CI_MERGE_REQUEST_IID" ] && echo "mr$CI_MERGE_REQUEST_IID" || { [ -n "$CI_COMMIT_REF_SLUG" ] && echo "$CI_COMMIT_REF_SLUG" || echo "unknown"; })-"",
|
|
761
|
+
"export MONGODB_ROOT_PASSWORD="$CL_review_web_MONGODB_ROOT_PASSWORD"",
|
|
762
|
+
"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\\",\\"KUBE_NAMESPACE\\",\\"KUBE_APP_NAME\\",\\"KUBE_APP_NAME_PREFIX\\",\\"MONGODB_ROOT_PASSWORD\\"]"",
|
|
763
|
+
"export RELEASE_NAME="pan-my-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"; })-web"",
|
|
764
|
+
"export HELM_EXPERIMENTAL_OCI="1"",
|
|
765
|
+
"export KUBE_DOCKER_IMAGE_PULL_SECRET="gitlab-registry-web"",
|
|
766
|
+
"export HELM_GITLAB_CHART_NAME="/helm-charts/the-panter-chart"",
|
|
767
|
+
"export HELM_ARGS=""",
|
|
768
|
+
"export COMPONENT_NAME="web"",
|
|
769
|
+
"export BUILD_ID="$(git describe --tags 2>/dev/null || git rev-parse HEAD)"",
|
|
770
|
+
"echo -e "\\e[0Ksection_end:$(date +%s):injectvars\\r\\e[0K"",
|
|
771
|
+
"kubectl config set-cluster "kube-pan-my-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"; })-web" --server="$CL_review_web_KUBE_URL" --certificate-authority <(echo $CL_review_web_KUBE_CA_PEM | base64 -d) --embed-certs=true",
|
|
772
|
+
"kubectl config set-credentials "kube-pan-my-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"; })-web" --token="$CL_review_web_KUBE_TOKEN"",
|
|
773
|
+
"kubectl config set-context "kube-pan-my-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"; })-web" --cluster="kube-pan-my-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"; })-web" --user="kube-pan-my-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"; })-web" --namespace="pan-my-app-review"",
|
|
774
|
+
"kubectl config use-context "kube-pan-my-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"; })-web"",
|
|
779
775
|
"kubernetesRollback",
|
|
776
|
+
"echo "CL_GITLAB_ENVIRONMENT_URL=https://web.$([ -n "$CI_MERGE_REQUEST_IID" ] && echo "mr$CI_MERGE_REQUEST_IID" || { [ -n "$CI_COMMIT_REF_SLUG" ] && echo "$CI_COMMIT_REF_SLUG" || echo "unknown"; }).review.my-app.pan.panter.cloud" >> gitlab_environment.env",
|
|
780
777
|
],
|
|
781
778
|
"stage": "rollback review",
|
|
782
779
|
"variables": {
|
|
783
|
-
"APP_DIR": "app",
|
|
784
|
-
"BUILD_ID": "some-id",
|
|
785
|
-
"BUILD_INFO_BUILD_TIME": "01-01-2023 12:13:14",
|
|
786
|
-
"BUILD_INFO_CURRENT_VERSION": "3.2.1",
|
|
787
|
-
"BUILD_INFO_ID": "some-id",
|
|
788
|
-
"COMPONENT_NAME": "web",
|
|
789
|
-
"ENV_SHORT": "review",
|
|
790
|
-
"ENV_TYPE": "review",
|
|
791
780
|
"GIT_STRATEGY": "none",
|
|
792
|
-
"HELM_ARGS": "",
|
|
793
|
-
"HELM_EXPERIMENTAL_OCI": "1",
|
|
794
|
-
"HELM_GITLAB_CHART_NAME": "/helm-charts/the-panter-chart",
|
|
795
|
-
"HOST": "web.mr1234.review.my-app.pan.panter.cloud",
|
|
796
|
-
"HOST_CANONICAL": "web.mr1234.review.my-app.pan.panter.cloud",
|
|
797
|
-
"HOST_INTERNAL": "web.mr1234.review.my-app.pan.panter.cloud",
|
|
798
781
|
"KUBERNETES_CPU_REQUEST": "0.5",
|
|
799
782
|
"KUBERNETES_MEMORY_LIMIT": "400Mi",
|
|
800
783
|
"KUBERNETES_MEMORY_REQUEST": "200Mi",
|
|
801
|
-
"KUBE_APP_NAME": "mr1234-web",
|
|
802
|
-
"KUBE_APP_NAME_PREFIX": "mr1234-",
|
|
803
|
-
"KUBE_DOCKER_IMAGE_PULL_SECRET": "gitlab-registry-web",
|
|
804
|
-
"KUBE_NAMESPACE": "pan-my-app-review",
|
|
805
|
-
"KUBE_VALUES": "env:
|
|
806
|
-
secret:
|
|
807
|
-
MONGODB_ROOT_PASSWORD: '$CL_review_web_MONGODB_ROOT_PASSWORD'
|
|
808
|
-
MONGO_URL: 'mongodb://root:$CL_review_web_MONGODB_ROOT_PASSWORD@mr1234-web-mongodb.pan-my-app-review.svc.cluster.local:27017/app?authSource=admin'
|
|
809
|
-
public:
|
|
810
|
-
ENV_SHORT: 'review'
|
|
811
|
-
APP_DIR: 'app'
|
|
812
|
-
ENV_TYPE: 'review'
|
|
813
|
-
BUILD_INFO_ID: 'some-id'
|
|
814
|
-
BUILD_INFO_BUILD_TIME: '01-01-2023 12:13:14'
|
|
815
|
-
BUILD_INFO_CURRENT_VERSION: '3.2.1'
|
|
816
|
-
HOST: 'web.mr1234.review.my-app.pan.panter.cloud'
|
|
817
|
-
ROOT_URL: 'https://web.mr1234.review.my-app.pan.panter.cloud'
|
|
818
|
-
HOST_CANONICAL: 'web.mr1234.review.my-app.pan.panter.cloud'
|
|
819
|
-
ROOT_URL_INTERNAL: 'https://web.mr1234.review.my-app.pan.panter.cloud'
|
|
820
|
-
KUBE_NAMESPACE: 'pan-my-app-review'
|
|
821
|
-
KUBE_APP_NAME: 'mr1234-web'
|
|
822
|
-
KUBE_APP_NAME_PREFIX: 'mr1234-'
|
|
823
|
-
HOST_INTERNAL: 'web.mr1234.review.my-app.pan.panter.cloud'
|
|
824
|
-
_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","KUBE_NAMESPACE","KUBE_APP_NAME","KUBE_APP_NAME_PREFIX","HOST_INTERNAL","MONGODB_ROOT_PASSWORD"]'
|
|
825
|
-
application:
|
|
826
|
-
host: 'web.mr1234.review.my-app.pan.panter.cloud'
|
|
827
|
-
command: 'node main.js'
|
|
828
|
-
livenessProbe:
|
|
829
|
-
httpGet:
|
|
830
|
-
path: '__health'
|
|
831
|
-
readinessProbe:
|
|
832
|
-
httpGet:
|
|
833
|
-
path: '__health'
|
|
834
|
-
startupProbe:
|
|
835
|
-
httpGet:
|
|
836
|
-
path: '__health'
|
|
837
|
-
worker:
|
|
838
|
-
enabled: true
|
|
839
|
-
mongodb:
|
|
840
|
-
enabled: true
|
|
841
|
-
auth:
|
|
842
|
-
enabled: true
|
|
843
|
-
rootPassword: '$CL_review_web_MONGODB_ROOT_PASSWORD'
|
|
844
|
-
replicaSetKey: '$CL_review_web_MONGODB_REPLICASET_KEY'
|
|
845
|
-
persistence:
|
|
846
|
-
storageClass: 'standard-rwo'
|
|
847
|
-
backup:
|
|
848
|
-
enabled: false
|
|
849
|
-
hostToBackup: 'mr1234-web-mongodb.pan-my-app-review.svc.cluster.local:27017'
|
|
850
|
-
pvcToBackup: 'mr1234-web-mongodb'
|
|
851
|
-
image: 'mrelite/kubectlmongoshell:v1.0'
|
|
852
|
-
schedule: '0 4 * * *'
|
|
853
|
-
volumeSnapshotClass: 'snapshotclass'
|
|
854
|
-
architecture: 'standalone'
|
|
855
|
-
",
|
|
856
|
-
"MONGODB_ROOT_PASSWORD": "$CL_review_web_MONGODB_ROOT_PASSWORD",
|
|
857
|
-
"RELEASE_NAME": "pan-my-app-review-mr1234-web",
|
|
858
|
-
"ROOT_URL": "https://web.mr1234.review.my-app.pan.panter.cloud",
|
|
859
|
-
"ROOT_URL_INTERNAL": "https://web.mr1234.review.my-app.pan.panter.cloud",
|
|
860
|
-
"_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","KUBE_NAMESPACE","KUBE_APP_NAME","KUBE_APP_NAME_PREFIX","HOST_INTERNAL","MONGODB_ROOT_PASSWORD"]",
|
|
861
784
|
},
|
|
862
785
|
},
|
|
863
786
|
"web ๐ฎ lint": {
|
|
@@ -888,6 +811,9 @@ mongodb:
|
|
|
888
811
|
],
|
|
889
812
|
},
|
|
890
813
|
"script": [
|
|
814
|
+
"echo -e "\\e[0Ksection_start:$(date +%s):injectvars[collapsed=true]\\r\\e[0KInjecting variables"",
|
|
815
|
+
"export APP_PATH="app"",
|
|
816
|
+
"echo -e "\\e[0Ksection_end:$(date +%s):injectvars\\r\\e[0K"",
|
|
891
817
|
"echo -e "\\e[0Ksection_start:$(date +%s):nodeinstall[collapsed=true]\\r\\e[0KEnsure node version"",
|
|
892
818
|
"if [ -f ~/.nvm/nvm.sh ]; then source ~/.nvm/nvm.sh; fi",
|
|
893
819
|
"if command -v nvm &> /dev/null && [ -f ./.nvmrc ]; then nvm install; fi",
|
|
@@ -904,7 +830,6 @@ mongodb:
|
|
|
904
830
|
],
|
|
905
831
|
"stage": "test",
|
|
906
832
|
"variables": {
|
|
907
|
-
"APP_PATH": "app",
|
|
908
833
|
"KUBERNETES_CPU_REQUEST": "0.5",
|
|
909
834
|
"KUBERNETES_MEMORY_LIMIT": "4Gi",
|
|
910
835
|
"KUBERNETES_MEMORY_REQUEST": "2Gi",
|
|
@@ -957,7 +882,26 @@ mongodb:
|
|
|
957
882
|
],
|
|
958
883
|
},
|
|
959
884
|
"script": [
|
|
960
|
-
"echo
|
|
885
|
+
"echo -e "\\e[0Ksection_start:$(date +%s):injectvars[collapsed=true]\\r\\e[0KInjecting variables"",
|
|
886
|
+
"export METEOR_DISABLE_OPTIMISTIC_CACHING="1"",
|
|
887
|
+
"export ENV_SHORT="review"",
|
|
888
|
+
"export APP_DIR="app"",
|
|
889
|
+
"export ENV_TYPE="review"",
|
|
890
|
+
"export BUILD_INFO_BUILD_ID="$(git describe --tags 2>/dev/null || git rev-parse HEAD)"",
|
|
891
|
+
"export BUILD_INFO_BUILD_TIME="$CI_JOB_STARTED_AT"",
|
|
892
|
+
"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")"",
|
|
893
|
+
"export HOST="web.$([ -n "$CI_MERGE_REQUEST_IID" ] && echo "mr$CI_MERGE_REQUEST_IID" || { [ -n "$CI_COMMIT_REF_SLUG" ] && echo "$CI_COMMIT_REF_SLUG" || echo "unknown"; }).review.my-app.pan.panter.cloud"",
|
|
894
|
+
"export ROOT_URL="https://web.$([ -n "$CI_MERGE_REQUEST_IID" ] && echo "mr$CI_MERGE_REQUEST_IID" || { [ -n "$CI_COMMIT_REF_SLUG" ] && echo "$CI_COMMIT_REF_SLUG" || echo "unknown"; }).review.my-app.pan.panter.cloud"",
|
|
895
|
+
"export HOST_INTERNAL="web.$([ -n "$CI_MERGE_REQUEST_IID" ] && echo "mr$CI_MERGE_REQUEST_IID" || { [ -n "$CI_COMMIT_REF_SLUG" ] && echo "$CI_COMMIT_REF_SLUG" || echo "unknown"; }).review.my-app.pan.panter.cloud"",
|
|
896
|
+
"export HOST_CANONICAL="web.$([ -n "$CI_MERGE_REQUEST_IID" ] && echo "mr$CI_MERGE_REQUEST_IID" || { [ -n "$CI_COMMIT_REF_SLUG" ] && echo "$CI_COMMIT_REF_SLUG" || echo "unknown"; }).review.my-app.pan.panter.cloud"",
|
|
897
|
+
"export ROOT_URL_INTERNAL="https://web.$([ -n "$CI_MERGE_REQUEST_IID" ] && echo "mr$CI_MERGE_REQUEST_IID" || { [ -n "$CI_COMMIT_REF_SLUG" ] && echo "$CI_COMMIT_REF_SLUG" || echo "unknown"; }).review.my-app.pan.panter.cloud"",
|
|
898
|
+
"export KUBE_NAMESPACE="pan-my-app-review"",
|
|
899
|
+
"export KUBE_APP_NAME="$([ -n "$CI_MERGE_REQUEST_IID" ] && echo "mr$CI_MERGE_REQUEST_IID" || { [ -n "$CI_COMMIT_REF_SLUG" ] && echo "$CI_COMMIT_REF_SLUG" || echo "unknown"; })-web"",
|
|
900
|
+
"export KUBE_APP_NAME_PREFIX="$([ -n "$CI_MERGE_REQUEST_IID" ] && echo "mr$CI_MERGE_REQUEST_IID" || { [ -n "$CI_COMMIT_REF_SLUG" ] && echo "$CI_COMMIT_REF_SLUG" || echo "unknown"; })-"",
|
|
901
|
+
"export MONGODB_ROOT_PASSWORD="$CL_review_web_MONGODB_ROOT_PASSWORD"",
|
|
902
|
+
"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\\",\\"KUBE_NAMESPACE\\",\\"KUBE_APP_NAME\\",\\"KUBE_APP_NAME_PREFIX\\",\\"MONGODB_ROOT_PASSWORD\\"]"",
|
|
903
|
+
"echo -e "\\e[0Ksection_end:$(date +%s):injectvars\\r\\e[0K"",
|
|
904
|
+
"echo '{"id":"$(git describe --tags 2>/dev/null || git rev-parse HEAD)","time":"$CI_JOB_STARTED_AT"}' > app/__build_info.json",
|
|
961
905
|
"echo -e "\\e[0Ksection_start:$(date +%s):nodeinstall[collapsed=true]\\r\\e[0KEnsure node version"",
|
|
962
906
|
"if [ -f ~/.nvm/nvm.sh ]; then source ~/.nvm/nvm.sh; fi",
|
|
963
907
|
"if command -v nvm &> /dev/null && [ -f ./.nvmrc ]; then nvm install; fi",
|
|
@@ -978,26 +922,9 @@ mongodb:
|
|
|
978
922
|
],
|
|
979
923
|
"stage": "build",
|
|
980
924
|
"variables": {
|
|
981
|
-
"APP_DIR": "app",
|
|
982
|
-
"BUILD_INFO_BUILD_TIME": "01-01-2023 12:13:14",
|
|
983
|
-
"BUILD_INFO_CURRENT_VERSION": "3.2.1",
|
|
984
|
-
"BUILD_INFO_ID": "some-id",
|
|
985
|
-
"ENV_SHORT": "review",
|
|
986
|
-
"ENV_TYPE": "review",
|
|
987
|
-
"HOST": "web.mr1234.review.my-app.pan.panter.cloud",
|
|
988
|
-
"HOST_CANONICAL": "web.mr1234.review.my-app.pan.panter.cloud",
|
|
989
|
-
"HOST_INTERNAL": "web.mr1234.review.my-app.pan.panter.cloud",
|
|
990
925
|
"KUBERNETES_CPU_REQUEST": "0.5",
|
|
991
926
|
"KUBERNETES_MEMORY_LIMIT": "4Gi",
|
|
992
927
|
"KUBERNETES_MEMORY_REQUEST": "1Gi",
|
|
993
|
-
"KUBE_APP_NAME": "mr1234-web",
|
|
994
|
-
"KUBE_APP_NAME_PREFIX": "mr1234-",
|
|
995
|
-
"KUBE_NAMESPACE": "pan-my-app-review",
|
|
996
|
-
"METEOR_DISABLE_OPTIMISTIC_CACHING": "1",
|
|
997
|
-
"MONGODB_ROOT_PASSWORD": "$CL_review_web_MONGODB_ROOT_PASSWORD",
|
|
998
|
-
"ROOT_URL": "https://web.mr1234.review.my-app.pan.panter.cloud",
|
|
999
|
-
"ROOT_URL_INTERNAL": "https://web.mr1234.review.my-app.pan.panter.cloud",
|
|
1000
|
-
"_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","KUBE_NAMESPACE","KUBE_APP_NAME","KUBE_APP_NAME_PREFIX","HOST_INTERNAL","MONGODB_ROOT_PASSWORD"]",
|
|
1001
928
|
},
|
|
1002
929
|
},
|
|
1003
930
|
"web ๐จ docker | review ": {
|
|
@@ -1014,6 +941,16 @@ mongodb:
|
|
|
1014
941
|
],
|
|
1015
942
|
},
|
|
1016
943
|
"script": [
|
|
944
|
+
"echo -e "\\e[0Ksection_start:$(date +%s):injectvars[collapsed=true]\\r\\e[0KInjecting variables"",
|
|
945
|
+
"export APP_DIR="app"",
|
|
946
|
+
"export DOCKER_DIR="."",
|
|
947
|
+
"export DOCKER_REGISTRY="$CI_REGISTRY"",
|
|
948
|
+
"export DOCKER_CACHE_IMAGE="$CI_REGISTRY_IMAGE/caches/web"",
|
|
949
|
+
"export DOCKER_IMAGE_NAME="review/web"",
|
|
950
|
+
"export DOCKER_IMAGE="$CI_REGISTRY_IMAGE/$DOCKER_IMAGE_NAME"",
|
|
951
|
+
"export DOCKER_IMAGE_TAG="$CI_COMMIT_SHA"",
|
|
952
|
+
"export METEOR_INSTALL_SCRIPTS=""",
|
|
953
|
+
"echo -e "\\e[0Ksection_end:$(date +%s):injectvars\\r\\e[0K"",
|
|
1017
954
|
"ensureMeteorDockerfile",
|
|
1018
955
|
"echo -e "\\e[0Ksection_start:$(date +%s):docker-login[collapsed=true]\\r\\e[0KDocker Login"",
|
|
1019
956
|
"docker login --username gitlab-ci-token --password $CI_JOB_TOKEN $CI_REGISTRY",
|
|
@@ -1037,32 +974,27 @@ mongodb:
|
|
|
1037
974
|
],
|
|
1038
975
|
"stage": "build",
|
|
1039
976
|
"variables": {
|
|
1040
|
-
"APP_DIR": "app",
|
|
1041
|
-
"DOCKERFILE_ADDITIONS": undefined,
|
|
1042
|
-
"DOCKERFILE_ADDITIONS_END": undefined,
|
|
1043
977
|
"DOCKER_BUILDKIT": "1",
|
|
1044
|
-
"DOCKER_CACHE_IMAGE": "$CI_REGISTRY_IMAGE/caches/web",
|
|
1045
|
-
"DOCKER_DIR": ".",
|
|
1046
978
|
"DOCKER_DRIVER": "overlay2",
|
|
1047
979
|
"DOCKER_HOST": "tcp://0.0.0.0:2375",
|
|
1048
|
-
"DOCKER_IMAGE": "$CI_REGISTRY_IMAGE/$DOCKER_IMAGE_NAME",
|
|
1049
|
-
"DOCKER_IMAGE_NAME": "review/web",
|
|
1050
|
-
"DOCKER_IMAGE_TAG": "$CI_COMMIT_SHA",
|
|
1051
|
-
"DOCKER_REGISTRY": "$CI_REGISTRY",
|
|
1052
980
|
"DOCKER_TLS_CERTDIR": "",
|
|
1053
981
|
"KUBERNETES_CPU_REQUEST": "0.5",
|
|
1054
982
|
"KUBERNETES_MEMORY_LIMIT": "2Gi",
|
|
1055
983
|
"KUBERNETES_MEMORY_REQUEST": "1Gi",
|
|
1056
|
-
"METEOR_INSTALL_SCRIPTS": "",
|
|
1057
984
|
},
|
|
1058
985
|
},
|
|
1059
986
|
"web ๐ Deploy | review ": {
|
|
1060
987
|
"allow_failure": false,
|
|
988
|
+
"artifacts": {
|
|
989
|
+
"reports": {
|
|
990
|
+
"dotenv": "gitlab_environment.env",
|
|
991
|
+
},
|
|
992
|
+
},
|
|
1061
993
|
"environment": {
|
|
1062
994
|
"auto_stop_in": "1 week",
|
|
1063
|
-
"name": "review/
|
|
995
|
+
"name": "review/$CI_COMMIT_REF_NAME/web",
|
|
1064
996
|
"on_stop": "web ๐ Stop โ ๏ธ | review ",
|
|
1065
|
-
"url": "
|
|
997
|
+
"url": "$CL_GITLAB_ENVIRONMENT_URL",
|
|
1066
998
|
},
|
|
1067
999
|
"image": "path/to/docker/kubernetes:the-version",
|
|
1068
1000
|
"interruptible": true,
|
|
@@ -1105,107 +1037,152 @@ mongodb:
|
|
|
1105
1037
|
},
|
|
1106
1038
|
],
|
|
1107
1039
|
"script": [
|
|
1108
|
-
"
|
|
1109
|
-
"
|
|
1110
|
-
"
|
|
1111
|
-
"
|
|
1112
|
-
"
|
|
1113
|
-
"
|
|
1114
|
-
"
|
|
1115
|
-
"
|
|
1116
|
-
"echo
|
|
1117
|
-
|
|
1118
|
-
|
|
1119
|
-
|
|
1120
|
-
"
|
|
1121
|
-
"
|
|
1122
|
-
"
|
|
1123
|
-
"
|
|
1124
|
-
"
|
|
1125
|
-
"
|
|
1126
|
-
"DOCKER_CACHE_IMAGE"
|
|
1127
|
-
"
|
|
1128
|
-
"DOCKER_IMAGE_NAME"
|
|
1129
|
-
"DOCKER_IMAGE_TAG"
|
|
1130
|
-
"
|
|
1131
|
-
"
|
|
1132
|
-
"
|
|
1133
|
-
"
|
|
1134
|
-
"
|
|
1135
|
-
"
|
|
1136
|
-
"
|
|
1137
|
-
"
|
|
1138
|
-
"
|
|
1139
|
-
"
|
|
1140
|
-
"
|
|
1141
|
-
"
|
|
1142
|
-
"
|
|
1143
|
-
"
|
|
1144
|
-
|
|
1145
|
-
"KUBE_NAMESPACE": "pan-my-app-review",
|
|
1146
|
-
"KUBE_VALUES": "env:
|
|
1040
|
+
"echo -e "\\e[0Ksection_start:$(date +%s):injectvars[collapsed=true]\\r\\e[0KInjecting variables"",
|
|
1041
|
+
"export ENV_SHORT="review"",
|
|
1042
|
+
"export APP_DIR="app"",
|
|
1043
|
+
"export ENV_TYPE="review"",
|
|
1044
|
+
"export BUILD_INFO_BUILD_ID="$(git describe --tags 2>/dev/null || git rev-parse HEAD)"",
|
|
1045
|
+
"export BUILD_INFO_BUILD_TIME="$CI_JOB_STARTED_AT"",
|
|
1046
|
+
"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")"",
|
|
1047
|
+
"export HOST="web.$([ -n "$CI_MERGE_REQUEST_IID" ] && echo "mr$CI_MERGE_REQUEST_IID" || { [ -n "$CI_COMMIT_REF_SLUG" ] && echo "$CI_COMMIT_REF_SLUG" || echo "unknown"; }).review.my-app.pan.panter.cloud"",
|
|
1048
|
+
"export ROOT_URL="https://web.$([ -n "$CI_MERGE_REQUEST_IID" ] && echo "mr$CI_MERGE_REQUEST_IID" || { [ -n "$CI_COMMIT_REF_SLUG" ] && echo "$CI_COMMIT_REF_SLUG" || echo "unknown"; }).review.my-app.pan.panter.cloud"",
|
|
1049
|
+
"export HOST_INTERNAL="web.$([ -n "$CI_MERGE_REQUEST_IID" ] && echo "mr$CI_MERGE_REQUEST_IID" || { [ -n "$CI_COMMIT_REF_SLUG" ] && echo "$CI_COMMIT_REF_SLUG" || echo "unknown"; }).review.my-app.pan.panter.cloud"",
|
|
1050
|
+
"export HOST_CANONICAL="web.$([ -n "$CI_MERGE_REQUEST_IID" ] && echo "mr$CI_MERGE_REQUEST_IID" || { [ -n "$CI_COMMIT_REF_SLUG" ] && echo "$CI_COMMIT_REF_SLUG" || echo "unknown"; }).review.my-app.pan.panter.cloud"",
|
|
1051
|
+
"export ROOT_URL_INTERNAL="https://web.$([ -n "$CI_MERGE_REQUEST_IID" ] && echo "mr$CI_MERGE_REQUEST_IID" || { [ -n "$CI_COMMIT_REF_SLUG" ] && echo "$CI_COMMIT_REF_SLUG" || echo "unknown"; }).review.my-app.pan.panter.cloud"",
|
|
1052
|
+
"export KUBE_NAMESPACE="pan-my-app-review"",
|
|
1053
|
+
"export KUBE_APP_NAME="$([ -n "$CI_MERGE_REQUEST_IID" ] && echo "mr$CI_MERGE_REQUEST_IID" || { [ -n "$CI_COMMIT_REF_SLUG" ] && echo "$CI_COMMIT_REF_SLUG" || echo "unknown"; })-web"",
|
|
1054
|
+
"export KUBE_APP_NAME_PREFIX="$([ -n "$CI_MERGE_REQUEST_IID" ] && echo "mr$CI_MERGE_REQUEST_IID" || { [ -n "$CI_COMMIT_REF_SLUG" ] && echo "$CI_COMMIT_REF_SLUG" || echo "unknown"; })-"",
|
|
1055
|
+
"export MONGODB_ROOT_PASSWORD="$CL_review_web_MONGODB_ROOT_PASSWORD"",
|
|
1056
|
+
"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\\",\\"KUBE_NAMESPACE\\",\\"KUBE_APP_NAME\\",\\"KUBE_APP_NAME_PREFIX\\",\\"MONGODB_ROOT_PASSWORD\\"]"",
|
|
1057
|
+
"export DOCKER_REGISTRY="$CI_REGISTRY"",
|
|
1058
|
+
"export DOCKER_CACHE_IMAGE="$CI_REGISTRY_IMAGE/caches/web"",
|
|
1059
|
+
"export DOCKER_IMAGE_NAME="review/web"",
|
|
1060
|
+
"export DOCKER_IMAGE="$CI_REGISTRY_IMAGE/$DOCKER_IMAGE_NAME"",
|
|
1061
|
+
"export DOCKER_IMAGE_TAG="$CI_COMMIT_SHA"",
|
|
1062
|
+
"export RELEASE_NAME="pan-my-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"; })-web"",
|
|
1063
|
+
"export HELM_EXPERIMENTAL_OCI="1"",
|
|
1064
|
+
"export KUBE_DOCKER_IMAGE_PULL_SECRET="gitlab-registry-web"",
|
|
1065
|
+
"export HELM_GITLAB_CHART_NAME="/helm-charts/the-panter-chart"",
|
|
1066
|
+
"export HELM_ARGS=""",
|
|
1067
|
+
"export COMPONENT_NAME="web"",
|
|
1068
|
+
"export BUILD_ID="$(git describe --tags 2>/dev/null || git rev-parse HEAD)"",
|
|
1069
|
+
"echo -e "\\e[0Ksection_end:$(date +%s):injectvars\\r\\e[0K"",
|
|
1070
|
+
"kubectl config set-cluster "kube-pan-my-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"; })-web" --server="$CL_review_web_KUBE_URL" --certificate-authority <(echo $CL_review_web_KUBE_CA_PEM | base64 -d) --embed-certs=true",
|
|
1071
|
+
"kubectl config set-credentials "kube-pan-my-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"; })-web" --token="$CL_review_web_KUBE_TOKEN"",
|
|
1072
|
+
"kubectl config set-context "kube-pan-my-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"; })-web" --cluster="kube-pan-my-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"; })-web" --user="kube-pan-my-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"; })-web" --namespace="pan-my-app-review"",
|
|
1073
|
+
"kubectl config use-context "kube-pan-my-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"; })-web"",
|
|
1074
|
+
"echo -e "\\e[0Ksection_start:$(date +%s):writeallvalues[collapsed=true]\\r\\e[0KWrite __all_values.yml for helm deployment"",
|
|
1075
|
+
"cat > __all_values.yml <<EOF
|
|
1076
|
+
env:
|
|
1147
1077
|
secret:
|
|
1148
|
-
MONGODB_ROOT_PASSWORD:
|
|
1149
|
-
|
|
1078
|
+
MONGODB_ROOT_PASSWORD: |-
|
|
1079
|
+
$(printf %s "$CL_review_web_MONGODB_ROOT_PASSWORD" | sed 's/^/ /')
|
|
1080
|
+
MONGO_URL: |-
|
|
1081
|
+
mongodb://root:$CL_review_web_MONGODB_ROOT_PASSWORD@$([ -n "$CI_MERGE_REQUEST_IID" ] && echo "mr$CI_MERGE_REQUEST_IID" || { [ -n "$CI_COMMIT_REF_SLUG" ] && echo "$CI_COMMIT_REF_SLUG" || echo "unknown"; })-web-mongodb.pan-my-app-review.svc.cluster.local:27017/app?authSource=admin
|
|
1150
1082
|
public:
|
|
1151
|
-
ENV_SHORT:
|
|
1152
|
-
|
|
1153
|
-
|
|
1154
|
-
|
|
1155
|
-
|
|
1156
|
-
|
|
1157
|
-
|
|
1158
|
-
|
|
1159
|
-
|
|
1160
|
-
|
|
1161
|
-
|
|
1162
|
-
|
|
1163
|
-
|
|
1164
|
-
|
|
1165
|
-
|
|
1083
|
+
ENV_SHORT: |-
|
|
1084
|
+
review
|
|
1085
|
+
APP_DIR: |-
|
|
1086
|
+
app
|
|
1087
|
+
ENV_TYPE: |-
|
|
1088
|
+
review
|
|
1089
|
+
BUILD_INFO_BUILD_ID: |-
|
|
1090
|
+
$(printf %s "$(git describe --tags 2>/dev/null || git rev-parse HEAD)" | sed 's/^/ /')
|
|
1091
|
+
BUILD_INFO_BUILD_TIME: |-
|
|
1092
|
+
$(printf %s "$CI_JOB_STARTED_AT" | sed 's/^/ /')
|
|
1093
|
+
BUILD_INFO_CURRENT_VERSION: |-
|
|
1094
|
+
$(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/^/ /')
|
|
1095
|
+
HOST: |-
|
|
1096
|
+
$(printf %s "web.$([ -n "$CI_MERGE_REQUEST_IID" ] && echo "mr$CI_MERGE_REQUEST_IID" || { [ -n "$CI_COMMIT_REF_SLUG" ] && echo "$CI_COMMIT_REF_SLUG" || echo "unknown"; }).review.my-app.pan.panter.cloud" | sed 's/^/ /')
|
|
1097
|
+
ROOT_URL: |-
|
|
1098
|
+
$(printf %s "https://web.$([ -n "$CI_MERGE_REQUEST_IID" ] && echo "mr$CI_MERGE_REQUEST_IID" || { [ -n "$CI_COMMIT_REF_SLUG" ] && echo "$CI_COMMIT_REF_SLUG" || echo "unknown"; }).review.my-app.pan.panter.cloud" | sed 's/^/ /')
|
|
1099
|
+
HOST_INTERNAL: |-
|
|
1100
|
+
$(printf %s "web.$([ -n "$CI_MERGE_REQUEST_IID" ] && echo "mr$CI_MERGE_REQUEST_IID" || { [ -n "$CI_COMMIT_REF_SLUG" ] && echo "$CI_COMMIT_REF_SLUG" || echo "unknown"; }).review.my-app.pan.panter.cloud" | sed 's/^/ /')
|
|
1101
|
+
HOST_CANONICAL: |-
|
|
1102
|
+
$(printf %s "web.$([ -n "$CI_MERGE_REQUEST_IID" ] && echo "mr$CI_MERGE_REQUEST_IID" || { [ -n "$CI_COMMIT_REF_SLUG" ] && echo "$CI_COMMIT_REF_SLUG" || echo "unknown"; }).review.my-app.pan.panter.cloud" | sed 's/^/ /')
|
|
1103
|
+
ROOT_URL_INTERNAL: |-
|
|
1104
|
+
$(printf %s "https://web.$([ -n "$CI_MERGE_REQUEST_IID" ] && echo "mr$CI_MERGE_REQUEST_IID" || { [ -n "$CI_COMMIT_REF_SLUG" ] && echo "$CI_COMMIT_REF_SLUG" || echo "unknown"; }).review.my-app.pan.panter.cloud" | sed 's/^/ /')
|
|
1105
|
+
KUBE_NAMESPACE: |-
|
|
1106
|
+
pan-my-app-review
|
|
1107
|
+
KUBE_APP_NAME: |-
|
|
1108
|
+
$(printf %s "$([ -n "$CI_MERGE_REQUEST_IID" ] && echo "mr$CI_MERGE_REQUEST_IID" || { [ -n "$CI_COMMIT_REF_SLUG" ] && echo "$CI_COMMIT_REF_SLUG" || echo "unknown"; })-web" | sed 's/^/ /')
|
|
1109
|
+
KUBE_APP_NAME_PREFIX: |-
|
|
1110
|
+
$(printf %s "$([ -n "$CI_MERGE_REQUEST_IID" ] && echo "mr$CI_MERGE_REQUEST_IID" || { [ -n "$CI_COMMIT_REF_SLUG" ] && echo "$CI_COMMIT_REF_SLUG" || echo "unknown"; })-" | sed 's/^/ /')
|
|
1111
|
+
_ALL_ENV_VAR_KEYS: |-
|
|
1112
|
+
["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","KUBE_NAMESPACE","KUBE_APP_NAME","KUBE_APP_NAME_PREFIX","MONGODB_ROOT_PASSWORD"]
|
|
1166
1113
|
application:
|
|
1167
|
-
host:
|
|
1168
|
-
|
|
1114
|
+
host: |-
|
|
1115
|
+
$(printf %s "web.$([ -n "$CI_MERGE_REQUEST_IID" ] && echo "mr$CI_MERGE_REQUEST_IID" || { [ -n "$CI_COMMIT_REF_SLUG" ] && echo "$CI_COMMIT_REF_SLUG" || echo "unknown"; }).review.my-app.pan.panter.cloud" | sed 's/^/ /')
|
|
1116
|
+
command: |-
|
|
1117
|
+
node main.js
|
|
1169
1118
|
livenessProbe:
|
|
1170
1119
|
httpGet:
|
|
1171
|
-
path:
|
|
1120
|
+
path: |-
|
|
1121
|
+
__health
|
|
1172
1122
|
readinessProbe:
|
|
1173
1123
|
httpGet:
|
|
1174
|
-
path:
|
|
1124
|
+
path: |-
|
|
1125
|
+
__health
|
|
1175
1126
|
startupProbe:
|
|
1176
1127
|
httpGet:
|
|
1177
|
-
path:
|
|
1128
|
+
path: |-
|
|
1129
|
+
__health
|
|
1178
1130
|
worker:
|
|
1179
1131
|
enabled: true
|
|
1180
1132
|
mongodb:
|
|
1181
1133
|
enabled: true
|
|
1182
1134
|
auth:
|
|
1183
1135
|
enabled: true
|
|
1184
|
-
rootPassword:
|
|
1185
|
-
|
|
1136
|
+
rootPassword: |-
|
|
1137
|
+
$CL_review_web_MONGODB_ROOT_PASSWORD
|
|
1138
|
+
replicaSetKey: |-
|
|
1139
|
+
$CL_review_web_MONGODB_REPLICASET_KEY
|
|
1186
1140
|
persistence:
|
|
1187
|
-
storageClass:
|
|
1141
|
+
storageClass: |-
|
|
1142
|
+
standard-rwo
|
|
1188
1143
|
backup:
|
|
1189
1144
|
enabled: false
|
|
1190
|
-
hostToBackup:
|
|
1191
|
-
|
|
1192
|
-
|
|
1193
|
-
|
|
1194
|
-
|
|
1195
|
-
|
|
1145
|
+
hostToBackup: |-
|
|
1146
|
+
$([ -n "$CI_MERGE_REQUEST_IID" ] && echo "mr$CI_MERGE_REQUEST_IID" || { [ -n "$CI_COMMIT_REF_SLUG" ] && echo "$CI_COMMIT_REF_SLUG" || echo "unknown"; })-web-mongodb.pan-my-app-review.svc.cluster.local:27017
|
|
1147
|
+
pvcToBackup: |-
|
|
1148
|
+
$([ -n "$CI_MERGE_REQUEST_IID" ] && echo "mr$CI_MERGE_REQUEST_IID" || { [ -n "$CI_COMMIT_REF_SLUG" ] && echo "$CI_COMMIT_REF_SLUG" || echo "unknown"; })-web-mongodb
|
|
1149
|
+
image: |-
|
|
1150
|
+
mrelite/kubectlmongoshell:v1.0
|
|
1151
|
+
schedule: |-
|
|
1152
|
+
0 4 * * *
|
|
1153
|
+
volumeSnapshotClass: |-
|
|
1154
|
+
snapshotclass
|
|
1155
|
+
architecture: |-
|
|
1156
|
+
standalone
|
|
1157
|
+
|
|
1158
|
+
EOF
|
|
1196
1159
|
",
|
|
1197
|
-
"
|
|
1198
|
-
"
|
|
1199
|
-
"
|
|
1200
|
-
"
|
|
1201
|
-
"
|
|
1160
|
+
"echo -e "\\e[0Ksection_end:$(date +%s):writeallvalues\\r\\e[0K"",
|
|
1161
|
+
"kubernetesCreateSecret",
|
|
1162
|
+
"kubernetesDeploy",
|
|
1163
|
+
"echo Uploading SBOM to Dependency Track",
|
|
1164
|
+
"/dtrackuploader https://dep.panter.swiss/ "$DT_KEY_PROD" upload "pan-my-app/web" "https://web.$([ -n "$CI_MERGE_REQUEST_IID" ] && echo "mr$CI_MERGE_REQUEST_IID" || { [ -n "$CI_COMMIT_REF_SLUG" ] && echo "$CI_COMMIT_REF_SLUG" || echo "unknown"; }).review.my-app.pan.panter.cloud" "__sbom.json" vex.json || true",
|
|
1165
|
+
"echo deployment successful ๐ป",
|
|
1166
|
+
"echo "CL_GITLAB_ENVIRONMENT_URL=https://web.$([ -n "$CI_MERGE_REQUEST_IID" ] && echo "mr$CI_MERGE_REQUEST_IID" || { [ -n "$CI_COMMIT_REF_SLUG" ] && echo "$CI_COMMIT_REF_SLUG" || echo "unknown"; }).review.my-app.pan.panter.cloud" >> gitlab_environment.env",
|
|
1167
|
+
],
|
|
1168
|
+
"stage": "deploy review",
|
|
1169
|
+
"variables": {
|
|
1170
|
+
"KUBERNETES_CPU_REQUEST": "0.5",
|
|
1171
|
+
"KUBERNETES_MEMORY_LIMIT": "400Mi",
|
|
1172
|
+
"KUBERNETES_MEMORY_REQUEST": "200Mi",
|
|
1202
1173
|
},
|
|
1203
1174
|
},
|
|
1204
1175
|
"web ๐ Stop โ ๏ธ | review ": {
|
|
1176
|
+
"allow_failure": true,
|
|
1177
|
+
"artifacts": {
|
|
1178
|
+
"reports": {
|
|
1179
|
+
"dotenv": "gitlab_environment.env",
|
|
1180
|
+
},
|
|
1181
|
+
},
|
|
1205
1182
|
"environment": {
|
|
1206
1183
|
"action": "stop",
|
|
1207
|
-
"name": "review/
|
|
1208
|
-
"url": "
|
|
1184
|
+
"name": "review/$CI_COMMIT_REF_NAME/web",
|
|
1185
|
+
"url": "$CL_GITLAB_ENVIRONMENT_URL",
|
|
1209
1186
|
},
|
|
1210
1187
|
"image": "path/to/docker/kubernetes:the-version",
|
|
1211
1188
|
"interruptible": true,
|
|
@@ -1219,104 +1196,54 @@ mongodb:
|
|
|
1219
1196
|
},
|
|
1220
1197
|
"rules": [
|
|
1221
1198
|
{
|
|
1222
|
-
"allow_failure": true,
|
|
1223
1199
|
"if": "$CI_COMMIT_BRANCH =~ /^[0-9]+\\.([0-9]+|x)\\.x$/",
|
|
1224
1200
|
"when": "on_success",
|
|
1225
1201
|
},
|
|
1226
1202
|
{
|
|
1227
|
-
"allow_failure": true,
|
|
1228
1203
|
"when": "manual",
|
|
1229
1204
|
},
|
|
1230
1205
|
],
|
|
1231
1206
|
"script": [
|
|
1232
|
-
"
|
|
1233
|
-
"
|
|
1234
|
-
"
|
|
1235
|
-
"
|
|
1207
|
+
"echo -e "\\e[0Ksection_start:$(date +%s):injectvars[collapsed=true]\\r\\e[0KInjecting variables"",
|
|
1208
|
+
"export ENV_SHORT="review"",
|
|
1209
|
+
"export APP_DIR="app"",
|
|
1210
|
+
"export ENV_TYPE="review"",
|
|
1211
|
+
"export BUILD_INFO_BUILD_ID="$(git describe --tags 2>/dev/null || git rev-parse HEAD)"",
|
|
1212
|
+
"export BUILD_INFO_BUILD_TIME="$CI_JOB_STARTED_AT"",
|
|
1213
|
+
"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")"",
|
|
1214
|
+
"export HOST="web.$([ -n "$CI_MERGE_REQUEST_IID" ] && echo "mr$CI_MERGE_REQUEST_IID" || { [ -n "$CI_COMMIT_REF_SLUG" ] && echo "$CI_COMMIT_REF_SLUG" || echo "unknown"; }).review.my-app.pan.panter.cloud"",
|
|
1215
|
+
"export ROOT_URL="https://web.$([ -n "$CI_MERGE_REQUEST_IID" ] && echo "mr$CI_MERGE_REQUEST_IID" || { [ -n "$CI_COMMIT_REF_SLUG" ] && echo "$CI_COMMIT_REF_SLUG" || echo "unknown"; }).review.my-app.pan.panter.cloud"",
|
|
1216
|
+
"export HOST_INTERNAL="web.$([ -n "$CI_MERGE_REQUEST_IID" ] && echo "mr$CI_MERGE_REQUEST_IID" || { [ -n "$CI_COMMIT_REF_SLUG" ] && echo "$CI_COMMIT_REF_SLUG" || echo "unknown"; }).review.my-app.pan.panter.cloud"",
|
|
1217
|
+
"export HOST_CANONICAL="web.$([ -n "$CI_MERGE_REQUEST_IID" ] && echo "mr$CI_MERGE_REQUEST_IID" || { [ -n "$CI_COMMIT_REF_SLUG" ] && echo "$CI_COMMIT_REF_SLUG" || echo "unknown"; }).review.my-app.pan.panter.cloud"",
|
|
1218
|
+
"export ROOT_URL_INTERNAL="https://web.$([ -n "$CI_MERGE_REQUEST_IID" ] && echo "mr$CI_MERGE_REQUEST_IID" || { [ -n "$CI_COMMIT_REF_SLUG" ] && echo "$CI_COMMIT_REF_SLUG" || echo "unknown"; }).review.my-app.pan.panter.cloud"",
|
|
1219
|
+
"export KUBE_NAMESPACE="pan-my-app-review"",
|
|
1220
|
+
"export KUBE_APP_NAME="$([ -n "$CI_MERGE_REQUEST_IID" ] && echo "mr$CI_MERGE_REQUEST_IID" || { [ -n "$CI_COMMIT_REF_SLUG" ] && echo "$CI_COMMIT_REF_SLUG" || echo "unknown"; })-web"",
|
|
1221
|
+
"export KUBE_APP_NAME_PREFIX="$([ -n "$CI_MERGE_REQUEST_IID" ] && echo "mr$CI_MERGE_REQUEST_IID" || { [ -n "$CI_COMMIT_REF_SLUG" ] && echo "$CI_COMMIT_REF_SLUG" || echo "unknown"; })-"",
|
|
1222
|
+
"export MONGODB_ROOT_PASSWORD="$CL_review_web_MONGODB_ROOT_PASSWORD"",
|
|
1223
|
+
"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\\",\\"KUBE_NAMESPACE\\",\\"KUBE_APP_NAME\\",\\"KUBE_APP_NAME_PREFIX\\",\\"MONGODB_ROOT_PASSWORD\\"]"",
|
|
1224
|
+
"export RELEASE_NAME="pan-my-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"; })-web"",
|
|
1225
|
+
"export HELM_EXPERIMENTAL_OCI="1"",
|
|
1226
|
+
"export KUBE_DOCKER_IMAGE_PULL_SECRET="gitlab-registry-web"",
|
|
1227
|
+
"export HELM_GITLAB_CHART_NAME="/helm-charts/the-panter-chart"",
|
|
1228
|
+
"export HELM_ARGS=""",
|
|
1229
|
+
"export COMPONENT_NAME="web"",
|
|
1230
|
+
"export BUILD_ID="$(git describe --tags 2>/dev/null || git rev-parse HEAD)"",
|
|
1231
|
+
"echo -e "\\e[0Ksection_end:$(date +%s):injectvars\\r\\e[0K"",
|
|
1232
|
+
"kubectl config set-cluster "kube-pan-my-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"; })-web" --server="$CL_review_web_KUBE_URL" --certificate-authority <(echo $CL_review_web_KUBE_CA_PEM | base64 -d) --embed-certs=true",
|
|
1233
|
+
"kubectl config set-credentials "kube-pan-my-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"; })-web" --token="$CL_review_web_KUBE_TOKEN"",
|
|
1234
|
+
"kubectl config set-context "kube-pan-my-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"; })-web" --cluster="kube-pan-my-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"; })-web" --user="kube-pan-my-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"; })-web" --namespace="pan-my-app-review"",
|
|
1235
|
+
"kubectl config use-context "kube-pan-my-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"; })-web"",
|
|
1236
1236
|
"kubernetesDelete",
|
|
1237
1237
|
"echo Disabling component in Dependency Track",
|
|
1238
|
-
"/dtrackuploader https://dep.panter.swiss/ "$DT_KEY_PROD" disable "pan-my-app/web" "https://web.
|
|
1238
|
+
"/dtrackuploader https://dep.panter.swiss/ "$DT_KEY_PROD" disable "pan-my-app/web" "https://web.$([ -n "$CI_MERGE_REQUEST_IID" ] && echo "mr$CI_MERGE_REQUEST_IID" || { [ -n "$CI_COMMIT_REF_SLUG" ] && echo "$CI_COMMIT_REF_SLUG" || echo "unknown"; }).review.my-app.pan.panter.cloud" || true",
|
|
1239
|
+
"echo "CL_GITLAB_ENVIRONMENT_URL=https://web.$([ -n "$CI_MERGE_REQUEST_IID" ] && echo "mr$CI_MERGE_REQUEST_IID" || { [ -n "$CI_COMMIT_REF_SLUG" ] && echo "$CI_COMMIT_REF_SLUG" || echo "unknown"; }).review.my-app.pan.panter.cloud" >> gitlab_environment.env",
|
|
1239
1240
|
],
|
|
1240
1241
|
"stage": "stop review",
|
|
1241
1242
|
"variables": {
|
|
1242
|
-
"APP_DIR": "app",
|
|
1243
|
-
"BUILD_ID": "some-id",
|
|
1244
|
-
"BUILD_INFO_BUILD_TIME": "01-01-2023 12:13:14",
|
|
1245
|
-
"BUILD_INFO_CURRENT_VERSION": "3.2.1",
|
|
1246
|
-
"BUILD_INFO_ID": "some-id",
|
|
1247
|
-
"COMPONENT_NAME": "web",
|
|
1248
|
-
"ENV_SHORT": "review",
|
|
1249
|
-
"ENV_TYPE": "review",
|
|
1250
1243
|
"GIT_STRATEGY": "none",
|
|
1251
|
-
"HELM_ARGS": "",
|
|
1252
|
-
"HELM_EXPERIMENTAL_OCI": "1",
|
|
1253
|
-
"HELM_GITLAB_CHART_NAME": "/helm-charts/the-panter-chart",
|
|
1254
|
-
"HOST": "web.mr1234.review.my-app.pan.panter.cloud",
|
|
1255
|
-
"HOST_CANONICAL": "web.mr1234.review.my-app.pan.panter.cloud",
|
|
1256
|
-
"HOST_INTERNAL": "web.mr1234.review.my-app.pan.panter.cloud",
|
|
1257
1244
|
"KUBERNETES_CPU_REQUEST": "0.5",
|
|
1258
1245
|
"KUBERNETES_MEMORY_LIMIT": "400Mi",
|
|
1259
1246
|
"KUBERNETES_MEMORY_REQUEST": "200Mi",
|
|
1260
|
-
"KUBE_APP_NAME": "mr1234-web",
|
|
1261
|
-
"KUBE_APP_NAME_PREFIX": "mr1234-",
|
|
1262
|
-
"KUBE_DOCKER_IMAGE_PULL_SECRET": "gitlab-registry-web",
|
|
1263
|
-
"KUBE_NAMESPACE": "pan-my-app-review",
|
|
1264
|
-
"KUBE_VALUES": "env:
|
|
1265
|
-
secret:
|
|
1266
|
-
MONGODB_ROOT_PASSWORD: '$CL_review_web_MONGODB_ROOT_PASSWORD'
|
|
1267
|
-
MONGO_URL: 'mongodb://root:$CL_review_web_MONGODB_ROOT_PASSWORD@mr1234-web-mongodb.pan-my-app-review.svc.cluster.local:27017/app?authSource=admin'
|
|
1268
|
-
public:
|
|
1269
|
-
ENV_SHORT: 'review'
|
|
1270
|
-
APP_DIR: 'app'
|
|
1271
|
-
ENV_TYPE: 'review'
|
|
1272
|
-
BUILD_INFO_ID: 'some-id'
|
|
1273
|
-
BUILD_INFO_BUILD_TIME: '01-01-2023 12:13:14'
|
|
1274
|
-
BUILD_INFO_CURRENT_VERSION: '3.2.1'
|
|
1275
|
-
HOST: 'web.mr1234.review.my-app.pan.panter.cloud'
|
|
1276
|
-
ROOT_URL: 'https://web.mr1234.review.my-app.pan.panter.cloud'
|
|
1277
|
-
HOST_CANONICAL: 'web.mr1234.review.my-app.pan.panter.cloud'
|
|
1278
|
-
ROOT_URL_INTERNAL: 'https://web.mr1234.review.my-app.pan.panter.cloud'
|
|
1279
|
-
KUBE_NAMESPACE: 'pan-my-app-review'
|
|
1280
|
-
KUBE_APP_NAME: 'mr1234-web'
|
|
1281
|
-
KUBE_APP_NAME_PREFIX: 'mr1234-'
|
|
1282
|
-
HOST_INTERNAL: 'web.mr1234.review.my-app.pan.panter.cloud'
|
|
1283
|
-
_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","KUBE_NAMESPACE","KUBE_APP_NAME","KUBE_APP_NAME_PREFIX","HOST_INTERNAL","MONGODB_ROOT_PASSWORD"]'
|
|
1284
|
-
application:
|
|
1285
|
-
host: 'web.mr1234.review.my-app.pan.panter.cloud'
|
|
1286
|
-
command: 'node main.js'
|
|
1287
|
-
livenessProbe:
|
|
1288
|
-
httpGet:
|
|
1289
|
-
path: '__health'
|
|
1290
|
-
readinessProbe:
|
|
1291
|
-
httpGet:
|
|
1292
|
-
path: '__health'
|
|
1293
|
-
startupProbe:
|
|
1294
|
-
httpGet:
|
|
1295
|
-
path: '__health'
|
|
1296
|
-
worker:
|
|
1297
|
-
enabled: true
|
|
1298
|
-
mongodb:
|
|
1299
|
-
enabled: true
|
|
1300
|
-
auth:
|
|
1301
|
-
enabled: true
|
|
1302
|
-
rootPassword: '$CL_review_web_MONGODB_ROOT_PASSWORD'
|
|
1303
|
-
replicaSetKey: '$CL_review_web_MONGODB_REPLICASET_KEY'
|
|
1304
|
-
persistence:
|
|
1305
|
-
storageClass: 'standard-rwo'
|
|
1306
|
-
backup:
|
|
1307
|
-
enabled: false
|
|
1308
|
-
hostToBackup: 'mr1234-web-mongodb.pan-my-app-review.svc.cluster.local:27017'
|
|
1309
|
-
pvcToBackup: 'mr1234-web-mongodb'
|
|
1310
|
-
image: 'mrelite/kubectlmongoshell:v1.0'
|
|
1311
|
-
schedule: '0 4 * * *'
|
|
1312
|
-
volumeSnapshotClass: 'snapshotclass'
|
|
1313
|
-
architecture: 'standalone'
|
|
1314
|
-
",
|
|
1315
|
-
"MONGODB_ROOT_PASSWORD": "$CL_review_web_MONGODB_ROOT_PASSWORD",
|
|
1316
|
-
"RELEASE_NAME": "pan-my-app-review-mr1234-web",
|
|
1317
|
-
"ROOT_URL": "https://web.mr1234.review.my-app.pan.panter.cloud",
|
|
1318
|
-
"ROOT_URL_INTERNAL": "https://web.mr1234.review.my-app.pan.panter.cloud",
|
|
1319
|
-
"_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","KUBE_NAMESPACE","KUBE_APP_NAME","KUBE_APP_NAME_PREFIX","HOST_INTERNAL","MONGODB_ROOT_PASSWORD"]",
|
|
1320
1247
|
},
|
|
1321
1248
|
},
|
|
1322
1249
|
"web ๐ก audit": {
|
|
@@ -1332,12 +1259,14 @@ mongodb:
|
|
|
1332
1259
|
],
|
|
1333
1260
|
},
|
|
1334
1261
|
"script": [
|
|
1262
|
+
"echo -e "\\e[0Ksection_start:$(date +%s):injectvars[collapsed=true]\\r\\e[0KInjecting variables"",
|
|
1263
|
+
"export APP_PATH="app"",
|
|
1264
|
+
"echo -e "\\e[0Ksection_end:$(date +%s):injectvars\\r\\e[0K"",
|
|
1335
1265
|
"cd app",
|
|
1336
1266
|
"yarn npm audit --environment production",
|
|
1337
1267
|
],
|
|
1338
1268
|
"stage": "test",
|
|
1339
1269
|
"variables": {
|
|
1340
|
-
"APP_PATH": "app",
|
|
1341
1270
|
"KUBERNETES_CPU_REQUEST": "0.5",
|
|
1342
1271
|
"KUBERNETES_MEMORY_LIMIT": "4Gi",
|
|
1343
1272
|
"KUBERNETES_MEMORY_REQUEST": "2Gi",
|
|
@@ -1371,6 +1300,9 @@ mongodb:
|
|
|
1371
1300
|
],
|
|
1372
1301
|
},
|
|
1373
1302
|
"script": [
|
|
1303
|
+
"echo -e "\\e[0Ksection_start:$(date +%s):injectvars[collapsed=true]\\r\\e[0KInjecting variables"",
|
|
1304
|
+
"export APP_PATH="app"",
|
|
1305
|
+
"echo -e "\\e[0Ksection_end:$(date +%s):injectvars\\r\\e[0K"",
|
|
1374
1306
|
"echo -e "\\e[0Ksection_start:$(date +%s):nodeinstall[collapsed=true]\\r\\e[0KEnsure node version"",
|
|
1375
1307
|
"if [ -f ~/.nvm/nvm.sh ]; then source ~/.nvm/nvm.sh; fi",
|
|
1376
1308
|
"if command -v nvm &> /dev/null && [ -f ./.nvmrc ]; then nvm install; fi",
|
|
@@ -1387,7 +1319,6 @@ mongodb:
|
|
|
1387
1319
|
],
|
|
1388
1320
|
"stage": "test",
|
|
1389
1321
|
"variables": {
|
|
1390
|
-
"APP_PATH": "app",
|
|
1391
1322
|
"KUBERNETES_CPU_REQUEST": "0.5",
|
|
1392
1323
|
"KUBERNETES_MEMORY_LIMIT": "4Gi",
|
|
1393
1324
|
"KUBERNETES_MEMORY_REQUEST": "2Gi",
|
|
@@ -1411,6 +1342,8 @@ mongodb:
|
|
|
1411
1342
|
],
|
|
1412
1343
|
},
|
|
1413
1344
|
"script": [
|
|
1345
|
+
"echo -e "\\e[0Ksection_start:$(date +%s):injectvars[collapsed=true]\\r\\e[0KInjecting variables"",
|
|
1346
|
+
"echo -e "\\e[0Ksection_end:$(date +%s):injectvars\\r\\e[0K"",
|
|
1414
1347
|
"trivy fs --quiet --format cyclonedx --output "__sbom.json" app",
|
|
1415
1348
|
],
|
|
1416
1349
|
"stage": "build",
|
|
@@ -1463,7 +1396,7 @@ mongodb:
|
|
|
1463
1396
|
],
|
|
1464
1397
|
"variables": {
|
|
1465
1398
|
"FF_USE_FASTZIP": "true",
|
|
1466
|
-
"GIT_DEPTH": 1,
|
|
1399
|
+
"GIT_DEPTH": "1",
|
|
1467
1400
|
},
|
|
1468
1401
|
"workflow": {
|
|
1469
1402
|
"rules": [
|
|
@@ -1494,10 +1427,16 @@ mongodb:
|
|
|
1494
1427
|
"image": "path/to/docker/jobs-default:the-version",
|
|
1495
1428
|
"jobs": {
|
|
1496
1429
|
"web โฉ๏ธ Rollback โ ๏ธ | prod ": {
|
|
1430
|
+
"allow_failure": true,
|
|
1431
|
+
"artifacts": {
|
|
1432
|
+
"reports": {
|
|
1433
|
+
"dotenv": "gitlab_environment.env",
|
|
1434
|
+
},
|
|
1435
|
+
},
|
|
1497
1436
|
"environment": {
|
|
1498
1437
|
"action": "access",
|
|
1499
1438
|
"name": "prod/web",
|
|
1500
|
-
"url": "
|
|
1439
|
+
"url": "$CL_GITLAB_ENVIRONMENT_URL",
|
|
1501
1440
|
},
|
|
1502
1441
|
"image": "path/to/docker/kubernetes:the-version",
|
|
1503
1442
|
"interruptible": true,
|
|
@@ -1511,116 +1450,62 @@ mongodb:
|
|
|
1511
1450
|
},
|
|
1512
1451
|
"rules": [
|
|
1513
1452
|
{
|
|
1514
|
-
"allow_failure": true,
|
|
1515
1453
|
"when": "manual",
|
|
1516
1454
|
},
|
|
1517
1455
|
],
|
|
1518
1456
|
"script": [
|
|
1457
|
+
"echo -e "\\e[0Ksection_start:$(date +%s):injectvars[collapsed=true]\\r\\e[0KInjecting variables"",
|
|
1458
|
+
"export ENV_SHORT="prod"",
|
|
1459
|
+
"export APP_DIR="app"",
|
|
1460
|
+
"export ENV_TYPE="prod"",
|
|
1461
|
+
"export BUILD_INFO_BUILD_ID="$(git describe --tags 2>/dev/null || git rev-parse HEAD)"",
|
|
1462
|
+
"export BUILD_INFO_BUILD_TIME="$CI_JOB_STARTED_AT"",
|
|
1463
|
+
"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")"",
|
|
1464
|
+
"export HOST="www.example.com"",
|
|
1465
|
+
"export ROOT_URL="https://www.example.com"",
|
|
1466
|
+
"export HOST_INTERNAL="web.prod.my-app.pan.panter.cloud"",
|
|
1467
|
+
"export HOST_CANONICAL="web.prod.my-app.pan.panter.cloud"",
|
|
1468
|
+
"export ROOT_URL_INTERNAL="https://web.prod.my-app.pan.panter.cloud"",
|
|
1469
|
+
"export KUBE_NAMESPACE="pan-my-app-prod"",
|
|
1470
|
+
"export KUBE_APP_NAME="web"",
|
|
1471
|
+
"export KUBE_APP_NAME_PREFIX=""",
|
|
1472
|
+
"export MONGODB_ROOT_PASSWORD="$CL_prod_web_MONGODB_ROOT_PASSWORD"",
|
|
1473
|
+
"export MONGODB_REPLICASET_KEY="$CL_prod_web_MONGODB_REPLICASET_KEY"",
|
|
1474
|
+
"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\\",\\"KUBE_NAMESPACE\\",\\"KUBE_APP_NAME\\",\\"KUBE_APP_NAME_PREFIX\\",\\"MONGODB_ROOT_PASSWORD\\",\\"MONGODB_REPLICASET_KEY\\"]"",
|
|
1475
|
+
"export RELEASE_NAME="pan-my-app-prod-web"",
|
|
1476
|
+
"export HELM_EXPERIMENTAL_OCI="1"",
|
|
1477
|
+
"export KUBE_DOCKER_IMAGE_PULL_SECRET="gitlab-registry-web"",
|
|
1478
|
+
"export HELM_GITLAB_CHART_NAME="/helm-charts/the-panter-chart"",
|
|
1479
|
+
"export HELM_ARGS=""",
|
|
1480
|
+
"export COMPONENT_NAME="web"",
|
|
1481
|
+
"export BUILD_ID="$(git describe --tags 2>/dev/null || git rev-parse HEAD)"",
|
|
1482
|
+
"echo -e "\\e[0Ksection_end:$(date +%s):injectvars\\r\\e[0K"",
|
|
1519
1483
|
"kubectl config set-cluster "kube-pan-my-app-prod-web" --server="$CL_prod_web_KUBE_URL" --certificate-authority <(echo $CL_prod_web_KUBE_CA_PEM | base64 -d) --embed-certs=true",
|
|
1520
1484
|
"kubectl config set-credentials "kube-pan-my-app-prod-web" --token="$CL_prod_web_KUBE_TOKEN"",
|
|
1521
1485
|
"kubectl config set-context "kube-pan-my-app-prod-web" --cluster="kube-pan-my-app-prod-web" --user="kube-pan-my-app-prod-web" --namespace="pan-my-app-prod"",
|
|
1522
1486
|
"kubectl config use-context "kube-pan-my-app-prod-web"",
|
|
1523
1487
|
"kubernetesRollback",
|
|
1488
|
+
"echo "CL_GITLAB_ENVIRONMENT_URL=https://www.example.com" >> gitlab_environment.env",
|
|
1524
1489
|
],
|
|
1525
1490
|
"stage": "rollback prod",
|
|
1526
1491
|
"variables": {
|
|
1527
|
-
"APP_DIR": "app",
|
|
1528
|
-
"BUILD_ID": "some-id",
|
|
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
|
-
"COMPONENT_NAME": "web",
|
|
1533
|
-
"ENV_SHORT": "prod",
|
|
1534
|
-
"ENV_TYPE": "prod",
|
|
1535
1492
|
"GIT_STRATEGY": "none",
|
|
1536
|
-
"HELM_ARGS": "",
|
|
1537
|
-
"HELM_EXPERIMENTAL_OCI": "1",
|
|
1538
|
-
"HELM_GITLAB_CHART_NAME": "/helm-charts/the-panter-chart",
|
|
1539
|
-
"HOST": "www.example.com",
|
|
1540
|
-
"HOST_CANONICAL": "web.prod.my-app.pan.panter.cloud",
|
|
1541
|
-
"HOST_INTERNAL": "web.prod.my-app.pan.panter.cloud",
|
|
1542
1493
|
"KUBERNETES_CPU_REQUEST": "0.5",
|
|
1543
1494
|
"KUBERNETES_MEMORY_LIMIT": "400Mi",
|
|
1544
1495
|
"KUBERNETES_MEMORY_REQUEST": "200Mi",
|
|
1545
|
-
"KUBE_APP_NAME": "web",
|
|
1546
|
-
"KUBE_APP_NAME_PREFIX": "",
|
|
1547
|
-
"KUBE_DOCKER_IMAGE_PULL_SECRET": "gitlab-registry-web",
|
|
1548
|
-
"KUBE_NAMESPACE": "pan-my-app-prod",
|
|
1549
|
-
"KUBE_VALUES": "env:
|
|
1550
|
-
secret:
|
|
1551
|
-
MONGODB_ROOT_PASSWORD: '$CL_prod_web_MONGODB_ROOT_PASSWORD'
|
|
1552
|
-
MONGODB_REPLICASET_KEY: '$CL_prod_web_MONGODB_REPLICASET_KEY'
|
|
1553
|
-
MONGO_URL: 'mongodb://root:$CL_prod_web_MONGODB_ROOT_PASSWORD@web-mongodb-0.web-mongodb-headless.pan-my-app-prod.svc.cluster.local:27017,web-mongodb-1.web-mongodb-headless.pan-my-app-prod.svc.cluster.local:27017/app?replicaSet=rs0&authSource=admin'
|
|
1554
|
-
MONGO_OPLOG_URL: 'mongodb://root:$CL_prod_web_MONGODB_ROOT_PASSWORD@web-mongodb-0.web-mongodb-headless.pan-my-app-prod.svc.cluster.local:27017,web-mongodb-1.web-mongodb-headless.pan-my-app-prod.svc.cluster.local:27017/local?replicaSet=rs0&authSource=admin'
|
|
1555
|
-
public:
|
|
1556
|
-
ENV_SHORT: 'prod'
|
|
1557
|
-
APP_DIR: 'app'
|
|
1558
|
-
ENV_TYPE: 'prod'
|
|
1559
|
-
BUILD_INFO_ID: 'some-id'
|
|
1560
|
-
BUILD_INFO_BUILD_TIME: '01-01-2023 12:13:14'
|
|
1561
|
-
BUILD_INFO_CURRENT_VERSION: '3.2.1'
|
|
1562
|
-
HOST: 'www.example.com'
|
|
1563
|
-
ROOT_URL: 'https://www.example.com'
|
|
1564
|
-
HOST_CANONICAL: 'web.prod.my-app.pan.panter.cloud'
|
|
1565
|
-
ROOT_URL_INTERNAL: 'https://web.prod.my-app.pan.panter.cloud'
|
|
1566
|
-
KUBE_NAMESPACE: 'pan-my-app-prod'
|
|
1567
|
-
KUBE_APP_NAME: 'web'
|
|
1568
|
-
KUBE_APP_NAME_PREFIX: ''
|
|
1569
|
-
HOST_INTERNAL: 'web.prod.my-app.pan.panter.cloud'
|
|
1570
|
-
_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","KUBE_NAMESPACE","KUBE_APP_NAME","KUBE_APP_NAME_PREFIX","HOST_INTERNAL","MONGODB_ROOT_PASSWORD","MONGODB_REPLICASET_KEY"]'
|
|
1571
|
-
application:
|
|
1572
|
-
host: 'www.example.com'
|
|
1573
|
-
command: 'node main.js'
|
|
1574
|
-
livenessProbe:
|
|
1575
|
-
httpGet:
|
|
1576
|
-
path: '__health'
|
|
1577
|
-
readinessProbe:
|
|
1578
|
-
httpGet:
|
|
1579
|
-
path: '__health'
|
|
1580
|
-
startupProbe:
|
|
1581
|
-
httpGet:
|
|
1582
|
-
path: '__health'
|
|
1583
|
-
worker:
|
|
1584
|
-
enabled: true
|
|
1585
|
-
redirects:
|
|
1586
|
-
- host: 'example.com'
|
|
1587
|
-
mongodb:
|
|
1588
|
-
enabled: true
|
|
1589
|
-
auth:
|
|
1590
|
-
enabled: true
|
|
1591
|
-
rootPassword: '$CL_prod_web_MONGODB_ROOT_PASSWORD'
|
|
1592
|
-
replicaSetKey: '$CL_prod_web_MONGODB_REPLICASET_KEY'
|
|
1593
|
-
persistence:
|
|
1594
|
-
storageClass: 'premium-rwo'
|
|
1595
|
-
size: '50Gi'
|
|
1596
|
-
backup:
|
|
1597
|
-
enabled: true
|
|
1598
|
-
hostToBackup: 'web-mongodb-1.web-mongodb-headless.pan-my-app-prod.svc.cluster.local:27017'
|
|
1599
|
-
pvcToBackup: 'datadir-web-mongodb-1'
|
|
1600
|
-
image: 'mrelite/kubectlmongoshell:v1.0'
|
|
1601
|
-
schedule: '0 4 * * *'
|
|
1602
|
-
volumeSnapshotClass: 'snapshotclass'
|
|
1603
|
-
architecture: 'replicaset'
|
|
1604
|
-
replicaCount: 2
|
|
1605
|
-
resources:
|
|
1606
|
-
limits:
|
|
1607
|
-
memory: '8Gi'
|
|
1608
|
-
requests:
|
|
1609
|
-
memory: '8Gi'
|
|
1610
|
-
",
|
|
1611
|
-
"MONGODB_REPLICASET_KEY": "$CL_prod_web_MONGODB_REPLICASET_KEY",
|
|
1612
|
-
"MONGODB_ROOT_PASSWORD": "$CL_prod_web_MONGODB_ROOT_PASSWORD",
|
|
1613
|
-
"RELEASE_NAME": "pan-my-app-prod-web",
|
|
1614
|
-
"ROOT_URL": "https://www.example.com",
|
|
1615
|
-
"ROOT_URL_INTERNAL": "https://web.prod.my-app.pan.panter.cloud",
|
|
1616
|
-
"_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","KUBE_NAMESPACE","KUBE_APP_NAME","KUBE_APP_NAME_PREFIX","HOST_INTERNAL","MONGODB_ROOT_PASSWORD","MONGODB_REPLICASET_KEY"]",
|
|
1617
1496
|
},
|
|
1618
1497
|
},
|
|
1619
1498
|
"web โฉ๏ธ Rollback โ ๏ธ | stage ": {
|
|
1499
|
+
"allow_failure": true,
|
|
1500
|
+
"artifacts": {
|
|
1501
|
+
"reports": {
|
|
1502
|
+
"dotenv": "gitlab_environment.env",
|
|
1503
|
+
},
|
|
1504
|
+
},
|
|
1620
1505
|
"environment": {
|
|
1621
1506
|
"action": "access",
|
|
1622
1507
|
"name": "stage/web",
|
|
1623
|
-
"url": "
|
|
1508
|
+
"url": "$CL_GITLAB_ENVIRONMENT_URL",
|
|
1624
1509
|
},
|
|
1625
1510
|
"image": "path/to/docker/kubernetes:the-version",
|
|
1626
1511
|
"interruptible": true,
|
|
@@ -1634,97 +1519,48 @@ mongodb:
|
|
|
1634
1519
|
},
|
|
1635
1520
|
"rules": [
|
|
1636
1521
|
{
|
|
1637
|
-
"allow_failure": true,
|
|
1638
1522
|
"when": "manual",
|
|
1639
1523
|
},
|
|
1640
1524
|
],
|
|
1641
1525
|
"script": [
|
|
1526
|
+
"echo -e "\\e[0Ksection_start:$(date +%s):injectvars[collapsed=true]\\r\\e[0KInjecting variables"",
|
|
1527
|
+
"export ENV_SHORT="stage"",
|
|
1528
|
+
"export APP_DIR="app"",
|
|
1529
|
+
"export ENV_TYPE="stage"",
|
|
1530
|
+
"export BUILD_INFO_BUILD_ID="$(git describe --tags 2>/dev/null || git rev-parse HEAD)"",
|
|
1531
|
+
"export BUILD_INFO_BUILD_TIME="$CI_JOB_STARTED_AT"",
|
|
1532
|
+
"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")"",
|
|
1533
|
+
"export HOST="web.stage.my-app.pan.panter.cloud"",
|
|
1534
|
+
"export ROOT_URL="https://web.stage.my-app.pan.panter.cloud"",
|
|
1535
|
+
"export HOST_INTERNAL="web.stage.my-app.pan.panter.cloud"",
|
|
1536
|
+
"export HOST_CANONICAL="web.stage.my-app.pan.panter.cloud"",
|
|
1537
|
+
"export ROOT_URL_INTERNAL="https://web.stage.my-app.pan.panter.cloud"",
|
|
1538
|
+
"export KUBE_NAMESPACE="pan-my-app-stage"",
|
|
1539
|
+
"export KUBE_APP_NAME="web"",
|
|
1540
|
+
"export KUBE_APP_NAME_PREFIX=""",
|
|
1541
|
+
"export MONGODB_ROOT_PASSWORD="$CL_stage_web_MONGODB_ROOT_PASSWORD"",
|
|
1542
|
+
"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\\",\\"KUBE_NAMESPACE\\",\\"KUBE_APP_NAME\\",\\"KUBE_APP_NAME_PREFIX\\",\\"MONGODB_ROOT_PASSWORD\\"]"",
|
|
1543
|
+
"export RELEASE_NAME="pan-my-app-stage-web"",
|
|
1544
|
+
"export HELM_EXPERIMENTAL_OCI="1"",
|
|
1545
|
+
"export KUBE_DOCKER_IMAGE_PULL_SECRET="gitlab-registry-web"",
|
|
1546
|
+
"export HELM_GITLAB_CHART_NAME="/helm-charts/the-panter-chart"",
|
|
1547
|
+
"export HELM_ARGS=""",
|
|
1548
|
+
"export COMPONENT_NAME="web"",
|
|
1549
|
+
"export BUILD_ID="$(git describe --tags 2>/dev/null || git rev-parse HEAD)"",
|
|
1550
|
+
"echo -e "\\e[0Ksection_end:$(date +%s):injectvars\\r\\e[0K"",
|
|
1642
1551
|
"kubectl config set-cluster "kube-pan-my-app-stage-web" --server="$CL_stage_web_KUBE_URL" --certificate-authority <(echo $CL_stage_web_KUBE_CA_PEM | base64 -d) --embed-certs=true",
|
|
1643
1552
|
"kubectl config set-credentials "kube-pan-my-app-stage-web" --token="$CL_stage_web_KUBE_TOKEN"",
|
|
1644
1553
|
"kubectl config set-context "kube-pan-my-app-stage-web" --cluster="kube-pan-my-app-stage-web" --user="kube-pan-my-app-stage-web" --namespace="pan-my-app-stage"",
|
|
1645
1554
|
"kubectl config use-context "kube-pan-my-app-stage-web"",
|
|
1646
1555
|
"kubernetesRollback",
|
|
1556
|
+
"echo "CL_GITLAB_ENVIRONMENT_URL=https://web.stage.my-app.pan.panter.cloud" >> gitlab_environment.env",
|
|
1647
1557
|
],
|
|
1648
1558
|
"stage": "rollback stage",
|
|
1649
1559
|
"variables": {
|
|
1650
|
-
"APP_DIR": "app",
|
|
1651
|
-
"BUILD_ID": "some-id",
|
|
1652
|
-
"BUILD_INFO_BUILD_TIME": "01-01-2023 12:13:14",
|
|
1653
|
-
"BUILD_INFO_CURRENT_VERSION": "3.2.1",
|
|
1654
|
-
"BUILD_INFO_ID": "some-id",
|
|
1655
|
-
"COMPONENT_NAME": "web",
|
|
1656
|
-
"ENV_SHORT": "stage",
|
|
1657
|
-
"ENV_TYPE": "stage",
|
|
1658
1560
|
"GIT_STRATEGY": "none",
|
|
1659
|
-
"HELM_ARGS": "",
|
|
1660
|
-
"HELM_EXPERIMENTAL_OCI": "1",
|
|
1661
|
-
"HELM_GITLAB_CHART_NAME": "/helm-charts/the-panter-chart",
|
|
1662
|
-
"HOST": "web.stage.my-app.pan.panter.cloud",
|
|
1663
|
-
"HOST_CANONICAL": "web.stage.my-app.pan.panter.cloud",
|
|
1664
|
-
"HOST_INTERNAL": "web.stage.my-app.pan.panter.cloud",
|
|
1665
1561
|
"KUBERNETES_CPU_REQUEST": "0.5",
|
|
1666
1562
|
"KUBERNETES_MEMORY_LIMIT": "400Mi",
|
|
1667
1563
|
"KUBERNETES_MEMORY_REQUEST": "200Mi",
|
|
1668
|
-
"KUBE_APP_NAME": "web",
|
|
1669
|
-
"KUBE_APP_NAME_PREFIX": "",
|
|
1670
|
-
"KUBE_DOCKER_IMAGE_PULL_SECRET": "gitlab-registry-web",
|
|
1671
|
-
"KUBE_NAMESPACE": "pan-my-app-stage",
|
|
1672
|
-
"KUBE_VALUES": "env:
|
|
1673
|
-
secret:
|
|
1674
|
-
MONGODB_ROOT_PASSWORD: '$CL_stage_web_MONGODB_ROOT_PASSWORD'
|
|
1675
|
-
MONGO_URL: 'mongodb://root:$CL_stage_web_MONGODB_ROOT_PASSWORD@web-mongodb.pan-my-app-stage.svc.cluster.local:27017/app?authSource=admin'
|
|
1676
|
-
public:
|
|
1677
|
-
ENV_SHORT: 'stage'
|
|
1678
|
-
APP_DIR: 'app'
|
|
1679
|
-
ENV_TYPE: 'stage'
|
|
1680
|
-
BUILD_INFO_ID: 'some-id'
|
|
1681
|
-
BUILD_INFO_BUILD_TIME: '01-01-2023 12:13:14'
|
|
1682
|
-
BUILD_INFO_CURRENT_VERSION: '3.2.1'
|
|
1683
|
-
HOST: 'web.stage.my-app.pan.panter.cloud'
|
|
1684
|
-
ROOT_URL: 'https://web.stage.my-app.pan.panter.cloud'
|
|
1685
|
-
HOST_CANONICAL: 'web.stage.my-app.pan.panter.cloud'
|
|
1686
|
-
ROOT_URL_INTERNAL: 'https://web.stage.my-app.pan.panter.cloud'
|
|
1687
|
-
KUBE_NAMESPACE: 'pan-my-app-stage'
|
|
1688
|
-
KUBE_APP_NAME: 'web'
|
|
1689
|
-
KUBE_APP_NAME_PREFIX: ''
|
|
1690
|
-
HOST_INTERNAL: 'web.stage.my-app.pan.panter.cloud'
|
|
1691
|
-
_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","KUBE_NAMESPACE","KUBE_APP_NAME","KUBE_APP_NAME_PREFIX","HOST_INTERNAL","MONGODB_ROOT_PASSWORD"]'
|
|
1692
|
-
application:
|
|
1693
|
-
host: 'web.stage.my-app.pan.panter.cloud'
|
|
1694
|
-
command: 'node main.js'
|
|
1695
|
-
livenessProbe:
|
|
1696
|
-
httpGet:
|
|
1697
|
-
path: '__health'
|
|
1698
|
-
readinessProbe:
|
|
1699
|
-
httpGet:
|
|
1700
|
-
path: '__health'
|
|
1701
|
-
startupProbe:
|
|
1702
|
-
httpGet:
|
|
1703
|
-
path: '__health'
|
|
1704
|
-
worker:
|
|
1705
|
-
enabled: true
|
|
1706
|
-
mongodb:
|
|
1707
|
-
enabled: true
|
|
1708
|
-
auth:
|
|
1709
|
-
enabled: true
|
|
1710
|
-
rootPassword: '$CL_stage_web_MONGODB_ROOT_PASSWORD'
|
|
1711
|
-
replicaSetKey: '$CL_stage_web_MONGODB_REPLICASET_KEY'
|
|
1712
|
-
persistence:
|
|
1713
|
-
storageClass: 'standard-rwo'
|
|
1714
|
-
backup:
|
|
1715
|
-
enabled: true
|
|
1716
|
-
hostToBackup: 'web-mongodb.pan-my-app-stage.svc.cluster.local:27017'
|
|
1717
|
-
pvcToBackup: 'web-mongodb'
|
|
1718
|
-
image: 'mrelite/kubectlmongoshell:v1.0'
|
|
1719
|
-
schedule: '0 4 * * *'
|
|
1720
|
-
volumeSnapshotClass: 'snapshotclass'
|
|
1721
|
-
architecture: 'standalone'
|
|
1722
|
-
",
|
|
1723
|
-
"MONGODB_ROOT_PASSWORD": "$CL_stage_web_MONGODB_ROOT_PASSWORD",
|
|
1724
|
-
"RELEASE_NAME": "pan-my-app-stage-web",
|
|
1725
|
-
"ROOT_URL": "https://web.stage.my-app.pan.panter.cloud",
|
|
1726
|
-
"ROOT_URL_INTERNAL": "https://web.stage.my-app.pan.panter.cloud",
|
|
1727
|
-
"_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","KUBE_NAMESPACE","KUBE_APP_NAME","KUBE_APP_NAME_PREFIX","HOST_INTERNAL","MONGODB_ROOT_PASSWORD"]",
|
|
1728
1564
|
},
|
|
1729
1565
|
},
|
|
1730
1566
|
"web ๐จ app | prod ": {
|
|
@@ -1774,7 +1610,27 @@ mongodb:
|
|
|
1774
1610
|
],
|
|
1775
1611
|
},
|
|
1776
1612
|
"script": [
|
|
1777
|
-
"echo
|
|
1613
|
+
"echo -e "\\e[0Ksection_start:$(date +%s):injectvars[collapsed=true]\\r\\e[0KInjecting variables"",
|
|
1614
|
+
"export METEOR_DISABLE_OPTIMISTIC_CACHING="1"",
|
|
1615
|
+
"export ENV_SHORT="prod"",
|
|
1616
|
+
"export APP_DIR="app"",
|
|
1617
|
+
"export ENV_TYPE="prod"",
|
|
1618
|
+
"export BUILD_INFO_BUILD_ID="$(git describe --tags 2>/dev/null || git rev-parse HEAD)"",
|
|
1619
|
+
"export BUILD_INFO_BUILD_TIME="$CI_JOB_STARTED_AT"",
|
|
1620
|
+
"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")"",
|
|
1621
|
+
"export HOST="www.example.com"",
|
|
1622
|
+
"export ROOT_URL="https://www.example.com"",
|
|
1623
|
+
"export HOST_INTERNAL="web.prod.my-app.pan.panter.cloud"",
|
|
1624
|
+
"export HOST_CANONICAL="web.prod.my-app.pan.panter.cloud"",
|
|
1625
|
+
"export ROOT_URL_INTERNAL="https://web.prod.my-app.pan.panter.cloud"",
|
|
1626
|
+
"export KUBE_NAMESPACE="pan-my-app-prod"",
|
|
1627
|
+
"export KUBE_APP_NAME="web"",
|
|
1628
|
+
"export KUBE_APP_NAME_PREFIX=""",
|
|
1629
|
+
"export MONGODB_ROOT_PASSWORD="$CL_prod_web_MONGODB_ROOT_PASSWORD"",
|
|
1630
|
+
"export MONGODB_REPLICASET_KEY="$CL_prod_web_MONGODB_REPLICASET_KEY"",
|
|
1631
|
+
"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\\",\\"KUBE_NAMESPACE\\",\\"KUBE_APP_NAME\\",\\"KUBE_APP_NAME_PREFIX\\",\\"MONGODB_ROOT_PASSWORD\\",\\"MONGODB_REPLICASET_KEY\\"]"",
|
|
1632
|
+
"echo -e "\\e[0Ksection_end:$(date +%s):injectvars\\r\\e[0K"",
|
|
1633
|
+
"echo '{"id":"$(git describe --tags 2>/dev/null || git rev-parse HEAD)","time":"$CI_JOB_STARTED_AT"}' > app/__build_info.json",
|
|
1778
1634
|
"echo -e "\\e[0Ksection_start:$(date +%s):nodeinstall[collapsed=true]\\r\\e[0KEnsure node version"",
|
|
1779
1635
|
"if [ -f ~/.nvm/nvm.sh ]; then source ~/.nvm/nvm.sh; fi",
|
|
1780
1636
|
"if command -v nvm &> /dev/null && [ -f ./.nvmrc ]; then nvm install; fi",
|
|
@@ -1795,27 +1651,9 @@ mongodb:
|
|
|
1795
1651
|
],
|
|
1796
1652
|
"stage": "build",
|
|
1797
1653
|
"variables": {
|
|
1798
|
-
"APP_DIR": "app",
|
|
1799
|
-
"BUILD_INFO_BUILD_TIME": "01-01-2023 12:13:14",
|
|
1800
|
-
"BUILD_INFO_CURRENT_VERSION": "3.2.1",
|
|
1801
|
-
"BUILD_INFO_ID": "some-id",
|
|
1802
|
-
"ENV_SHORT": "prod",
|
|
1803
|
-
"ENV_TYPE": "prod",
|
|
1804
|
-
"HOST": "www.example.com",
|
|
1805
|
-
"HOST_CANONICAL": "web.prod.my-app.pan.panter.cloud",
|
|
1806
|
-
"HOST_INTERNAL": "web.prod.my-app.pan.panter.cloud",
|
|
1807
1654
|
"KUBERNETES_CPU_REQUEST": "0.5",
|
|
1808
1655
|
"KUBERNETES_MEMORY_LIMIT": "4Gi",
|
|
1809
1656
|
"KUBERNETES_MEMORY_REQUEST": "1Gi",
|
|
1810
|
-
"KUBE_APP_NAME": "web",
|
|
1811
|
-
"KUBE_APP_NAME_PREFIX": "",
|
|
1812
|
-
"KUBE_NAMESPACE": "pan-my-app-prod",
|
|
1813
|
-
"METEOR_DISABLE_OPTIMISTIC_CACHING": "1",
|
|
1814
|
-
"MONGODB_REPLICASET_KEY": "$CL_prod_web_MONGODB_REPLICASET_KEY",
|
|
1815
|
-
"MONGODB_ROOT_PASSWORD": "$CL_prod_web_MONGODB_ROOT_PASSWORD",
|
|
1816
|
-
"ROOT_URL": "https://www.example.com",
|
|
1817
|
-
"ROOT_URL_INTERNAL": "https://web.prod.my-app.pan.panter.cloud",
|
|
1818
|
-
"_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","KUBE_NAMESPACE","KUBE_APP_NAME","KUBE_APP_NAME_PREFIX","HOST_INTERNAL","MONGODB_ROOT_PASSWORD","MONGODB_REPLICASET_KEY"]",
|
|
1819
1657
|
},
|
|
1820
1658
|
},
|
|
1821
1659
|
"web ๐จ app | stage ": {
|
|
@@ -1865,7 +1703,26 @@ mongodb:
|
|
|
1865
1703
|
],
|
|
1866
1704
|
},
|
|
1867
1705
|
"script": [
|
|
1868
|
-
"echo
|
|
1706
|
+
"echo -e "\\e[0Ksection_start:$(date +%s):injectvars[collapsed=true]\\r\\e[0KInjecting variables"",
|
|
1707
|
+
"export METEOR_DISABLE_OPTIMISTIC_CACHING="1"",
|
|
1708
|
+
"export ENV_SHORT="stage"",
|
|
1709
|
+
"export APP_DIR="app"",
|
|
1710
|
+
"export ENV_TYPE="stage"",
|
|
1711
|
+
"export BUILD_INFO_BUILD_ID="$(git describe --tags 2>/dev/null || git rev-parse HEAD)"",
|
|
1712
|
+
"export BUILD_INFO_BUILD_TIME="$CI_JOB_STARTED_AT"",
|
|
1713
|
+
"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")"",
|
|
1714
|
+
"export HOST="web.stage.my-app.pan.panter.cloud"",
|
|
1715
|
+
"export ROOT_URL="https://web.stage.my-app.pan.panter.cloud"",
|
|
1716
|
+
"export HOST_INTERNAL="web.stage.my-app.pan.panter.cloud"",
|
|
1717
|
+
"export HOST_CANONICAL="web.stage.my-app.pan.panter.cloud"",
|
|
1718
|
+
"export ROOT_URL_INTERNAL="https://web.stage.my-app.pan.panter.cloud"",
|
|
1719
|
+
"export KUBE_NAMESPACE="pan-my-app-stage"",
|
|
1720
|
+
"export KUBE_APP_NAME="web"",
|
|
1721
|
+
"export KUBE_APP_NAME_PREFIX=""",
|
|
1722
|
+
"export MONGODB_ROOT_PASSWORD="$CL_stage_web_MONGODB_ROOT_PASSWORD"",
|
|
1723
|
+
"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\\",\\"KUBE_NAMESPACE\\",\\"KUBE_APP_NAME\\",\\"KUBE_APP_NAME_PREFIX\\",\\"MONGODB_ROOT_PASSWORD\\"]"",
|
|
1724
|
+
"echo -e "\\e[0Ksection_end:$(date +%s):injectvars\\r\\e[0K"",
|
|
1725
|
+
"echo '{"id":"$(git describe --tags 2>/dev/null || git rev-parse HEAD)","time":"$CI_JOB_STARTED_AT"}' > app/__build_info.json",
|
|
1869
1726
|
"echo -e "\\e[0Ksection_start:$(date +%s):nodeinstall[collapsed=true]\\r\\e[0KEnsure node version"",
|
|
1870
1727
|
"if [ -f ~/.nvm/nvm.sh ]; then source ~/.nvm/nvm.sh; fi",
|
|
1871
1728
|
"if command -v nvm &> /dev/null && [ -f ./.nvmrc ]; then nvm install; fi",
|
|
@@ -1886,26 +1743,9 @@ mongodb:
|
|
|
1886
1743
|
],
|
|
1887
1744
|
"stage": "build",
|
|
1888
1745
|
"variables": {
|
|
1889
|
-
"APP_DIR": "app",
|
|
1890
|
-
"BUILD_INFO_BUILD_TIME": "01-01-2023 12:13:14",
|
|
1891
|
-
"BUILD_INFO_CURRENT_VERSION": "3.2.1",
|
|
1892
|
-
"BUILD_INFO_ID": "some-id",
|
|
1893
|
-
"ENV_SHORT": "stage",
|
|
1894
|
-
"ENV_TYPE": "stage",
|
|
1895
|
-
"HOST": "web.stage.my-app.pan.panter.cloud",
|
|
1896
|
-
"HOST_CANONICAL": "web.stage.my-app.pan.panter.cloud",
|
|
1897
|
-
"HOST_INTERNAL": "web.stage.my-app.pan.panter.cloud",
|
|
1898
1746
|
"KUBERNETES_CPU_REQUEST": "0.5",
|
|
1899
1747
|
"KUBERNETES_MEMORY_LIMIT": "4Gi",
|
|
1900
1748
|
"KUBERNETES_MEMORY_REQUEST": "1Gi",
|
|
1901
|
-
"KUBE_APP_NAME": "web",
|
|
1902
|
-
"KUBE_APP_NAME_PREFIX": "",
|
|
1903
|
-
"KUBE_NAMESPACE": "pan-my-app-stage",
|
|
1904
|
-
"METEOR_DISABLE_OPTIMISTIC_CACHING": "1",
|
|
1905
|
-
"MONGODB_ROOT_PASSWORD": "$CL_stage_web_MONGODB_ROOT_PASSWORD",
|
|
1906
|
-
"ROOT_URL": "https://web.stage.my-app.pan.panter.cloud",
|
|
1907
|
-
"ROOT_URL_INTERNAL": "https://web.stage.my-app.pan.panter.cloud",
|
|
1908
|
-
"_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","KUBE_NAMESPACE","KUBE_APP_NAME","KUBE_APP_NAME_PREFIX","HOST_INTERNAL","MONGODB_ROOT_PASSWORD"]",
|
|
1909
1749
|
},
|
|
1910
1750
|
},
|
|
1911
1751
|
"web ๐จ docker | prod ": {
|
|
@@ -1922,6 +1762,16 @@ mongodb:
|
|
|
1922
1762
|
],
|
|
1923
1763
|
},
|
|
1924
1764
|
"script": [
|
|
1765
|
+
"echo -e "\\e[0Ksection_start:$(date +%s):injectvars[collapsed=true]\\r\\e[0KInjecting variables"",
|
|
1766
|
+
"export APP_DIR="app"",
|
|
1767
|
+
"export DOCKER_DIR="."",
|
|
1768
|
+
"export DOCKER_REGISTRY="$CI_REGISTRY"",
|
|
1769
|
+
"export DOCKER_CACHE_IMAGE="$CI_REGISTRY_IMAGE/caches/web"",
|
|
1770
|
+
"export DOCKER_IMAGE_NAME="prod/web"",
|
|
1771
|
+
"export DOCKER_IMAGE="$CI_REGISTRY_IMAGE/$DOCKER_IMAGE_NAME"",
|
|
1772
|
+
"export DOCKER_IMAGE_TAG="$CI_COMMIT_SHA"",
|
|
1773
|
+
"export METEOR_INSTALL_SCRIPTS=""",
|
|
1774
|
+
"echo -e "\\e[0Ksection_end:$(date +%s):injectvars\\r\\e[0K"",
|
|
1925
1775
|
"ensureMeteorDockerfile",
|
|
1926
1776
|
"echo -e "\\e[0Ksection_start:$(date +%s):docker-login[collapsed=true]\\r\\e[0KDocker Login"",
|
|
1927
1777
|
"docker login --username gitlab-ci-token --password $CI_JOB_TOKEN $CI_REGISTRY",
|
|
@@ -1945,23 +1795,13 @@ mongodb:
|
|
|
1945
1795
|
],
|
|
1946
1796
|
"stage": "build",
|
|
1947
1797
|
"variables": {
|
|
1948
|
-
"APP_DIR": "app",
|
|
1949
|
-
"DOCKERFILE_ADDITIONS": undefined,
|
|
1950
|
-
"DOCKERFILE_ADDITIONS_END": undefined,
|
|
1951
1798
|
"DOCKER_BUILDKIT": "1",
|
|
1952
|
-
"DOCKER_CACHE_IMAGE": "$CI_REGISTRY_IMAGE/caches/web",
|
|
1953
|
-
"DOCKER_DIR": ".",
|
|
1954
1799
|
"DOCKER_DRIVER": "overlay2",
|
|
1955
1800
|
"DOCKER_HOST": "tcp://0.0.0.0:2375",
|
|
1956
|
-
"DOCKER_IMAGE": "$CI_REGISTRY_IMAGE/$DOCKER_IMAGE_NAME",
|
|
1957
|
-
"DOCKER_IMAGE_NAME": "prod/web",
|
|
1958
|
-
"DOCKER_IMAGE_TAG": "$CI_COMMIT_SHA",
|
|
1959
|
-
"DOCKER_REGISTRY": "$CI_REGISTRY",
|
|
1960
1801
|
"DOCKER_TLS_CERTDIR": "",
|
|
1961
1802
|
"KUBERNETES_CPU_REQUEST": "0.5",
|
|
1962
1803
|
"KUBERNETES_MEMORY_LIMIT": "2Gi",
|
|
1963
1804
|
"KUBERNETES_MEMORY_REQUEST": "1Gi",
|
|
1964
|
-
"METEOR_INSTALL_SCRIPTS": "",
|
|
1965
1805
|
},
|
|
1966
1806
|
},
|
|
1967
1807
|
"web ๐จ docker | stage ": {
|
|
@@ -1978,6 +1818,16 @@ mongodb:
|
|
|
1978
1818
|
],
|
|
1979
1819
|
},
|
|
1980
1820
|
"script": [
|
|
1821
|
+
"echo -e "\\e[0Ksection_start:$(date +%s):injectvars[collapsed=true]\\r\\e[0KInjecting variables"",
|
|
1822
|
+
"export APP_DIR="app"",
|
|
1823
|
+
"export DOCKER_DIR="."",
|
|
1824
|
+
"export DOCKER_REGISTRY="$CI_REGISTRY"",
|
|
1825
|
+
"export DOCKER_CACHE_IMAGE="$CI_REGISTRY_IMAGE/caches/web"",
|
|
1826
|
+
"export DOCKER_IMAGE_NAME="stage/web"",
|
|
1827
|
+
"export DOCKER_IMAGE="$CI_REGISTRY_IMAGE/$DOCKER_IMAGE_NAME"",
|
|
1828
|
+
"export DOCKER_IMAGE_TAG="$CI_COMMIT_SHA"",
|
|
1829
|
+
"export METEOR_INSTALL_SCRIPTS=""",
|
|
1830
|
+
"echo -e "\\e[0Ksection_end:$(date +%s):injectvars\\r\\e[0K"",
|
|
1981
1831
|
"ensureMeteorDockerfile",
|
|
1982
1832
|
"echo -e "\\e[0Ksection_start:$(date +%s):docker-login[collapsed=true]\\r\\e[0KDocker Login"",
|
|
1983
1833
|
"docker login --username gitlab-ci-token --password $CI_JOB_TOKEN $CI_REGISTRY",
|
|
@@ -2001,32 +1851,27 @@ mongodb:
|
|
|
2001
1851
|
],
|
|
2002
1852
|
"stage": "build",
|
|
2003
1853
|
"variables": {
|
|
2004
|
-
"APP_DIR": "app",
|
|
2005
|
-
"DOCKERFILE_ADDITIONS": undefined,
|
|
2006
|
-
"DOCKERFILE_ADDITIONS_END": undefined,
|
|
2007
1854
|
"DOCKER_BUILDKIT": "1",
|
|
2008
|
-
"DOCKER_CACHE_IMAGE": "$CI_REGISTRY_IMAGE/caches/web",
|
|
2009
|
-
"DOCKER_DIR": ".",
|
|
2010
1855
|
"DOCKER_DRIVER": "overlay2",
|
|
2011
1856
|
"DOCKER_HOST": "tcp://0.0.0.0:2375",
|
|
2012
|
-
"DOCKER_IMAGE": "$CI_REGISTRY_IMAGE/$DOCKER_IMAGE_NAME",
|
|
2013
|
-
"DOCKER_IMAGE_NAME": "stage/web",
|
|
2014
|
-
"DOCKER_IMAGE_TAG": "$CI_COMMIT_SHA",
|
|
2015
|
-
"DOCKER_REGISTRY": "$CI_REGISTRY",
|
|
2016
1857
|
"DOCKER_TLS_CERTDIR": "",
|
|
2017
1858
|
"KUBERNETES_CPU_REQUEST": "0.5",
|
|
2018
1859
|
"KUBERNETES_MEMORY_LIMIT": "2Gi",
|
|
2019
1860
|
"KUBERNETES_MEMORY_REQUEST": "1Gi",
|
|
2020
|
-
"METEOR_INSTALL_SCRIPTS": "",
|
|
2021
1861
|
},
|
|
2022
1862
|
},
|
|
2023
1863
|
"web ๐ Deploy | prod ": {
|
|
2024
1864
|
"allow_failure": true,
|
|
1865
|
+
"artifacts": {
|
|
1866
|
+
"reports": {
|
|
1867
|
+
"dotenv": "gitlab_environment.env",
|
|
1868
|
+
},
|
|
1869
|
+
},
|
|
2025
1870
|
"environment": {
|
|
2026
1871
|
"auto_stop_in": undefined,
|
|
2027
1872
|
"name": "prod/web",
|
|
2028
1873
|
"on_stop": "web ๐ Stop โ ๏ธ | prod ",
|
|
2029
|
-
"url": "
|
|
1874
|
+
"url": "$CL_GITLAB_ENVIRONMENT_URL",
|
|
2030
1875
|
},
|
|
2031
1876
|
"image": "path/to/docker/kubernetes:the-version",
|
|
2032
1877
|
"interruptible": true,
|
|
@@ -2057,121 +1902,170 @@ mongodb:
|
|
|
2057
1902
|
},
|
|
2058
1903
|
],
|
|
2059
1904
|
"script": [
|
|
1905
|
+
"echo -e "\\e[0Ksection_start:$(date +%s):injectvars[collapsed=true]\\r\\e[0KInjecting variables"",
|
|
1906
|
+
"export ENV_SHORT="prod"",
|
|
1907
|
+
"export APP_DIR="app"",
|
|
1908
|
+
"export ENV_TYPE="prod"",
|
|
1909
|
+
"export BUILD_INFO_BUILD_ID="$(git describe --tags 2>/dev/null || git rev-parse HEAD)"",
|
|
1910
|
+
"export BUILD_INFO_BUILD_TIME="$CI_JOB_STARTED_AT"",
|
|
1911
|
+
"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")"",
|
|
1912
|
+
"export HOST="www.example.com"",
|
|
1913
|
+
"export ROOT_URL="https://www.example.com"",
|
|
1914
|
+
"export HOST_INTERNAL="web.prod.my-app.pan.panter.cloud"",
|
|
1915
|
+
"export HOST_CANONICAL="web.prod.my-app.pan.panter.cloud"",
|
|
1916
|
+
"export ROOT_URL_INTERNAL="https://web.prod.my-app.pan.panter.cloud"",
|
|
1917
|
+
"export KUBE_NAMESPACE="pan-my-app-prod"",
|
|
1918
|
+
"export KUBE_APP_NAME="web"",
|
|
1919
|
+
"export KUBE_APP_NAME_PREFIX=""",
|
|
1920
|
+
"export MONGODB_ROOT_PASSWORD="$CL_prod_web_MONGODB_ROOT_PASSWORD"",
|
|
1921
|
+
"export MONGODB_REPLICASET_KEY="$CL_prod_web_MONGODB_REPLICASET_KEY"",
|
|
1922
|
+
"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\\",\\"KUBE_NAMESPACE\\",\\"KUBE_APP_NAME\\",\\"KUBE_APP_NAME_PREFIX\\",\\"MONGODB_ROOT_PASSWORD\\",\\"MONGODB_REPLICASET_KEY\\"]"",
|
|
1923
|
+
"export DOCKER_REGISTRY="$CI_REGISTRY"",
|
|
1924
|
+
"export DOCKER_CACHE_IMAGE="$CI_REGISTRY_IMAGE/caches/web"",
|
|
1925
|
+
"export DOCKER_IMAGE_NAME="prod/web"",
|
|
1926
|
+
"export DOCKER_IMAGE="$CI_REGISTRY_IMAGE/$DOCKER_IMAGE_NAME"",
|
|
1927
|
+
"export DOCKER_IMAGE_TAG="$CI_COMMIT_SHA"",
|
|
1928
|
+
"export RELEASE_NAME="pan-my-app-prod-web"",
|
|
1929
|
+
"export HELM_EXPERIMENTAL_OCI="1"",
|
|
1930
|
+
"export KUBE_DOCKER_IMAGE_PULL_SECRET="gitlab-registry-web"",
|
|
1931
|
+
"export HELM_GITLAB_CHART_NAME="/helm-charts/the-panter-chart"",
|
|
1932
|
+
"export HELM_ARGS=""",
|
|
1933
|
+
"export COMPONENT_NAME="web"",
|
|
1934
|
+
"export BUILD_ID="$(git describe --tags 2>/dev/null || git rev-parse HEAD)"",
|
|
1935
|
+
"echo -e "\\e[0Ksection_end:$(date +%s):injectvars\\r\\e[0K"",
|
|
2060
1936
|
"kubectl config set-cluster "kube-pan-my-app-prod-web" --server="$CL_prod_web_KUBE_URL" --certificate-authority <(echo $CL_prod_web_KUBE_CA_PEM | base64 -d) --embed-certs=true",
|
|
2061
1937
|
"kubectl config set-credentials "kube-pan-my-app-prod-web" --token="$CL_prod_web_KUBE_TOKEN"",
|
|
2062
1938
|
"kubectl config set-context "kube-pan-my-app-prod-web" --cluster="kube-pan-my-app-prod-web" --user="kube-pan-my-app-prod-web" --namespace="pan-my-app-prod"",
|
|
2063
1939
|
"kubectl config use-context "kube-pan-my-app-prod-web"",
|
|
2064
|
-
"
|
|
2065
|
-
"
|
|
2066
|
-
|
|
2067
|
-
"/dtrackuploader https://dep.panter.swiss/ "$DT_KEY_PROD" upload "pan-my-app/web" "https://www.example.com" "__sbom.json" vex.json || true",
|
|
2068
|
-
"echo deployment successful ๐ป",
|
|
2069
|
-
],
|
|
2070
|
-
"stage": "deploy prod",
|
|
2071
|
-
"variables": {
|
|
2072
|
-
"APP_DIR": "app",
|
|
2073
|
-
"BUILD_ID": "some-id",
|
|
2074
|
-
"BUILD_INFO_BUILD_TIME": "01-01-2023 12:13:14",
|
|
2075
|
-
"BUILD_INFO_CURRENT_VERSION": "3.2.1",
|
|
2076
|
-
"BUILD_INFO_ID": "some-id",
|
|
2077
|
-
"COMPONENT_NAME": "web",
|
|
2078
|
-
"DOCKER_CACHE_IMAGE": "$CI_REGISTRY_IMAGE/caches/web",
|
|
2079
|
-
"DOCKER_IMAGE": "$CI_REGISTRY_IMAGE/$DOCKER_IMAGE_NAME",
|
|
2080
|
-
"DOCKER_IMAGE_NAME": "prod/web",
|
|
2081
|
-
"DOCKER_IMAGE_TAG": "$CI_COMMIT_SHA",
|
|
2082
|
-
"DOCKER_REGISTRY": "$CI_REGISTRY",
|
|
2083
|
-
"ENV_SHORT": "prod",
|
|
2084
|
-
"ENV_TYPE": "prod",
|
|
2085
|
-
"HELM_ARGS": "",
|
|
2086
|
-
"HELM_EXPERIMENTAL_OCI": "1",
|
|
2087
|
-
"HELM_GITLAB_CHART_NAME": "/helm-charts/the-panter-chart",
|
|
2088
|
-
"HOST": "www.example.com",
|
|
2089
|
-
"HOST_CANONICAL": "web.prod.my-app.pan.panter.cloud",
|
|
2090
|
-
"HOST_INTERNAL": "web.prod.my-app.pan.panter.cloud",
|
|
2091
|
-
"KUBERNETES_CPU_REQUEST": "0.5",
|
|
2092
|
-
"KUBERNETES_MEMORY_LIMIT": "400Mi",
|
|
2093
|
-
"KUBERNETES_MEMORY_REQUEST": "200Mi",
|
|
2094
|
-
"KUBE_APP_NAME": "web",
|
|
2095
|
-
"KUBE_APP_NAME_PREFIX": "",
|
|
2096
|
-
"KUBE_DOCKER_IMAGE_PULL_SECRET": "gitlab-registry-web",
|
|
2097
|
-
"KUBE_NAMESPACE": "pan-my-app-prod",
|
|
2098
|
-
"KUBE_VALUES": "env:
|
|
1940
|
+
"echo -e "\\e[0Ksection_start:$(date +%s):writeallvalues[collapsed=true]\\r\\e[0KWrite __all_values.yml for helm deployment"",
|
|
1941
|
+
"cat > __all_values.yml <<EOF
|
|
1942
|
+
env:
|
|
2099
1943
|
secret:
|
|
2100
|
-
MONGODB_ROOT_PASSWORD:
|
|
2101
|
-
|
|
2102
|
-
|
|
2103
|
-
|
|
1944
|
+
MONGODB_ROOT_PASSWORD: |-
|
|
1945
|
+
$(printf %s "$CL_prod_web_MONGODB_ROOT_PASSWORD" | sed 's/^/ /')
|
|
1946
|
+
MONGODB_REPLICASET_KEY: |-
|
|
1947
|
+
$(printf %s "$CL_prod_web_MONGODB_REPLICASET_KEY" | sed 's/^/ /')
|
|
1948
|
+
MONGO_URL: |-
|
|
1949
|
+
mongodb://root:$CL_prod_web_MONGODB_ROOT_PASSWORD@web-mongodb-0.web-mongodb-headless.pan-my-app-prod.svc.cluster.local:27017,web-mongodb-1.web-mongodb-headless.pan-my-app-prod.svc.cluster.local:27017/app?replicaSet=rs0&authSource=admin
|
|
1950
|
+
MONGO_OPLOG_URL: |-
|
|
1951
|
+
mongodb://root:$CL_prod_web_MONGODB_ROOT_PASSWORD@web-mongodb-0.web-mongodb-headless.pan-my-app-prod.svc.cluster.local:27017,web-mongodb-1.web-mongodb-headless.pan-my-app-prod.svc.cluster.local:27017/local?replicaSet=rs0&authSource=admin
|
|
2104
1952
|
public:
|
|
2105
|
-
ENV_SHORT:
|
|
2106
|
-
|
|
2107
|
-
|
|
2108
|
-
|
|
2109
|
-
|
|
2110
|
-
|
|
2111
|
-
|
|
2112
|
-
|
|
2113
|
-
|
|
2114
|
-
|
|
2115
|
-
|
|
2116
|
-
|
|
2117
|
-
|
|
2118
|
-
|
|
2119
|
-
|
|
1953
|
+
ENV_SHORT: |-
|
|
1954
|
+
prod
|
|
1955
|
+
APP_DIR: |-
|
|
1956
|
+
app
|
|
1957
|
+
ENV_TYPE: |-
|
|
1958
|
+
prod
|
|
1959
|
+
BUILD_INFO_BUILD_ID: |-
|
|
1960
|
+
$(printf %s "$(git describe --tags 2>/dev/null || git rev-parse HEAD)" | sed 's/^/ /')
|
|
1961
|
+
BUILD_INFO_BUILD_TIME: |-
|
|
1962
|
+
$(printf %s "$CI_JOB_STARTED_AT" | sed 's/^/ /')
|
|
1963
|
+
BUILD_INFO_CURRENT_VERSION: |-
|
|
1964
|
+
$(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/^/ /')
|
|
1965
|
+
HOST: |-
|
|
1966
|
+
www.example.com
|
|
1967
|
+
ROOT_URL: |-
|
|
1968
|
+
https://www.example.com
|
|
1969
|
+
HOST_INTERNAL: |-
|
|
1970
|
+
web.prod.my-app.pan.panter.cloud
|
|
1971
|
+
HOST_CANONICAL: |-
|
|
1972
|
+
web.prod.my-app.pan.panter.cloud
|
|
1973
|
+
ROOT_URL_INTERNAL: |-
|
|
1974
|
+
https://web.prod.my-app.pan.panter.cloud
|
|
1975
|
+
KUBE_NAMESPACE: |-
|
|
1976
|
+
pan-my-app-prod
|
|
1977
|
+
KUBE_APP_NAME: |-
|
|
1978
|
+
web
|
|
1979
|
+
KUBE_APP_NAME_PREFIX: ""
|
|
1980
|
+
_ALL_ENV_VAR_KEYS: |-
|
|
1981
|
+
["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","KUBE_NAMESPACE","KUBE_APP_NAME","KUBE_APP_NAME_PREFIX","MONGODB_ROOT_PASSWORD","MONGODB_REPLICASET_KEY"]
|
|
2120
1982
|
application:
|
|
2121
|
-
host:
|
|
2122
|
-
|
|
1983
|
+
host: |-
|
|
1984
|
+
www.example.com
|
|
1985
|
+
command: |-
|
|
1986
|
+
node main.js
|
|
2123
1987
|
livenessProbe:
|
|
2124
1988
|
httpGet:
|
|
2125
|
-
path:
|
|
1989
|
+
path: |-
|
|
1990
|
+
__health
|
|
2126
1991
|
readinessProbe:
|
|
2127
1992
|
httpGet:
|
|
2128
|
-
path:
|
|
1993
|
+
path: |-
|
|
1994
|
+
__health
|
|
2129
1995
|
startupProbe:
|
|
2130
1996
|
httpGet:
|
|
2131
|
-
path:
|
|
1997
|
+
path: |-
|
|
1998
|
+
__health
|
|
2132
1999
|
worker:
|
|
2133
2000
|
enabled: true
|
|
2134
2001
|
redirects:
|
|
2135
|
-
- host:
|
|
2002
|
+
- host: |-
|
|
2003
|
+
example.com
|
|
2136
2004
|
mongodb:
|
|
2137
2005
|
enabled: true
|
|
2138
2006
|
auth:
|
|
2139
2007
|
enabled: true
|
|
2140
|
-
rootPassword:
|
|
2141
|
-
|
|
2008
|
+
rootPassword: |-
|
|
2009
|
+
$CL_prod_web_MONGODB_ROOT_PASSWORD
|
|
2010
|
+
replicaSetKey: |-
|
|
2011
|
+
$CL_prod_web_MONGODB_REPLICASET_KEY
|
|
2142
2012
|
persistence:
|
|
2143
|
-
storageClass:
|
|
2144
|
-
|
|
2013
|
+
storageClass: |-
|
|
2014
|
+
premium-rwo
|
|
2015
|
+
size: |-
|
|
2016
|
+
50Gi
|
|
2145
2017
|
backup:
|
|
2146
2018
|
enabled: true
|
|
2147
|
-
hostToBackup:
|
|
2148
|
-
|
|
2149
|
-
|
|
2150
|
-
|
|
2151
|
-
|
|
2152
|
-
|
|
2019
|
+
hostToBackup: |-
|
|
2020
|
+
web-mongodb-1.web-mongodb-headless.pan-my-app-prod.svc.cluster.local:27017
|
|
2021
|
+
pvcToBackup: |-
|
|
2022
|
+
datadir-web-mongodb-1
|
|
2023
|
+
image: |-
|
|
2024
|
+
mrelite/kubectlmongoshell:v1.0
|
|
2025
|
+
schedule: |-
|
|
2026
|
+
0 4 * * *
|
|
2027
|
+
volumeSnapshotClass: |-
|
|
2028
|
+
snapshotclass
|
|
2029
|
+
architecture: |-
|
|
2030
|
+
replicaset
|
|
2153
2031
|
replicaCount: 2
|
|
2154
2032
|
resources:
|
|
2155
2033
|
limits:
|
|
2156
|
-
memory:
|
|
2034
|
+
memory: |-
|
|
2035
|
+
8Gi
|
|
2157
2036
|
requests:
|
|
2158
|
-
memory:
|
|
2037
|
+
memory: |-
|
|
2038
|
+
8Gi
|
|
2039
|
+
|
|
2040
|
+
EOF
|
|
2159
2041
|
",
|
|
2160
|
-
"
|
|
2161
|
-
"
|
|
2162
|
-
"
|
|
2163
|
-
"
|
|
2164
|
-
"
|
|
2165
|
-
"
|
|
2042
|
+
"echo -e "\\e[0Ksection_end:$(date +%s):writeallvalues\\r\\e[0K"",
|
|
2043
|
+
"kubernetesCreateSecret",
|
|
2044
|
+
"kubernetesDeploy",
|
|
2045
|
+
"echo Uploading SBOM to Dependency Track",
|
|
2046
|
+
"/dtrackuploader https://dep.panter.swiss/ "$DT_KEY_PROD" upload "pan-my-app/web" "https://www.example.com" "__sbom.json" vex.json || true",
|
|
2047
|
+
"echo deployment successful ๐ป",
|
|
2048
|
+
"echo "CL_GITLAB_ENVIRONMENT_URL=https://www.example.com" >> gitlab_environment.env",
|
|
2049
|
+
],
|
|
2050
|
+
"stage": "deploy prod",
|
|
2051
|
+
"variables": {
|
|
2052
|
+
"KUBERNETES_CPU_REQUEST": "0.5",
|
|
2053
|
+
"KUBERNETES_MEMORY_LIMIT": "400Mi",
|
|
2054
|
+
"KUBERNETES_MEMORY_REQUEST": "200Mi",
|
|
2166
2055
|
},
|
|
2167
2056
|
},
|
|
2168
2057
|
"web ๐ Deploy | stage ": {
|
|
2169
2058
|
"allow_failure": false,
|
|
2059
|
+
"artifacts": {
|
|
2060
|
+
"reports": {
|
|
2061
|
+
"dotenv": "gitlab_environment.env",
|
|
2062
|
+
},
|
|
2063
|
+
},
|
|
2170
2064
|
"environment": {
|
|
2171
2065
|
"auto_stop_in": undefined,
|
|
2172
2066
|
"name": "stage/web",
|
|
2173
2067
|
"on_stop": "web ๐ Stop โ ๏ธ | stage ",
|
|
2174
|
-
"url": "
|
|
2068
|
+
"url": "$CL_GITLAB_ENVIRONMENT_URL",
|
|
2175
2069
|
},
|
|
2176
2070
|
"image": "path/to/docker/kubernetes:the-version",
|
|
2177
2071
|
"interruptible": true,
|
|
@@ -2202,107 +2096,151 @@ mongodb:
|
|
|
2202
2096
|
},
|
|
2203
2097
|
],
|
|
2204
2098
|
"script": [
|
|
2099
|
+
"echo -e "\\e[0Ksection_start:$(date +%s):injectvars[collapsed=true]\\r\\e[0KInjecting variables"",
|
|
2100
|
+
"export ENV_SHORT="stage"",
|
|
2101
|
+
"export APP_DIR="app"",
|
|
2102
|
+
"export ENV_TYPE="stage"",
|
|
2103
|
+
"export BUILD_INFO_BUILD_ID="$(git describe --tags 2>/dev/null || git rev-parse HEAD)"",
|
|
2104
|
+
"export BUILD_INFO_BUILD_TIME="$CI_JOB_STARTED_AT"",
|
|
2105
|
+
"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")"",
|
|
2106
|
+
"export HOST="web.stage.my-app.pan.panter.cloud"",
|
|
2107
|
+
"export ROOT_URL="https://web.stage.my-app.pan.panter.cloud"",
|
|
2108
|
+
"export HOST_INTERNAL="web.stage.my-app.pan.panter.cloud"",
|
|
2109
|
+
"export HOST_CANONICAL="web.stage.my-app.pan.panter.cloud"",
|
|
2110
|
+
"export ROOT_URL_INTERNAL="https://web.stage.my-app.pan.panter.cloud"",
|
|
2111
|
+
"export KUBE_NAMESPACE="pan-my-app-stage"",
|
|
2112
|
+
"export KUBE_APP_NAME="web"",
|
|
2113
|
+
"export KUBE_APP_NAME_PREFIX=""",
|
|
2114
|
+
"export MONGODB_ROOT_PASSWORD="$CL_stage_web_MONGODB_ROOT_PASSWORD"",
|
|
2115
|
+
"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\\",\\"KUBE_NAMESPACE\\",\\"KUBE_APP_NAME\\",\\"KUBE_APP_NAME_PREFIX\\",\\"MONGODB_ROOT_PASSWORD\\"]"",
|
|
2116
|
+
"export DOCKER_REGISTRY="$CI_REGISTRY"",
|
|
2117
|
+
"export DOCKER_CACHE_IMAGE="$CI_REGISTRY_IMAGE/caches/web"",
|
|
2118
|
+
"export DOCKER_IMAGE_NAME="stage/web"",
|
|
2119
|
+
"export DOCKER_IMAGE="$CI_REGISTRY_IMAGE/$DOCKER_IMAGE_NAME"",
|
|
2120
|
+
"export DOCKER_IMAGE_TAG="$CI_COMMIT_SHA"",
|
|
2121
|
+
"export RELEASE_NAME="pan-my-app-stage-web"",
|
|
2122
|
+
"export HELM_EXPERIMENTAL_OCI="1"",
|
|
2123
|
+
"export KUBE_DOCKER_IMAGE_PULL_SECRET="gitlab-registry-web"",
|
|
2124
|
+
"export HELM_GITLAB_CHART_NAME="/helm-charts/the-panter-chart"",
|
|
2125
|
+
"export HELM_ARGS=""",
|
|
2126
|
+
"export COMPONENT_NAME="web"",
|
|
2127
|
+
"export BUILD_ID="$(git describe --tags 2>/dev/null || git rev-parse HEAD)"",
|
|
2128
|
+
"echo -e "\\e[0Ksection_end:$(date +%s):injectvars\\r\\e[0K"",
|
|
2205
2129
|
"kubectl config set-cluster "kube-pan-my-app-stage-web" --server="$CL_stage_web_KUBE_URL" --certificate-authority <(echo $CL_stage_web_KUBE_CA_PEM | base64 -d) --embed-certs=true",
|
|
2206
2130
|
"kubectl config set-credentials "kube-pan-my-app-stage-web" --token="$CL_stage_web_KUBE_TOKEN"",
|
|
2207
2131
|
"kubectl config set-context "kube-pan-my-app-stage-web" --cluster="kube-pan-my-app-stage-web" --user="kube-pan-my-app-stage-web" --namespace="pan-my-app-stage"",
|
|
2208
2132
|
"kubectl config use-context "kube-pan-my-app-stage-web"",
|
|
2209
|
-
"
|
|
2210
|
-
"
|
|
2211
|
-
|
|
2212
|
-
"/dtrackuploader https://dep.panter.swiss/ "$DT_KEY_PROD" upload "pan-my-app/web" "https://web.stage.my-app.pan.panter.cloud" "__sbom.json" vex.json || true",
|
|
2213
|
-
"echo deployment successful ๐ป",
|
|
2214
|
-
],
|
|
2215
|
-
"stage": "deploy stage",
|
|
2216
|
-
"variables": {
|
|
2217
|
-
"APP_DIR": "app",
|
|
2218
|
-
"BUILD_ID": "some-id",
|
|
2219
|
-
"BUILD_INFO_BUILD_TIME": "01-01-2023 12:13:14",
|
|
2220
|
-
"BUILD_INFO_CURRENT_VERSION": "3.2.1",
|
|
2221
|
-
"BUILD_INFO_ID": "some-id",
|
|
2222
|
-
"COMPONENT_NAME": "web",
|
|
2223
|
-
"DOCKER_CACHE_IMAGE": "$CI_REGISTRY_IMAGE/caches/web",
|
|
2224
|
-
"DOCKER_IMAGE": "$CI_REGISTRY_IMAGE/$DOCKER_IMAGE_NAME",
|
|
2225
|
-
"DOCKER_IMAGE_NAME": "stage/web",
|
|
2226
|
-
"DOCKER_IMAGE_TAG": "$CI_COMMIT_SHA",
|
|
2227
|
-
"DOCKER_REGISTRY": "$CI_REGISTRY",
|
|
2228
|
-
"ENV_SHORT": "stage",
|
|
2229
|
-
"ENV_TYPE": "stage",
|
|
2230
|
-
"HELM_ARGS": "",
|
|
2231
|
-
"HELM_EXPERIMENTAL_OCI": "1",
|
|
2232
|
-
"HELM_GITLAB_CHART_NAME": "/helm-charts/the-panter-chart",
|
|
2233
|
-
"HOST": "web.stage.my-app.pan.panter.cloud",
|
|
2234
|
-
"HOST_CANONICAL": "web.stage.my-app.pan.panter.cloud",
|
|
2235
|
-
"HOST_INTERNAL": "web.stage.my-app.pan.panter.cloud",
|
|
2236
|
-
"KUBERNETES_CPU_REQUEST": "0.5",
|
|
2237
|
-
"KUBERNETES_MEMORY_LIMIT": "400Mi",
|
|
2238
|
-
"KUBERNETES_MEMORY_REQUEST": "200Mi",
|
|
2239
|
-
"KUBE_APP_NAME": "web",
|
|
2240
|
-
"KUBE_APP_NAME_PREFIX": "",
|
|
2241
|
-
"KUBE_DOCKER_IMAGE_PULL_SECRET": "gitlab-registry-web",
|
|
2242
|
-
"KUBE_NAMESPACE": "pan-my-app-stage",
|
|
2243
|
-
"KUBE_VALUES": "env:
|
|
2133
|
+
"echo -e "\\e[0Ksection_start:$(date +%s):writeallvalues[collapsed=true]\\r\\e[0KWrite __all_values.yml for helm deployment"",
|
|
2134
|
+
"cat > __all_values.yml <<EOF
|
|
2135
|
+
env:
|
|
2244
2136
|
secret:
|
|
2245
|
-
MONGODB_ROOT_PASSWORD:
|
|
2246
|
-
|
|
2137
|
+
MONGODB_ROOT_PASSWORD: |-
|
|
2138
|
+
$(printf %s "$CL_stage_web_MONGODB_ROOT_PASSWORD" | sed 's/^/ /')
|
|
2139
|
+
MONGO_URL: |-
|
|
2140
|
+
mongodb://root:$CL_stage_web_MONGODB_ROOT_PASSWORD@web-mongodb.pan-my-app-stage.svc.cluster.local:27017/app?authSource=admin
|
|
2247
2141
|
public:
|
|
2248
|
-
ENV_SHORT:
|
|
2249
|
-
|
|
2250
|
-
|
|
2251
|
-
|
|
2252
|
-
|
|
2253
|
-
|
|
2254
|
-
|
|
2255
|
-
|
|
2256
|
-
|
|
2257
|
-
|
|
2258
|
-
|
|
2259
|
-
|
|
2260
|
-
|
|
2261
|
-
|
|
2262
|
-
|
|
2142
|
+
ENV_SHORT: |-
|
|
2143
|
+
stage
|
|
2144
|
+
APP_DIR: |-
|
|
2145
|
+
app
|
|
2146
|
+
ENV_TYPE: |-
|
|
2147
|
+
stage
|
|
2148
|
+
BUILD_INFO_BUILD_ID: |-
|
|
2149
|
+
$(printf %s "$(git describe --tags 2>/dev/null || git rev-parse HEAD)" | sed 's/^/ /')
|
|
2150
|
+
BUILD_INFO_BUILD_TIME: |-
|
|
2151
|
+
$(printf %s "$CI_JOB_STARTED_AT" | sed 's/^/ /')
|
|
2152
|
+
BUILD_INFO_CURRENT_VERSION: |-
|
|
2153
|
+
$(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/^/ /')
|
|
2154
|
+
HOST: |-
|
|
2155
|
+
web.stage.my-app.pan.panter.cloud
|
|
2156
|
+
ROOT_URL: |-
|
|
2157
|
+
https://web.stage.my-app.pan.panter.cloud
|
|
2158
|
+
HOST_INTERNAL: |-
|
|
2159
|
+
web.stage.my-app.pan.panter.cloud
|
|
2160
|
+
HOST_CANONICAL: |-
|
|
2161
|
+
web.stage.my-app.pan.panter.cloud
|
|
2162
|
+
ROOT_URL_INTERNAL: |-
|
|
2163
|
+
https://web.stage.my-app.pan.panter.cloud
|
|
2164
|
+
KUBE_NAMESPACE: |-
|
|
2165
|
+
pan-my-app-stage
|
|
2166
|
+
KUBE_APP_NAME: |-
|
|
2167
|
+
web
|
|
2168
|
+
KUBE_APP_NAME_PREFIX: ""
|
|
2169
|
+
_ALL_ENV_VAR_KEYS: |-
|
|
2170
|
+
["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","KUBE_NAMESPACE","KUBE_APP_NAME","KUBE_APP_NAME_PREFIX","MONGODB_ROOT_PASSWORD"]
|
|
2263
2171
|
application:
|
|
2264
|
-
host:
|
|
2265
|
-
|
|
2172
|
+
host: |-
|
|
2173
|
+
web.stage.my-app.pan.panter.cloud
|
|
2174
|
+
command: |-
|
|
2175
|
+
node main.js
|
|
2266
2176
|
livenessProbe:
|
|
2267
2177
|
httpGet:
|
|
2268
|
-
path:
|
|
2178
|
+
path: |-
|
|
2179
|
+
__health
|
|
2269
2180
|
readinessProbe:
|
|
2270
2181
|
httpGet:
|
|
2271
|
-
path:
|
|
2182
|
+
path: |-
|
|
2183
|
+
__health
|
|
2272
2184
|
startupProbe:
|
|
2273
2185
|
httpGet:
|
|
2274
|
-
path:
|
|
2186
|
+
path: |-
|
|
2187
|
+
__health
|
|
2275
2188
|
worker:
|
|
2276
2189
|
enabled: true
|
|
2277
2190
|
mongodb:
|
|
2278
2191
|
enabled: true
|
|
2279
2192
|
auth:
|
|
2280
2193
|
enabled: true
|
|
2281
|
-
rootPassword:
|
|
2282
|
-
|
|
2194
|
+
rootPassword: |-
|
|
2195
|
+
$CL_stage_web_MONGODB_ROOT_PASSWORD
|
|
2196
|
+
replicaSetKey: |-
|
|
2197
|
+
$CL_stage_web_MONGODB_REPLICASET_KEY
|
|
2283
2198
|
persistence:
|
|
2284
|
-
storageClass:
|
|
2199
|
+
storageClass: |-
|
|
2200
|
+
standard-rwo
|
|
2285
2201
|
backup:
|
|
2286
2202
|
enabled: true
|
|
2287
|
-
hostToBackup:
|
|
2288
|
-
|
|
2289
|
-
|
|
2290
|
-
|
|
2291
|
-
|
|
2292
|
-
|
|
2203
|
+
hostToBackup: |-
|
|
2204
|
+
web-mongodb.pan-my-app-stage.svc.cluster.local:27017
|
|
2205
|
+
pvcToBackup: |-
|
|
2206
|
+
web-mongodb
|
|
2207
|
+
image: |-
|
|
2208
|
+
mrelite/kubectlmongoshell:v1.0
|
|
2209
|
+
schedule: |-
|
|
2210
|
+
0 4 * * *
|
|
2211
|
+
volumeSnapshotClass: |-
|
|
2212
|
+
snapshotclass
|
|
2213
|
+
architecture: |-
|
|
2214
|
+
standalone
|
|
2215
|
+
|
|
2216
|
+
EOF
|
|
2293
2217
|
",
|
|
2294
|
-
"
|
|
2295
|
-
"
|
|
2296
|
-
"
|
|
2297
|
-
"
|
|
2298
|
-
"
|
|
2218
|
+
"echo -e "\\e[0Ksection_end:$(date +%s):writeallvalues\\r\\e[0K"",
|
|
2219
|
+
"kubernetesCreateSecret",
|
|
2220
|
+
"kubernetesDeploy",
|
|
2221
|
+
"echo Uploading SBOM to Dependency Track",
|
|
2222
|
+
"/dtrackuploader https://dep.panter.swiss/ "$DT_KEY_PROD" upload "pan-my-app/web" "https://web.stage.my-app.pan.panter.cloud" "__sbom.json" vex.json || true",
|
|
2223
|
+
"echo deployment successful ๐ป",
|
|
2224
|
+
"echo "CL_GITLAB_ENVIRONMENT_URL=https://web.stage.my-app.pan.panter.cloud" >> gitlab_environment.env",
|
|
2225
|
+
],
|
|
2226
|
+
"stage": "deploy stage",
|
|
2227
|
+
"variables": {
|
|
2228
|
+
"KUBERNETES_CPU_REQUEST": "0.5",
|
|
2229
|
+
"KUBERNETES_MEMORY_LIMIT": "400Mi",
|
|
2230
|
+
"KUBERNETES_MEMORY_REQUEST": "200Mi",
|
|
2299
2231
|
},
|
|
2300
2232
|
},
|
|
2301
2233
|
"web ๐ Stop โ ๏ธ | prod ": {
|
|
2234
|
+
"allow_failure": true,
|
|
2235
|
+
"artifacts": {
|
|
2236
|
+
"reports": {
|
|
2237
|
+
"dotenv": "gitlab_environment.env",
|
|
2238
|
+
},
|
|
2239
|
+
},
|
|
2302
2240
|
"environment": {
|
|
2303
2241
|
"action": "stop",
|
|
2304
2242
|
"name": "prod/web",
|
|
2305
|
-
"url": "
|
|
2243
|
+
"url": "$CL_GITLAB_ENVIRONMENT_URL",
|
|
2306
2244
|
},
|
|
2307
2245
|
"image": "path/to/docker/kubernetes:the-version",
|
|
2308
2246
|
"interruptible": true,
|
|
@@ -2316,16 +2254,40 @@ mongodb:
|
|
|
2316
2254
|
},
|
|
2317
2255
|
"rules": [
|
|
2318
2256
|
{
|
|
2319
|
-
"allow_failure": true,
|
|
2320
2257
|
"if": "$CI_COMMIT_BRANCH =~ /^[0-9]+\\.([0-9]+|x)\\.x$/",
|
|
2321
2258
|
"when": "on_success",
|
|
2322
2259
|
},
|
|
2323
2260
|
{
|
|
2324
|
-
"allow_failure": true,
|
|
2325
2261
|
"when": "manual",
|
|
2326
2262
|
},
|
|
2327
2263
|
],
|
|
2328
2264
|
"script": [
|
|
2265
|
+
"echo -e "\\e[0Ksection_start:$(date +%s):injectvars[collapsed=true]\\r\\e[0KInjecting variables"",
|
|
2266
|
+
"export ENV_SHORT="prod"",
|
|
2267
|
+
"export APP_DIR="app"",
|
|
2268
|
+
"export ENV_TYPE="prod"",
|
|
2269
|
+
"export BUILD_INFO_BUILD_ID="$(git describe --tags 2>/dev/null || git rev-parse HEAD)"",
|
|
2270
|
+
"export BUILD_INFO_BUILD_TIME="$CI_JOB_STARTED_AT"",
|
|
2271
|
+
"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")"",
|
|
2272
|
+
"export HOST="www.example.com"",
|
|
2273
|
+
"export ROOT_URL="https://www.example.com"",
|
|
2274
|
+
"export HOST_INTERNAL="web.prod.my-app.pan.panter.cloud"",
|
|
2275
|
+
"export HOST_CANONICAL="web.prod.my-app.pan.panter.cloud"",
|
|
2276
|
+
"export ROOT_URL_INTERNAL="https://web.prod.my-app.pan.panter.cloud"",
|
|
2277
|
+
"export KUBE_NAMESPACE="pan-my-app-prod"",
|
|
2278
|
+
"export KUBE_APP_NAME="web"",
|
|
2279
|
+
"export KUBE_APP_NAME_PREFIX=""",
|
|
2280
|
+
"export MONGODB_ROOT_PASSWORD="$CL_prod_web_MONGODB_ROOT_PASSWORD"",
|
|
2281
|
+
"export MONGODB_REPLICASET_KEY="$CL_prod_web_MONGODB_REPLICASET_KEY"",
|
|
2282
|
+
"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\\",\\"KUBE_NAMESPACE\\",\\"KUBE_APP_NAME\\",\\"KUBE_APP_NAME_PREFIX\\",\\"MONGODB_ROOT_PASSWORD\\",\\"MONGODB_REPLICASET_KEY\\"]"",
|
|
2283
|
+
"export RELEASE_NAME="pan-my-app-prod-web"",
|
|
2284
|
+
"export HELM_EXPERIMENTAL_OCI="1"",
|
|
2285
|
+
"export KUBE_DOCKER_IMAGE_PULL_SECRET="gitlab-registry-web"",
|
|
2286
|
+
"export HELM_GITLAB_CHART_NAME="/helm-charts/the-panter-chart"",
|
|
2287
|
+
"export HELM_ARGS=""",
|
|
2288
|
+
"export COMPONENT_NAME="web"",
|
|
2289
|
+
"export BUILD_ID="$(git describe --tags 2>/dev/null || git rev-parse HEAD)"",
|
|
2290
|
+
"echo -e "\\e[0Ksection_end:$(date +%s):injectvars\\r\\e[0K"",
|
|
2329
2291
|
"kubectl config set-cluster "kube-pan-my-app-prod-web" --server="$CL_prod_web_KUBE_URL" --certificate-authority <(echo $CL_prod_web_KUBE_CA_PEM | base64 -d) --embed-certs=true",
|
|
2330
2292
|
"kubectl config set-credentials "kube-pan-my-app-prod-web" --token="$CL_prod_web_KUBE_TOKEN"",
|
|
2331
2293
|
"kubectl config set-context "kube-pan-my-app-prod-web" --cluster="kube-pan-my-app-prod-web" --user="kube-pan-my-app-prod-web" --namespace="pan-my-app-prod"",
|
|
@@ -2333,106 +2295,27 @@ mongodb:
|
|
|
2333
2295
|
"kubernetesDelete",
|
|
2334
2296
|
"echo Disabling component in Dependency Track",
|
|
2335
2297
|
"/dtrackuploader https://dep.panter.swiss/ "$DT_KEY_PROD" disable "pan-my-app/web" "https://www.example.com" || true",
|
|
2298
|
+
"echo "CL_GITLAB_ENVIRONMENT_URL=https://www.example.com" >> gitlab_environment.env",
|
|
2336
2299
|
],
|
|
2337
2300
|
"stage": "stop prod",
|
|
2338
2301
|
"variables": {
|
|
2339
|
-
"APP_DIR": "app",
|
|
2340
|
-
"BUILD_ID": "some-id",
|
|
2341
|
-
"BUILD_INFO_BUILD_TIME": "01-01-2023 12:13:14",
|
|
2342
|
-
"BUILD_INFO_CURRENT_VERSION": "3.2.1",
|
|
2343
|
-
"BUILD_INFO_ID": "some-id",
|
|
2344
|
-
"COMPONENT_NAME": "web",
|
|
2345
|
-
"ENV_SHORT": "prod",
|
|
2346
|
-
"ENV_TYPE": "prod",
|
|
2347
2302
|
"GIT_STRATEGY": "none",
|
|
2348
|
-
"HELM_ARGS": "",
|
|
2349
|
-
"HELM_EXPERIMENTAL_OCI": "1",
|
|
2350
|
-
"HELM_GITLAB_CHART_NAME": "/helm-charts/the-panter-chart",
|
|
2351
|
-
"HOST": "www.example.com",
|
|
2352
|
-
"HOST_CANONICAL": "web.prod.my-app.pan.panter.cloud",
|
|
2353
|
-
"HOST_INTERNAL": "web.prod.my-app.pan.panter.cloud",
|
|
2354
2303
|
"KUBERNETES_CPU_REQUEST": "0.5",
|
|
2355
2304
|
"KUBERNETES_MEMORY_LIMIT": "400Mi",
|
|
2356
2305
|
"KUBERNETES_MEMORY_REQUEST": "200Mi",
|
|
2357
|
-
"KUBE_APP_NAME": "web",
|
|
2358
|
-
"KUBE_APP_NAME_PREFIX": "",
|
|
2359
|
-
"KUBE_DOCKER_IMAGE_PULL_SECRET": "gitlab-registry-web",
|
|
2360
|
-
"KUBE_NAMESPACE": "pan-my-app-prod",
|
|
2361
|
-
"KUBE_VALUES": "env:
|
|
2362
|
-
secret:
|
|
2363
|
-
MONGODB_ROOT_PASSWORD: '$CL_prod_web_MONGODB_ROOT_PASSWORD'
|
|
2364
|
-
MONGODB_REPLICASET_KEY: '$CL_prod_web_MONGODB_REPLICASET_KEY'
|
|
2365
|
-
MONGO_URL: 'mongodb://root:$CL_prod_web_MONGODB_ROOT_PASSWORD@web-mongodb-0.web-mongodb-headless.pan-my-app-prod.svc.cluster.local:27017,web-mongodb-1.web-mongodb-headless.pan-my-app-prod.svc.cluster.local:27017/app?replicaSet=rs0&authSource=admin'
|
|
2366
|
-
MONGO_OPLOG_URL: 'mongodb://root:$CL_prod_web_MONGODB_ROOT_PASSWORD@web-mongodb-0.web-mongodb-headless.pan-my-app-prod.svc.cluster.local:27017,web-mongodb-1.web-mongodb-headless.pan-my-app-prod.svc.cluster.local:27017/local?replicaSet=rs0&authSource=admin'
|
|
2367
|
-
public:
|
|
2368
|
-
ENV_SHORT: 'prod'
|
|
2369
|
-
APP_DIR: 'app'
|
|
2370
|
-
ENV_TYPE: 'prod'
|
|
2371
|
-
BUILD_INFO_ID: 'some-id'
|
|
2372
|
-
BUILD_INFO_BUILD_TIME: '01-01-2023 12:13:14'
|
|
2373
|
-
BUILD_INFO_CURRENT_VERSION: '3.2.1'
|
|
2374
|
-
HOST: 'www.example.com'
|
|
2375
|
-
ROOT_URL: 'https://www.example.com'
|
|
2376
|
-
HOST_CANONICAL: 'web.prod.my-app.pan.panter.cloud'
|
|
2377
|
-
ROOT_URL_INTERNAL: 'https://web.prod.my-app.pan.panter.cloud'
|
|
2378
|
-
KUBE_NAMESPACE: 'pan-my-app-prod'
|
|
2379
|
-
KUBE_APP_NAME: 'web'
|
|
2380
|
-
KUBE_APP_NAME_PREFIX: ''
|
|
2381
|
-
HOST_INTERNAL: 'web.prod.my-app.pan.panter.cloud'
|
|
2382
|
-
_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","KUBE_NAMESPACE","KUBE_APP_NAME","KUBE_APP_NAME_PREFIX","HOST_INTERNAL","MONGODB_ROOT_PASSWORD","MONGODB_REPLICASET_KEY"]'
|
|
2383
|
-
application:
|
|
2384
|
-
host: 'www.example.com'
|
|
2385
|
-
command: 'node main.js'
|
|
2386
|
-
livenessProbe:
|
|
2387
|
-
httpGet:
|
|
2388
|
-
path: '__health'
|
|
2389
|
-
readinessProbe:
|
|
2390
|
-
httpGet:
|
|
2391
|
-
path: '__health'
|
|
2392
|
-
startupProbe:
|
|
2393
|
-
httpGet:
|
|
2394
|
-
path: '__health'
|
|
2395
|
-
worker:
|
|
2396
|
-
enabled: true
|
|
2397
|
-
redirects:
|
|
2398
|
-
- host: 'example.com'
|
|
2399
|
-
mongodb:
|
|
2400
|
-
enabled: true
|
|
2401
|
-
auth:
|
|
2402
|
-
enabled: true
|
|
2403
|
-
rootPassword: '$CL_prod_web_MONGODB_ROOT_PASSWORD'
|
|
2404
|
-
replicaSetKey: '$CL_prod_web_MONGODB_REPLICASET_KEY'
|
|
2405
|
-
persistence:
|
|
2406
|
-
storageClass: 'premium-rwo'
|
|
2407
|
-
size: '50Gi'
|
|
2408
|
-
backup:
|
|
2409
|
-
enabled: true
|
|
2410
|
-
hostToBackup: 'web-mongodb-1.web-mongodb-headless.pan-my-app-prod.svc.cluster.local:27017'
|
|
2411
|
-
pvcToBackup: 'datadir-web-mongodb-1'
|
|
2412
|
-
image: 'mrelite/kubectlmongoshell:v1.0'
|
|
2413
|
-
schedule: '0 4 * * *'
|
|
2414
|
-
volumeSnapshotClass: 'snapshotclass'
|
|
2415
|
-
architecture: 'replicaset'
|
|
2416
|
-
replicaCount: 2
|
|
2417
|
-
resources:
|
|
2418
|
-
limits:
|
|
2419
|
-
memory: '8Gi'
|
|
2420
|
-
requests:
|
|
2421
|
-
memory: '8Gi'
|
|
2422
|
-
",
|
|
2423
|
-
"MONGODB_REPLICASET_KEY": "$CL_prod_web_MONGODB_REPLICASET_KEY",
|
|
2424
|
-
"MONGODB_ROOT_PASSWORD": "$CL_prod_web_MONGODB_ROOT_PASSWORD",
|
|
2425
|
-
"RELEASE_NAME": "pan-my-app-prod-web",
|
|
2426
|
-
"ROOT_URL": "https://www.example.com",
|
|
2427
|
-
"ROOT_URL_INTERNAL": "https://web.prod.my-app.pan.panter.cloud",
|
|
2428
|
-
"_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","KUBE_NAMESPACE","KUBE_APP_NAME","KUBE_APP_NAME_PREFIX","HOST_INTERNAL","MONGODB_ROOT_PASSWORD","MONGODB_REPLICASET_KEY"]",
|
|
2429
2306
|
},
|
|
2430
2307
|
},
|
|
2431
2308
|
"web ๐ Stop โ ๏ธ | stage ": {
|
|
2309
|
+
"allow_failure": true,
|
|
2310
|
+
"artifacts": {
|
|
2311
|
+
"reports": {
|
|
2312
|
+
"dotenv": "gitlab_environment.env",
|
|
2313
|
+
},
|
|
2314
|
+
},
|
|
2432
2315
|
"environment": {
|
|
2433
2316
|
"action": "stop",
|
|
2434
2317
|
"name": "stage/web",
|
|
2435
|
-
"url": "
|
|
2318
|
+
"url": "$CL_GITLAB_ENVIRONMENT_URL",
|
|
2436
2319
|
},
|
|
2437
2320
|
"image": "path/to/docker/kubernetes:the-version",
|
|
2438
2321
|
"interruptible": true,
|
|
@@ -2446,16 +2329,39 @@ mongodb:
|
|
|
2446
2329
|
},
|
|
2447
2330
|
"rules": [
|
|
2448
2331
|
{
|
|
2449
|
-
"allow_failure": true,
|
|
2450
2332
|
"if": "$CI_COMMIT_BRANCH =~ /^[0-9]+\\.([0-9]+|x)\\.x$/",
|
|
2451
2333
|
"when": "on_success",
|
|
2452
2334
|
},
|
|
2453
2335
|
{
|
|
2454
|
-
"allow_failure": true,
|
|
2455
2336
|
"when": "manual",
|
|
2456
2337
|
},
|
|
2457
2338
|
],
|
|
2458
2339
|
"script": [
|
|
2340
|
+
"echo -e "\\e[0Ksection_start:$(date +%s):injectvars[collapsed=true]\\r\\e[0KInjecting variables"",
|
|
2341
|
+
"export ENV_SHORT="stage"",
|
|
2342
|
+
"export APP_DIR="app"",
|
|
2343
|
+
"export ENV_TYPE="stage"",
|
|
2344
|
+
"export BUILD_INFO_BUILD_ID="$(git describe --tags 2>/dev/null || git rev-parse HEAD)"",
|
|
2345
|
+
"export BUILD_INFO_BUILD_TIME="$CI_JOB_STARTED_AT"",
|
|
2346
|
+
"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")"",
|
|
2347
|
+
"export HOST="web.stage.my-app.pan.panter.cloud"",
|
|
2348
|
+
"export ROOT_URL="https://web.stage.my-app.pan.panter.cloud"",
|
|
2349
|
+
"export HOST_INTERNAL="web.stage.my-app.pan.panter.cloud"",
|
|
2350
|
+
"export HOST_CANONICAL="web.stage.my-app.pan.panter.cloud"",
|
|
2351
|
+
"export ROOT_URL_INTERNAL="https://web.stage.my-app.pan.panter.cloud"",
|
|
2352
|
+
"export KUBE_NAMESPACE="pan-my-app-stage"",
|
|
2353
|
+
"export KUBE_APP_NAME="web"",
|
|
2354
|
+
"export KUBE_APP_NAME_PREFIX=""",
|
|
2355
|
+
"export MONGODB_ROOT_PASSWORD="$CL_stage_web_MONGODB_ROOT_PASSWORD"",
|
|
2356
|
+
"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\\",\\"KUBE_NAMESPACE\\",\\"KUBE_APP_NAME\\",\\"KUBE_APP_NAME_PREFIX\\",\\"MONGODB_ROOT_PASSWORD\\"]"",
|
|
2357
|
+
"export RELEASE_NAME="pan-my-app-stage-web"",
|
|
2358
|
+
"export HELM_EXPERIMENTAL_OCI="1"",
|
|
2359
|
+
"export KUBE_DOCKER_IMAGE_PULL_SECRET="gitlab-registry-web"",
|
|
2360
|
+
"export HELM_GITLAB_CHART_NAME="/helm-charts/the-panter-chart"",
|
|
2361
|
+
"export HELM_ARGS=""",
|
|
2362
|
+
"export COMPONENT_NAME="web"",
|
|
2363
|
+
"export BUILD_ID="$(git describe --tags 2>/dev/null || git rev-parse HEAD)"",
|
|
2364
|
+
"echo -e "\\e[0Ksection_end:$(date +%s):injectvars\\r\\e[0K"",
|
|
2459
2365
|
"kubectl config set-cluster "kube-pan-my-app-stage-web" --server="$CL_stage_web_KUBE_URL" --certificate-authority <(echo $CL_stage_web_KUBE_CA_PEM | base64 -d) --embed-certs=true",
|
|
2460
2366
|
"kubectl config set-credentials "kube-pan-my-app-stage-web" --token="$CL_stage_web_KUBE_TOKEN"",
|
|
2461
2367
|
"kubectl config set-context "kube-pan-my-app-stage-web" --cluster="kube-pan-my-app-stage-web" --user="kube-pan-my-app-stage-web" --namespace="pan-my-app-stage"",
|
|
@@ -2463,87 +2369,14 @@ mongodb:
|
|
|
2463
2369
|
"kubernetesDelete",
|
|
2464
2370
|
"echo Disabling component in Dependency Track",
|
|
2465
2371
|
"/dtrackuploader https://dep.panter.swiss/ "$DT_KEY_PROD" disable "pan-my-app/web" "https://web.stage.my-app.pan.panter.cloud" || true",
|
|
2372
|
+
"echo "CL_GITLAB_ENVIRONMENT_URL=https://web.stage.my-app.pan.panter.cloud" >> gitlab_environment.env",
|
|
2466
2373
|
],
|
|
2467
2374
|
"stage": "stop stage",
|
|
2468
2375
|
"variables": {
|
|
2469
|
-
"APP_DIR": "app",
|
|
2470
|
-
"BUILD_ID": "some-id",
|
|
2471
|
-
"BUILD_INFO_BUILD_TIME": "01-01-2023 12:13:14",
|
|
2472
|
-
"BUILD_INFO_CURRENT_VERSION": "3.2.1",
|
|
2473
|
-
"BUILD_INFO_ID": "some-id",
|
|
2474
|
-
"COMPONENT_NAME": "web",
|
|
2475
|
-
"ENV_SHORT": "stage",
|
|
2476
|
-
"ENV_TYPE": "stage",
|
|
2477
2376
|
"GIT_STRATEGY": "none",
|
|
2478
|
-
"HELM_ARGS": "",
|
|
2479
|
-
"HELM_EXPERIMENTAL_OCI": "1",
|
|
2480
|
-
"HELM_GITLAB_CHART_NAME": "/helm-charts/the-panter-chart",
|
|
2481
|
-
"HOST": "web.stage.my-app.pan.panter.cloud",
|
|
2482
|
-
"HOST_CANONICAL": "web.stage.my-app.pan.panter.cloud",
|
|
2483
|
-
"HOST_INTERNAL": "web.stage.my-app.pan.panter.cloud",
|
|
2484
2377
|
"KUBERNETES_CPU_REQUEST": "0.5",
|
|
2485
2378
|
"KUBERNETES_MEMORY_LIMIT": "400Mi",
|
|
2486
2379
|
"KUBERNETES_MEMORY_REQUEST": "200Mi",
|
|
2487
|
-
"KUBE_APP_NAME": "web",
|
|
2488
|
-
"KUBE_APP_NAME_PREFIX": "",
|
|
2489
|
-
"KUBE_DOCKER_IMAGE_PULL_SECRET": "gitlab-registry-web",
|
|
2490
|
-
"KUBE_NAMESPACE": "pan-my-app-stage",
|
|
2491
|
-
"KUBE_VALUES": "env:
|
|
2492
|
-
secret:
|
|
2493
|
-
MONGODB_ROOT_PASSWORD: '$CL_stage_web_MONGODB_ROOT_PASSWORD'
|
|
2494
|
-
MONGO_URL: 'mongodb://root:$CL_stage_web_MONGODB_ROOT_PASSWORD@web-mongodb.pan-my-app-stage.svc.cluster.local:27017/app?authSource=admin'
|
|
2495
|
-
public:
|
|
2496
|
-
ENV_SHORT: 'stage'
|
|
2497
|
-
APP_DIR: 'app'
|
|
2498
|
-
ENV_TYPE: 'stage'
|
|
2499
|
-
BUILD_INFO_ID: 'some-id'
|
|
2500
|
-
BUILD_INFO_BUILD_TIME: '01-01-2023 12:13:14'
|
|
2501
|
-
BUILD_INFO_CURRENT_VERSION: '3.2.1'
|
|
2502
|
-
HOST: 'web.stage.my-app.pan.panter.cloud'
|
|
2503
|
-
ROOT_URL: 'https://web.stage.my-app.pan.panter.cloud'
|
|
2504
|
-
HOST_CANONICAL: 'web.stage.my-app.pan.panter.cloud'
|
|
2505
|
-
ROOT_URL_INTERNAL: 'https://web.stage.my-app.pan.panter.cloud'
|
|
2506
|
-
KUBE_NAMESPACE: 'pan-my-app-stage'
|
|
2507
|
-
KUBE_APP_NAME: 'web'
|
|
2508
|
-
KUBE_APP_NAME_PREFIX: ''
|
|
2509
|
-
HOST_INTERNAL: 'web.stage.my-app.pan.panter.cloud'
|
|
2510
|
-
_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","KUBE_NAMESPACE","KUBE_APP_NAME","KUBE_APP_NAME_PREFIX","HOST_INTERNAL","MONGODB_ROOT_PASSWORD"]'
|
|
2511
|
-
application:
|
|
2512
|
-
host: 'web.stage.my-app.pan.panter.cloud'
|
|
2513
|
-
command: 'node main.js'
|
|
2514
|
-
livenessProbe:
|
|
2515
|
-
httpGet:
|
|
2516
|
-
path: '__health'
|
|
2517
|
-
readinessProbe:
|
|
2518
|
-
httpGet:
|
|
2519
|
-
path: '__health'
|
|
2520
|
-
startupProbe:
|
|
2521
|
-
httpGet:
|
|
2522
|
-
path: '__health'
|
|
2523
|
-
worker:
|
|
2524
|
-
enabled: true
|
|
2525
|
-
mongodb:
|
|
2526
|
-
enabled: true
|
|
2527
|
-
auth:
|
|
2528
|
-
enabled: true
|
|
2529
|
-
rootPassword: '$CL_stage_web_MONGODB_ROOT_PASSWORD'
|
|
2530
|
-
replicaSetKey: '$CL_stage_web_MONGODB_REPLICASET_KEY'
|
|
2531
|
-
persistence:
|
|
2532
|
-
storageClass: 'standard-rwo'
|
|
2533
|
-
backup:
|
|
2534
|
-
enabled: true
|
|
2535
|
-
hostToBackup: 'web-mongodb.pan-my-app-stage.svc.cluster.local:27017'
|
|
2536
|
-
pvcToBackup: 'web-mongodb'
|
|
2537
|
-
image: 'mrelite/kubectlmongoshell:v1.0'
|
|
2538
|
-
schedule: '0 4 * * *'
|
|
2539
|
-
volumeSnapshotClass: 'snapshotclass'
|
|
2540
|
-
architecture: 'standalone'
|
|
2541
|
-
",
|
|
2542
|
-
"MONGODB_ROOT_PASSWORD": "$CL_stage_web_MONGODB_ROOT_PASSWORD",
|
|
2543
|
-
"RELEASE_NAME": "pan-my-app-stage-web",
|
|
2544
|
-
"ROOT_URL": "https://web.stage.my-app.pan.panter.cloud",
|
|
2545
|
-
"ROOT_URL_INTERNAL": "https://web.stage.my-app.pan.panter.cloud",
|
|
2546
|
-
"_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","KUBE_NAMESPACE","KUBE_APP_NAME","KUBE_APP_NAME_PREFIX","HOST_INTERNAL","MONGODB_ROOT_PASSWORD"]",
|
|
2547
2380
|
},
|
|
2548
2381
|
},
|
|
2549
2382
|
"web ๐งพ sbom | prod ": {
|
|
@@ -2564,6 +2397,8 @@ mongodb:
|
|
|
2564
2397
|
],
|
|
2565
2398
|
},
|
|
2566
2399
|
"script": [
|
|
2400
|
+
"echo -e "\\e[0Ksection_start:$(date +%s):injectvars[collapsed=true]\\r\\e[0KInjecting variables"",
|
|
2401
|
+
"echo -e "\\e[0Ksection_end:$(date +%s):injectvars\\r\\e[0K"",
|
|
2567
2402
|
"trivy fs --quiet --format cyclonedx --output "__sbom.json" app",
|
|
2568
2403
|
],
|
|
2569
2404
|
"stage": "build",
|
|
@@ -2587,6 +2422,8 @@ mongodb:
|
|
|
2587
2422
|
],
|
|
2588
2423
|
},
|
|
2589
2424
|
"script": [
|
|
2425
|
+
"echo -e "\\e[0Ksection_start:$(date +%s):injectvars[collapsed=true]\\r\\e[0KInjecting variables"",
|
|
2426
|
+
"echo -e "\\e[0Ksection_end:$(date +%s):injectvars\\r\\e[0K"",
|
|
2590
2427
|
"trivy fs --quiet --format cyclonedx --output "__sbom.json" app",
|
|
2591
2428
|
],
|
|
2592
2429
|
"stage": "build",
|
|
@@ -2639,7 +2476,7 @@ mongodb:
|
|
|
2639
2476
|
],
|
|
2640
2477
|
"variables": {
|
|
2641
2478
|
"FF_USE_FASTZIP": "true",
|
|
2642
|
-
"GIT_DEPTH": 1,
|
|
2479
|
+
"GIT_DEPTH": "1",
|
|
2643
2480
|
},
|
|
2644
2481
|
"workflow": {
|
|
2645
2482
|
"rules": [
|