@catladder/pipeline 1.144.1 โ 1.145.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/bash/BashExpression.d.ts +40 -0
- package/dist/bash/BashExpression.js +124 -0
- package/dist/bash/bashExpressionPerPipelineType.d.ts +6 -0
- package/dist/bash/bashExpressionPerPipelineType.js +11 -0
- package/dist/bash/bashYaml.d.ts +10 -0
- package/dist/bash/bashYaml.js +46 -0
- package/dist/bash/getInjectVarsScript.d.ts +2 -0
- package/dist/bash/getInjectVarsScript.js +45 -0
- package/dist/bash/replaceAsync.d.ts +2 -0
- package/dist/{pipeline/commitInfo/getCommitInfo.js โ bash/replaceAsync.js} +49 -21
- package/dist/build/base/__tests__/createArtifactsConfig.test.js +3 -1
- package/dist/build/base/constants.js +3 -1
- package/dist/build/base/createAppBuildJob.d.ts +2 -1
- package/dist/build/base/createAppBuildJob.js +10 -6
- package/dist/build/base/createArtifactsConfig.d.ts +1 -1
- package/dist/build/base/createArtifactsConfig.js +3 -1
- package/dist/build/base/index.js +3 -1
- package/dist/build/base/writeBuildInfo.js +4 -3
- package/dist/build/base/writeDotEnv.js +12 -3
- package/dist/build/custom/__tests__/testJob.test.js +3 -1
- package/dist/build/custom/buildJob.js +4 -12
- package/dist/build/custom/index.js +3 -1
- package/dist/build/custom/testJob.d.ts +1 -1
- package/dist/build/custom/testJob.js +18 -14
- package/dist/build/docker.d.ts +5 -31
- package/dist/build/docker.js +16 -9
- package/dist/build/index.d.ts +1 -1
- package/dist/build/index.js +13 -7
- package/dist/build/node/buildJob.js +4 -12
- package/dist/build/node/cache.js +6 -3
- package/dist/build/node/constants.js +3 -1
- package/dist/build/node/index.js +3 -1
- package/dist/build/node/meteor.js +5 -2
- package/dist/build/node/testJob.js +18 -14
- package/dist/build/node/yarn.d.ts +3 -2
- package/dist/build/node/yarn.js +6 -3
- package/dist/build/rails/build.js +3 -1
- package/dist/build/rails/index.js +3 -1
- package/dist/build/rails/test.js +15 -11
- package/dist/build/sbom.js +3 -1
- package/dist/build/types.d.ts +24 -18
- package/dist/build/types.js +3 -1
- package/dist/bundles/catladder-gitlab/index.js +3 -3
- package/dist/catladder-gitlab.js +10 -54
- package/dist/config/__tests__/configruedEnvs.test.js +3 -1
- package/dist/config/configruedEnvs.js +3 -1
- package/dist/config/index.js +13 -7
- package/dist/config/readConfig.js +6 -5
- package/dist/constants.js +5 -3
- package/dist/context/__tests__/resolveReferences.test.js +40 -8
- package/dist/context/getBuildInfoVariables.d.ts +7 -0
- package/dist/context/getBuildInfoVariables.js +29 -0
- package/dist/context/getEnvConfig.js +3 -1
- package/dist/context/getEnvType.js +3 -1
- package/dist/context/getEnvironment.d.ts +3 -3
- package/dist/context/getEnvironment.js +10 -14
- package/dist/context/getEnvironmentContext.d.ts +7 -3
- package/dist/context/getEnvironmentContext.js +21 -11
- package/dist/context/getEnvironmentVariables.d.ts +26 -5
- package/dist/context/getEnvironmentVariables.js +41 -25
- package/dist/context/getLabels.js +4 -2
- package/dist/context/getReviewSlug.d.ts +4 -0
- package/dist/context/getReviewSlug.js +22 -0
- package/dist/context/index.d.ts +12 -3
- package/dist/context/index.js +21 -15
- package/dist/context/resolveReferences.d.ts +3 -1
- package/dist/context/resolveReferences.js +53 -21
- package/dist/context/transformJobOnlyVars.d.ts +5 -2
- package/dist/context/transformJobOnlyVars.js +4 -2
- package/dist/context/utils/envVars.d.ts +1 -1
- package/dist/context/utils/envVars.js +5 -2
- package/dist/defaults/index.js +3 -1
- package/dist/deploy/base/deploy.d.ts +1 -1
- package/dist/deploy/base/deploy.js +12 -11
- package/dist/deploy/base/index.js +3 -1
- package/dist/deploy/base/rollback.d.ts +1 -1
- package/dist/deploy/base/rollback.js +13 -9
- package/dist/deploy/base/stop.d.ts +1 -1
- package/dist/deploy/base/stop.js +16 -11
- package/dist/deploy/base/types.d.ts +1 -1
- package/dist/deploy/base/types.js +3 -1
- package/dist/deploy/base/variables.js +3 -1
- package/dist/deploy/cloudRun/artifactsRegistry.d.ts +2 -1
- package/dist/deploy/cloudRun/artifactsRegistry.js +6 -4
- package/dist/deploy/cloudRun/cleanup.js +3 -1
- package/dist/deploy/cloudRun/cloudRunRevisions.js +3 -1
- package/dist/deploy/cloudRun/createJobs/cloudRunJobs.js +8 -5
- package/dist/deploy/cloudRun/createJobs/cloudRunServices.d.ts +2 -2
- package/dist/deploy/cloudRun/createJobs/cloudRunServices.js +6 -3
- package/dist/deploy/cloudRun/createJobs/common.d.ts +3 -3
- package/dist/deploy/cloudRun/createJobs/common.js +3 -1
- package/dist/deploy/cloudRun/createJobs/constants.d.ts +1 -0
- package/dist/deploy/cloudRun/createJobs/constants.js +7 -0
- package/dist/deploy/cloudRun/createJobs/getCloudRunDeployScripts.js +9 -2
- package/dist/deploy/cloudRun/createJobs/getCloudRunStopScripts.js +3 -1
- package/dist/deploy/cloudRun/createJobs/index.js +25 -8
- package/dist/deploy/cloudRun/createJobs/volumes.js +3 -1
- package/dist/deploy/cloudRun/index.js +5 -3
- package/dist/deploy/cloudRun/utils/createArgsString.d.ts +2 -1
- package/dist/deploy/cloudRun/utils/createArgsString.js +3 -1
- package/dist/deploy/cloudRun/utils/database.js +13 -13
- package/dist/deploy/cloudRun/utils/gcloudServiceAccountLoginCommands.js +3 -1
- package/dist/deploy/cloudRun/utils/getServiceName.d.ts +1 -1
- package/dist/deploy/cloudRun/utils/getServiceName.js +3 -1
- package/dist/deploy/cloudRun/utils/jobName.d.ts +2 -1
- package/dist/deploy/cloudRun/utils/jobName.js +4 -2
- package/dist/deploy/cloudRun/utils/removeFirstLinesFromCommandOutput.js +3 -1
- package/dist/deploy/cloudSql/utils.d.ts +2 -1
- package/dist/deploy/cloudSql/utils.js +7 -2
- package/dist/deploy/custom/deployJob.js +3 -1
- package/dist/deploy/custom/index.js +3 -1
- package/dist/deploy/dockerTag/deployJob.js +3 -1
- package/dist/deploy/dockerTag/index.js +3 -1
- package/dist/deploy/index.d.ts +4 -3
- package/dist/deploy/index.js +13 -7
- package/dist/deploy/kubernetes/additionalSecretKeys.js +3 -1
- package/dist/deploy/kubernetes/cloudSql/index.d.ts +3 -2
- package/dist/deploy/kubernetes/cloudSql/index.js +6 -4
- package/dist/deploy/kubernetes/deployJob.js +22 -15
- package/dist/deploy/kubernetes/index.js +51 -14
- package/dist/deploy/kubernetes/kubeEnv.d.ts +3 -2
- package/dist/deploy/kubernetes/kubeEnv.js +7 -4
- package/dist/deploy/kubernetes/kubeValues.d.ts +2 -2
- package/dist/deploy/kubernetes/kubeValues.js +3 -2
- package/dist/deploy/kubernetes/mongodb.js +3 -1
- package/dist/deploy/kubernetes/processSecretsAsFiles.d.ts +2 -1
- package/dist/deploy/kubernetes/processSecretsAsFiles.js +3 -1
- package/dist/deploy/sbom.js +3 -1
- package/dist/deploy/types/base.d.ts +8 -2
- package/dist/deploy/types/base.js +3 -1
- package/dist/deploy/types/custom.d.ts +1 -1
- package/dist/deploy/types/custom.js +3 -1
- package/dist/deploy/types/dockerTag.d.ts +1 -1
- package/dist/deploy/types/dockerTag.js +3 -1
- package/dist/deploy/types/googleCloudRun.d.ts +19 -18
- package/dist/deploy/types/googleCloudRun.js +3 -1
- package/dist/deploy/types/index.d.ts +6 -6
- package/dist/deploy/types/index.js +13 -7
- package/dist/deploy/types/kubernetes.d.ts +22 -22
- package/dist/deploy/types/kubernetes.js +3 -1
- package/dist/deploy/utils.js +3 -1
- package/dist/index.d.ts +3 -2
- package/dist/index.js +16 -9
- package/dist/packageInfos.d.ts +2 -0
- package/dist/packageInfos.js +14 -0
- package/dist/pipeline/createAllJobs.d.ts +13 -5
- package/dist/pipeline/createAllJobs.js +21 -10
- package/dist/pipeline/createChildPipeline.d.ts +1 -1
- package/dist/pipeline/createChildPipeline.js +24 -7
- package/dist/pipeline/createJobsForComponent.d.ts +3 -3
- package/dist/pipeline/createJobsForComponent.js +19 -18
- package/dist/pipeline/createMainPipeline.d.ts +3 -0
- package/dist/pipeline/createMainPipeline.js +248 -0
- package/dist/pipeline/generatePipelineFiles.d.ts +2 -0
- package/dist/pipeline/generatePipelineFiles.js +178 -0
- package/dist/pipeline/getPipelineStages.js +3 -1
- package/dist/pipeline/gitlab/createGitlabJobs.d.ts +15 -5
- package/dist/pipeline/gitlab/createGitlabJobs.js +98 -25
- package/dist/pipeline/gitlab/createGitlabPipeline.d.ts +7 -2
- package/dist/pipeline/gitlab/createGitlabPipeline.js +34 -17
- package/dist/pipeline/gitlab/getPipelineTriggerForGitlabChildPipeline.d.ts +1 -0
- package/dist/pipeline/gitlab/getPipelineTriggerForGitlabChildPipeline.js +29 -0
- package/dist/pipeline/gitlab/gitlabReleaseJobs.d.ts +33 -0
- package/dist/pipeline/gitlab/gitlabReleaseJobs.js +24 -0
- package/dist/pipeline/index.d.ts +3 -1
- package/dist/pipeline/index.js +16 -8
- package/dist/pipeline/packageManager.js +4 -2
- package/dist/pipeline/yarn/yarnUtils.js +6 -4
- package/dist/rules/index.d.ts +4 -1
- package/dist/rules/index.js +25 -18
- package/dist/runner/index.d.ts +1 -1
- package/dist/runner/index.js +3 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/dist/types/config.d.ts +18 -15
- package/dist/types/config.js +5 -2
- package/dist/types/context.d.ts +37 -32
- package/dist/types/context.js +3 -1
- package/dist/types/environmentContext.d.ts +11 -7
- package/dist/types/environmentContext.js +3 -1
- package/dist/types/gitlab-ci-yml.d.ts +30 -30
- package/dist/types/gitlab-ci-yml.js +3 -2
- package/dist/types/gitlab-types.d.ts +4 -6
- package/dist/types/gitlab-types.js +3 -1
- package/dist/types/index.js +13 -7
- package/dist/types/jobs.d.ts +23 -6
- package/dist/types/jobs.js +3 -1
- package/dist/types/pipeline.d.ts +4 -3
- package/dist/types/pipeline.js +3 -1
- package/dist/types/utils.d.ts +1 -1
- package/dist/types/utils.js +3 -1
- package/dist/utils/gitlab.js +3 -1
- package/dist/utils/index.d.ts +1 -1
- package/dist/utils/index.js +3 -1
- package/dist/utils/writeFiles.d.ts +7 -0
- package/dist/{pipeline/commitInfo/getBuildId.js โ utils/writeFiles.js} +39 -22
- package/examples/__snapshots__/cloud-run-memory-limit.ts.snap +480 -384
- package/examples/__snapshots__/cloud-run-meteor-with-worker.ts.snap +462 -366
- package/examples/__snapshots__/cloud-run-no-cpu-throttling.ts.snap +480 -384
- package/examples/__snapshots__/cloud-run-no-service.ts.snap +501 -393
- package/examples/__snapshots__/cloud-run-non-public.ts.snap +480 -384
- package/examples/__snapshots__/cloud-run-post-stop-job.ts.snap +489 -392
- package/examples/__snapshots__/cloud-run-service-gen2.ts.snap +480 -384
- package/examples/__snapshots__/cloud-run-service-with-volumes.ts.snap +501 -401
- package/examples/__snapshots__/cloud-run-with-sql-reuse-db.ts.snap +1155 -915
- package/examples/__snapshots__/cloud-run-with-sql.ts.snap +1116 -888
- package/examples/__snapshots__/cloud-run-with-worker.ts.snap +482 -386
- package/examples/__snapshots__/custom-build-job-with-tests.ts.snap +452 -356
- package/examples/__snapshots__/custom-build-job.ts.snap +434 -350
- package/examples/__snapshots__/custom-deploy.ts.snap +319 -223
- package/examples/__snapshots__/custom-envs.ts.snap +123 -81
- package/examples/__snapshots__/custom-sbom-java.ts.snap +434 -350
- package/examples/__snapshots__/kubernetes-application-customization.ts.snap +846 -969
- package/examples/__snapshots__/kubernetes-with-cloud-sql-legacy.ts.snap +886 -957
- package/examples/__snapshots__/kubernetes-with-cloud-sql.ts.snap +894 -969
- package/examples/__snapshots__/kubernetes-with-jobs.ts.snap +1626 -1728
- package/examples/__snapshots__/kubernetes-with-mongodb.ts.snap +974 -1137
- package/examples/__snapshots__/local-dot-env.ts.snap +480 -384
- package/examples/__snapshots__/meteor-kubernetes.ts.snap +906 -1069
- package/examples/__snapshots__/multiline-var.ts.snap +4500 -0
- package/examples/__snapshots__/native-app.ts.snap +706 -578
- package/examples/__snapshots__/node-build-with-custom-image.ts.snap +480 -384
- package/examples/__snapshots__/node-build-with-docker-additions.ts.snap +488 -384
- package/examples/__snapshots__/rails-k8s-with-worker.ts.snap +1656 -1942
- package/examples/__snapshots__/wait-for-other-deploy.ts.snap +287 -231
- package/examples/custom-deploy.ts +7 -7
- package/examples/multiline-var.ts +64 -0
- package/package.json +5 -8
- package/src/bash/BashExpression.ts +81 -0
- package/src/bash/bashExpressionPerPipelineType.ts +16 -0
- package/src/bash/bashYaml.ts +46 -0
- package/src/bash/getInjectVarsScript.ts +12 -0
- package/src/bash/replaceAsync.ts +50 -0
- package/src/build/base/createAppBuildJob.ts +6 -2
- package/src/build/base/writeBuildInfo.ts +1 -1
- package/src/build/base/writeDotEnv.ts +6 -1
- package/src/build/custom/buildJob.ts +2 -4
- package/src/build/custom/testJob.ts +3 -2
- package/src/build/docker.ts +15 -7
- package/src/build/node/buildJob.ts +1 -3
- package/src/build/node/testJob.ts +3 -2
- package/src/build/node/yarn.ts +9 -4
- package/src/build/rails/test.ts +2 -1
- package/src/build/types.ts +8 -1
- package/src/catladder-gitlab.ts +8 -55
- package/src/config/readConfig.ts +2 -3
- package/src/constants.ts +5 -2
- package/src/context/__tests__/resolveReferences.test.ts +11 -6
- package/src/context/getBuildInfoVariables.ts +40 -0
- package/src/context/getEnvironment.ts +7 -30
- package/src/context/getEnvironmentContext.ts +25 -29
- package/src/context/getEnvironmentVariables.ts +61 -36
- package/src/context/getReviewSlug.ts +27 -0
- package/src/context/index.ts +24 -23
- package/src/context/resolveReferences.ts +28 -8
- package/src/context/transformJobOnlyVars.ts +5 -2
- package/src/context/utils/envVars.ts +2 -1
- package/src/deploy/base/deploy.ts +20 -18
- package/src/deploy/base/rollback.ts +8 -10
- package/src/deploy/base/stop.ts +8 -9
- package/src/deploy/cloudRun/artifactsRegistry.ts +9 -4
- package/src/deploy/cloudRun/createJobs/cloudRunJobs.ts +12 -7
- package/src/deploy/cloudRun/createJobs/cloudRunServices.ts +3 -2
- package/src/deploy/cloudRun/createJobs/constants.ts +1 -0
- package/src/deploy/cloudRun/createJobs/getCloudRunDeployScripts.ts +20 -2
- package/src/deploy/cloudRun/createJobs/index.ts +17 -8
- package/src/deploy/cloudRun/index.ts +14 -6
- package/src/deploy/cloudRun/utils/createArgsString.ts +2 -1
- package/src/deploy/cloudRun/utils/database.ts +2 -2
- package/src/deploy/cloudRun/utils/jobName.ts +7 -2
- package/src/deploy/cloudSql/utils.ts +12 -9
- package/src/deploy/index.ts +2 -1
- package/src/deploy/kubernetes/cloudSql/index.ts +3 -2
- package/src/deploy/kubernetes/deployJob.ts +24 -10
- package/src/deploy/kubernetes/index.ts +15 -8
- package/src/deploy/kubernetes/kubeEnv.ts +8 -6
- package/src/deploy/kubernetes/kubeValues.ts +0 -1
- package/src/deploy/kubernetes/processSecretsAsFiles.ts +2 -1
- package/src/deploy/types/base.ts +6 -0
- package/src/deploy/types/googleCloudRun.ts +2 -0
- package/src/index.ts +2 -1
- package/src/packageInfos.ts +10 -0
- package/src/pipeline/createAllJobs.ts +24 -10
- package/src/pipeline/createChildPipeline.ts +19 -8
- package/src/pipeline/createJobsForComponent.ts +14 -22
- package/src/pipeline/createMainPipeline.ts +88 -0
- package/src/pipeline/generatePipelineFiles.ts +29 -0
- package/src/pipeline/gitlab/createGitlabJobs.ts +174 -51
- package/src/pipeline/gitlab/createGitlabPipeline.ts +16 -14
- package/src/pipeline/gitlab/getPipelineTriggerForGitlabChildPipeline.ts +46 -0
- package/src/pipeline/gitlab/gitlabReleaseJobs.ts +20 -0
- package/src/pipeline/index.ts +2 -0
- package/src/rules/index.ts +15 -9
- package/src/types/config.ts +11 -2
- package/src/types/context.ts +39 -26
- package/src/types/environmentContext.ts +12 -6
- package/src/types/gitlab-ci-yml.ts +0 -1
- package/src/types/gitlab-types.ts +5 -4
- package/src/types/jobs.ts +28 -3
- package/src/types/pipeline.ts +4 -0
- package/src/utils/writeFiles.ts +40 -0
- package/dist/deploy/cloudRun/createJobs/variables.d.ts +0 -5
- package/dist/deploy/cloudRun/createJobs/variables.js +0 -19
- package/dist/pipeline/commitInfo/getBuildId.d.ts +0 -6
- package/dist/pipeline/commitInfo/getCommitInfo.d.ts +0 -2
- package/src/deploy/cloudRun/createJobs/variables.ts +0 -21
- package/src/pipeline/commitInfo/getBuildId.ts +0 -17
- package/src/pipeline/commitInfo/getCommitInfo.ts +0 -15
|
@@ -6,10 +6,16 @@ exports[`matches snapshot 1`] = `
|
|
|
6
6
|
"image": "path/to/docker/jobs-default:the-version",
|
|
7
7
|
"jobs": {
|
|
8
8
|
"api โฉ๏ธ 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/api",
|
|
12
|
-
"url": "
|
|
18
|
+
"url": "$CL_GITLAB_ENVIRONMENT_URL",
|
|
13
19
|
},
|
|
14
20
|
"image": "path/to/docker/kubernetes:the-version",
|
|
15
21
|
"interruptible": true,
|
|
@@ -23,103 +29,49 @@ 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="api"",
|
|
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="api.dev.test-app.pan.panter.cloud"",
|
|
44
|
+
"export ROOT_URL="https://api.dev.test-app.pan.panter.cloud"",
|
|
45
|
+
"export HOST_INTERNAL="api.dev.test-app.pan.panter.cloud"",
|
|
46
|
+
"export HOST_CANONICAL="api.dev.test-app.pan.panter.cloud"",
|
|
47
|
+
"export ROOT_URL_INTERNAL="https://api.dev.test-app.pan.panter.cloud"",
|
|
48
|
+
"export KUBE_NAMESPACE="pan-test-app-dev"",
|
|
49
|
+
"export KUBE_APP_NAME="api"",
|
|
50
|
+
"export KUBE_APP_NAME_PREFIX=""",
|
|
51
|
+
"export MONGODB_ROOT_PASSWORD="$CL_dev_api_MONGODB_ROOT_PASSWORD"",
|
|
52
|
+
"export MONGODB_REPLICASET_KEY="$CL_dev_api_MONGODB_REPLICASET_KEY"",
|
|
53
|
+
"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\\"]"",
|
|
54
|
+
"export RELEASE_NAME="pan-test-app-dev-api"",
|
|
55
|
+
"export HELM_EXPERIMENTAL_OCI="1"",
|
|
56
|
+
"export KUBE_DOCKER_IMAGE_PULL_SECRET="gitlab-registry-api"",
|
|
57
|
+
"export HELM_GITLAB_CHART_NAME="/helm-charts/the-panter-chart"",
|
|
58
|
+
"export HELM_ARGS=""",
|
|
59
|
+
"export COMPONENT_NAME="api"",
|
|
60
|
+
"export BUILD_ID="$(git describe --tags 2>/dev/null || git rev-parse HEAD)"",
|
|
61
|
+
"echo -e "\\e[0Ksection_end:$(date +%s):injectvars\\r\\e[0K"",
|
|
31
62
|
"kubectl config set-cluster "kube-pan-test-app-dev-api" --server="$CL_dev_api_KUBE_URL" --certificate-authority <(echo $CL_dev_api_KUBE_CA_PEM | base64 -d) --embed-certs=true",
|
|
32
63
|
"kubectl config set-credentials "kube-pan-test-app-dev-api" --token="$CL_dev_api_KUBE_TOKEN"",
|
|
33
64
|
"kubectl config set-context "kube-pan-test-app-dev-api" --cluster="kube-pan-test-app-dev-api" --user="kube-pan-test-app-dev-api" --namespace="pan-test-app-dev"",
|
|
34
65
|
"kubectl config use-context "kube-pan-test-app-dev-api"",
|
|
35
66
|
"kubernetesRollback",
|
|
67
|
+
"echo "CL_GITLAB_ENVIRONMENT_URL=https://api.dev.test-app.pan.panter.cloud" >> gitlab_environment.env",
|
|
36
68
|
],
|
|
37
69
|
"stage": "rollback dev",
|
|
38
70
|
"variables": {
|
|
39
|
-
"APP_DIR": "api",
|
|
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": "api",
|
|
45
|
-
"ENV_SHORT": "dev",
|
|
46
|
-
"ENV_TYPE": "dev",
|
|
47
71
|
"GIT_STRATEGY": "none",
|
|
48
|
-
"HELM_ARGS": "",
|
|
49
|
-
"HELM_EXPERIMENTAL_OCI": "1",
|
|
50
|
-
"HELM_GITLAB_CHART_NAME": "/helm-charts/the-panter-chart",
|
|
51
|
-
"HOST": "api.dev.test-app.pan.panter.cloud",
|
|
52
|
-
"HOST_CANONICAL": "api.dev.test-app.pan.panter.cloud",
|
|
53
|
-
"HOST_INTERNAL": "api.dev.test-app.pan.panter.cloud",
|
|
54
72
|
"KUBERNETES_CPU_REQUEST": "0.5",
|
|
55
73
|
"KUBERNETES_MEMORY_LIMIT": "400Mi",
|
|
56
74
|
"KUBERNETES_MEMORY_REQUEST": "200Mi",
|
|
57
|
-
"KUBE_APP_NAME": "api",
|
|
58
|
-
"KUBE_APP_NAME_PREFIX": "",
|
|
59
|
-
"KUBE_DOCKER_IMAGE_PULL_SECRET": "gitlab-registry-api",
|
|
60
|
-
"KUBE_NAMESPACE": "pan-test-app-dev",
|
|
61
|
-
"KUBE_VALUES": "env:
|
|
62
|
-
secret:
|
|
63
|
-
MONGODB_ROOT_PASSWORD: '$CL_dev_api_MONGODB_ROOT_PASSWORD'
|
|
64
|
-
MONGODB_REPLICASET_KEY: '$CL_dev_api_MONGODB_REPLICASET_KEY'
|
|
65
|
-
MONGO_URL: 'mongodb://root:$CL_dev_api_MONGODB_ROOT_PASSWORD@api-mongodb-0.api-mongodb-headless.pan-test-app-dev.svc.cluster.local:27017,api-mongodb-1.api-mongodb-headless.pan-test-app-dev.svc.cluster.local:27017/app?replicaSet=rs0&authSource=admin'
|
|
66
|
-
MONGO_OPLOG_URL: 'mongodb://root:$CL_dev_api_MONGODB_ROOT_PASSWORD@api-mongodb-0.api-mongodb-headless.pan-test-app-dev.svc.cluster.local:27017,api-mongodb-1.api-mongodb-headless.pan-test-app-dev.svc.cluster.local:27017/local?replicaSet=rs0&authSource=admin'
|
|
67
|
-
public:
|
|
68
|
-
ENV_SHORT: 'dev'
|
|
69
|
-
APP_DIR: 'api'
|
|
70
|
-
ENV_TYPE: 'dev'
|
|
71
|
-
BUILD_INFO_ID: 'some-id'
|
|
72
|
-
BUILD_INFO_BUILD_TIME: '01-01-2023 12:13:14'
|
|
73
|
-
BUILD_INFO_CURRENT_VERSION: '3.2.1'
|
|
74
|
-
HOST: 'api.dev.test-app.pan.panter.cloud'
|
|
75
|
-
ROOT_URL: 'https://api.dev.test-app.pan.panter.cloud'
|
|
76
|
-
HOST_CANONICAL: 'api.dev.test-app.pan.panter.cloud'
|
|
77
|
-
ROOT_URL_INTERNAL: 'https://api.dev.test-app.pan.panter.cloud'
|
|
78
|
-
KUBE_NAMESPACE: 'pan-test-app-dev'
|
|
79
|
-
KUBE_APP_NAME: 'api'
|
|
80
|
-
KUBE_APP_NAME_PREFIX: ''
|
|
81
|
-
HOST_INTERNAL: 'api.dev.test-app.pan.panter.cloud'
|
|
82
|
-
_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"]'
|
|
83
|
-
application:
|
|
84
|
-
host: 'api.dev.test-app.pan.panter.cloud'
|
|
85
|
-
command: 'node main.js'
|
|
86
|
-
livenessProbe:
|
|
87
|
-
httpGet:
|
|
88
|
-
path: '__health'
|
|
89
|
-
readinessProbe:
|
|
90
|
-
httpGet:
|
|
91
|
-
path: '__health'
|
|
92
|
-
startupProbe:
|
|
93
|
-
httpGet:
|
|
94
|
-
path: '__health'
|
|
95
|
-
mongodb:
|
|
96
|
-
enabled: true
|
|
97
|
-
auth:
|
|
98
|
-
enabled: true
|
|
99
|
-
rootPassword: '$CL_dev_api_MONGODB_ROOT_PASSWORD'
|
|
100
|
-
replicaSetKey: '$CL_dev_api_MONGODB_REPLICASET_KEY'
|
|
101
|
-
persistence:
|
|
102
|
-
storageClass: 'premium-rwo'
|
|
103
|
-
backup:
|
|
104
|
-
enabled: false
|
|
105
|
-
hostToBackup: 'api-mongodb-0.api-mongodb-headless.pan-test-app-dev.svc.cluster.local:27017'
|
|
106
|
-
pvcToBackup: 'datadir-api-mongodb-0'
|
|
107
|
-
image: 'mrelite/kubectlmongoshell:v1.0'
|
|
108
|
-
schedule: '0 4 * * *'
|
|
109
|
-
volumeSnapshotClass: 'snapshotclass'
|
|
110
|
-
architecture: 'replicaset'
|
|
111
|
-
tolerations:
|
|
112
|
-
- key: 'mongodb'
|
|
113
|
-
operator: 'Equal'
|
|
114
|
-
value: 'true'
|
|
115
|
-
effect: 'NoSchedule'
|
|
116
|
-
",
|
|
117
|
-
"MONGODB_REPLICASET_KEY": "$CL_dev_api_MONGODB_REPLICASET_KEY",
|
|
118
|
-
"MONGODB_ROOT_PASSWORD": "$CL_dev_api_MONGODB_ROOT_PASSWORD",
|
|
119
|
-
"RELEASE_NAME": "pan-test-app-dev-api",
|
|
120
|
-
"ROOT_URL": "https://api.dev.test-app.pan.panter.cloud",
|
|
121
|
-
"ROOT_URL_INTERNAL": "https://api.dev.test-app.pan.panter.cloud",
|
|
122
|
-
"_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"]",
|
|
123
75
|
},
|
|
124
76
|
},
|
|
125
77
|
"api ๐ฎ lint": {
|
|
@@ -150,6 +102,9 @@ mongodb:
|
|
|
150
102
|
],
|
|
151
103
|
},
|
|
152
104
|
"script": [
|
|
105
|
+
"echo -e "\\e[0Ksection_start:$(date +%s):injectvars[collapsed=true]\\r\\e[0KInjecting variables"",
|
|
106
|
+
"export APP_PATH="api"",
|
|
107
|
+
"echo -e "\\e[0Ksection_end:$(date +%s):injectvars\\r\\e[0K"",
|
|
153
108
|
"echo -e "\\e[0Ksection_start:$(date +%s):nodeinstall[collapsed=true]\\r\\e[0KEnsure node version"",
|
|
154
109
|
"if [ -f ~/.nvm/nvm.sh ]; then source ~/.nvm/nvm.sh; fi",
|
|
155
110
|
"if command -v nvm &> /dev/null && [ -f ./.nvmrc ]; then nvm install; fi",
|
|
@@ -166,7 +121,6 @@ mongodb:
|
|
|
166
121
|
],
|
|
167
122
|
"stage": "test",
|
|
168
123
|
"variables": {
|
|
169
|
-
"APP_PATH": "api",
|
|
170
124
|
"KUBERNETES_CPU_REQUEST": "0.5",
|
|
171
125
|
"KUBERNETES_MEMORY_LIMIT": "4Gi",
|
|
172
126
|
"KUBERNETES_MEMORY_REQUEST": "2Gi",
|
|
@@ -219,7 +173,26 @@ mongodb:
|
|
|
219
173
|
],
|
|
220
174
|
},
|
|
221
175
|
"script": [
|
|
222
|
-
"echo
|
|
176
|
+
"echo -e "\\e[0Ksection_start:$(date +%s):injectvars[collapsed=true]\\r\\e[0KInjecting variables"",
|
|
177
|
+
"export ENV_SHORT="dev"",
|
|
178
|
+
"export APP_DIR="api"",
|
|
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="api.dev.test-app.pan.panter.cloud"",
|
|
184
|
+
"export ROOT_URL="https://api.dev.test-app.pan.panter.cloud"",
|
|
185
|
+
"export HOST_INTERNAL="api.dev.test-app.pan.panter.cloud"",
|
|
186
|
+
"export HOST_CANONICAL="api.dev.test-app.pan.panter.cloud"",
|
|
187
|
+
"export ROOT_URL_INTERNAL="https://api.dev.test-app.pan.panter.cloud"",
|
|
188
|
+
"export KUBE_NAMESPACE="pan-test-app-dev"",
|
|
189
|
+
"export KUBE_APP_NAME="api"",
|
|
190
|
+
"export KUBE_APP_NAME_PREFIX=""",
|
|
191
|
+
"export MONGODB_ROOT_PASSWORD="$CL_dev_api_MONGODB_ROOT_PASSWORD"",
|
|
192
|
+
"export MONGODB_REPLICASET_KEY="$CL_dev_api_MONGODB_REPLICASET_KEY"",
|
|
193
|
+
"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\\"]"",
|
|
194
|
+
"echo -e "\\e[0Ksection_end:$(date +%s):injectvars\\r\\e[0K"",
|
|
195
|
+
"echo '{"id":"$(git describe --tags 2>/dev/null || git rev-parse HEAD)","time":"$CI_JOB_STARTED_AT"}' > api/__build_info.json",
|
|
223
196
|
"echo -e "\\e[0Ksection_start:$(date +%s):nodeinstall[collapsed=true]\\r\\e[0KEnsure node version"",
|
|
224
197
|
"if [ -f ~/.nvm/nvm.sh ]; then source ~/.nvm/nvm.sh; fi",
|
|
225
198
|
"if command -v nvm &> /dev/null && [ -f ./.nvmrc ]; then nvm install; fi",
|
|
@@ -236,26 +209,9 @@ mongodb:
|
|
|
236
209
|
],
|
|
237
210
|
"stage": "build",
|
|
238
211
|
"variables": {
|
|
239
|
-
"APP_DIR": "api",
|
|
240
|
-
"BUILD_INFO_BUILD_TIME": "01-01-2023 12:13:14",
|
|
241
|
-
"BUILD_INFO_CURRENT_VERSION": "3.2.1",
|
|
242
|
-
"BUILD_INFO_ID": "some-id",
|
|
243
|
-
"ENV_SHORT": "dev",
|
|
244
|
-
"ENV_TYPE": "dev",
|
|
245
|
-
"HOST": "api.dev.test-app.pan.panter.cloud",
|
|
246
|
-
"HOST_CANONICAL": "api.dev.test-app.pan.panter.cloud",
|
|
247
|
-
"HOST_INTERNAL": "api.dev.test-app.pan.panter.cloud",
|
|
248
212
|
"KUBERNETES_CPU_REQUEST": "0.5",
|
|
249
213
|
"KUBERNETES_MEMORY_LIMIT": "4Gi",
|
|
250
214
|
"KUBERNETES_MEMORY_REQUEST": "2Gi",
|
|
251
|
-
"KUBE_APP_NAME": "api",
|
|
252
|
-
"KUBE_APP_NAME_PREFIX": "",
|
|
253
|
-
"KUBE_NAMESPACE": "pan-test-app-dev",
|
|
254
|
-
"MONGODB_REPLICASET_KEY": "$CL_dev_api_MONGODB_REPLICASET_KEY",
|
|
255
|
-
"MONGODB_ROOT_PASSWORD": "$CL_dev_api_MONGODB_ROOT_PASSWORD",
|
|
256
|
-
"ROOT_URL": "https://api.dev.test-app.pan.panter.cloud",
|
|
257
|
-
"ROOT_URL_INTERNAL": "https://api.dev.test-app.pan.panter.cloud",
|
|
258
|
-
"_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"]",
|
|
259
215
|
},
|
|
260
216
|
},
|
|
261
217
|
"api ๐จ docker | dev ": {
|
|
@@ -281,6 +237,22 @@ mongodb:
|
|
|
281
237
|
],
|
|
282
238
|
},
|
|
283
239
|
"script": [
|
|
240
|
+
"echo -e "\\e[0Ksection_start:$(date +%s):injectvars[collapsed=true]\\r\\e[0KInjecting variables"",
|
|
241
|
+
"export APP_DIR="api"",
|
|
242
|
+
"export DOCKER_DIR="."",
|
|
243
|
+
"export DOCKER_REGISTRY="$CI_REGISTRY"",
|
|
244
|
+
"export DOCKER_CACHE_IMAGE="$CI_REGISTRY_IMAGE/caches/api"",
|
|
245
|
+
"export DOCKER_IMAGE_NAME="dev/api"",
|
|
246
|
+
"export DOCKER_IMAGE="$CI_REGISTRY_IMAGE/$DOCKER_IMAGE_NAME"",
|
|
247
|
+
"export DOCKER_IMAGE_TAG="$CI_COMMIT_SHA"",
|
|
248
|
+
"export DOCKER_COPY_AND_INSTALL_APP="COPY --chown=node:node $APP_DIR .
|
|
249
|
+
RUN yarn plugin import workspace-tools
|
|
250
|
+
RUN yarn workspaces focus --production && yarn rebuild"",
|
|
251
|
+
"export DOCKER_COPY_WORKSPACE_FILES="COPY --chown=node:node api/package.json /app/api/package.json
|
|
252
|
+
COPY --chown=node:node api/yarn.lock /app/api/yarn.lock
|
|
253
|
+
COPY --chown=node:node .yarnrc.yml /app/.yarnrc.yml
|
|
254
|
+
COPY --chown=node:node .yarn /app/.yarn"",
|
|
255
|
+
"echo -e "\\e[0Ksection_end:$(date +%s):injectvars\\r\\e[0K"",
|
|
284
256
|
"ensureNodeDockerfile",
|
|
285
257
|
"echo -e "\\e[0Ksection_start:$(date +%s):docker-login[collapsed=true]\\r\\e[0KDocker Login"",
|
|
286
258
|
"docker login --username gitlab-ci-token --password $CI_JOB_TOKEN $CI_REGISTRY",
|
|
@@ -304,25 +276,9 @@ mongodb:
|
|
|
304
276
|
],
|
|
305
277
|
"stage": "build",
|
|
306
278
|
"variables": {
|
|
307
|
-
"APP_DIR": "api",
|
|
308
|
-
"DOCKERFILE_ADDITIONS": undefined,
|
|
309
|
-
"DOCKERFILE_ADDITIONS_END": undefined,
|
|
310
279
|
"DOCKER_BUILDKIT": "1",
|
|
311
|
-
"DOCKER_CACHE_IMAGE": "$CI_REGISTRY_IMAGE/caches/api",
|
|
312
|
-
"DOCKER_COPY_AND_INSTALL_APP": "COPY --chown=node:node $APP_DIR .
|
|
313
|
-
RUN yarn plugin import workspace-tools
|
|
314
|
-
RUN yarn workspaces focus --production && yarn rebuild",
|
|
315
|
-
"DOCKER_COPY_WORKSPACE_FILES": "COPY --chown=node:node api/package.json /app/api/package.json
|
|
316
|
-
COPY --chown=node:node api/yarn.lock /app/api/yarn.lock
|
|
317
|
-
COPY --chown=node:node .yarnrc.yml /app/.yarnrc.yml
|
|
318
|
-
COPY --chown=node:node .yarn /app/.yarn",
|
|
319
|
-
"DOCKER_DIR": ".",
|
|
320
280
|
"DOCKER_DRIVER": "overlay2",
|
|
321
281
|
"DOCKER_HOST": "tcp://0.0.0.0:2375",
|
|
322
|
-
"DOCKER_IMAGE": "$CI_REGISTRY_IMAGE/$DOCKER_IMAGE_NAME",
|
|
323
|
-
"DOCKER_IMAGE_NAME": "dev/api",
|
|
324
|
-
"DOCKER_IMAGE_TAG": "$CI_COMMIT_SHA",
|
|
325
|
-
"DOCKER_REGISTRY": "$CI_REGISTRY",
|
|
326
282
|
"DOCKER_TLS_CERTDIR": "",
|
|
327
283
|
"KUBERNETES_CPU_REQUEST": "0.5",
|
|
328
284
|
"KUBERNETES_MEMORY_LIMIT": "2Gi",
|
|
@@ -331,11 +287,16 @@ COPY --chown=node:node .yarn /app/.yarn",
|
|
|
331
287
|
},
|
|
332
288
|
"api ๐ Deploy | dev ": {
|
|
333
289
|
"allow_failure": false,
|
|
290
|
+
"artifacts": {
|
|
291
|
+
"reports": {
|
|
292
|
+
"dotenv": "gitlab_environment.env",
|
|
293
|
+
},
|
|
294
|
+
},
|
|
334
295
|
"environment": {
|
|
335
296
|
"auto_stop_in": "4 weeks",
|
|
336
297
|
"name": "dev/api",
|
|
337
298
|
"on_stop": "api ๐ Stop โ ๏ธ | dev ",
|
|
338
|
-
"url": "
|
|
299
|
+
"url": "$CL_GITLAB_ENVIRONMENT_URL",
|
|
339
300
|
},
|
|
340
301
|
"image": "path/to/docker/kubernetes:the-version",
|
|
341
302
|
"interruptible": true,
|
|
@@ -378,113 +339,163 @@ COPY --chown=node:node .yarn /app/.yarn",
|
|
|
378
339
|
},
|
|
379
340
|
],
|
|
380
341
|
"script": [
|
|
342
|
+
"echo -e "\\e[0Ksection_start:$(date +%s):injectvars[collapsed=true]\\r\\e[0KInjecting variables"",
|
|
343
|
+
"export ENV_SHORT="dev"",
|
|
344
|
+
"export APP_DIR="api"",
|
|
345
|
+
"export ENV_TYPE="dev"",
|
|
346
|
+
"export BUILD_INFO_BUILD_ID="$(git describe --tags 2>/dev/null || git rev-parse HEAD)"",
|
|
347
|
+
"export BUILD_INFO_BUILD_TIME="$CI_JOB_STARTED_AT"",
|
|
348
|
+
"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")"",
|
|
349
|
+
"export HOST="api.dev.test-app.pan.panter.cloud"",
|
|
350
|
+
"export ROOT_URL="https://api.dev.test-app.pan.panter.cloud"",
|
|
351
|
+
"export HOST_INTERNAL="api.dev.test-app.pan.panter.cloud"",
|
|
352
|
+
"export HOST_CANONICAL="api.dev.test-app.pan.panter.cloud"",
|
|
353
|
+
"export ROOT_URL_INTERNAL="https://api.dev.test-app.pan.panter.cloud"",
|
|
354
|
+
"export KUBE_NAMESPACE="pan-test-app-dev"",
|
|
355
|
+
"export KUBE_APP_NAME="api"",
|
|
356
|
+
"export KUBE_APP_NAME_PREFIX=""",
|
|
357
|
+
"export MONGODB_ROOT_PASSWORD="$CL_dev_api_MONGODB_ROOT_PASSWORD"",
|
|
358
|
+
"export MONGODB_REPLICASET_KEY="$CL_dev_api_MONGODB_REPLICASET_KEY"",
|
|
359
|
+
"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\\"]"",
|
|
360
|
+
"export DOCKER_REGISTRY="$CI_REGISTRY"",
|
|
361
|
+
"export DOCKER_CACHE_IMAGE="$CI_REGISTRY_IMAGE/caches/api"",
|
|
362
|
+
"export DOCKER_IMAGE_NAME="dev/api"",
|
|
363
|
+
"export DOCKER_IMAGE="$CI_REGISTRY_IMAGE/$DOCKER_IMAGE_NAME"",
|
|
364
|
+
"export DOCKER_IMAGE_TAG="$CI_COMMIT_SHA"",
|
|
365
|
+
"export RELEASE_NAME="pan-test-app-dev-api"",
|
|
366
|
+
"export HELM_EXPERIMENTAL_OCI="1"",
|
|
367
|
+
"export KUBE_DOCKER_IMAGE_PULL_SECRET="gitlab-registry-api"",
|
|
368
|
+
"export HELM_GITLAB_CHART_NAME="/helm-charts/the-panter-chart"",
|
|
369
|
+
"export HELM_ARGS=""",
|
|
370
|
+
"export COMPONENT_NAME="api"",
|
|
371
|
+
"export BUILD_ID="$(git describe --tags 2>/dev/null || git rev-parse HEAD)"",
|
|
372
|
+
"echo -e "\\e[0Ksection_end:$(date +%s):injectvars\\r\\e[0K"",
|
|
381
373
|
"kubectl config set-cluster "kube-pan-test-app-dev-api" --server="$CL_dev_api_KUBE_URL" --certificate-authority <(echo $CL_dev_api_KUBE_CA_PEM | base64 -d) --embed-certs=true",
|
|
382
374
|
"kubectl config set-credentials "kube-pan-test-app-dev-api" --token="$CL_dev_api_KUBE_TOKEN"",
|
|
383
375
|
"kubectl config set-context "kube-pan-test-app-dev-api" --cluster="kube-pan-test-app-dev-api" --user="kube-pan-test-app-dev-api" --namespace="pan-test-app-dev"",
|
|
384
376
|
"kubectl config use-context "kube-pan-test-app-dev-api"",
|
|
385
|
-
"
|
|
386
|
-
"
|
|
387
|
-
|
|
388
|
-
"/dtrackuploader https://dep.panter.swiss/ "$DT_KEY_PROD" upload "pan-test-app/api" "https://api.dev.test-app.pan.panter.cloud" "__sbom.json" vex.json || true",
|
|
389
|
-
"echo deployment successful ๐ป",
|
|
390
|
-
],
|
|
391
|
-
"stage": "deploy dev",
|
|
392
|
-
"variables": {
|
|
393
|
-
"APP_DIR": "api",
|
|
394
|
-
"BUILD_ID": "some-id",
|
|
395
|
-
"BUILD_INFO_BUILD_TIME": "01-01-2023 12:13:14",
|
|
396
|
-
"BUILD_INFO_CURRENT_VERSION": "3.2.1",
|
|
397
|
-
"BUILD_INFO_ID": "some-id",
|
|
398
|
-
"COMPONENT_NAME": "api",
|
|
399
|
-
"DOCKER_CACHE_IMAGE": "$CI_REGISTRY_IMAGE/caches/api",
|
|
400
|
-
"DOCKER_IMAGE": "$CI_REGISTRY_IMAGE/$DOCKER_IMAGE_NAME",
|
|
401
|
-
"DOCKER_IMAGE_NAME": "dev/api",
|
|
402
|
-
"DOCKER_IMAGE_TAG": "$CI_COMMIT_SHA",
|
|
403
|
-
"DOCKER_REGISTRY": "$CI_REGISTRY",
|
|
404
|
-
"ENV_SHORT": "dev",
|
|
405
|
-
"ENV_TYPE": "dev",
|
|
406
|
-
"HELM_ARGS": "",
|
|
407
|
-
"HELM_EXPERIMENTAL_OCI": "1",
|
|
408
|
-
"HELM_GITLAB_CHART_NAME": "/helm-charts/the-panter-chart",
|
|
409
|
-
"HOST": "api.dev.test-app.pan.panter.cloud",
|
|
410
|
-
"HOST_CANONICAL": "api.dev.test-app.pan.panter.cloud",
|
|
411
|
-
"HOST_INTERNAL": "api.dev.test-app.pan.panter.cloud",
|
|
412
|
-
"KUBERNETES_CPU_REQUEST": "0.5",
|
|
413
|
-
"KUBERNETES_MEMORY_LIMIT": "400Mi",
|
|
414
|
-
"KUBERNETES_MEMORY_REQUEST": "200Mi",
|
|
415
|
-
"KUBE_APP_NAME": "api",
|
|
416
|
-
"KUBE_APP_NAME_PREFIX": "",
|
|
417
|
-
"KUBE_DOCKER_IMAGE_PULL_SECRET": "gitlab-registry-api",
|
|
418
|
-
"KUBE_NAMESPACE": "pan-test-app-dev",
|
|
419
|
-
"KUBE_VALUES": "env:
|
|
377
|
+
"echo -e "\\e[0Ksection_start:$(date +%s):writeallvalues[collapsed=true]\\r\\e[0KWrite __all_values.yml for helm deployment"",
|
|
378
|
+
"cat > __all_values.yml <<EOF
|
|
379
|
+
env:
|
|
420
380
|
secret:
|
|
421
|
-
MONGODB_ROOT_PASSWORD:
|
|
422
|
-
|
|
423
|
-
|
|
424
|
-
|
|
381
|
+
MONGODB_ROOT_PASSWORD: |-
|
|
382
|
+
$(printf %s "$CL_dev_api_MONGODB_ROOT_PASSWORD" | sed 's/^/ /')
|
|
383
|
+
MONGODB_REPLICASET_KEY: |-
|
|
384
|
+
$(printf %s "$CL_dev_api_MONGODB_REPLICASET_KEY" | sed 's/^/ /')
|
|
385
|
+
MONGO_URL: |-
|
|
386
|
+
mongodb://root:$CL_dev_api_MONGODB_ROOT_PASSWORD@api-mongodb-0.api-mongodb-headless.pan-test-app-dev.svc.cluster.local:27017,api-mongodb-1.api-mongodb-headless.pan-test-app-dev.svc.cluster.local:27017/app?replicaSet=rs0&authSource=admin
|
|
387
|
+
MONGO_OPLOG_URL: |-
|
|
388
|
+
mongodb://root:$CL_dev_api_MONGODB_ROOT_PASSWORD@api-mongodb-0.api-mongodb-headless.pan-test-app-dev.svc.cluster.local:27017,api-mongodb-1.api-mongodb-headless.pan-test-app-dev.svc.cluster.local:27017/local?replicaSet=rs0&authSource=admin
|
|
425
389
|
public:
|
|
426
|
-
ENV_SHORT:
|
|
427
|
-
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
|
|
431
|
-
|
|
432
|
-
|
|
433
|
-
|
|
434
|
-
|
|
435
|
-
|
|
436
|
-
|
|
437
|
-
|
|
438
|
-
|
|
439
|
-
|
|
440
|
-
|
|
390
|
+
ENV_SHORT: |-
|
|
391
|
+
dev
|
|
392
|
+
APP_DIR: |-
|
|
393
|
+
api
|
|
394
|
+
ENV_TYPE: |-
|
|
395
|
+
dev
|
|
396
|
+
BUILD_INFO_BUILD_ID: |-
|
|
397
|
+
$(printf %s "$(git describe --tags 2>/dev/null || git rev-parse HEAD)" | sed 's/^/ /')
|
|
398
|
+
BUILD_INFO_BUILD_TIME: |-
|
|
399
|
+
$(printf %s "$CI_JOB_STARTED_AT" | sed 's/^/ /')
|
|
400
|
+
BUILD_INFO_CURRENT_VERSION: |-
|
|
401
|
+
$(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/^/ /')
|
|
402
|
+
HOST: |-
|
|
403
|
+
api.dev.test-app.pan.panter.cloud
|
|
404
|
+
ROOT_URL: |-
|
|
405
|
+
https://api.dev.test-app.pan.panter.cloud
|
|
406
|
+
HOST_INTERNAL: |-
|
|
407
|
+
api.dev.test-app.pan.panter.cloud
|
|
408
|
+
HOST_CANONICAL: |-
|
|
409
|
+
api.dev.test-app.pan.panter.cloud
|
|
410
|
+
ROOT_URL_INTERNAL: |-
|
|
411
|
+
https://api.dev.test-app.pan.panter.cloud
|
|
412
|
+
KUBE_NAMESPACE: |-
|
|
413
|
+
pan-test-app-dev
|
|
414
|
+
KUBE_APP_NAME: |-
|
|
415
|
+
api
|
|
416
|
+
KUBE_APP_NAME_PREFIX: ""
|
|
417
|
+
_ALL_ENV_VAR_KEYS: |-
|
|
418
|
+
["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"]
|
|
441
419
|
application:
|
|
442
|
-
host:
|
|
443
|
-
|
|
420
|
+
host: |-
|
|
421
|
+
api.dev.test-app.pan.panter.cloud
|
|
422
|
+
command: |-
|
|
423
|
+
node main.js
|
|
444
424
|
livenessProbe:
|
|
445
425
|
httpGet:
|
|
446
|
-
path:
|
|
426
|
+
path: |-
|
|
427
|
+
__health
|
|
447
428
|
readinessProbe:
|
|
448
429
|
httpGet:
|
|
449
|
-
path:
|
|
430
|
+
path: |-
|
|
431
|
+
__health
|
|
450
432
|
startupProbe:
|
|
451
433
|
httpGet:
|
|
452
|
-
path:
|
|
434
|
+
path: |-
|
|
435
|
+
__health
|
|
453
436
|
mongodb:
|
|
454
437
|
enabled: true
|
|
455
438
|
auth:
|
|
456
439
|
enabled: true
|
|
457
|
-
rootPassword:
|
|
458
|
-
|
|
440
|
+
rootPassword: |-
|
|
441
|
+
$CL_dev_api_MONGODB_ROOT_PASSWORD
|
|
442
|
+
replicaSetKey: |-
|
|
443
|
+
$CL_dev_api_MONGODB_REPLICASET_KEY
|
|
459
444
|
persistence:
|
|
460
|
-
storageClass:
|
|
445
|
+
storageClass: |-
|
|
446
|
+
premium-rwo
|
|
461
447
|
backup:
|
|
462
448
|
enabled: false
|
|
463
|
-
hostToBackup:
|
|
464
|
-
|
|
465
|
-
|
|
466
|
-
|
|
467
|
-
|
|
468
|
-
|
|
449
|
+
hostToBackup: |-
|
|
450
|
+
api-mongodb-0.api-mongodb-headless.pan-test-app-dev.svc.cluster.local:27017
|
|
451
|
+
pvcToBackup: |-
|
|
452
|
+
datadir-api-mongodb-0
|
|
453
|
+
image: |-
|
|
454
|
+
mrelite/kubectlmongoshell:v1.0
|
|
455
|
+
schedule: |-
|
|
456
|
+
0 4 * * *
|
|
457
|
+
volumeSnapshotClass: |-
|
|
458
|
+
snapshotclass
|
|
459
|
+
architecture: |-
|
|
460
|
+
replicaset
|
|
469
461
|
tolerations:
|
|
470
|
-
- key:
|
|
471
|
-
|
|
472
|
-
|
|
473
|
-
|
|
462
|
+
- key: |-
|
|
463
|
+
mongodb
|
|
464
|
+
operator: |-
|
|
465
|
+
Equal
|
|
466
|
+
value: |-
|
|
467
|
+
true
|
|
468
|
+
effect: |-
|
|
469
|
+
NoSchedule
|
|
470
|
+
|
|
471
|
+
EOF
|
|
474
472
|
",
|
|
475
|
-
"
|
|
476
|
-
"
|
|
477
|
-
"
|
|
478
|
-
"
|
|
479
|
-
"
|
|
480
|
-
"
|
|
473
|
+
"echo -e "\\e[0Ksection_end:$(date +%s):writeallvalues\\r\\e[0K"",
|
|
474
|
+
"kubernetesCreateSecret",
|
|
475
|
+
"kubernetesDeploy",
|
|
476
|
+
"echo Uploading SBOM to Dependency Track",
|
|
477
|
+
"/dtrackuploader https://dep.panter.swiss/ "$DT_KEY_PROD" upload "pan-test-app/api" "https://api.dev.test-app.pan.panter.cloud" "__sbom.json" vex.json || true",
|
|
478
|
+
"echo deployment successful ๐ป",
|
|
479
|
+
"echo "CL_GITLAB_ENVIRONMENT_URL=https://api.dev.test-app.pan.panter.cloud" >> gitlab_environment.env",
|
|
480
|
+
],
|
|
481
|
+
"stage": "deploy dev",
|
|
482
|
+
"variables": {
|
|
483
|
+
"KUBERNETES_CPU_REQUEST": "0.5",
|
|
484
|
+
"KUBERNETES_MEMORY_LIMIT": "400Mi",
|
|
485
|
+
"KUBERNETES_MEMORY_REQUEST": "200Mi",
|
|
481
486
|
},
|
|
482
487
|
},
|
|
483
488
|
"api ๐ Stop โ ๏ธ | dev ": {
|
|
489
|
+
"allow_failure": true,
|
|
490
|
+
"artifacts": {
|
|
491
|
+
"reports": {
|
|
492
|
+
"dotenv": "gitlab_environment.env",
|
|
493
|
+
},
|
|
494
|
+
},
|
|
484
495
|
"environment": {
|
|
485
496
|
"action": "stop",
|
|
486
497
|
"name": "dev/api",
|
|
487
|
-
"url": "
|
|
498
|
+
"url": "$CL_GITLAB_ENVIRONMENT_URL",
|
|
488
499
|
},
|
|
489
500
|
"image": "path/to/docker/kubernetes:the-version",
|
|
490
501
|
"interruptible": true,
|
|
@@ -498,16 +509,40 @@ mongodb:
|
|
|
498
509
|
},
|
|
499
510
|
"rules": [
|
|
500
511
|
{
|
|
501
|
-
"allow_failure": true,
|
|
502
512
|
"if": "$CI_COMMIT_BRANCH =~ /^[0-9]+\\.([0-9]+|x)\\.x$/",
|
|
503
513
|
"when": "on_success",
|
|
504
514
|
},
|
|
505
515
|
{
|
|
506
|
-
"allow_failure": true,
|
|
507
516
|
"when": "manual",
|
|
508
517
|
},
|
|
509
518
|
],
|
|
510
519
|
"script": [
|
|
520
|
+
"echo -e "\\e[0Ksection_start:$(date +%s):injectvars[collapsed=true]\\r\\e[0KInjecting variables"",
|
|
521
|
+
"export ENV_SHORT="dev"",
|
|
522
|
+
"export APP_DIR="api"",
|
|
523
|
+
"export ENV_TYPE="dev"",
|
|
524
|
+
"export BUILD_INFO_BUILD_ID="$(git describe --tags 2>/dev/null || git rev-parse HEAD)"",
|
|
525
|
+
"export BUILD_INFO_BUILD_TIME="$CI_JOB_STARTED_AT"",
|
|
526
|
+
"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")"",
|
|
527
|
+
"export HOST="api.dev.test-app.pan.panter.cloud"",
|
|
528
|
+
"export ROOT_URL="https://api.dev.test-app.pan.panter.cloud"",
|
|
529
|
+
"export HOST_INTERNAL="api.dev.test-app.pan.panter.cloud"",
|
|
530
|
+
"export HOST_CANONICAL="api.dev.test-app.pan.panter.cloud"",
|
|
531
|
+
"export ROOT_URL_INTERNAL="https://api.dev.test-app.pan.panter.cloud"",
|
|
532
|
+
"export KUBE_NAMESPACE="pan-test-app-dev"",
|
|
533
|
+
"export KUBE_APP_NAME="api"",
|
|
534
|
+
"export KUBE_APP_NAME_PREFIX=""",
|
|
535
|
+
"export MONGODB_ROOT_PASSWORD="$CL_dev_api_MONGODB_ROOT_PASSWORD"",
|
|
536
|
+
"export MONGODB_REPLICASET_KEY="$CL_dev_api_MONGODB_REPLICASET_KEY"",
|
|
537
|
+
"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\\"]"",
|
|
538
|
+
"export RELEASE_NAME="pan-test-app-dev-api"",
|
|
539
|
+
"export HELM_EXPERIMENTAL_OCI="1"",
|
|
540
|
+
"export KUBE_DOCKER_IMAGE_PULL_SECRET="gitlab-registry-api"",
|
|
541
|
+
"export HELM_GITLAB_CHART_NAME="/helm-charts/the-panter-chart"",
|
|
542
|
+
"export HELM_ARGS=""",
|
|
543
|
+
"export COMPONENT_NAME="api"",
|
|
544
|
+
"export BUILD_ID="$(git describe --tags 2>/dev/null || git rev-parse HEAD)"",
|
|
545
|
+
"echo -e "\\e[0Ksection_end:$(date +%s):injectvars\\r\\e[0K"",
|
|
511
546
|
"kubectl config set-cluster "kube-pan-test-app-dev-api" --server="$CL_dev_api_KUBE_URL" --certificate-authority <(echo $CL_dev_api_KUBE_CA_PEM | base64 -d) --embed-certs=true",
|
|
512
547
|
"kubectl config set-credentials "kube-pan-test-app-dev-api" --token="$CL_dev_api_KUBE_TOKEN"",
|
|
513
548
|
"kubectl config set-context "kube-pan-test-app-dev-api" --cluster="kube-pan-test-app-dev-api" --user="kube-pan-test-app-dev-api" --namespace="pan-test-app-dev"",
|
|
@@ -515,93 +550,14 @@ mongodb:
|
|
|
515
550
|
"kubernetesDelete",
|
|
516
551
|
"echo Disabling component in Dependency Track",
|
|
517
552
|
"/dtrackuploader https://dep.panter.swiss/ "$DT_KEY_PROD" disable "pan-test-app/api" "https://api.dev.test-app.pan.panter.cloud" || true",
|
|
553
|
+
"echo "CL_GITLAB_ENVIRONMENT_URL=https://api.dev.test-app.pan.panter.cloud" >> gitlab_environment.env",
|
|
518
554
|
],
|
|
519
555
|
"stage": "stop dev",
|
|
520
556
|
"variables": {
|
|
521
|
-
"APP_DIR": "api",
|
|
522
|
-
"BUILD_ID": "some-id",
|
|
523
|
-
"BUILD_INFO_BUILD_TIME": "01-01-2023 12:13:14",
|
|
524
|
-
"BUILD_INFO_CURRENT_VERSION": "3.2.1",
|
|
525
|
-
"BUILD_INFO_ID": "some-id",
|
|
526
|
-
"COMPONENT_NAME": "api",
|
|
527
|
-
"ENV_SHORT": "dev",
|
|
528
|
-
"ENV_TYPE": "dev",
|
|
529
557
|
"GIT_STRATEGY": "none",
|
|
530
|
-
"HELM_ARGS": "",
|
|
531
|
-
"HELM_EXPERIMENTAL_OCI": "1",
|
|
532
|
-
"HELM_GITLAB_CHART_NAME": "/helm-charts/the-panter-chart",
|
|
533
|
-
"HOST": "api.dev.test-app.pan.panter.cloud",
|
|
534
|
-
"HOST_CANONICAL": "api.dev.test-app.pan.panter.cloud",
|
|
535
|
-
"HOST_INTERNAL": "api.dev.test-app.pan.panter.cloud",
|
|
536
558
|
"KUBERNETES_CPU_REQUEST": "0.5",
|
|
537
559
|
"KUBERNETES_MEMORY_LIMIT": "400Mi",
|
|
538
560
|
"KUBERNETES_MEMORY_REQUEST": "200Mi",
|
|
539
|
-
"KUBE_APP_NAME": "api",
|
|
540
|
-
"KUBE_APP_NAME_PREFIX": "",
|
|
541
|
-
"KUBE_DOCKER_IMAGE_PULL_SECRET": "gitlab-registry-api",
|
|
542
|
-
"KUBE_NAMESPACE": "pan-test-app-dev",
|
|
543
|
-
"KUBE_VALUES": "env:
|
|
544
|
-
secret:
|
|
545
|
-
MONGODB_ROOT_PASSWORD: '$CL_dev_api_MONGODB_ROOT_PASSWORD'
|
|
546
|
-
MONGODB_REPLICASET_KEY: '$CL_dev_api_MONGODB_REPLICASET_KEY'
|
|
547
|
-
MONGO_URL: 'mongodb://root:$CL_dev_api_MONGODB_ROOT_PASSWORD@api-mongodb-0.api-mongodb-headless.pan-test-app-dev.svc.cluster.local:27017,api-mongodb-1.api-mongodb-headless.pan-test-app-dev.svc.cluster.local:27017/app?replicaSet=rs0&authSource=admin'
|
|
548
|
-
MONGO_OPLOG_URL: 'mongodb://root:$CL_dev_api_MONGODB_ROOT_PASSWORD@api-mongodb-0.api-mongodb-headless.pan-test-app-dev.svc.cluster.local:27017,api-mongodb-1.api-mongodb-headless.pan-test-app-dev.svc.cluster.local:27017/local?replicaSet=rs0&authSource=admin'
|
|
549
|
-
public:
|
|
550
|
-
ENV_SHORT: 'dev'
|
|
551
|
-
APP_DIR: 'api'
|
|
552
|
-
ENV_TYPE: 'dev'
|
|
553
|
-
BUILD_INFO_ID: 'some-id'
|
|
554
|
-
BUILD_INFO_BUILD_TIME: '01-01-2023 12:13:14'
|
|
555
|
-
BUILD_INFO_CURRENT_VERSION: '3.2.1'
|
|
556
|
-
HOST: 'api.dev.test-app.pan.panter.cloud'
|
|
557
|
-
ROOT_URL: 'https://api.dev.test-app.pan.panter.cloud'
|
|
558
|
-
HOST_CANONICAL: 'api.dev.test-app.pan.panter.cloud'
|
|
559
|
-
ROOT_URL_INTERNAL: 'https://api.dev.test-app.pan.panter.cloud'
|
|
560
|
-
KUBE_NAMESPACE: 'pan-test-app-dev'
|
|
561
|
-
KUBE_APP_NAME: 'api'
|
|
562
|
-
KUBE_APP_NAME_PREFIX: ''
|
|
563
|
-
HOST_INTERNAL: 'api.dev.test-app.pan.panter.cloud'
|
|
564
|
-
_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"]'
|
|
565
|
-
application:
|
|
566
|
-
host: 'api.dev.test-app.pan.panter.cloud'
|
|
567
|
-
command: 'node main.js'
|
|
568
|
-
livenessProbe:
|
|
569
|
-
httpGet:
|
|
570
|
-
path: '__health'
|
|
571
|
-
readinessProbe:
|
|
572
|
-
httpGet:
|
|
573
|
-
path: '__health'
|
|
574
|
-
startupProbe:
|
|
575
|
-
httpGet:
|
|
576
|
-
path: '__health'
|
|
577
|
-
mongodb:
|
|
578
|
-
enabled: true
|
|
579
|
-
auth:
|
|
580
|
-
enabled: true
|
|
581
|
-
rootPassword: '$CL_dev_api_MONGODB_ROOT_PASSWORD'
|
|
582
|
-
replicaSetKey: '$CL_dev_api_MONGODB_REPLICASET_KEY'
|
|
583
|
-
persistence:
|
|
584
|
-
storageClass: 'premium-rwo'
|
|
585
|
-
backup:
|
|
586
|
-
enabled: false
|
|
587
|
-
hostToBackup: 'api-mongodb-0.api-mongodb-headless.pan-test-app-dev.svc.cluster.local:27017'
|
|
588
|
-
pvcToBackup: 'datadir-api-mongodb-0'
|
|
589
|
-
image: 'mrelite/kubectlmongoshell:v1.0'
|
|
590
|
-
schedule: '0 4 * * *'
|
|
591
|
-
volumeSnapshotClass: 'snapshotclass'
|
|
592
|
-
architecture: 'replicaset'
|
|
593
|
-
tolerations:
|
|
594
|
-
- key: 'mongodb'
|
|
595
|
-
operator: 'Equal'
|
|
596
|
-
value: 'true'
|
|
597
|
-
effect: 'NoSchedule'
|
|
598
|
-
",
|
|
599
|
-
"MONGODB_REPLICASET_KEY": "$CL_dev_api_MONGODB_REPLICASET_KEY",
|
|
600
|
-
"MONGODB_ROOT_PASSWORD": "$CL_dev_api_MONGODB_ROOT_PASSWORD",
|
|
601
|
-
"RELEASE_NAME": "pan-test-app-dev-api",
|
|
602
|
-
"ROOT_URL": "https://api.dev.test-app.pan.panter.cloud",
|
|
603
|
-
"ROOT_URL_INTERNAL": "https://api.dev.test-app.pan.panter.cloud",
|
|
604
|
-
"_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"]",
|
|
605
561
|
},
|
|
606
562
|
},
|
|
607
563
|
"api ๐ก audit": {
|
|
@@ -617,12 +573,14 @@ mongodb:
|
|
|
617
573
|
],
|
|
618
574
|
},
|
|
619
575
|
"script": [
|
|
576
|
+
"echo -e "\\e[0Ksection_start:$(date +%s):injectvars[collapsed=true]\\r\\e[0KInjecting variables"",
|
|
577
|
+
"export APP_PATH="api"",
|
|
578
|
+
"echo -e "\\e[0Ksection_end:$(date +%s):injectvars\\r\\e[0K"",
|
|
620
579
|
"cd api",
|
|
621
580
|
"yarn npm audit --environment production",
|
|
622
581
|
],
|
|
623
582
|
"stage": "test",
|
|
624
583
|
"variables": {
|
|
625
|
-
"APP_PATH": "api",
|
|
626
584
|
"KUBERNETES_CPU_REQUEST": "0.5",
|
|
627
585
|
"KUBERNETES_MEMORY_LIMIT": "4Gi",
|
|
628
586
|
"KUBERNETES_MEMORY_REQUEST": "2Gi",
|
|
@@ -656,6 +614,9 @@ mongodb:
|
|
|
656
614
|
],
|
|
657
615
|
},
|
|
658
616
|
"script": [
|
|
617
|
+
"echo -e "\\e[0Ksection_start:$(date +%s):injectvars[collapsed=true]\\r\\e[0KInjecting variables"",
|
|
618
|
+
"export APP_PATH="api"",
|
|
619
|
+
"echo -e "\\e[0Ksection_end:$(date +%s):injectvars\\r\\e[0K"",
|
|
659
620
|
"echo -e "\\e[0Ksection_start:$(date +%s):nodeinstall[collapsed=true]\\r\\e[0KEnsure node version"",
|
|
660
621
|
"if [ -f ~/.nvm/nvm.sh ]; then source ~/.nvm/nvm.sh; fi",
|
|
661
622
|
"if command -v nvm &> /dev/null && [ -f ./.nvmrc ]; then nvm install; fi",
|
|
@@ -672,7 +633,6 @@ mongodb:
|
|
|
672
633
|
],
|
|
673
634
|
"stage": "test",
|
|
674
635
|
"variables": {
|
|
675
|
-
"APP_PATH": "api",
|
|
676
636
|
"KUBERNETES_CPU_REQUEST": "0.5",
|
|
677
637
|
"KUBERNETES_MEMORY_LIMIT": "4Gi",
|
|
678
638
|
"KUBERNETES_MEMORY_REQUEST": "2Gi",
|
|
@@ -696,6 +656,8 @@ mongodb:
|
|
|
696
656
|
],
|
|
697
657
|
},
|
|
698
658
|
"script": [
|
|
659
|
+
"echo -e "\\e[0Ksection_start:$(date +%s):injectvars[collapsed=true]\\r\\e[0KInjecting variables"",
|
|
660
|
+
"echo -e "\\e[0Ksection_end:$(date +%s):injectvars\\r\\e[0K"",
|
|
699
661
|
"trivy fs --quiet --format cyclonedx --output "__sbom.json" api",
|
|
700
662
|
],
|
|
701
663
|
"stage": "build",
|
|
@@ -748,7 +710,7 @@ mongodb:
|
|
|
748
710
|
],
|
|
749
711
|
"variables": {
|
|
750
712
|
"FF_USE_FASTZIP": "true",
|
|
751
|
-
"GIT_DEPTH": 1,
|
|
713
|
+
"GIT_DEPTH": "1",
|
|
752
714
|
},
|
|
753
715
|
"workflow": {
|
|
754
716
|
"rules": [
|
|
@@ -779,10 +741,16 @@ mongodb:
|
|
|
779
741
|
"image": "path/to/docker/jobs-default:the-version",
|
|
780
742
|
"jobs": {
|
|
781
743
|
"api โฉ๏ธ Rollback โ ๏ธ | review ": {
|
|
744
|
+
"allow_failure": true,
|
|
745
|
+
"artifacts": {
|
|
746
|
+
"reports": {
|
|
747
|
+
"dotenv": "gitlab_environment.env",
|
|
748
|
+
},
|
|
749
|
+
},
|
|
782
750
|
"environment": {
|
|
783
751
|
"action": "access",
|
|
784
|
-
"name": "review/
|
|
785
|
-
"url": "
|
|
752
|
+
"name": "review/$CI_COMMIT_REF_NAME/api",
|
|
753
|
+
"url": "$CL_GITLAB_ENVIRONMENT_URL",
|
|
786
754
|
},
|
|
787
755
|
"image": "path/to/docker/kubernetes:the-version",
|
|
788
756
|
"interruptible": true,
|
|
@@ -796,103 +764,49 @@ mongodb:
|
|
|
796
764
|
},
|
|
797
765
|
"rules": [
|
|
798
766
|
{
|
|
799
|
-
"allow_failure": true,
|
|
800
767
|
"when": "manual",
|
|
801
768
|
},
|
|
802
769
|
],
|
|
803
770
|
"script": [
|
|
804
|
-
"
|
|
805
|
-
"
|
|
806
|
-
"
|
|
807
|
-
"
|
|
771
|
+
"echo -e "\\e[0Ksection_start:$(date +%s):injectvars[collapsed=true]\\r\\e[0KInjecting variables"",
|
|
772
|
+
"export ENV_SHORT="review"",
|
|
773
|
+
"export APP_DIR="api"",
|
|
774
|
+
"export ENV_TYPE="review"",
|
|
775
|
+
"export BUILD_INFO_BUILD_ID="$(git describe --tags 2>/dev/null || git rev-parse HEAD)"",
|
|
776
|
+
"export BUILD_INFO_BUILD_TIME="$CI_JOB_STARTED_AT"",
|
|
777
|
+
"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")"",
|
|
778
|
+
"export HOST="api.$([ -n "$CI_MERGE_REQUEST_IID" ] && echo "mr$CI_MERGE_REQUEST_IID" || { [ -n "$CI_COMMIT_REF_SLUG" ] && echo "$CI_COMMIT_REF_SLUG" || echo "unknown"; }).review.test-app.pan.panter.cloud"",
|
|
779
|
+
"export ROOT_URL="https://api.$([ -n "$CI_MERGE_REQUEST_IID" ] && echo "mr$CI_MERGE_REQUEST_IID" || { [ -n "$CI_COMMIT_REF_SLUG" ] && echo "$CI_COMMIT_REF_SLUG" || echo "unknown"; }).review.test-app.pan.panter.cloud"",
|
|
780
|
+
"export HOST_INTERNAL="api.$([ -n "$CI_MERGE_REQUEST_IID" ] && echo "mr$CI_MERGE_REQUEST_IID" || { [ -n "$CI_COMMIT_REF_SLUG" ] && echo "$CI_COMMIT_REF_SLUG" || echo "unknown"; }).review.test-app.pan.panter.cloud"",
|
|
781
|
+
"export HOST_CANONICAL="api.$([ -n "$CI_MERGE_REQUEST_IID" ] && echo "mr$CI_MERGE_REQUEST_IID" || { [ -n "$CI_COMMIT_REF_SLUG" ] && echo "$CI_COMMIT_REF_SLUG" || echo "unknown"; }).review.test-app.pan.panter.cloud"",
|
|
782
|
+
"export ROOT_URL_INTERNAL="https://api.$([ -n "$CI_MERGE_REQUEST_IID" ] && echo "mr$CI_MERGE_REQUEST_IID" || { [ -n "$CI_COMMIT_REF_SLUG" ] && echo "$CI_COMMIT_REF_SLUG" || echo "unknown"; }).review.test-app.pan.panter.cloud"",
|
|
783
|
+
"export KUBE_NAMESPACE="pan-test-app-review"",
|
|
784
|
+
"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"; })-api"",
|
|
785
|
+
"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"; })-"",
|
|
786
|
+
"export MONGODB_ROOT_PASSWORD="$CL_review_api_MONGODB_ROOT_PASSWORD"",
|
|
787
|
+
"export MONGODB_REPLICASET_KEY="$CL_review_api_MONGODB_REPLICASET_KEY"",
|
|
788
|
+
"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\\"]"",
|
|
789
|
+
"export RELEASE_NAME="pan-test-app-review-$([ -n "$CI_MERGE_REQUEST_IID" ] && echo "mr$CI_MERGE_REQUEST_IID" || { [ -n "$CI_COMMIT_REF_SLUG" ] && echo "$CI_COMMIT_REF_SLUG" || echo "unknown"; })-api"",
|
|
790
|
+
"export HELM_EXPERIMENTAL_OCI="1"",
|
|
791
|
+
"export KUBE_DOCKER_IMAGE_PULL_SECRET="gitlab-registry-api"",
|
|
792
|
+
"export HELM_GITLAB_CHART_NAME="/helm-charts/the-panter-chart"",
|
|
793
|
+
"export HELM_ARGS=""",
|
|
794
|
+
"export COMPONENT_NAME="api"",
|
|
795
|
+
"export BUILD_ID="$(git describe --tags 2>/dev/null || git rev-parse HEAD)"",
|
|
796
|
+
"echo -e "\\e[0Ksection_end:$(date +%s):injectvars\\r\\e[0K"",
|
|
797
|
+
"kubectl config set-cluster "kube-pan-test-app-review-$([ -n "$CI_MERGE_REQUEST_IID" ] && echo "mr$CI_MERGE_REQUEST_IID" || { [ -n "$CI_COMMIT_REF_SLUG" ] && echo "$CI_COMMIT_REF_SLUG" || echo "unknown"; })-api" --server="$CL_review_api_KUBE_URL" --certificate-authority <(echo $CL_review_api_KUBE_CA_PEM | base64 -d) --embed-certs=true",
|
|
798
|
+
"kubectl config set-credentials "kube-pan-test-app-review-$([ -n "$CI_MERGE_REQUEST_IID" ] && echo "mr$CI_MERGE_REQUEST_IID" || { [ -n "$CI_COMMIT_REF_SLUG" ] && echo "$CI_COMMIT_REF_SLUG" || echo "unknown"; })-api" --token="$CL_review_api_KUBE_TOKEN"",
|
|
799
|
+
"kubectl config set-context "kube-pan-test-app-review-$([ -n "$CI_MERGE_REQUEST_IID" ] && echo "mr$CI_MERGE_REQUEST_IID" || { [ -n "$CI_COMMIT_REF_SLUG" ] && echo "$CI_COMMIT_REF_SLUG" || echo "unknown"; })-api" --cluster="kube-pan-test-app-review-$([ -n "$CI_MERGE_REQUEST_IID" ] && echo "mr$CI_MERGE_REQUEST_IID" || { [ -n "$CI_COMMIT_REF_SLUG" ] && echo "$CI_COMMIT_REF_SLUG" || echo "unknown"; })-api" --user="kube-pan-test-app-review-$([ -n "$CI_MERGE_REQUEST_IID" ] && echo "mr$CI_MERGE_REQUEST_IID" || { [ -n "$CI_COMMIT_REF_SLUG" ] && echo "$CI_COMMIT_REF_SLUG" || echo "unknown"; })-api" --namespace="pan-test-app-review"",
|
|
800
|
+
"kubectl config use-context "kube-pan-test-app-review-$([ -n "$CI_MERGE_REQUEST_IID" ] && echo "mr$CI_MERGE_REQUEST_IID" || { [ -n "$CI_COMMIT_REF_SLUG" ] && echo "$CI_COMMIT_REF_SLUG" || echo "unknown"; })-api"",
|
|
808
801
|
"kubernetesRollback",
|
|
802
|
+
"echo "CL_GITLAB_ENVIRONMENT_URL=https://api.$([ -n "$CI_MERGE_REQUEST_IID" ] && echo "mr$CI_MERGE_REQUEST_IID" || { [ -n "$CI_COMMIT_REF_SLUG" ] && echo "$CI_COMMIT_REF_SLUG" || echo "unknown"; }).review.test-app.pan.panter.cloud" >> gitlab_environment.env",
|
|
809
803
|
],
|
|
810
804
|
"stage": "rollback review",
|
|
811
805
|
"variables": {
|
|
812
|
-
"APP_DIR": "api",
|
|
813
|
-
"BUILD_ID": "some-id",
|
|
814
|
-
"BUILD_INFO_BUILD_TIME": "01-01-2023 12:13:14",
|
|
815
|
-
"BUILD_INFO_CURRENT_VERSION": "3.2.1",
|
|
816
|
-
"BUILD_INFO_ID": "some-id",
|
|
817
|
-
"COMPONENT_NAME": "api",
|
|
818
|
-
"ENV_SHORT": "review",
|
|
819
|
-
"ENV_TYPE": "review",
|
|
820
806
|
"GIT_STRATEGY": "none",
|
|
821
|
-
"HELM_ARGS": "",
|
|
822
|
-
"HELM_EXPERIMENTAL_OCI": "1",
|
|
823
|
-
"HELM_GITLAB_CHART_NAME": "/helm-charts/the-panter-chart",
|
|
824
|
-
"HOST": "api.mr1234.review.test-app.pan.panter.cloud",
|
|
825
|
-
"HOST_CANONICAL": "api.mr1234.review.test-app.pan.panter.cloud",
|
|
826
|
-
"HOST_INTERNAL": "api.mr1234.review.test-app.pan.panter.cloud",
|
|
827
807
|
"KUBERNETES_CPU_REQUEST": "0.5",
|
|
828
808
|
"KUBERNETES_MEMORY_LIMIT": "400Mi",
|
|
829
809
|
"KUBERNETES_MEMORY_REQUEST": "200Mi",
|
|
830
|
-
"KUBE_APP_NAME": "mr1234-api",
|
|
831
|
-
"KUBE_APP_NAME_PREFIX": "mr1234-",
|
|
832
|
-
"KUBE_DOCKER_IMAGE_PULL_SECRET": "gitlab-registry-api",
|
|
833
|
-
"KUBE_NAMESPACE": "pan-test-app-review",
|
|
834
|
-
"KUBE_VALUES": "env:
|
|
835
|
-
secret:
|
|
836
|
-
MONGODB_ROOT_PASSWORD: '$CL_review_api_MONGODB_ROOT_PASSWORD'
|
|
837
|
-
MONGODB_REPLICASET_KEY: '$CL_review_api_MONGODB_REPLICASET_KEY'
|
|
838
|
-
MONGO_URL: 'mongodb://root:$CL_review_api_MONGODB_ROOT_PASSWORD@mr1234-api-mongodb-0.mr1234-api-mongodb-headless.pan-test-app-review.svc.cluster.local:27017,mr1234-api-mongodb-1.mr1234-api-mongodb-headless.pan-test-app-review.svc.cluster.local:27017/app?replicaSet=rs0&authSource=admin'
|
|
839
|
-
MONGO_OPLOG_URL: 'mongodb://root:$CL_review_api_MONGODB_ROOT_PASSWORD@mr1234-api-mongodb-0.mr1234-api-mongodb-headless.pan-test-app-review.svc.cluster.local:27017,mr1234-api-mongodb-1.mr1234-api-mongodb-headless.pan-test-app-review.svc.cluster.local:27017/local?replicaSet=rs0&authSource=admin'
|
|
840
|
-
public:
|
|
841
|
-
ENV_SHORT: 'review'
|
|
842
|
-
APP_DIR: 'api'
|
|
843
|
-
ENV_TYPE: 'review'
|
|
844
|
-
BUILD_INFO_ID: 'some-id'
|
|
845
|
-
BUILD_INFO_BUILD_TIME: '01-01-2023 12:13:14'
|
|
846
|
-
BUILD_INFO_CURRENT_VERSION: '3.2.1'
|
|
847
|
-
HOST: 'api.mr1234.review.test-app.pan.panter.cloud'
|
|
848
|
-
ROOT_URL: 'https://api.mr1234.review.test-app.pan.panter.cloud'
|
|
849
|
-
HOST_CANONICAL: 'api.mr1234.review.test-app.pan.panter.cloud'
|
|
850
|
-
ROOT_URL_INTERNAL: 'https://api.mr1234.review.test-app.pan.panter.cloud'
|
|
851
|
-
KUBE_NAMESPACE: 'pan-test-app-review'
|
|
852
|
-
KUBE_APP_NAME: 'mr1234-api'
|
|
853
|
-
KUBE_APP_NAME_PREFIX: 'mr1234-'
|
|
854
|
-
HOST_INTERNAL: 'api.mr1234.review.test-app.pan.panter.cloud'
|
|
855
|
-
_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"]'
|
|
856
|
-
application:
|
|
857
|
-
host: 'api.mr1234.review.test-app.pan.panter.cloud'
|
|
858
|
-
command: 'node main.js'
|
|
859
|
-
livenessProbe:
|
|
860
|
-
httpGet:
|
|
861
|
-
path: '__health'
|
|
862
|
-
readinessProbe:
|
|
863
|
-
httpGet:
|
|
864
|
-
path: '__health'
|
|
865
|
-
startupProbe:
|
|
866
|
-
httpGet:
|
|
867
|
-
path: '__health'
|
|
868
|
-
mongodb:
|
|
869
|
-
enabled: true
|
|
870
|
-
auth:
|
|
871
|
-
enabled: true
|
|
872
|
-
rootPassword: '$CL_review_api_MONGODB_ROOT_PASSWORD'
|
|
873
|
-
replicaSetKey: '$CL_review_api_MONGODB_REPLICASET_KEY'
|
|
874
|
-
persistence:
|
|
875
|
-
storageClass: 'premium-rwo'
|
|
876
|
-
backup:
|
|
877
|
-
enabled: false
|
|
878
|
-
hostToBackup: 'mr1234-api-mongodb-0.mr1234-api-mongodb-headless.pan-test-app-review.svc.cluster.local:27017'
|
|
879
|
-
pvcToBackup: 'datadir-mr1234-api-mongodb-0'
|
|
880
|
-
image: 'mrelite/kubectlmongoshell:v1.0'
|
|
881
|
-
schedule: '0 4 * * *'
|
|
882
|
-
volumeSnapshotClass: 'snapshotclass'
|
|
883
|
-
architecture: 'replicaset'
|
|
884
|
-
tolerations:
|
|
885
|
-
- key: 'mongodb'
|
|
886
|
-
operator: 'Equal'
|
|
887
|
-
value: 'true'
|
|
888
|
-
effect: 'NoSchedule'
|
|
889
|
-
",
|
|
890
|
-
"MONGODB_REPLICASET_KEY": "$CL_review_api_MONGODB_REPLICASET_KEY",
|
|
891
|
-
"MONGODB_ROOT_PASSWORD": "$CL_review_api_MONGODB_ROOT_PASSWORD",
|
|
892
|
-
"RELEASE_NAME": "pan-test-app-review-mr1234-api",
|
|
893
|
-
"ROOT_URL": "https://api.mr1234.review.test-app.pan.panter.cloud",
|
|
894
|
-
"ROOT_URL_INTERNAL": "https://api.mr1234.review.test-app.pan.panter.cloud",
|
|
895
|
-
"_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"]",
|
|
896
810
|
},
|
|
897
811
|
},
|
|
898
812
|
"api ๐ฎ lint": {
|
|
@@ -923,6 +837,9 @@ mongodb:
|
|
|
923
837
|
],
|
|
924
838
|
},
|
|
925
839
|
"script": [
|
|
840
|
+
"echo -e "\\e[0Ksection_start:$(date +%s):injectvars[collapsed=true]\\r\\e[0KInjecting variables"",
|
|
841
|
+
"export APP_PATH="api"",
|
|
842
|
+
"echo -e "\\e[0Ksection_end:$(date +%s):injectvars\\r\\e[0K"",
|
|
926
843
|
"echo -e "\\e[0Ksection_start:$(date +%s):nodeinstall[collapsed=true]\\r\\e[0KEnsure node version"",
|
|
927
844
|
"if [ -f ~/.nvm/nvm.sh ]; then source ~/.nvm/nvm.sh; fi",
|
|
928
845
|
"if command -v nvm &> /dev/null && [ -f ./.nvmrc ]; then nvm install; fi",
|
|
@@ -939,7 +856,6 @@ mongodb:
|
|
|
939
856
|
],
|
|
940
857
|
"stage": "test",
|
|
941
858
|
"variables": {
|
|
942
|
-
"APP_PATH": "api",
|
|
943
859
|
"KUBERNETES_CPU_REQUEST": "0.5",
|
|
944
860
|
"KUBERNETES_MEMORY_LIMIT": "4Gi",
|
|
945
861
|
"KUBERNETES_MEMORY_REQUEST": "2Gi",
|
|
@@ -992,7 +908,26 @@ mongodb:
|
|
|
992
908
|
],
|
|
993
909
|
},
|
|
994
910
|
"script": [
|
|
995
|
-
"echo
|
|
911
|
+
"echo -e "\\e[0Ksection_start:$(date +%s):injectvars[collapsed=true]\\r\\e[0KInjecting variables"",
|
|
912
|
+
"export ENV_SHORT="review"",
|
|
913
|
+
"export APP_DIR="api"",
|
|
914
|
+
"export ENV_TYPE="review"",
|
|
915
|
+
"export BUILD_INFO_BUILD_ID="$(git describe --tags 2>/dev/null || git rev-parse HEAD)"",
|
|
916
|
+
"export BUILD_INFO_BUILD_TIME="$CI_JOB_STARTED_AT"",
|
|
917
|
+
"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")"",
|
|
918
|
+
"export HOST="api.$([ -n "$CI_MERGE_REQUEST_IID" ] && echo "mr$CI_MERGE_REQUEST_IID" || { [ -n "$CI_COMMIT_REF_SLUG" ] && echo "$CI_COMMIT_REF_SLUG" || echo "unknown"; }).review.test-app.pan.panter.cloud"",
|
|
919
|
+
"export ROOT_URL="https://api.$([ -n "$CI_MERGE_REQUEST_IID" ] && echo "mr$CI_MERGE_REQUEST_IID" || { [ -n "$CI_COMMIT_REF_SLUG" ] && echo "$CI_COMMIT_REF_SLUG" || echo "unknown"; }).review.test-app.pan.panter.cloud"",
|
|
920
|
+
"export HOST_INTERNAL="api.$([ -n "$CI_MERGE_REQUEST_IID" ] && echo "mr$CI_MERGE_REQUEST_IID" || { [ -n "$CI_COMMIT_REF_SLUG" ] && echo "$CI_COMMIT_REF_SLUG" || echo "unknown"; }).review.test-app.pan.panter.cloud"",
|
|
921
|
+
"export HOST_CANONICAL="api.$([ -n "$CI_MERGE_REQUEST_IID" ] && echo "mr$CI_MERGE_REQUEST_IID" || { [ -n "$CI_COMMIT_REF_SLUG" ] && echo "$CI_COMMIT_REF_SLUG" || echo "unknown"; }).review.test-app.pan.panter.cloud"",
|
|
922
|
+
"export ROOT_URL_INTERNAL="https://api.$([ -n "$CI_MERGE_REQUEST_IID" ] && echo "mr$CI_MERGE_REQUEST_IID" || { [ -n "$CI_COMMIT_REF_SLUG" ] && echo "$CI_COMMIT_REF_SLUG" || echo "unknown"; }).review.test-app.pan.panter.cloud"",
|
|
923
|
+
"export KUBE_NAMESPACE="pan-test-app-review"",
|
|
924
|
+
"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"; })-api"",
|
|
925
|
+
"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"; })-"",
|
|
926
|
+
"export MONGODB_ROOT_PASSWORD="$CL_review_api_MONGODB_ROOT_PASSWORD"",
|
|
927
|
+
"export MONGODB_REPLICASET_KEY="$CL_review_api_MONGODB_REPLICASET_KEY"",
|
|
928
|
+
"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\\"]"",
|
|
929
|
+
"echo -e "\\e[0Ksection_end:$(date +%s):injectvars\\r\\e[0K"",
|
|
930
|
+
"echo '{"id":"$(git describe --tags 2>/dev/null || git rev-parse HEAD)","time":"$CI_JOB_STARTED_AT"}' > api/__build_info.json",
|
|
996
931
|
"echo -e "\\e[0Ksection_start:$(date +%s):nodeinstall[collapsed=true]\\r\\e[0KEnsure node version"",
|
|
997
932
|
"if [ -f ~/.nvm/nvm.sh ]; then source ~/.nvm/nvm.sh; fi",
|
|
998
933
|
"if command -v nvm &> /dev/null && [ -f ./.nvmrc ]; then nvm install; fi",
|
|
@@ -1009,26 +944,9 @@ mongodb:
|
|
|
1009
944
|
],
|
|
1010
945
|
"stage": "build",
|
|
1011
946
|
"variables": {
|
|
1012
|
-
"APP_DIR": "api",
|
|
1013
|
-
"BUILD_INFO_BUILD_TIME": "01-01-2023 12:13:14",
|
|
1014
|
-
"BUILD_INFO_CURRENT_VERSION": "3.2.1",
|
|
1015
|
-
"BUILD_INFO_ID": "some-id",
|
|
1016
|
-
"ENV_SHORT": "review",
|
|
1017
|
-
"ENV_TYPE": "review",
|
|
1018
|
-
"HOST": "api.mr1234.review.test-app.pan.panter.cloud",
|
|
1019
|
-
"HOST_CANONICAL": "api.mr1234.review.test-app.pan.panter.cloud",
|
|
1020
|
-
"HOST_INTERNAL": "api.mr1234.review.test-app.pan.panter.cloud",
|
|
1021
947
|
"KUBERNETES_CPU_REQUEST": "0.5",
|
|
1022
948
|
"KUBERNETES_MEMORY_LIMIT": "4Gi",
|
|
1023
949
|
"KUBERNETES_MEMORY_REQUEST": "2Gi",
|
|
1024
|
-
"KUBE_APP_NAME": "mr1234-api",
|
|
1025
|
-
"KUBE_APP_NAME_PREFIX": "mr1234-",
|
|
1026
|
-
"KUBE_NAMESPACE": "pan-test-app-review",
|
|
1027
|
-
"MONGODB_REPLICASET_KEY": "$CL_review_api_MONGODB_REPLICASET_KEY",
|
|
1028
|
-
"MONGODB_ROOT_PASSWORD": "$CL_review_api_MONGODB_ROOT_PASSWORD",
|
|
1029
|
-
"ROOT_URL": "https://api.mr1234.review.test-app.pan.panter.cloud",
|
|
1030
|
-
"ROOT_URL_INTERNAL": "https://api.mr1234.review.test-app.pan.panter.cloud",
|
|
1031
|
-
"_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"]",
|
|
1032
950
|
},
|
|
1033
951
|
},
|
|
1034
952
|
"api ๐จ docker | review ": {
|
|
@@ -1054,6 +972,22 @@ mongodb:
|
|
|
1054
972
|
],
|
|
1055
973
|
},
|
|
1056
974
|
"script": [
|
|
975
|
+
"echo -e "\\e[0Ksection_start:$(date +%s):injectvars[collapsed=true]\\r\\e[0KInjecting variables"",
|
|
976
|
+
"export APP_DIR="api"",
|
|
977
|
+
"export DOCKER_DIR="."",
|
|
978
|
+
"export DOCKER_REGISTRY="$CI_REGISTRY"",
|
|
979
|
+
"export DOCKER_CACHE_IMAGE="$CI_REGISTRY_IMAGE/caches/api"",
|
|
980
|
+
"export DOCKER_IMAGE_NAME="review/api"",
|
|
981
|
+
"export DOCKER_IMAGE="$CI_REGISTRY_IMAGE/$DOCKER_IMAGE_NAME"",
|
|
982
|
+
"export DOCKER_IMAGE_TAG="$CI_COMMIT_SHA"",
|
|
983
|
+
"export DOCKER_COPY_AND_INSTALL_APP="COPY --chown=node:node $APP_DIR .
|
|
984
|
+
RUN yarn plugin import workspace-tools
|
|
985
|
+
RUN yarn workspaces focus --production && yarn rebuild"",
|
|
986
|
+
"export DOCKER_COPY_WORKSPACE_FILES="COPY --chown=node:node api/package.json /app/api/package.json
|
|
987
|
+
COPY --chown=node:node api/yarn.lock /app/api/yarn.lock
|
|
988
|
+
COPY --chown=node:node .yarnrc.yml /app/.yarnrc.yml
|
|
989
|
+
COPY --chown=node:node .yarn /app/.yarn"",
|
|
990
|
+
"echo -e "\\e[0Ksection_end:$(date +%s):injectvars\\r\\e[0K"",
|
|
1057
991
|
"ensureNodeDockerfile",
|
|
1058
992
|
"echo -e "\\e[0Ksection_start:$(date +%s):docker-login[collapsed=true]\\r\\e[0KDocker Login"",
|
|
1059
993
|
"docker login --username gitlab-ci-token --password $CI_JOB_TOKEN $CI_REGISTRY",
|
|
@@ -1077,25 +1011,9 @@ mongodb:
|
|
|
1077
1011
|
],
|
|
1078
1012
|
"stage": "build",
|
|
1079
1013
|
"variables": {
|
|
1080
|
-
"APP_DIR": "api",
|
|
1081
|
-
"DOCKERFILE_ADDITIONS": undefined,
|
|
1082
|
-
"DOCKERFILE_ADDITIONS_END": undefined,
|
|
1083
1014
|
"DOCKER_BUILDKIT": "1",
|
|
1084
|
-
"DOCKER_CACHE_IMAGE": "$CI_REGISTRY_IMAGE/caches/api",
|
|
1085
|
-
"DOCKER_COPY_AND_INSTALL_APP": "COPY --chown=node:node $APP_DIR .
|
|
1086
|
-
RUN yarn plugin import workspace-tools
|
|
1087
|
-
RUN yarn workspaces focus --production && yarn rebuild",
|
|
1088
|
-
"DOCKER_COPY_WORKSPACE_FILES": "COPY --chown=node:node api/package.json /app/api/package.json
|
|
1089
|
-
COPY --chown=node:node api/yarn.lock /app/api/yarn.lock
|
|
1090
|
-
COPY --chown=node:node .yarnrc.yml /app/.yarnrc.yml
|
|
1091
|
-
COPY --chown=node:node .yarn /app/.yarn",
|
|
1092
|
-
"DOCKER_DIR": ".",
|
|
1093
1015
|
"DOCKER_DRIVER": "overlay2",
|
|
1094
1016
|
"DOCKER_HOST": "tcp://0.0.0.0:2375",
|
|
1095
|
-
"DOCKER_IMAGE": "$CI_REGISTRY_IMAGE/$DOCKER_IMAGE_NAME",
|
|
1096
|
-
"DOCKER_IMAGE_NAME": "review/api",
|
|
1097
|
-
"DOCKER_IMAGE_TAG": "$CI_COMMIT_SHA",
|
|
1098
|
-
"DOCKER_REGISTRY": "$CI_REGISTRY",
|
|
1099
1017
|
"DOCKER_TLS_CERTDIR": "",
|
|
1100
1018
|
"KUBERNETES_CPU_REQUEST": "0.5",
|
|
1101
1019
|
"KUBERNETES_MEMORY_LIMIT": "2Gi",
|
|
@@ -1104,11 +1022,16 @@ COPY --chown=node:node .yarn /app/.yarn",
|
|
|
1104
1022
|
},
|
|
1105
1023
|
"api ๐ Deploy | review ": {
|
|
1106
1024
|
"allow_failure": false,
|
|
1025
|
+
"artifacts": {
|
|
1026
|
+
"reports": {
|
|
1027
|
+
"dotenv": "gitlab_environment.env",
|
|
1028
|
+
},
|
|
1029
|
+
},
|
|
1107
1030
|
"environment": {
|
|
1108
1031
|
"auto_stop_in": "1 week",
|
|
1109
|
-
"name": "review/
|
|
1032
|
+
"name": "review/$CI_COMMIT_REF_NAME/api",
|
|
1110
1033
|
"on_stop": "api ๐ Stop โ ๏ธ | review ",
|
|
1111
|
-
"url": "
|
|
1034
|
+
"url": "$CL_GITLAB_ENVIRONMENT_URL",
|
|
1112
1035
|
},
|
|
1113
1036
|
"image": "path/to/docker/kubernetes:the-version",
|
|
1114
1037
|
"interruptible": true,
|
|
@@ -1151,113 +1074,164 @@ COPY --chown=node:node .yarn /app/.yarn",
|
|
|
1151
1074
|
},
|
|
1152
1075
|
],
|
|
1153
1076
|
"script": [
|
|
1154
|
-
"
|
|
1155
|
-
"
|
|
1156
|
-
"
|
|
1157
|
-
"
|
|
1158
|
-
"
|
|
1159
|
-
"
|
|
1160
|
-
"
|
|
1161
|
-
"
|
|
1162
|
-
"echo
|
|
1163
|
-
|
|
1164
|
-
|
|
1165
|
-
|
|
1166
|
-
"
|
|
1167
|
-
"
|
|
1168
|
-
"
|
|
1169
|
-
"
|
|
1170
|
-
"
|
|
1171
|
-
"
|
|
1172
|
-
"
|
|
1173
|
-
"
|
|
1174
|
-
"DOCKER_IMAGE_NAME"
|
|
1175
|
-
"
|
|
1176
|
-
"
|
|
1177
|
-
"
|
|
1178
|
-
"
|
|
1179
|
-
"
|
|
1180
|
-
"
|
|
1181
|
-
"
|
|
1182
|
-
"
|
|
1183
|
-
"
|
|
1184
|
-
"
|
|
1185
|
-
"
|
|
1186
|
-
"
|
|
1187
|
-
"
|
|
1188
|
-
"
|
|
1189
|
-
"
|
|
1190
|
-
"
|
|
1191
|
-
|
|
1192
|
-
"KUBE_VALUES": "env:
|
|
1077
|
+
"echo -e "\\e[0Ksection_start:$(date +%s):injectvars[collapsed=true]\\r\\e[0KInjecting variables"",
|
|
1078
|
+
"export ENV_SHORT="review"",
|
|
1079
|
+
"export APP_DIR="api"",
|
|
1080
|
+
"export ENV_TYPE="review"",
|
|
1081
|
+
"export BUILD_INFO_BUILD_ID="$(git describe --tags 2>/dev/null || git rev-parse HEAD)"",
|
|
1082
|
+
"export BUILD_INFO_BUILD_TIME="$CI_JOB_STARTED_AT"",
|
|
1083
|
+
"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")"",
|
|
1084
|
+
"export HOST="api.$([ -n "$CI_MERGE_REQUEST_IID" ] && echo "mr$CI_MERGE_REQUEST_IID" || { [ -n "$CI_COMMIT_REF_SLUG" ] && echo "$CI_COMMIT_REF_SLUG" || echo "unknown"; }).review.test-app.pan.panter.cloud"",
|
|
1085
|
+
"export ROOT_URL="https://api.$([ -n "$CI_MERGE_REQUEST_IID" ] && echo "mr$CI_MERGE_REQUEST_IID" || { [ -n "$CI_COMMIT_REF_SLUG" ] && echo "$CI_COMMIT_REF_SLUG" || echo "unknown"; }).review.test-app.pan.panter.cloud"",
|
|
1086
|
+
"export HOST_INTERNAL="api.$([ -n "$CI_MERGE_REQUEST_IID" ] && echo "mr$CI_MERGE_REQUEST_IID" || { [ -n "$CI_COMMIT_REF_SLUG" ] && echo "$CI_COMMIT_REF_SLUG" || echo "unknown"; }).review.test-app.pan.panter.cloud"",
|
|
1087
|
+
"export HOST_CANONICAL="api.$([ -n "$CI_MERGE_REQUEST_IID" ] && echo "mr$CI_MERGE_REQUEST_IID" || { [ -n "$CI_COMMIT_REF_SLUG" ] && echo "$CI_COMMIT_REF_SLUG" || echo "unknown"; }).review.test-app.pan.panter.cloud"",
|
|
1088
|
+
"export ROOT_URL_INTERNAL="https://api.$([ -n "$CI_MERGE_REQUEST_IID" ] && echo "mr$CI_MERGE_REQUEST_IID" || { [ -n "$CI_COMMIT_REF_SLUG" ] && echo "$CI_COMMIT_REF_SLUG" || echo "unknown"; }).review.test-app.pan.panter.cloud"",
|
|
1089
|
+
"export KUBE_NAMESPACE="pan-test-app-review"",
|
|
1090
|
+
"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"; })-api"",
|
|
1091
|
+
"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"; })-"",
|
|
1092
|
+
"export MONGODB_ROOT_PASSWORD="$CL_review_api_MONGODB_ROOT_PASSWORD"",
|
|
1093
|
+
"export MONGODB_REPLICASET_KEY="$CL_review_api_MONGODB_REPLICASET_KEY"",
|
|
1094
|
+
"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\\"]"",
|
|
1095
|
+
"export DOCKER_REGISTRY="$CI_REGISTRY"",
|
|
1096
|
+
"export DOCKER_CACHE_IMAGE="$CI_REGISTRY_IMAGE/caches/api"",
|
|
1097
|
+
"export DOCKER_IMAGE_NAME="review/api"",
|
|
1098
|
+
"export DOCKER_IMAGE="$CI_REGISTRY_IMAGE/$DOCKER_IMAGE_NAME"",
|
|
1099
|
+
"export DOCKER_IMAGE_TAG="$CI_COMMIT_SHA"",
|
|
1100
|
+
"export RELEASE_NAME="pan-test-app-review-$([ -n "$CI_MERGE_REQUEST_IID" ] && echo "mr$CI_MERGE_REQUEST_IID" || { [ -n "$CI_COMMIT_REF_SLUG" ] && echo "$CI_COMMIT_REF_SLUG" || echo "unknown"; })-api"",
|
|
1101
|
+
"export HELM_EXPERIMENTAL_OCI="1"",
|
|
1102
|
+
"export KUBE_DOCKER_IMAGE_PULL_SECRET="gitlab-registry-api"",
|
|
1103
|
+
"export HELM_GITLAB_CHART_NAME="/helm-charts/the-panter-chart"",
|
|
1104
|
+
"export HELM_ARGS=""",
|
|
1105
|
+
"export COMPONENT_NAME="api"",
|
|
1106
|
+
"export BUILD_ID="$(git describe --tags 2>/dev/null || git rev-parse HEAD)"",
|
|
1107
|
+
"echo -e "\\e[0Ksection_end:$(date +%s):injectvars\\r\\e[0K"",
|
|
1108
|
+
"kubectl config set-cluster "kube-pan-test-app-review-$([ -n "$CI_MERGE_REQUEST_IID" ] && echo "mr$CI_MERGE_REQUEST_IID" || { [ -n "$CI_COMMIT_REF_SLUG" ] && echo "$CI_COMMIT_REF_SLUG" || echo "unknown"; })-api" --server="$CL_review_api_KUBE_URL" --certificate-authority <(echo $CL_review_api_KUBE_CA_PEM | base64 -d) --embed-certs=true",
|
|
1109
|
+
"kubectl config set-credentials "kube-pan-test-app-review-$([ -n "$CI_MERGE_REQUEST_IID" ] && echo "mr$CI_MERGE_REQUEST_IID" || { [ -n "$CI_COMMIT_REF_SLUG" ] && echo "$CI_COMMIT_REF_SLUG" || echo "unknown"; })-api" --token="$CL_review_api_KUBE_TOKEN"",
|
|
1110
|
+
"kubectl config set-context "kube-pan-test-app-review-$([ -n "$CI_MERGE_REQUEST_IID" ] && echo "mr$CI_MERGE_REQUEST_IID" || { [ -n "$CI_COMMIT_REF_SLUG" ] && echo "$CI_COMMIT_REF_SLUG" || echo "unknown"; })-api" --cluster="kube-pan-test-app-review-$([ -n "$CI_MERGE_REQUEST_IID" ] && echo "mr$CI_MERGE_REQUEST_IID" || { [ -n "$CI_COMMIT_REF_SLUG" ] && echo "$CI_COMMIT_REF_SLUG" || echo "unknown"; })-api" --user="kube-pan-test-app-review-$([ -n "$CI_MERGE_REQUEST_IID" ] && echo "mr$CI_MERGE_REQUEST_IID" || { [ -n "$CI_COMMIT_REF_SLUG" ] && echo "$CI_COMMIT_REF_SLUG" || echo "unknown"; })-api" --namespace="pan-test-app-review"",
|
|
1111
|
+
"kubectl config use-context "kube-pan-test-app-review-$([ -n "$CI_MERGE_REQUEST_IID" ] && echo "mr$CI_MERGE_REQUEST_IID" || { [ -n "$CI_COMMIT_REF_SLUG" ] && echo "$CI_COMMIT_REF_SLUG" || echo "unknown"; })-api"",
|
|
1112
|
+
"echo -e "\\e[0Ksection_start:$(date +%s):writeallvalues[collapsed=true]\\r\\e[0KWrite __all_values.yml for helm deployment"",
|
|
1113
|
+
"cat > __all_values.yml <<EOF
|
|
1114
|
+
env:
|
|
1193
1115
|
secret:
|
|
1194
|
-
MONGODB_ROOT_PASSWORD:
|
|
1195
|
-
|
|
1196
|
-
|
|
1197
|
-
|
|
1116
|
+
MONGODB_ROOT_PASSWORD: |-
|
|
1117
|
+
$(printf %s "$CL_review_api_MONGODB_ROOT_PASSWORD" | sed 's/^/ /')
|
|
1118
|
+
MONGODB_REPLICASET_KEY: |-
|
|
1119
|
+
$(printf %s "$CL_review_api_MONGODB_REPLICASET_KEY" | sed 's/^/ /')
|
|
1120
|
+
MONGO_URL: |-
|
|
1121
|
+
mongodb://root:$CL_review_api_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"; })-api-mongodb-0.$([ -n "$CI_MERGE_REQUEST_IID" ] && echo "mr$CI_MERGE_REQUEST_IID" || { [ -n "$CI_COMMIT_REF_SLUG" ] && echo "$CI_COMMIT_REF_SLUG" || echo "unknown"; })-api-mongodb-headless.pan-test-app-review.svc.cluster.local:27017,$([ -n "$CI_MERGE_REQUEST_IID" ] && echo "mr$CI_MERGE_REQUEST_IID" || { [ -n "$CI_COMMIT_REF_SLUG" ] && echo "$CI_COMMIT_REF_SLUG" || echo "unknown"; })-api-mongodb-1.$([ -n "$CI_MERGE_REQUEST_IID" ] && echo "mr$CI_MERGE_REQUEST_IID" || { [ -n "$CI_COMMIT_REF_SLUG" ] && echo "$CI_COMMIT_REF_SLUG" || echo "unknown"; })-api-mongodb-headless.pan-test-app-review.svc.cluster.local:27017/app?replicaSet=rs0&authSource=admin
|
|
1122
|
+
MONGO_OPLOG_URL: |-
|
|
1123
|
+
mongodb://root:$CL_review_api_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"; })-api-mongodb-0.$([ -n "$CI_MERGE_REQUEST_IID" ] && echo "mr$CI_MERGE_REQUEST_IID" || { [ -n "$CI_COMMIT_REF_SLUG" ] && echo "$CI_COMMIT_REF_SLUG" || echo "unknown"; })-api-mongodb-headless.pan-test-app-review.svc.cluster.local:27017,$([ -n "$CI_MERGE_REQUEST_IID" ] && echo "mr$CI_MERGE_REQUEST_IID" || { [ -n "$CI_COMMIT_REF_SLUG" ] && echo "$CI_COMMIT_REF_SLUG" || echo "unknown"; })-api-mongodb-1.$([ -n "$CI_MERGE_REQUEST_IID" ] && echo "mr$CI_MERGE_REQUEST_IID" || { [ -n "$CI_COMMIT_REF_SLUG" ] && echo "$CI_COMMIT_REF_SLUG" || echo "unknown"; })-api-mongodb-headless.pan-test-app-review.svc.cluster.local:27017/local?replicaSet=rs0&authSource=admin
|
|
1198
1124
|
public:
|
|
1199
|
-
ENV_SHORT:
|
|
1200
|
-
|
|
1201
|
-
|
|
1202
|
-
|
|
1203
|
-
|
|
1204
|
-
|
|
1205
|
-
|
|
1206
|
-
|
|
1207
|
-
|
|
1208
|
-
|
|
1209
|
-
|
|
1210
|
-
|
|
1211
|
-
|
|
1212
|
-
|
|
1213
|
-
|
|
1125
|
+
ENV_SHORT: |-
|
|
1126
|
+
review
|
|
1127
|
+
APP_DIR: |-
|
|
1128
|
+
api
|
|
1129
|
+
ENV_TYPE: |-
|
|
1130
|
+
review
|
|
1131
|
+
BUILD_INFO_BUILD_ID: |-
|
|
1132
|
+
$(printf %s "$(git describe --tags 2>/dev/null || git rev-parse HEAD)" | sed 's/^/ /')
|
|
1133
|
+
BUILD_INFO_BUILD_TIME: |-
|
|
1134
|
+
$(printf %s "$CI_JOB_STARTED_AT" | sed 's/^/ /')
|
|
1135
|
+
BUILD_INFO_CURRENT_VERSION: |-
|
|
1136
|
+
$(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/^/ /')
|
|
1137
|
+
HOST: |-
|
|
1138
|
+
$(printf %s "api.$([ -n "$CI_MERGE_REQUEST_IID" ] && echo "mr$CI_MERGE_REQUEST_IID" || { [ -n "$CI_COMMIT_REF_SLUG" ] && echo "$CI_COMMIT_REF_SLUG" || echo "unknown"; }).review.test-app.pan.panter.cloud" | sed 's/^/ /')
|
|
1139
|
+
ROOT_URL: |-
|
|
1140
|
+
$(printf %s "https://api.$([ -n "$CI_MERGE_REQUEST_IID" ] && echo "mr$CI_MERGE_REQUEST_IID" || { [ -n "$CI_COMMIT_REF_SLUG" ] && echo "$CI_COMMIT_REF_SLUG" || echo "unknown"; }).review.test-app.pan.panter.cloud" | sed 's/^/ /')
|
|
1141
|
+
HOST_INTERNAL: |-
|
|
1142
|
+
$(printf %s "api.$([ -n "$CI_MERGE_REQUEST_IID" ] && echo "mr$CI_MERGE_REQUEST_IID" || { [ -n "$CI_COMMIT_REF_SLUG" ] && echo "$CI_COMMIT_REF_SLUG" || echo "unknown"; }).review.test-app.pan.panter.cloud" | sed 's/^/ /')
|
|
1143
|
+
HOST_CANONICAL: |-
|
|
1144
|
+
$(printf %s "api.$([ -n "$CI_MERGE_REQUEST_IID" ] && echo "mr$CI_MERGE_REQUEST_IID" || { [ -n "$CI_COMMIT_REF_SLUG" ] && echo "$CI_COMMIT_REF_SLUG" || echo "unknown"; }).review.test-app.pan.panter.cloud" | sed 's/^/ /')
|
|
1145
|
+
ROOT_URL_INTERNAL: |-
|
|
1146
|
+
$(printf %s "https://api.$([ -n "$CI_MERGE_REQUEST_IID" ] && echo "mr$CI_MERGE_REQUEST_IID" || { [ -n "$CI_COMMIT_REF_SLUG" ] && echo "$CI_COMMIT_REF_SLUG" || echo "unknown"; }).review.test-app.pan.panter.cloud" | sed 's/^/ /')
|
|
1147
|
+
KUBE_NAMESPACE: |-
|
|
1148
|
+
pan-test-app-review
|
|
1149
|
+
KUBE_APP_NAME: |-
|
|
1150
|
+
$(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"; })-api" | sed 's/^/ /')
|
|
1151
|
+
KUBE_APP_NAME_PREFIX: |-
|
|
1152
|
+
$(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/^/ /')
|
|
1153
|
+
_ALL_ENV_VAR_KEYS: |-
|
|
1154
|
+
["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"]
|
|
1214
1155
|
application:
|
|
1215
|
-
host:
|
|
1216
|
-
|
|
1156
|
+
host: |-
|
|
1157
|
+
$(printf %s "api.$([ -n "$CI_MERGE_REQUEST_IID" ] && echo "mr$CI_MERGE_REQUEST_IID" || { [ -n "$CI_COMMIT_REF_SLUG" ] && echo "$CI_COMMIT_REF_SLUG" || echo "unknown"; }).review.test-app.pan.panter.cloud" | sed 's/^/ /')
|
|
1158
|
+
command: |-
|
|
1159
|
+
node main.js
|
|
1217
1160
|
livenessProbe:
|
|
1218
1161
|
httpGet:
|
|
1219
|
-
path:
|
|
1162
|
+
path: |-
|
|
1163
|
+
__health
|
|
1220
1164
|
readinessProbe:
|
|
1221
1165
|
httpGet:
|
|
1222
|
-
path:
|
|
1166
|
+
path: |-
|
|
1167
|
+
__health
|
|
1223
1168
|
startupProbe:
|
|
1224
1169
|
httpGet:
|
|
1225
|
-
path:
|
|
1170
|
+
path: |-
|
|
1171
|
+
__health
|
|
1226
1172
|
mongodb:
|
|
1227
1173
|
enabled: true
|
|
1228
1174
|
auth:
|
|
1229
1175
|
enabled: true
|
|
1230
|
-
rootPassword:
|
|
1231
|
-
|
|
1176
|
+
rootPassword: |-
|
|
1177
|
+
$CL_review_api_MONGODB_ROOT_PASSWORD
|
|
1178
|
+
replicaSetKey: |-
|
|
1179
|
+
$CL_review_api_MONGODB_REPLICASET_KEY
|
|
1232
1180
|
persistence:
|
|
1233
|
-
storageClass:
|
|
1181
|
+
storageClass: |-
|
|
1182
|
+
premium-rwo
|
|
1234
1183
|
backup:
|
|
1235
1184
|
enabled: false
|
|
1236
|
-
hostToBackup:
|
|
1237
|
-
|
|
1238
|
-
|
|
1239
|
-
|
|
1240
|
-
|
|
1241
|
-
|
|
1185
|
+
hostToBackup: |-
|
|
1186
|
+
$([ -n "$CI_MERGE_REQUEST_IID" ] && echo "mr$CI_MERGE_REQUEST_IID" || { [ -n "$CI_COMMIT_REF_SLUG" ] && echo "$CI_COMMIT_REF_SLUG" || echo "unknown"; })-api-mongodb-0.$([ -n "$CI_MERGE_REQUEST_IID" ] && echo "mr$CI_MERGE_REQUEST_IID" || { [ -n "$CI_COMMIT_REF_SLUG" ] && echo "$CI_COMMIT_REF_SLUG" || echo "unknown"; })-api-mongodb-headless.pan-test-app-review.svc.cluster.local:27017
|
|
1187
|
+
pvcToBackup: |-
|
|
1188
|
+
datadir-$([ -n "$CI_MERGE_REQUEST_IID" ] && echo "mr$CI_MERGE_REQUEST_IID" || { [ -n "$CI_COMMIT_REF_SLUG" ] && echo "$CI_COMMIT_REF_SLUG" || echo "unknown"; })-api-mongodb-0
|
|
1189
|
+
image: |-
|
|
1190
|
+
mrelite/kubectlmongoshell:v1.0
|
|
1191
|
+
schedule: |-
|
|
1192
|
+
0 4 * * *
|
|
1193
|
+
volumeSnapshotClass: |-
|
|
1194
|
+
snapshotclass
|
|
1195
|
+
architecture: |-
|
|
1196
|
+
replicaset
|
|
1242
1197
|
tolerations:
|
|
1243
|
-
- key:
|
|
1244
|
-
|
|
1245
|
-
|
|
1246
|
-
|
|
1198
|
+
- key: |-
|
|
1199
|
+
mongodb
|
|
1200
|
+
operator: |-
|
|
1201
|
+
Equal
|
|
1202
|
+
value: |-
|
|
1203
|
+
true
|
|
1204
|
+
effect: |-
|
|
1205
|
+
NoSchedule
|
|
1206
|
+
|
|
1207
|
+
EOF
|
|
1247
1208
|
",
|
|
1248
|
-
"
|
|
1249
|
-
"
|
|
1250
|
-
"
|
|
1251
|
-
"
|
|
1252
|
-
"
|
|
1253
|
-
"
|
|
1209
|
+
"echo -e "\\e[0Ksection_end:$(date +%s):writeallvalues\\r\\e[0K"",
|
|
1210
|
+
"kubernetesCreateSecret",
|
|
1211
|
+
"kubernetesDeploy",
|
|
1212
|
+
"echo Uploading SBOM to Dependency Track",
|
|
1213
|
+
"/dtrackuploader https://dep.panter.swiss/ "$DT_KEY_PROD" upload "pan-test-app/api" "https://api.$([ -n "$CI_MERGE_REQUEST_IID" ] && echo "mr$CI_MERGE_REQUEST_IID" || { [ -n "$CI_COMMIT_REF_SLUG" ] && echo "$CI_COMMIT_REF_SLUG" || echo "unknown"; }).review.test-app.pan.panter.cloud" "__sbom.json" vex.json || true",
|
|
1214
|
+
"echo deployment successful ๐ป",
|
|
1215
|
+
"echo "CL_GITLAB_ENVIRONMENT_URL=https://api.$([ -n "$CI_MERGE_REQUEST_IID" ] && echo "mr$CI_MERGE_REQUEST_IID" || { [ -n "$CI_COMMIT_REF_SLUG" ] && echo "$CI_COMMIT_REF_SLUG" || echo "unknown"; }).review.test-app.pan.panter.cloud" >> gitlab_environment.env",
|
|
1216
|
+
],
|
|
1217
|
+
"stage": "deploy review",
|
|
1218
|
+
"variables": {
|
|
1219
|
+
"KUBERNETES_CPU_REQUEST": "0.5",
|
|
1220
|
+
"KUBERNETES_MEMORY_LIMIT": "400Mi",
|
|
1221
|
+
"KUBERNETES_MEMORY_REQUEST": "200Mi",
|
|
1254
1222
|
},
|
|
1255
1223
|
},
|
|
1256
1224
|
"api ๐ Stop โ ๏ธ | review ": {
|
|
1225
|
+
"allow_failure": true,
|
|
1226
|
+
"artifacts": {
|
|
1227
|
+
"reports": {
|
|
1228
|
+
"dotenv": "gitlab_environment.env",
|
|
1229
|
+
},
|
|
1230
|
+
},
|
|
1257
1231
|
"environment": {
|
|
1258
1232
|
"action": "stop",
|
|
1259
|
-
"name": "review/
|
|
1260
|
-
"url": "
|
|
1233
|
+
"name": "review/$CI_COMMIT_REF_NAME/api",
|
|
1234
|
+
"url": "$CL_GITLAB_ENVIRONMENT_URL",
|
|
1261
1235
|
},
|
|
1262
1236
|
"image": "path/to/docker/kubernetes:the-version",
|
|
1263
1237
|
"interruptible": true,
|
|
@@ -1271,110 +1245,55 @@ mongodb:
|
|
|
1271
1245
|
},
|
|
1272
1246
|
"rules": [
|
|
1273
1247
|
{
|
|
1274
|
-
"allow_failure": true,
|
|
1275
1248
|
"if": "$CI_COMMIT_BRANCH =~ /^[0-9]+\\.([0-9]+|x)\\.x$/",
|
|
1276
1249
|
"when": "on_success",
|
|
1277
1250
|
},
|
|
1278
1251
|
{
|
|
1279
|
-
"allow_failure": true,
|
|
1280
1252
|
"when": "manual",
|
|
1281
1253
|
},
|
|
1282
1254
|
],
|
|
1283
1255
|
"script": [
|
|
1284
|
-
"
|
|
1285
|
-
"
|
|
1286
|
-
"
|
|
1287
|
-
"
|
|
1256
|
+
"echo -e "\\e[0Ksection_start:$(date +%s):injectvars[collapsed=true]\\r\\e[0KInjecting variables"",
|
|
1257
|
+
"export ENV_SHORT="review"",
|
|
1258
|
+
"export APP_DIR="api"",
|
|
1259
|
+
"export ENV_TYPE="review"",
|
|
1260
|
+
"export BUILD_INFO_BUILD_ID="$(git describe --tags 2>/dev/null || git rev-parse HEAD)"",
|
|
1261
|
+
"export BUILD_INFO_BUILD_TIME="$CI_JOB_STARTED_AT"",
|
|
1262
|
+
"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")"",
|
|
1263
|
+
"export HOST="api.$([ -n "$CI_MERGE_REQUEST_IID" ] && echo "mr$CI_MERGE_REQUEST_IID" || { [ -n "$CI_COMMIT_REF_SLUG" ] && echo "$CI_COMMIT_REF_SLUG" || echo "unknown"; }).review.test-app.pan.panter.cloud"",
|
|
1264
|
+
"export ROOT_URL="https://api.$([ -n "$CI_MERGE_REQUEST_IID" ] && echo "mr$CI_MERGE_REQUEST_IID" || { [ -n "$CI_COMMIT_REF_SLUG" ] && echo "$CI_COMMIT_REF_SLUG" || echo "unknown"; }).review.test-app.pan.panter.cloud"",
|
|
1265
|
+
"export HOST_INTERNAL="api.$([ -n "$CI_MERGE_REQUEST_IID" ] && echo "mr$CI_MERGE_REQUEST_IID" || { [ -n "$CI_COMMIT_REF_SLUG" ] && echo "$CI_COMMIT_REF_SLUG" || echo "unknown"; }).review.test-app.pan.panter.cloud"",
|
|
1266
|
+
"export HOST_CANONICAL="api.$([ -n "$CI_MERGE_REQUEST_IID" ] && echo "mr$CI_MERGE_REQUEST_IID" || { [ -n "$CI_COMMIT_REF_SLUG" ] && echo "$CI_COMMIT_REF_SLUG" || echo "unknown"; }).review.test-app.pan.panter.cloud"",
|
|
1267
|
+
"export ROOT_URL_INTERNAL="https://api.$([ -n "$CI_MERGE_REQUEST_IID" ] && echo "mr$CI_MERGE_REQUEST_IID" || { [ -n "$CI_COMMIT_REF_SLUG" ] && echo "$CI_COMMIT_REF_SLUG" || echo "unknown"; }).review.test-app.pan.panter.cloud"",
|
|
1268
|
+
"export KUBE_NAMESPACE="pan-test-app-review"",
|
|
1269
|
+
"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"; })-api"",
|
|
1270
|
+
"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"; })-"",
|
|
1271
|
+
"export MONGODB_ROOT_PASSWORD="$CL_review_api_MONGODB_ROOT_PASSWORD"",
|
|
1272
|
+
"export MONGODB_REPLICASET_KEY="$CL_review_api_MONGODB_REPLICASET_KEY"",
|
|
1273
|
+
"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\\"]"",
|
|
1274
|
+
"export RELEASE_NAME="pan-test-app-review-$([ -n "$CI_MERGE_REQUEST_IID" ] && echo "mr$CI_MERGE_REQUEST_IID" || { [ -n "$CI_COMMIT_REF_SLUG" ] && echo "$CI_COMMIT_REF_SLUG" || echo "unknown"; })-api"",
|
|
1275
|
+
"export HELM_EXPERIMENTAL_OCI="1"",
|
|
1276
|
+
"export KUBE_DOCKER_IMAGE_PULL_SECRET="gitlab-registry-api"",
|
|
1277
|
+
"export HELM_GITLAB_CHART_NAME="/helm-charts/the-panter-chart"",
|
|
1278
|
+
"export HELM_ARGS=""",
|
|
1279
|
+
"export COMPONENT_NAME="api"",
|
|
1280
|
+
"export BUILD_ID="$(git describe --tags 2>/dev/null || git rev-parse HEAD)"",
|
|
1281
|
+
"echo -e "\\e[0Ksection_end:$(date +%s):injectvars\\r\\e[0K"",
|
|
1282
|
+
"kubectl config set-cluster "kube-pan-test-app-review-$([ -n "$CI_MERGE_REQUEST_IID" ] && echo "mr$CI_MERGE_REQUEST_IID" || { [ -n "$CI_COMMIT_REF_SLUG" ] && echo "$CI_COMMIT_REF_SLUG" || echo "unknown"; })-api" --server="$CL_review_api_KUBE_URL" --certificate-authority <(echo $CL_review_api_KUBE_CA_PEM | base64 -d) --embed-certs=true",
|
|
1283
|
+
"kubectl config set-credentials "kube-pan-test-app-review-$([ -n "$CI_MERGE_REQUEST_IID" ] && echo "mr$CI_MERGE_REQUEST_IID" || { [ -n "$CI_COMMIT_REF_SLUG" ] && echo "$CI_COMMIT_REF_SLUG" || echo "unknown"; })-api" --token="$CL_review_api_KUBE_TOKEN"",
|
|
1284
|
+
"kubectl config set-context "kube-pan-test-app-review-$([ -n "$CI_MERGE_REQUEST_IID" ] && echo "mr$CI_MERGE_REQUEST_IID" || { [ -n "$CI_COMMIT_REF_SLUG" ] && echo "$CI_COMMIT_REF_SLUG" || echo "unknown"; })-api" --cluster="kube-pan-test-app-review-$([ -n "$CI_MERGE_REQUEST_IID" ] && echo "mr$CI_MERGE_REQUEST_IID" || { [ -n "$CI_COMMIT_REF_SLUG" ] && echo "$CI_COMMIT_REF_SLUG" || echo "unknown"; })-api" --user="kube-pan-test-app-review-$([ -n "$CI_MERGE_REQUEST_IID" ] && echo "mr$CI_MERGE_REQUEST_IID" || { [ -n "$CI_COMMIT_REF_SLUG" ] && echo "$CI_COMMIT_REF_SLUG" || echo "unknown"; })-api" --namespace="pan-test-app-review"",
|
|
1285
|
+
"kubectl config use-context "kube-pan-test-app-review-$([ -n "$CI_MERGE_REQUEST_IID" ] && echo "mr$CI_MERGE_REQUEST_IID" || { [ -n "$CI_COMMIT_REF_SLUG" ] && echo "$CI_COMMIT_REF_SLUG" || echo "unknown"; })-api"",
|
|
1288
1286
|
"kubernetesDelete",
|
|
1289
1287
|
"echo Disabling component in Dependency Track",
|
|
1290
|
-
"/dtrackuploader https://dep.panter.swiss/ "$DT_KEY_PROD" disable "pan-test-app/api" "https://api.
|
|
1288
|
+
"/dtrackuploader https://dep.panter.swiss/ "$DT_KEY_PROD" disable "pan-test-app/api" "https://api.$([ -n "$CI_MERGE_REQUEST_IID" ] && echo "mr$CI_MERGE_REQUEST_IID" || { [ -n "$CI_COMMIT_REF_SLUG" ] && echo "$CI_COMMIT_REF_SLUG" || echo "unknown"; }).review.test-app.pan.panter.cloud" || true",
|
|
1289
|
+
"echo "CL_GITLAB_ENVIRONMENT_URL=https://api.$([ -n "$CI_MERGE_REQUEST_IID" ] && echo "mr$CI_MERGE_REQUEST_IID" || { [ -n "$CI_COMMIT_REF_SLUG" ] && echo "$CI_COMMIT_REF_SLUG" || echo "unknown"; }).review.test-app.pan.panter.cloud" >> gitlab_environment.env",
|
|
1291
1290
|
],
|
|
1292
1291
|
"stage": "stop review",
|
|
1293
1292
|
"variables": {
|
|
1294
|
-
"APP_DIR": "api",
|
|
1295
|
-
"BUILD_ID": "some-id",
|
|
1296
|
-
"BUILD_INFO_BUILD_TIME": "01-01-2023 12:13:14",
|
|
1297
|
-
"BUILD_INFO_CURRENT_VERSION": "3.2.1",
|
|
1298
|
-
"BUILD_INFO_ID": "some-id",
|
|
1299
|
-
"COMPONENT_NAME": "api",
|
|
1300
|
-
"ENV_SHORT": "review",
|
|
1301
|
-
"ENV_TYPE": "review",
|
|
1302
1293
|
"GIT_STRATEGY": "none",
|
|
1303
|
-
"HELM_ARGS": "",
|
|
1304
|
-
"HELM_EXPERIMENTAL_OCI": "1",
|
|
1305
|
-
"HELM_GITLAB_CHART_NAME": "/helm-charts/the-panter-chart",
|
|
1306
|
-
"HOST": "api.mr1234.review.test-app.pan.panter.cloud",
|
|
1307
|
-
"HOST_CANONICAL": "api.mr1234.review.test-app.pan.panter.cloud",
|
|
1308
|
-
"HOST_INTERNAL": "api.mr1234.review.test-app.pan.panter.cloud",
|
|
1309
1294
|
"KUBERNETES_CPU_REQUEST": "0.5",
|
|
1310
1295
|
"KUBERNETES_MEMORY_LIMIT": "400Mi",
|
|
1311
1296
|
"KUBERNETES_MEMORY_REQUEST": "200Mi",
|
|
1312
|
-
"KUBE_APP_NAME": "mr1234-api",
|
|
1313
|
-
"KUBE_APP_NAME_PREFIX": "mr1234-",
|
|
1314
|
-
"KUBE_DOCKER_IMAGE_PULL_SECRET": "gitlab-registry-api",
|
|
1315
|
-
"KUBE_NAMESPACE": "pan-test-app-review",
|
|
1316
|
-
"KUBE_VALUES": "env:
|
|
1317
|
-
secret:
|
|
1318
|
-
MONGODB_ROOT_PASSWORD: '$CL_review_api_MONGODB_ROOT_PASSWORD'
|
|
1319
|
-
MONGODB_REPLICASET_KEY: '$CL_review_api_MONGODB_REPLICASET_KEY'
|
|
1320
|
-
MONGO_URL: 'mongodb://root:$CL_review_api_MONGODB_ROOT_PASSWORD@mr1234-api-mongodb-0.mr1234-api-mongodb-headless.pan-test-app-review.svc.cluster.local:27017,mr1234-api-mongodb-1.mr1234-api-mongodb-headless.pan-test-app-review.svc.cluster.local:27017/app?replicaSet=rs0&authSource=admin'
|
|
1321
|
-
MONGO_OPLOG_URL: 'mongodb://root:$CL_review_api_MONGODB_ROOT_PASSWORD@mr1234-api-mongodb-0.mr1234-api-mongodb-headless.pan-test-app-review.svc.cluster.local:27017,mr1234-api-mongodb-1.mr1234-api-mongodb-headless.pan-test-app-review.svc.cluster.local:27017/local?replicaSet=rs0&authSource=admin'
|
|
1322
|
-
public:
|
|
1323
|
-
ENV_SHORT: 'review'
|
|
1324
|
-
APP_DIR: 'api'
|
|
1325
|
-
ENV_TYPE: 'review'
|
|
1326
|
-
BUILD_INFO_ID: 'some-id'
|
|
1327
|
-
BUILD_INFO_BUILD_TIME: '01-01-2023 12:13:14'
|
|
1328
|
-
BUILD_INFO_CURRENT_VERSION: '3.2.1'
|
|
1329
|
-
HOST: 'api.mr1234.review.test-app.pan.panter.cloud'
|
|
1330
|
-
ROOT_URL: 'https://api.mr1234.review.test-app.pan.panter.cloud'
|
|
1331
|
-
HOST_CANONICAL: 'api.mr1234.review.test-app.pan.panter.cloud'
|
|
1332
|
-
ROOT_URL_INTERNAL: 'https://api.mr1234.review.test-app.pan.panter.cloud'
|
|
1333
|
-
KUBE_NAMESPACE: 'pan-test-app-review'
|
|
1334
|
-
KUBE_APP_NAME: 'mr1234-api'
|
|
1335
|
-
KUBE_APP_NAME_PREFIX: 'mr1234-'
|
|
1336
|
-
HOST_INTERNAL: 'api.mr1234.review.test-app.pan.panter.cloud'
|
|
1337
|
-
_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"]'
|
|
1338
|
-
application:
|
|
1339
|
-
host: 'api.mr1234.review.test-app.pan.panter.cloud'
|
|
1340
|
-
command: 'node main.js'
|
|
1341
|
-
livenessProbe:
|
|
1342
|
-
httpGet:
|
|
1343
|
-
path: '__health'
|
|
1344
|
-
readinessProbe:
|
|
1345
|
-
httpGet:
|
|
1346
|
-
path: '__health'
|
|
1347
|
-
startupProbe:
|
|
1348
|
-
httpGet:
|
|
1349
|
-
path: '__health'
|
|
1350
|
-
mongodb:
|
|
1351
|
-
enabled: true
|
|
1352
|
-
auth:
|
|
1353
|
-
enabled: true
|
|
1354
|
-
rootPassword: '$CL_review_api_MONGODB_ROOT_PASSWORD'
|
|
1355
|
-
replicaSetKey: '$CL_review_api_MONGODB_REPLICASET_KEY'
|
|
1356
|
-
persistence:
|
|
1357
|
-
storageClass: 'premium-rwo'
|
|
1358
|
-
backup:
|
|
1359
|
-
enabled: false
|
|
1360
|
-
hostToBackup: 'mr1234-api-mongodb-0.mr1234-api-mongodb-headless.pan-test-app-review.svc.cluster.local:27017'
|
|
1361
|
-
pvcToBackup: 'datadir-mr1234-api-mongodb-0'
|
|
1362
|
-
image: 'mrelite/kubectlmongoshell:v1.0'
|
|
1363
|
-
schedule: '0 4 * * *'
|
|
1364
|
-
volumeSnapshotClass: 'snapshotclass'
|
|
1365
|
-
architecture: 'replicaset'
|
|
1366
|
-
tolerations:
|
|
1367
|
-
- key: 'mongodb'
|
|
1368
|
-
operator: 'Equal'
|
|
1369
|
-
value: 'true'
|
|
1370
|
-
effect: 'NoSchedule'
|
|
1371
|
-
",
|
|
1372
|
-
"MONGODB_REPLICASET_KEY": "$CL_review_api_MONGODB_REPLICASET_KEY",
|
|
1373
|
-
"MONGODB_ROOT_PASSWORD": "$CL_review_api_MONGODB_ROOT_PASSWORD",
|
|
1374
|
-
"RELEASE_NAME": "pan-test-app-review-mr1234-api",
|
|
1375
|
-
"ROOT_URL": "https://api.mr1234.review.test-app.pan.panter.cloud",
|
|
1376
|
-
"ROOT_URL_INTERNAL": "https://api.mr1234.review.test-app.pan.panter.cloud",
|
|
1377
|
-
"_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"]",
|
|
1378
1297
|
},
|
|
1379
1298
|
},
|
|
1380
1299
|
"api ๐ก audit": {
|
|
@@ -1390,12 +1309,14 @@ mongodb:
|
|
|
1390
1309
|
],
|
|
1391
1310
|
},
|
|
1392
1311
|
"script": [
|
|
1312
|
+
"echo -e "\\e[0Ksection_start:$(date +%s):injectvars[collapsed=true]\\r\\e[0KInjecting variables"",
|
|
1313
|
+
"export APP_PATH="api"",
|
|
1314
|
+
"echo -e "\\e[0Ksection_end:$(date +%s):injectvars\\r\\e[0K"",
|
|
1393
1315
|
"cd api",
|
|
1394
1316
|
"yarn npm audit --environment production",
|
|
1395
1317
|
],
|
|
1396
1318
|
"stage": "test",
|
|
1397
1319
|
"variables": {
|
|
1398
|
-
"APP_PATH": "api",
|
|
1399
1320
|
"KUBERNETES_CPU_REQUEST": "0.5",
|
|
1400
1321
|
"KUBERNETES_MEMORY_LIMIT": "4Gi",
|
|
1401
1322
|
"KUBERNETES_MEMORY_REQUEST": "2Gi",
|
|
@@ -1429,6 +1350,9 @@ mongodb:
|
|
|
1429
1350
|
],
|
|
1430
1351
|
},
|
|
1431
1352
|
"script": [
|
|
1353
|
+
"echo -e "\\e[0Ksection_start:$(date +%s):injectvars[collapsed=true]\\r\\e[0KInjecting variables"",
|
|
1354
|
+
"export APP_PATH="api"",
|
|
1355
|
+
"echo -e "\\e[0Ksection_end:$(date +%s):injectvars\\r\\e[0K"",
|
|
1432
1356
|
"echo -e "\\e[0Ksection_start:$(date +%s):nodeinstall[collapsed=true]\\r\\e[0KEnsure node version"",
|
|
1433
1357
|
"if [ -f ~/.nvm/nvm.sh ]; then source ~/.nvm/nvm.sh; fi",
|
|
1434
1358
|
"if command -v nvm &> /dev/null && [ -f ./.nvmrc ]; then nvm install; fi",
|
|
@@ -1445,7 +1369,6 @@ mongodb:
|
|
|
1445
1369
|
],
|
|
1446
1370
|
"stage": "test",
|
|
1447
1371
|
"variables": {
|
|
1448
|
-
"APP_PATH": "api",
|
|
1449
1372
|
"KUBERNETES_CPU_REQUEST": "0.5",
|
|
1450
1373
|
"KUBERNETES_MEMORY_LIMIT": "4Gi",
|
|
1451
1374
|
"KUBERNETES_MEMORY_REQUEST": "2Gi",
|
|
@@ -1469,6 +1392,8 @@ mongodb:
|
|
|
1469
1392
|
],
|
|
1470
1393
|
},
|
|
1471
1394
|
"script": [
|
|
1395
|
+
"echo -e "\\e[0Ksection_start:$(date +%s):injectvars[collapsed=true]\\r\\e[0KInjecting variables"",
|
|
1396
|
+
"echo -e "\\e[0Ksection_end:$(date +%s):injectvars\\r\\e[0K"",
|
|
1472
1397
|
"trivy fs --quiet --format cyclonedx --output "__sbom.json" api",
|
|
1473
1398
|
],
|
|
1474
1399
|
"stage": "build",
|
|
@@ -1521,7 +1446,7 @@ mongodb:
|
|
|
1521
1446
|
],
|
|
1522
1447
|
"variables": {
|
|
1523
1448
|
"FF_USE_FASTZIP": "true",
|
|
1524
|
-
"GIT_DEPTH": 1,
|
|
1449
|
+
"GIT_DEPTH": "1",
|
|
1525
1450
|
},
|
|
1526
1451
|
"workflow": {
|
|
1527
1452
|
"rules": [
|
|
@@ -1552,10 +1477,16 @@ mongodb:
|
|
|
1552
1477
|
"image": "path/to/docker/jobs-default:the-version",
|
|
1553
1478
|
"jobs": {
|
|
1554
1479
|
"api โฉ๏ธ Rollback โ ๏ธ | prod ": {
|
|
1480
|
+
"allow_failure": true,
|
|
1481
|
+
"artifacts": {
|
|
1482
|
+
"reports": {
|
|
1483
|
+
"dotenv": "gitlab_environment.env",
|
|
1484
|
+
},
|
|
1485
|
+
},
|
|
1555
1486
|
"environment": {
|
|
1556
1487
|
"action": "access",
|
|
1557
1488
|
"name": "prod/api",
|
|
1558
|
-
"url": "
|
|
1489
|
+
"url": "$CL_GITLAB_ENVIRONMENT_URL",
|
|
1559
1490
|
},
|
|
1560
1491
|
"image": "path/to/docker/kubernetes:the-version",
|
|
1561
1492
|
"interruptible": true,
|
|
@@ -1569,110 +1500,62 @@ mongodb:
|
|
|
1569
1500
|
},
|
|
1570
1501
|
"rules": [
|
|
1571
1502
|
{
|
|
1572
|
-
"allow_failure": true,
|
|
1573
1503
|
"when": "manual",
|
|
1574
1504
|
},
|
|
1575
1505
|
],
|
|
1576
1506
|
"script": [
|
|
1507
|
+
"echo -e "\\e[0Ksection_start:$(date +%s):injectvars[collapsed=true]\\r\\e[0KInjecting variables"",
|
|
1508
|
+
"export ENV_SHORT="prod"",
|
|
1509
|
+
"export APP_DIR="api"",
|
|
1510
|
+
"export ENV_TYPE="prod"",
|
|
1511
|
+
"export BUILD_INFO_BUILD_ID="$(git describe --tags 2>/dev/null || git rev-parse HEAD)"",
|
|
1512
|
+
"export BUILD_INFO_BUILD_TIME="$CI_JOB_STARTED_AT"",
|
|
1513
|
+
"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")"",
|
|
1514
|
+
"export HOST="api.prod.test-app.pan.panter.cloud"",
|
|
1515
|
+
"export ROOT_URL="https://api.prod.test-app.pan.panter.cloud"",
|
|
1516
|
+
"export HOST_INTERNAL="api.prod.test-app.pan.panter.cloud"",
|
|
1517
|
+
"export HOST_CANONICAL="api.prod.test-app.pan.panter.cloud"",
|
|
1518
|
+
"export ROOT_URL_INTERNAL="https://api.prod.test-app.pan.panter.cloud"",
|
|
1519
|
+
"export KUBE_NAMESPACE="pan-test-app-prod"",
|
|
1520
|
+
"export KUBE_APP_NAME="api"",
|
|
1521
|
+
"export KUBE_APP_NAME_PREFIX=""",
|
|
1522
|
+
"export MONGODB_ROOT_PASSWORD="$CL_prod_api_MONGODB_ROOT_PASSWORD"",
|
|
1523
|
+
"export MONGODB_REPLICASET_KEY="$CL_prod_api_MONGODB_REPLICASET_KEY"",
|
|
1524
|
+
"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\\"]"",
|
|
1525
|
+
"export RELEASE_NAME="pan-test-app-prod-api"",
|
|
1526
|
+
"export HELM_EXPERIMENTAL_OCI="1"",
|
|
1527
|
+
"export KUBE_DOCKER_IMAGE_PULL_SECRET="gitlab-registry-api"",
|
|
1528
|
+
"export HELM_GITLAB_CHART_NAME="/helm-charts/the-panter-chart"",
|
|
1529
|
+
"export HELM_ARGS=""",
|
|
1530
|
+
"export COMPONENT_NAME="api"",
|
|
1531
|
+
"export BUILD_ID="$(git describe --tags 2>/dev/null || git rev-parse HEAD)"",
|
|
1532
|
+
"echo -e "\\e[0Ksection_end:$(date +%s):injectvars\\r\\e[0K"",
|
|
1577
1533
|
"kubectl config set-cluster "kube-pan-test-app-prod-api" --server="$CL_prod_api_KUBE_URL" --certificate-authority <(echo $CL_prod_api_KUBE_CA_PEM | base64 -d) --embed-certs=true",
|
|
1578
1534
|
"kubectl config set-credentials "kube-pan-test-app-prod-api" --token="$CL_prod_api_KUBE_TOKEN"",
|
|
1579
1535
|
"kubectl config set-context "kube-pan-test-app-prod-api" --cluster="kube-pan-test-app-prod-api" --user="kube-pan-test-app-prod-api" --namespace="pan-test-app-prod"",
|
|
1580
1536
|
"kubectl config use-context "kube-pan-test-app-prod-api"",
|
|
1581
1537
|
"kubernetesRollback",
|
|
1538
|
+
"echo "CL_GITLAB_ENVIRONMENT_URL=https://api.prod.test-app.pan.panter.cloud" >> gitlab_environment.env",
|
|
1582
1539
|
],
|
|
1583
1540
|
"stage": "rollback prod",
|
|
1584
1541
|
"variables": {
|
|
1585
|
-
"APP_DIR": "api",
|
|
1586
|
-
"BUILD_ID": "some-id",
|
|
1587
|
-
"BUILD_INFO_BUILD_TIME": "01-01-2023 12:13:14",
|
|
1588
|
-
"BUILD_INFO_CURRENT_VERSION": "3.2.1",
|
|
1589
|
-
"BUILD_INFO_ID": "some-id",
|
|
1590
|
-
"COMPONENT_NAME": "api",
|
|
1591
|
-
"ENV_SHORT": "prod",
|
|
1592
|
-
"ENV_TYPE": "prod",
|
|
1593
1542
|
"GIT_STRATEGY": "none",
|
|
1594
|
-
"HELM_ARGS": "",
|
|
1595
|
-
"HELM_EXPERIMENTAL_OCI": "1",
|
|
1596
|
-
"HELM_GITLAB_CHART_NAME": "/helm-charts/the-panter-chart",
|
|
1597
|
-
"HOST": "api.prod.test-app.pan.panter.cloud",
|
|
1598
|
-
"HOST_CANONICAL": "api.prod.test-app.pan.panter.cloud",
|
|
1599
|
-
"HOST_INTERNAL": "api.prod.test-app.pan.panter.cloud",
|
|
1600
1543
|
"KUBERNETES_CPU_REQUEST": "0.5",
|
|
1601
1544
|
"KUBERNETES_MEMORY_LIMIT": "400Mi",
|
|
1602
1545
|
"KUBERNETES_MEMORY_REQUEST": "200Mi",
|
|
1603
|
-
"KUBE_APP_NAME": "api",
|
|
1604
|
-
"KUBE_APP_NAME_PREFIX": "",
|
|
1605
|
-
"KUBE_DOCKER_IMAGE_PULL_SECRET": "gitlab-registry-api",
|
|
1606
|
-
"KUBE_NAMESPACE": "pan-test-app-prod",
|
|
1607
|
-
"KUBE_VALUES": "env:
|
|
1608
|
-
secret:
|
|
1609
|
-
MONGODB_ROOT_PASSWORD: '$CL_prod_api_MONGODB_ROOT_PASSWORD'
|
|
1610
|
-
MONGODB_REPLICASET_KEY: '$CL_prod_api_MONGODB_REPLICASET_KEY'
|
|
1611
|
-
MONGO_URL: 'mongodb://root:$CL_prod_api_MONGODB_ROOT_PASSWORD@api-mongodb-0.api-mongodb-headless.pan-test-app-prod.svc.cluster.local:27017,api-mongodb-1.api-mongodb-headless.pan-test-app-prod.svc.cluster.local:27017/app?replicaSet=rs0&authSource=admin'
|
|
1612
|
-
MONGO_OPLOG_URL: 'mongodb://root:$CL_prod_api_MONGODB_ROOT_PASSWORD@api-mongodb-0.api-mongodb-headless.pan-test-app-prod.svc.cluster.local:27017,api-mongodb-1.api-mongodb-headless.pan-test-app-prod.svc.cluster.local:27017/local?replicaSet=rs0&authSource=admin'
|
|
1613
|
-
public:
|
|
1614
|
-
ENV_SHORT: 'prod'
|
|
1615
|
-
APP_DIR: 'api'
|
|
1616
|
-
ENV_TYPE: 'prod'
|
|
1617
|
-
BUILD_INFO_ID: 'some-id'
|
|
1618
|
-
BUILD_INFO_BUILD_TIME: '01-01-2023 12:13:14'
|
|
1619
|
-
BUILD_INFO_CURRENT_VERSION: '3.2.1'
|
|
1620
|
-
HOST: 'api.prod.test-app.pan.panter.cloud'
|
|
1621
|
-
ROOT_URL: 'https://api.prod.test-app.pan.panter.cloud'
|
|
1622
|
-
HOST_CANONICAL: 'api.prod.test-app.pan.panter.cloud'
|
|
1623
|
-
ROOT_URL_INTERNAL: 'https://api.prod.test-app.pan.panter.cloud'
|
|
1624
|
-
KUBE_NAMESPACE: 'pan-test-app-prod'
|
|
1625
|
-
KUBE_APP_NAME: 'api'
|
|
1626
|
-
KUBE_APP_NAME_PREFIX: ''
|
|
1627
|
-
HOST_INTERNAL: 'api.prod.test-app.pan.panter.cloud'
|
|
1628
|
-
_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"]'
|
|
1629
|
-
application:
|
|
1630
|
-
host: 'api.prod.test-app.pan.panter.cloud'
|
|
1631
|
-
command: 'node main.js'
|
|
1632
|
-
livenessProbe:
|
|
1633
|
-
httpGet:
|
|
1634
|
-
path: '__health'
|
|
1635
|
-
readinessProbe:
|
|
1636
|
-
httpGet:
|
|
1637
|
-
path: '__health'
|
|
1638
|
-
startupProbe:
|
|
1639
|
-
httpGet:
|
|
1640
|
-
path: '__health'
|
|
1641
|
-
mongodb:
|
|
1642
|
-
enabled: true
|
|
1643
|
-
auth:
|
|
1644
|
-
enabled: true
|
|
1645
|
-
rootPassword: '$CL_prod_api_MONGODB_ROOT_PASSWORD'
|
|
1646
|
-
replicaSetKey: '$CL_prod_api_MONGODB_REPLICASET_KEY'
|
|
1647
|
-
persistence:
|
|
1648
|
-
storageClass: 'premium-rwo'
|
|
1649
|
-
backup:
|
|
1650
|
-
enabled: true
|
|
1651
|
-
hostToBackup: 'api-mongodb-0.api-mongodb-headless.pan-test-app-prod.svc.cluster.local:27017'
|
|
1652
|
-
pvcToBackup: 'datadir-api-mongodb-0'
|
|
1653
|
-
image: 'mrelite/kubectlmongoshell:v1.0'
|
|
1654
|
-
schedule: '0 4 * * *'
|
|
1655
|
-
volumeSnapshotClass: 'snapshotclass'
|
|
1656
|
-
architecture: 'replicaset'
|
|
1657
|
-
tolerations:
|
|
1658
|
-
- key: 'mongodb'
|
|
1659
|
-
operator: 'Equal'
|
|
1660
|
-
value: 'true'
|
|
1661
|
-
effect: 'NoSchedule'
|
|
1662
|
-
",
|
|
1663
|
-
"MONGODB_REPLICASET_KEY": "$CL_prod_api_MONGODB_REPLICASET_KEY",
|
|
1664
|
-
"MONGODB_ROOT_PASSWORD": "$CL_prod_api_MONGODB_ROOT_PASSWORD",
|
|
1665
|
-
"RELEASE_NAME": "pan-test-app-prod-api",
|
|
1666
|
-
"ROOT_URL": "https://api.prod.test-app.pan.panter.cloud",
|
|
1667
|
-
"ROOT_URL_INTERNAL": "https://api.prod.test-app.pan.panter.cloud",
|
|
1668
|
-
"_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"]",
|
|
1669
1546
|
},
|
|
1670
1547
|
},
|
|
1671
1548
|
"api โฉ๏ธ Rollback โ ๏ธ | stage ": {
|
|
1549
|
+
"allow_failure": true,
|
|
1550
|
+
"artifacts": {
|
|
1551
|
+
"reports": {
|
|
1552
|
+
"dotenv": "gitlab_environment.env",
|
|
1553
|
+
},
|
|
1554
|
+
},
|
|
1672
1555
|
"environment": {
|
|
1673
1556
|
"action": "access",
|
|
1674
1557
|
"name": "stage/api",
|
|
1675
|
-
"url": "
|
|
1558
|
+
"url": "$CL_GITLAB_ENVIRONMENT_URL",
|
|
1676
1559
|
},
|
|
1677
1560
|
"image": "path/to/docker/kubernetes:the-version",
|
|
1678
1561
|
"interruptible": true,
|
|
@@ -1686,103 +1569,49 @@ mongodb:
|
|
|
1686
1569
|
},
|
|
1687
1570
|
"rules": [
|
|
1688
1571
|
{
|
|
1689
|
-
"allow_failure": true,
|
|
1690
1572
|
"when": "manual",
|
|
1691
1573
|
},
|
|
1692
1574
|
],
|
|
1693
1575
|
"script": [
|
|
1576
|
+
"echo -e "\\e[0Ksection_start:$(date +%s):injectvars[collapsed=true]\\r\\e[0KInjecting variables"",
|
|
1577
|
+
"export ENV_SHORT="stage"",
|
|
1578
|
+
"export APP_DIR="api"",
|
|
1579
|
+
"export ENV_TYPE="stage"",
|
|
1580
|
+
"export BUILD_INFO_BUILD_ID="$(git describe --tags 2>/dev/null || git rev-parse HEAD)"",
|
|
1581
|
+
"export BUILD_INFO_BUILD_TIME="$CI_JOB_STARTED_AT"",
|
|
1582
|
+
"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")"",
|
|
1583
|
+
"export HOST="api.stage.test-app.pan.panter.cloud"",
|
|
1584
|
+
"export ROOT_URL="https://api.stage.test-app.pan.panter.cloud"",
|
|
1585
|
+
"export HOST_INTERNAL="api.stage.test-app.pan.panter.cloud"",
|
|
1586
|
+
"export HOST_CANONICAL="api.stage.test-app.pan.panter.cloud"",
|
|
1587
|
+
"export ROOT_URL_INTERNAL="https://api.stage.test-app.pan.panter.cloud"",
|
|
1588
|
+
"export KUBE_NAMESPACE="pan-test-app-stage"",
|
|
1589
|
+
"export KUBE_APP_NAME="api"",
|
|
1590
|
+
"export KUBE_APP_NAME_PREFIX=""",
|
|
1591
|
+
"export MONGODB_ROOT_PASSWORD="$CL_stage_api_MONGODB_ROOT_PASSWORD"",
|
|
1592
|
+
"export MONGODB_REPLICASET_KEY="$CL_stage_api_MONGODB_REPLICASET_KEY"",
|
|
1593
|
+
"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\\"]"",
|
|
1594
|
+
"export RELEASE_NAME="pan-test-app-stage-api"",
|
|
1595
|
+
"export HELM_EXPERIMENTAL_OCI="1"",
|
|
1596
|
+
"export KUBE_DOCKER_IMAGE_PULL_SECRET="gitlab-registry-api"",
|
|
1597
|
+
"export HELM_GITLAB_CHART_NAME="/helm-charts/the-panter-chart"",
|
|
1598
|
+
"export HELM_ARGS=""",
|
|
1599
|
+
"export COMPONENT_NAME="api"",
|
|
1600
|
+
"export BUILD_ID="$(git describe --tags 2>/dev/null || git rev-parse HEAD)"",
|
|
1601
|
+
"echo -e "\\e[0Ksection_end:$(date +%s):injectvars\\r\\e[0K"",
|
|
1694
1602
|
"kubectl config set-cluster "kube-pan-test-app-stage-api" --server="$CL_stage_api_KUBE_URL" --certificate-authority <(echo $CL_stage_api_KUBE_CA_PEM | base64 -d) --embed-certs=true",
|
|
1695
1603
|
"kubectl config set-credentials "kube-pan-test-app-stage-api" --token="$CL_stage_api_KUBE_TOKEN"",
|
|
1696
1604
|
"kubectl config set-context "kube-pan-test-app-stage-api" --cluster="kube-pan-test-app-stage-api" --user="kube-pan-test-app-stage-api" --namespace="pan-test-app-stage"",
|
|
1697
1605
|
"kubectl config use-context "kube-pan-test-app-stage-api"",
|
|
1698
1606
|
"kubernetesRollback",
|
|
1607
|
+
"echo "CL_GITLAB_ENVIRONMENT_URL=https://api.stage.test-app.pan.panter.cloud" >> gitlab_environment.env",
|
|
1699
1608
|
],
|
|
1700
1609
|
"stage": "rollback stage",
|
|
1701
1610
|
"variables": {
|
|
1702
|
-
"APP_DIR": "api",
|
|
1703
|
-
"BUILD_ID": "some-id",
|
|
1704
|
-
"BUILD_INFO_BUILD_TIME": "01-01-2023 12:13:14",
|
|
1705
|
-
"BUILD_INFO_CURRENT_VERSION": "3.2.1",
|
|
1706
|
-
"BUILD_INFO_ID": "some-id",
|
|
1707
|
-
"COMPONENT_NAME": "api",
|
|
1708
|
-
"ENV_SHORT": "stage",
|
|
1709
|
-
"ENV_TYPE": "stage",
|
|
1710
1611
|
"GIT_STRATEGY": "none",
|
|
1711
|
-
"HELM_ARGS": "",
|
|
1712
|
-
"HELM_EXPERIMENTAL_OCI": "1",
|
|
1713
|
-
"HELM_GITLAB_CHART_NAME": "/helm-charts/the-panter-chart",
|
|
1714
|
-
"HOST": "api.stage.test-app.pan.panter.cloud",
|
|
1715
|
-
"HOST_CANONICAL": "api.stage.test-app.pan.panter.cloud",
|
|
1716
|
-
"HOST_INTERNAL": "api.stage.test-app.pan.panter.cloud",
|
|
1717
1612
|
"KUBERNETES_CPU_REQUEST": "0.5",
|
|
1718
1613
|
"KUBERNETES_MEMORY_LIMIT": "400Mi",
|
|
1719
1614
|
"KUBERNETES_MEMORY_REQUEST": "200Mi",
|
|
1720
|
-
"KUBE_APP_NAME": "api",
|
|
1721
|
-
"KUBE_APP_NAME_PREFIX": "",
|
|
1722
|
-
"KUBE_DOCKER_IMAGE_PULL_SECRET": "gitlab-registry-api",
|
|
1723
|
-
"KUBE_NAMESPACE": "pan-test-app-stage",
|
|
1724
|
-
"KUBE_VALUES": "env:
|
|
1725
|
-
secret:
|
|
1726
|
-
MONGODB_ROOT_PASSWORD: '$CL_stage_api_MONGODB_ROOT_PASSWORD'
|
|
1727
|
-
MONGODB_REPLICASET_KEY: '$CL_stage_api_MONGODB_REPLICASET_KEY'
|
|
1728
|
-
MONGO_URL: 'mongodb://root:$CL_stage_api_MONGODB_ROOT_PASSWORD@api-mongodb-0.api-mongodb-headless.pan-test-app-stage.svc.cluster.local:27017,api-mongodb-1.api-mongodb-headless.pan-test-app-stage.svc.cluster.local:27017/app?replicaSet=rs0&authSource=admin'
|
|
1729
|
-
MONGO_OPLOG_URL: 'mongodb://root:$CL_stage_api_MONGODB_ROOT_PASSWORD@api-mongodb-0.api-mongodb-headless.pan-test-app-stage.svc.cluster.local:27017,api-mongodb-1.api-mongodb-headless.pan-test-app-stage.svc.cluster.local:27017/local?replicaSet=rs0&authSource=admin'
|
|
1730
|
-
public:
|
|
1731
|
-
ENV_SHORT: 'stage'
|
|
1732
|
-
APP_DIR: 'api'
|
|
1733
|
-
ENV_TYPE: 'stage'
|
|
1734
|
-
BUILD_INFO_ID: 'some-id'
|
|
1735
|
-
BUILD_INFO_BUILD_TIME: '01-01-2023 12:13:14'
|
|
1736
|
-
BUILD_INFO_CURRENT_VERSION: '3.2.1'
|
|
1737
|
-
HOST: 'api.stage.test-app.pan.panter.cloud'
|
|
1738
|
-
ROOT_URL: 'https://api.stage.test-app.pan.panter.cloud'
|
|
1739
|
-
HOST_CANONICAL: 'api.stage.test-app.pan.panter.cloud'
|
|
1740
|
-
ROOT_URL_INTERNAL: 'https://api.stage.test-app.pan.panter.cloud'
|
|
1741
|
-
KUBE_NAMESPACE: 'pan-test-app-stage'
|
|
1742
|
-
KUBE_APP_NAME: 'api'
|
|
1743
|
-
KUBE_APP_NAME_PREFIX: ''
|
|
1744
|
-
HOST_INTERNAL: 'api.stage.test-app.pan.panter.cloud'
|
|
1745
|
-
_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"]'
|
|
1746
|
-
application:
|
|
1747
|
-
host: 'api.stage.test-app.pan.panter.cloud'
|
|
1748
|
-
command: 'node main.js'
|
|
1749
|
-
livenessProbe:
|
|
1750
|
-
httpGet:
|
|
1751
|
-
path: '__health'
|
|
1752
|
-
readinessProbe:
|
|
1753
|
-
httpGet:
|
|
1754
|
-
path: '__health'
|
|
1755
|
-
startupProbe:
|
|
1756
|
-
httpGet:
|
|
1757
|
-
path: '__health'
|
|
1758
|
-
mongodb:
|
|
1759
|
-
enabled: true
|
|
1760
|
-
auth:
|
|
1761
|
-
enabled: true
|
|
1762
|
-
rootPassword: '$CL_stage_api_MONGODB_ROOT_PASSWORD'
|
|
1763
|
-
replicaSetKey: '$CL_stage_api_MONGODB_REPLICASET_KEY'
|
|
1764
|
-
persistence:
|
|
1765
|
-
storageClass: 'premium-rwo'
|
|
1766
|
-
backup:
|
|
1767
|
-
enabled: true
|
|
1768
|
-
hostToBackup: 'api-mongodb-0.api-mongodb-headless.pan-test-app-stage.svc.cluster.local:27017'
|
|
1769
|
-
pvcToBackup: 'datadir-api-mongodb-0'
|
|
1770
|
-
image: 'mrelite/kubectlmongoshell:v1.0'
|
|
1771
|
-
schedule: '0 4 * * *'
|
|
1772
|
-
volumeSnapshotClass: 'snapshotclass'
|
|
1773
|
-
architecture: 'replicaset'
|
|
1774
|
-
tolerations:
|
|
1775
|
-
- key: 'mongodb'
|
|
1776
|
-
operator: 'Equal'
|
|
1777
|
-
value: 'true'
|
|
1778
|
-
effect: 'NoSchedule'
|
|
1779
|
-
",
|
|
1780
|
-
"MONGODB_REPLICASET_KEY": "$CL_stage_api_MONGODB_REPLICASET_KEY",
|
|
1781
|
-
"MONGODB_ROOT_PASSWORD": "$CL_stage_api_MONGODB_ROOT_PASSWORD",
|
|
1782
|
-
"RELEASE_NAME": "pan-test-app-stage-api",
|
|
1783
|
-
"ROOT_URL": "https://api.stage.test-app.pan.panter.cloud",
|
|
1784
|
-
"ROOT_URL_INTERNAL": "https://api.stage.test-app.pan.panter.cloud",
|
|
1785
|
-
"_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"]",
|
|
1786
1615
|
},
|
|
1787
1616
|
},
|
|
1788
1617
|
"api ๐จ app | prod ": {
|
|
@@ -1832,7 +1661,26 @@ mongodb:
|
|
|
1832
1661
|
],
|
|
1833
1662
|
},
|
|
1834
1663
|
"script": [
|
|
1835
|
-
"echo
|
|
1664
|
+
"echo -e "\\e[0Ksection_start:$(date +%s):injectvars[collapsed=true]\\r\\e[0KInjecting variables"",
|
|
1665
|
+
"export ENV_SHORT="prod"",
|
|
1666
|
+
"export APP_DIR="api"",
|
|
1667
|
+
"export ENV_TYPE="prod"",
|
|
1668
|
+
"export BUILD_INFO_BUILD_ID="$(git describe --tags 2>/dev/null || git rev-parse HEAD)"",
|
|
1669
|
+
"export BUILD_INFO_BUILD_TIME="$CI_JOB_STARTED_AT"",
|
|
1670
|
+
"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")"",
|
|
1671
|
+
"export HOST="api.prod.test-app.pan.panter.cloud"",
|
|
1672
|
+
"export ROOT_URL="https://api.prod.test-app.pan.panter.cloud"",
|
|
1673
|
+
"export HOST_INTERNAL="api.prod.test-app.pan.panter.cloud"",
|
|
1674
|
+
"export HOST_CANONICAL="api.prod.test-app.pan.panter.cloud"",
|
|
1675
|
+
"export ROOT_URL_INTERNAL="https://api.prod.test-app.pan.panter.cloud"",
|
|
1676
|
+
"export KUBE_NAMESPACE="pan-test-app-prod"",
|
|
1677
|
+
"export KUBE_APP_NAME="api"",
|
|
1678
|
+
"export KUBE_APP_NAME_PREFIX=""",
|
|
1679
|
+
"export MONGODB_ROOT_PASSWORD="$CL_prod_api_MONGODB_ROOT_PASSWORD"",
|
|
1680
|
+
"export MONGODB_REPLICASET_KEY="$CL_prod_api_MONGODB_REPLICASET_KEY"",
|
|
1681
|
+
"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\\"]"",
|
|
1682
|
+
"echo -e "\\e[0Ksection_end:$(date +%s):injectvars\\r\\e[0K"",
|
|
1683
|
+
"echo '{"id":"$(git describe --tags 2>/dev/null || git rev-parse HEAD)","time":"$CI_JOB_STARTED_AT"}' > api/__build_info.json",
|
|
1836
1684
|
"echo -e "\\e[0Ksection_start:$(date +%s):nodeinstall[collapsed=true]\\r\\e[0KEnsure node version"",
|
|
1837
1685
|
"if [ -f ~/.nvm/nvm.sh ]; then source ~/.nvm/nvm.sh; fi",
|
|
1838
1686
|
"if command -v nvm &> /dev/null && [ -f ./.nvmrc ]; then nvm install; fi",
|
|
@@ -1849,26 +1697,9 @@ mongodb:
|
|
|
1849
1697
|
],
|
|
1850
1698
|
"stage": "build",
|
|
1851
1699
|
"variables": {
|
|
1852
|
-
"APP_DIR": "api",
|
|
1853
|
-
"BUILD_INFO_BUILD_TIME": "01-01-2023 12:13:14",
|
|
1854
|
-
"BUILD_INFO_CURRENT_VERSION": "3.2.1",
|
|
1855
|
-
"BUILD_INFO_ID": "some-id",
|
|
1856
|
-
"ENV_SHORT": "prod",
|
|
1857
|
-
"ENV_TYPE": "prod",
|
|
1858
|
-
"HOST": "api.prod.test-app.pan.panter.cloud",
|
|
1859
|
-
"HOST_CANONICAL": "api.prod.test-app.pan.panter.cloud",
|
|
1860
|
-
"HOST_INTERNAL": "api.prod.test-app.pan.panter.cloud",
|
|
1861
1700
|
"KUBERNETES_CPU_REQUEST": "0.5",
|
|
1862
1701
|
"KUBERNETES_MEMORY_LIMIT": "4Gi",
|
|
1863
1702
|
"KUBERNETES_MEMORY_REQUEST": "2Gi",
|
|
1864
|
-
"KUBE_APP_NAME": "api",
|
|
1865
|
-
"KUBE_APP_NAME_PREFIX": "",
|
|
1866
|
-
"KUBE_NAMESPACE": "pan-test-app-prod",
|
|
1867
|
-
"MONGODB_REPLICASET_KEY": "$CL_prod_api_MONGODB_REPLICASET_KEY",
|
|
1868
|
-
"MONGODB_ROOT_PASSWORD": "$CL_prod_api_MONGODB_ROOT_PASSWORD",
|
|
1869
|
-
"ROOT_URL": "https://api.prod.test-app.pan.panter.cloud",
|
|
1870
|
-
"ROOT_URL_INTERNAL": "https://api.prod.test-app.pan.panter.cloud",
|
|
1871
|
-
"_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"]",
|
|
1872
1703
|
},
|
|
1873
1704
|
},
|
|
1874
1705
|
"api ๐จ app | stage ": {
|
|
@@ -1918,7 +1749,26 @@ mongodb:
|
|
|
1918
1749
|
],
|
|
1919
1750
|
},
|
|
1920
1751
|
"script": [
|
|
1921
|
-
"echo
|
|
1752
|
+
"echo -e "\\e[0Ksection_start:$(date +%s):injectvars[collapsed=true]\\r\\e[0KInjecting variables"",
|
|
1753
|
+
"export ENV_SHORT="stage"",
|
|
1754
|
+
"export APP_DIR="api"",
|
|
1755
|
+
"export ENV_TYPE="stage"",
|
|
1756
|
+
"export BUILD_INFO_BUILD_ID="$(git describe --tags 2>/dev/null || git rev-parse HEAD)"",
|
|
1757
|
+
"export BUILD_INFO_BUILD_TIME="$CI_JOB_STARTED_AT"",
|
|
1758
|
+
"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")"",
|
|
1759
|
+
"export HOST="api.stage.test-app.pan.panter.cloud"",
|
|
1760
|
+
"export ROOT_URL="https://api.stage.test-app.pan.panter.cloud"",
|
|
1761
|
+
"export HOST_INTERNAL="api.stage.test-app.pan.panter.cloud"",
|
|
1762
|
+
"export HOST_CANONICAL="api.stage.test-app.pan.panter.cloud"",
|
|
1763
|
+
"export ROOT_URL_INTERNAL="https://api.stage.test-app.pan.panter.cloud"",
|
|
1764
|
+
"export KUBE_NAMESPACE="pan-test-app-stage"",
|
|
1765
|
+
"export KUBE_APP_NAME="api"",
|
|
1766
|
+
"export KUBE_APP_NAME_PREFIX=""",
|
|
1767
|
+
"export MONGODB_ROOT_PASSWORD="$CL_stage_api_MONGODB_ROOT_PASSWORD"",
|
|
1768
|
+
"export MONGODB_REPLICASET_KEY="$CL_stage_api_MONGODB_REPLICASET_KEY"",
|
|
1769
|
+
"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\\"]"",
|
|
1770
|
+
"echo -e "\\e[0Ksection_end:$(date +%s):injectvars\\r\\e[0K"",
|
|
1771
|
+
"echo '{"id":"$(git describe --tags 2>/dev/null || git rev-parse HEAD)","time":"$CI_JOB_STARTED_AT"}' > api/__build_info.json",
|
|
1922
1772
|
"echo -e "\\e[0Ksection_start:$(date +%s):nodeinstall[collapsed=true]\\r\\e[0KEnsure node version"",
|
|
1923
1773
|
"if [ -f ~/.nvm/nvm.sh ]; then source ~/.nvm/nvm.sh; fi",
|
|
1924
1774
|
"if command -v nvm &> /dev/null && [ -f ./.nvmrc ]; then nvm install; fi",
|
|
@@ -1935,26 +1785,9 @@ mongodb:
|
|
|
1935
1785
|
],
|
|
1936
1786
|
"stage": "build",
|
|
1937
1787
|
"variables": {
|
|
1938
|
-
"APP_DIR": "api",
|
|
1939
|
-
"BUILD_INFO_BUILD_TIME": "01-01-2023 12:13:14",
|
|
1940
|
-
"BUILD_INFO_CURRENT_VERSION": "3.2.1",
|
|
1941
|
-
"BUILD_INFO_ID": "some-id",
|
|
1942
|
-
"ENV_SHORT": "stage",
|
|
1943
|
-
"ENV_TYPE": "stage",
|
|
1944
|
-
"HOST": "api.stage.test-app.pan.panter.cloud",
|
|
1945
|
-
"HOST_CANONICAL": "api.stage.test-app.pan.panter.cloud",
|
|
1946
|
-
"HOST_INTERNAL": "api.stage.test-app.pan.panter.cloud",
|
|
1947
1788
|
"KUBERNETES_CPU_REQUEST": "0.5",
|
|
1948
1789
|
"KUBERNETES_MEMORY_LIMIT": "4Gi",
|
|
1949
1790
|
"KUBERNETES_MEMORY_REQUEST": "2Gi",
|
|
1950
|
-
"KUBE_APP_NAME": "api",
|
|
1951
|
-
"KUBE_APP_NAME_PREFIX": "",
|
|
1952
|
-
"KUBE_NAMESPACE": "pan-test-app-stage",
|
|
1953
|
-
"MONGODB_REPLICASET_KEY": "$CL_stage_api_MONGODB_REPLICASET_KEY",
|
|
1954
|
-
"MONGODB_ROOT_PASSWORD": "$CL_stage_api_MONGODB_ROOT_PASSWORD",
|
|
1955
|
-
"ROOT_URL": "https://api.stage.test-app.pan.panter.cloud",
|
|
1956
|
-
"ROOT_URL_INTERNAL": "https://api.stage.test-app.pan.panter.cloud",
|
|
1957
|
-
"_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"]",
|
|
1958
1791
|
},
|
|
1959
1792
|
},
|
|
1960
1793
|
"api ๐จ docker | prod ": {
|
|
@@ -1980,6 +1813,22 @@ mongodb:
|
|
|
1980
1813
|
],
|
|
1981
1814
|
},
|
|
1982
1815
|
"script": [
|
|
1816
|
+
"echo -e "\\e[0Ksection_start:$(date +%s):injectvars[collapsed=true]\\r\\e[0KInjecting variables"",
|
|
1817
|
+
"export APP_DIR="api"",
|
|
1818
|
+
"export DOCKER_DIR="."",
|
|
1819
|
+
"export DOCKER_REGISTRY="$CI_REGISTRY"",
|
|
1820
|
+
"export DOCKER_CACHE_IMAGE="$CI_REGISTRY_IMAGE/caches/api"",
|
|
1821
|
+
"export DOCKER_IMAGE_NAME="prod/api"",
|
|
1822
|
+
"export DOCKER_IMAGE="$CI_REGISTRY_IMAGE/$DOCKER_IMAGE_NAME"",
|
|
1823
|
+
"export DOCKER_IMAGE_TAG="$CI_COMMIT_SHA"",
|
|
1824
|
+
"export DOCKER_COPY_AND_INSTALL_APP="COPY --chown=node:node $APP_DIR .
|
|
1825
|
+
RUN yarn plugin import workspace-tools
|
|
1826
|
+
RUN yarn workspaces focus --production && yarn rebuild"",
|
|
1827
|
+
"export DOCKER_COPY_WORKSPACE_FILES="COPY --chown=node:node api/package.json /app/api/package.json
|
|
1828
|
+
COPY --chown=node:node api/yarn.lock /app/api/yarn.lock
|
|
1829
|
+
COPY --chown=node:node .yarnrc.yml /app/.yarnrc.yml
|
|
1830
|
+
COPY --chown=node:node .yarn /app/.yarn"",
|
|
1831
|
+
"echo -e "\\e[0Ksection_end:$(date +%s):injectvars\\r\\e[0K"",
|
|
1983
1832
|
"ensureNodeDockerfile",
|
|
1984
1833
|
"echo -e "\\e[0Ksection_start:$(date +%s):docker-login[collapsed=true]\\r\\e[0KDocker Login"",
|
|
1985
1834
|
"docker login --username gitlab-ci-token --password $CI_JOB_TOKEN $CI_REGISTRY",
|
|
@@ -2003,25 +1852,9 @@ mongodb:
|
|
|
2003
1852
|
],
|
|
2004
1853
|
"stage": "build",
|
|
2005
1854
|
"variables": {
|
|
2006
|
-
"APP_DIR": "api",
|
|
2007
|
-
"DOCKERFILE_ADDITIONS": undefined,
|
|
2008
|
-
"DOCKERFILE_ADDITIONS_END": undefined,
|
|
2009
1855
|
"DOCKER_BUILDKIT": "1",
|
|
2010
|
-
"DOCKER_CACHE_IMAGE": "$CI_REGISTRY_IMAGE/caches/api",
|
|
2011
|
-
"DOCKER_COPY_AND_INSTALL_APP": "COPY --chown=node:node $APP_DIR .
|
|
2012
|
-
RUN yarn plugin import workspace-tools
|
|
2013
|
-
RUN yarn workspaces focus --production && yarn rebuild",
|
|
2014
|
-
"DOCKER_COPY_WORKSPACE_FILES": "COPY --chown=node:node api/package.json /app/api/package.json
|
|
2015
|
-
COPY --chown=node:node api/yarn.lock /app/api/yarn.lock
|
|
2016
|
-
COPY --chown=node:node .yarnrc.yml /app/.yarnrc.yml
|
|
2017
|
-
COPY --chown=node:node .yarn /app/.yarn",
|
|
2018
|
-
"DOCKER_DIR": ".",
|
|
2019
1856
|
"DOCKER_DRIVER": "overlay2",
|
|
2020
1857
|
"DOCKER_HOST": "tcp://0.0.0.0:2375",
|
|
2021
|
-
"DOCKER_IMAGE": "$CI_REGISTRY_IMAGE/$DOCKER_IMAGE_NAME",
|
|
2022
|
-
"DOCKER_IMAGE_NAME": "prod/api",
|
|
2023
|
-
"DOCKER_IMAGE_TAG": "$CI_COMMIT_SHA",
|
|
2024
|
-
"DOCKER_REGISTRY": "$CI_REGISTRY",
|
|
2025
1858
|
"DOCKER_TLS_CERTDIR": "",
|
|
2026
1859
|
"KUBERNETES_CPU_REQUEST": "0.5",
|
|
2027
1860
|
"KUBERNETES_MEMORY_LIMIT": "2Gi",
|
|
@@ -2051,6 +1884,22 @@ COPY --chown=node:node .yarn /app/.yarn",
|
|
|
2051
1884
|
],
|
|
2052
1885
|
},
|
|
2053
1886
|
"script": [
|
|
1887
|
+
"echo -e "\\e[0Ksection_start:$(date +%s):injectvars[collapsed=true]\\r\\e[0KInjecting variables"",
|
|
1888
|
+
"export APP_DIR="api"",
|
|
1889
|
+
"export DOCKER_DIR="."",
|
|
1890
|
+
"export DOCKER_REGISTRY="$CI_REGISTRY"",
|
|
1891
|
+
"export DOCKER_CACHE_IMAGE="$CI_REGISTRY_IMAGE/caches/api"",
|
|
1892
|
+
"export DOCKER_IMAGE_NAME="stage/api"",
|
|
1893
|
+
"export DOCKER_IMAGE="$CI_REGISTRY_IMAGE/$DOCKER_IMAGE_NAME"",
|
|
1894
|
+
"export DOCKER_IMAGE_TAG="$CI_COMMIT_SHA"",
|
|
1895
|
+
"export DOCKER_COPY_AND_INSTALL_APP="COPY --chown=node:node $APP_DIR .
|
|
1896
|
+
RUN yarn plugin import workspace-tools
|
|
1897
|
+
RUN yarn workspaces focus --production && yarn rebuild"",
|
|
1898
|
+
"export DOCKER_COPY_WORKSPACE_FILES="COPY --chown=node:node api/package.json /app/api/package.json
|
|
1899
|
+
COPY --chown=node:node api/yarn.lock /app/api/yarn.lock
|
|
1900
|
+
COPY --chown=node:node .yarnrc.yml /app/.yarnrc.yml
|
|
1901
|
+
COPY --chown=node:node .yarn /app/.yarn"",
|
|
1902
|
+
"echo -e "\\e[0Ksection_end:$(date +%s):injectvars\\r\\e[0K"",
|
|
2054
1903
|
"ensureNodeDockerfile",
|
|
2055
1904
|
"echo -e "\\e[0Ksection_start:$(date +%s):docker-login[collapsed=true]\\r\\e[0KDocker Login"",
|
|
2056
1905
|
"docker login --username gitlab-ci-token --password $CI_JOB_TOKEN $CI_REGISTRY",
|
|
@@ -2074,25 +1923,9 @@ COPY --chown=node:node .yarn /app/.yarn",
|
|
|
2074
1923
|
],
|
|
2075
1924
|
"stage": "build",
|
|
2076
1925
|
"variables": {
|
|
2077
|
-
"APP_DIR": "api",
|
|
2078
|
-
"DOCKERFILE_ADDITIONS": undefined,
|
|
2079
|
-
"DOCKERFILE_ADDITIONS_END": undefined,
|
|
2080
1926
|
"DOCKER_BUILDKIT": "1",
|
|
2081
|
-
"DOCKER_CACHE_IMAGE": "$CI_REGISTRY_IMAGE/caches/api",
|
|
2082
|
-
"DOCKER_COPY_AND_INSTALL_APP": "COPY --chown=node:node $APP_DIR .
|
|
2083
|
-
RUN yarn plugin import workspace-tools
|
|
2084
|
-
RUN yarn workspaces focus --production && yarn rebuild",
|
|
2085
|
-
"DOCKER_COPY_WORKSPACE_FILES": "COPY --chown=node:node api/package.json /app/api/package.json
|
|
2086
|
-
COPY --chown=node:node api/yarn.lock /app/api/yarn.lock
|
|
2087
|
-
COPY --chown=node:node .yarnrc.yml /app/.yarnrc.yml
|
|
2088
|
-
COPY --chown=node:node .yarn /app/.yarn",
|
|
2089
|
-
"DOCKER_DIR": ".",
|
|
2090
1927
|
"DOCKER_DRIVER": "overlay2",
|
|
2091
1928
|
"DOCKER_HOST": "tcp://0.0.0.0:2375",
|
|
2092
|
-
"DOCKER_IMAGE": "$CI_REGISTRY_IMAGE/$DOCKER_IMAGE_NAME",
|
|
2093
|
-
"DOCKER_IMAGE_NAME": "stage/api",
|
|
2094
|
-
"DOCKER_IMAGE_TAG": "$CI_COMMIT_SHA",
|
|
2095
|
-
"DOCKER_REGISTRY": "$CI_REGISTRY",
|
|
2096
1929
|
"DOCKER_TLS_CERTDIR": "",
|
|
2097
1930
|
"KUBERNETES_CPU_REQUEST": "0.5",
|
|
2098
1931
|
"KUBERNETES_MEMORY_LIMIT": "2Gi",
|
|
@@ -2101,11 +1934,16 @@ COPY --chown=node:node .yarn /app/.yarn",
|
|
|
2101
1934
|
},
|
|
2102
1935
|
"api ๐ Deploy | prod ": {
|
|
2103
1936
|
"allow_failure": true,
|
|
1937
|
+
"artifacts": {
|
|
1938
|
+
"reports": {
|
|
1939
|
+
"dotenv": "gitlab_environment.env",
|
|
1940
|
+
},
|
|
1941
|
+
},
|
|
2104
1942
|
"environment": {
|
|
2105
1943
|
"auto_stop_in": undefined,
|
|
2106
1944
|
"name": "prod/api",
|
|
2107
1945
|
"on_stop": "api ๐ Stop โ ๏ธ | prod ",
|
|
2108
|
-
"url": "
|
|
1946
|
+
"url": "$CL_GITLAB_ENVIRONMENT_URL",
|
|
2109
1947
|
},
|
|
2110
1948
|
"image": "path/to/docker/kubernetes:the-version",
|
|
2111
1949
|
"interruptible": true,
|
|
@@ -2136,115 +1974,164 @@ COPY --chown=node:node .yarn /app/.yarn",
|
|
|
2136
1974
|
},
|
|
2137
1975
|
],
|
|
2138
1976
|
"script": [
|
|
1977
|
+
"echo -e "\\e[0Ksection_start:$(date +%s):injectvars[collapsed=true]\\r\\e[0KInjecting variables"",
|
|
1978
|
+
"export ENV_SHORT="prod"",
|
|
1979
|
+
"export APP_DIR="api"",
|
|
1980
|
+
"export ENV_TYPE="prod"",
|
|
1981
|
+
"export BUILD_INFO_BUILD_ID="$(git describe --tags 2>/dev/null || git rev-parse HEAD)"",
|
|
1982
|
+
"export BUILD_INFO_BUILD_TIME="$CI_JOB_STARTED_AT"",
|
|
1983
|
+
"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")"",
|
|
1984
|
+
"export HOST="api.prod.test-app.pan.panter.cloud"",
|
|
1985
|
+
"export ROOT_URL="https://api.prod.test-app.pan.panter.cloud"",
|
|
1986
|
+
"export HOST_INTERNAL="api.prod.test-app.pan.panter.cloud"",
|
|
1987
|
+
"export HOST_CANONICAL="api.prod.test-app.pan.panter.cloud"",
|
|
1988
|
+
"export ROOT_URL_INTERNAL="https://api.prod.test-app.pan.panter.cloud"",
|
|
1989
|
+
"export KUBE_NAMESPACE="pan-test-app-prod"",
|
|
1990
|
+
"export KUBE_APP_NAME="api"",
|
|
1991
|
+
"export KUBE_APP_NAME_PREFIX=""",
|
|
1992
|
+
"export MONGODB_ROOT_PASSWORD="$CL_prod_api_MONGODB_ROOT_PASSWORD"",
|
|
1993
|
+
"export MONGODB_REPLICASET_KEY="$CL_prod_api_MONGODB_REPLICASET_KEY"",
|
|
1994
|
+
"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\\"]"",
|
|
1995
|
+
"export DOCKER_REGISTRY="$CI_REGISTRY"",
|
|
1996
|
+
"export DOCKER_CACHE_IMAGE="$CI_REGISTRY_IMAGE/caches/api"",
|
|
1997
|
+
"export DOCKER_IMAGE_NAME="prod/api"",
|
|
1998
|
+
"export DOCKER_IMAGE="$CI_REGISTRY_IMAGE/$DOCKER_IMAGE_NAME"",
|
|
1999
|
+
"export DOCKER_IMAGE_TAG="$CI_COMMIT_SHA"",
|
|
2000
|
+
"export RELEASE_NAME="pan-test-app-prod-api"",
|
|
2001
|
+
"export HELM_EXPERIMENTAL_OCI="1"",
|
|
2002
|
+
"export KUBE_DOCKER_IMAGE_PULL_SECRET="gitlab-registry-api"",
|
|
2003
|
+
"export HELM_GITLAB_CHART_NAME="/helm-charts/the-panter-chart"",
|
|
2004
|
+
"export HELM_ARGS=""",
|
|
2005
|
+
"export COMPONENT_NAME="api"",
|
|
2006
|
+
"export BUILD_ID="$(git describe --tags 2>/dev/null || git rev-parse HEAD)"",
|
|
2007
|
+
"echo -e "\\e[0Ksection_end:$(date +%s):injectvars\\r\\e[0K"",
|
|
2139
2008
|
"kubectl config set-cluster "kube-pan-test-app-prod-api" --server="$CL_prod_api_KUBE_URL" --certificate-authority <(echo $CL_prod_api_KUBE_CA_PEM | base64 -d) --embed-certs=true",
|
|
2140
2009
|
"kubectl config set-credentials "kube-pan-test-app-prod-api" --token="$CL_prod_api_KUBE_TOKEN"",
|
|
2141
2010
|
"kubectl config set-context "kube-pan-test-app-prod-api" --cluster="kube-pan-test-app-prod-api" --user="kube-pan-test-app-prod-api" --namespace="pan-test-app-prod"",
|
|
2142
2011
|
"kubectl config use-context "kube-pan-test-app-prod-api"",
|
|
2143
|
-
"
|
|
2144
|
-
"
|
|
2145
|
-
|
|
2146
|
-
"/dtrackuploader https://dep.panter.swiss/ "$DT_KEY_PROD" upload "pan-test-app/api" "https://api.prod.test-app.pan.panter.cloud" "__sbom.json" vex.json || true",
|
|
2147
|
-
"echo deployment successful ๐ป",
|
|
2148
|
-
],
|
|
2149
|
-
"stage": "deploy prod",
|
|
2150
|
-
"variables": {
|
|
2151
|
-
"APP_DIR": "api",
|
|
2152
|
-
"BUILD_ID": "some-id",
|
|
2153
|
-
"BUILD_INFO_BUILD_TIME": "01-01-2023 12:13:14",
|
|
2154
|
-
"BUILD_INFO_CURRENT_VERSION": "3.2.1",
|
|
2155
|
-
"BUILD_INFO_ID": "some-id",
|
|
2156
|
-
"COMPONENT_NAME": "api",
|
|
2157
|
-
"DOCKER_CACHE_IMAGE": "$CI_REGISTRY_IMAGE/caches/api",
|
|
2158
|
-
"DOCKER_IMAGE": "$CI_REGISTRY_IMAGE/$DOCKER_IMAGE_NAME",
|
|
2159
|
-
"DOCKER_IMAGE_NAME": "prod/api",
|
|
2160
|
-
"DOCKER_IMAGE_TAG": "$CI_COMMIT_SHA",
|
|
2161
|
-
"DOCKER_REGISTRY": "$CI_REGISTRY",
|
|
2162
|
-
"ENV_SHORT": "prod",
|
|
2163
|
-
"ENV_TYPE": "prod",
|
|
2164
|
-
"HELM_ARGS": "",
|
|
2165
|
-
"HELM_EXPERIMENTAL_OCI": "1",
|
|
2166
|
-
"HELM_GITLAB_CHART_NAME": "/helm-charts/the-panter-chart",
|
|
2167
|
-
"HOST": "api.prod.test-app.pan.panter.cloud",
|
|
2168
|
-
"HOST_CANONICAL": "api.prod.test-app.pan.panter.cloud",
|
|
2169
|
-
"HOST_INTERNAL": "api.prod.test-app.pan.panter.cloud",
|
|
2170
|
-
"KUBERNETES_CPU_REQUEST": "0.5",
|
|
2171
|
-
"KUBERNETES_MEMORY_LIMIT": "400Mi",
|
|
2172
|
-
"KUBERNETES_MEMORY_REQUEST": "200Mi",
|
|
2173
|
-
"KUBE_APP_NAME": "api",
|
|
2174
|
-
"KUBE_APP_NAME_PREFIX": "",
|
|
2175
|
-
"KUBE_DOCKER_IMAGE_PULL_SECRET": "gitlab-registry-api",
|
|
2176
|
-
"KUBE_NAMESPACE": "pan-test-app-prod",
|
|
2177
|
-
"KUBE_VALUES": "env:
|
|
2012
|
+
"echo -e "\\e[0Ksection_start:$(date +%s):writeallvalues[collapsed=true]\\r\\e[0KWrite __all_values.yml for helm deployment"",
|
|
2013
|
+
"cat > __all_values.yml <<EOF
|
|
2014
|
+
env:
|
|
2178
2015
|
secret:
|
|
2179
|
-
MONGODB_ROOT_PASSWORD:
|
|
2180
|
-
|
|
2181
|
-
|
|
2182
|
-
|
|
2016
|
+
MONGODB_ROOT_PASSWORD: |-
|
|
2017
|
+
$(printf %s "$CL_prod_api_MONGODB_ROOT_PASSWORD" | sed 's/^/ /')
|
|
2018
|
+
MONGODB_REPLICASET_KEY: |-
|
|
2019
|
+
$(printf %s "$CL_prod_api_MONGODB_REPLICASET_KEY" | sed 's/^/ /')
|
|
2020
|
+
MONGO_URL: |-
|
|
2021
|
+
mongodb://root:$CL_prod_api_MONGODB_ROOT_PASSWORD@api-mongodb-0.api-mongodb-headless.pan-test-app-prod.svc.cluster.local:27017,api-mongodb-1.api-mongodb-headless.pan-test-app-prod.svc.cluster.local:27017/app?replicaSet=rs0&authSource=admin
|
|
2022
|
+
MONGO_OPLOG_URL: |-
|
|
2023
|
+
mongodb://root:$CL_prod_api_MONGODB_ROOT_PASSWORD@api-mongodb-0.api-mongodb-headless.pan-test-app-prod.svc.cluster.local:27017,api-mongodb-1.api-mongodb-headless.pan-test-app-prod.svc.cluster.local:27017/local?replicaSet=rs0&authSource=admin
|
|
2183
2024
|
public:
|
|
2184
|
-
ENV_SHORT:
|
|
2185
|
-
|
|
2186
|
-
|
|
2187
|
-
|
|
2188
|
-
|
|
2189
|
-
|
|
2190
|
-
|
|
2191
|
-
|
|
2192
|
-
|
|
2193
|
-
|
|
2194
|
-
|
|
2195
|
-
|
|
2196
|
-
|
|
2197
|
-
|
|
2198
|
-
|
|
2025
|
+
ENV_SHORT: |-
|
|
2026
|
+
prod
|
|
2027
|
+
APP_DIR: |-
|
|
2028
|
+
api
|
|
2029
|
+
ENV_TYPE: |-
|
|
2030
|
+
prod
|
|
2031
|
+
BUILD_INFO_BUILD_ID: |-
|
|
2032
|
+
$(printf %s "$(git describe --tags 2>/dev/null || git rev-parse HEAD)" | sed 's/^/ /')
|
|
2033
|
+
BUILD_INFO_BUILD_TIME: |-
|
|
2034
|
+
$(printf %s "$CI_JOB_STARTED_AT" | sed 's/^/ /')
|
|
2035
|
+
BUILD_INFO_CURRENT_VERSION: |-
|
|
2036
|
+
$(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/^/ /')
|
|
2037
|
+
HOST: |-
|
|
2038
|
+
api.prod.test-app.pan.panter.cloud
|
|
2039
|
+
ROOT_URL: |-
|
|
2040
|
+
https://api.prod.test-app.pan.panter.cloud
|
|
2041
|
+
HOST_INTERNAL: |-
|
|
2042
|
+
api.prod.test-app.pan.panter.cloud
|
|
2043
|
+
HOST_CANONICAL: |-
|
|
2044
|
+
api.prod.test-app.pan.panter.cloud
|
|
2045
|
+
ROOT_URL_INTERNAL: |-
|
|
2046
|
+
https://api.prod.test-app.pan.panter.cloud
|
|
2047
|
+
KUBE_NAMESPACE: |-
|
|
2048
|
+
pan-test-app-prod
|
|
2049
|
+
KUBE_APP_NAME: |-
|
|
2050
|
+
api
|
|
2051
|
+
KUBE_APP_NAME_PREFIX: ""
|
|
2052
|
+
_ALL_ENV_VAR_KEYS: |-
|
|
2053
|
+
["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"]
|
|
2199
2054
|
application:
|
|
2200
|
-
host:
|
|
2201
|
-
|
|
2055
|
+
host: |-
|
|
2056
|
+
api.prod.test-app.pan.panter.cloud
|
|
2057
|
+
command: |-
|
|
2058
|
+
node main.js
|
|
2202
2059
|
livenessProbe:
|
|
2203
2060
|
httpGet:
|
|
2204
|
-
path:
|
|
2061
|
+
path: |-
|
|
2062
|
+
__health
|
|
2205
2063
|
readinessProbe:
|
|
2206
2064
|
httpGet:
|
|
2207
|
-
path:
|
|
2065
|
+
path: |-
|
|
2066
|
+
__health
|
|
2208
2067
|
startupProbe:
|
|
2209
2068
|
httpGet:
|
|
2210
|
-
path:
|
|
2069
|
+
path: |-
|
|
2070
|
+
__health
|
|
2211
2071
|
mongodb:
|
|
2212
2072
|
enabled: true
|
|
2213
2073
|
auth:
|
|
2214
2074
|
enabled: true
|
|
2215
|
-
rootPassword:
|
|
2216
|
-
|
|
2075
|
+
rootPassword: |-
|
|
2076
|
+
$CL_prod_api_MONGODB_ROOT_PASSWORD
|
|
2077
|
+
replicaSetKey: |-
|
|
2078
|
+
$CL_prod_api_MONGODB_REPLICASET_KEY
|
|
2217
2079
|
persistence:
|
|
2218
|
-
storageClass:
|
|
2080
|
+
storageClass: |-
|
|
2081
|
+
premium-rwo
|
|
2219
2082
|
backup:
|
|
2220
2083
|
enabled: true
|
|
2221
|
-
hostToBackup:
|
|
2222
|
-
|
|
2223
|
-
|
|
2224
|
-
|
|
2225
|
-
|
|
2226
|
-
|
|
2084
|
+
hostToBackup: |-
|
|
2085
|
+
api-mongodb-0.api-mongodb-headless.pan-test-app-prod.svc.cluster.local:27017
|
|
2086
|
+
pvcToBackup: |-
|
|
2087
|
+
datadir-api-mongodb-0
|
|
2088
|
+
image: |-
|
|
2089
|
+
mrelite/kubectlmongoshell:v1.0
|
|
2090
|
+
schedule: |-
|
|
2091
|
+
0 4 * * *
|
|
2092
|
+
volumeSnapshotClass: |-
|
|
2093
|
+
snapshotclass
|
|
2094
|
+
architecture: |-
|
|
2095
|
+
replicaset
|
|
2227
2096
|
tolerations:
|
|
2228
|
-
- key:
|
|
2229
|
-
|
|
2230
|
-
|
|
2231
|
-
|
|
2097
|
+
- key: |-
|
|
2098
|
+
mongodb
|
|
2099
|
+
operator: |-
|
|
2100
|
+
Equal
|
|
2101
|
+
value: |-
|
|
2102
|
+
true
|
|
2103
|
+
effect: |-
|
|
2104
|
+
NoSchedule
|
|
2105
|
+
|
|
2106
|
+
EOF
|
|
2232
2107
|
",
|
|
2233
|
-
"
|
|
2234
|
-
"
|
|
2235
|
-
"
|
|
2236
|
-
"
|
|
2237
|
-
"
|
|
2238
|
-
"
|
|
2108
|
+
"echo -e "\\e[0Ksection_end:$(date +%s):writeallvalues\\r\\e[0K"",
|
|
2109
|
+
"kubernetesCreateSecret",
|
|
2110
|
+
"kubernetesDeploy",
|
|
2111
|
+
"echo Uploading SBOM to Dependency Track",
|
|
2112
|
+
"/dtrackuploader https://dep.panter.swiss/ "$DT_KEY_PROD" upload "pan-test-app/api" "https://api.prod.test-app.pan.panter.cloud" "__sbom.json" vex.json || true",
|
|
2113
|
+
"echo deployment successful ๐ป",
|
|
2114
|
+
"echo "CL_GITLAB_ENVIRONMENT_URL=https://api.prod.test-app.pan.panter.cloud" >> gitlab_environment.env",
|
|
2115
|
+
],
|
|
2116
|
+
"stage": "deploy prod",
|
|
2117
|
+
"variables": {
|
|
2118
|
+
"KUBERNETES_CPU_REQUEST": "0.5",
|
|
2119
|
+
"KUBERNETES_MEMORY_LIMIT": "400Mi",
|
|
2120
|
+
"KUBERNETES_MEMORY_REQUEST": "200Mi",
|
|
2239
2121
|
},
|
|
2240
2122
|
},
|
|
2241
2123
|
"api ๐ Deploy | stage ": {
|
|
2242
2124
|
"allow_failure": false,
|
|
2125
|
+
"artifacts": {
|
|
2126
|
+
"reports": {
|
|
2127
|
+
"dotenv": "gitlab_environment.env",
|
|
2128
|
+
},
|
|
2129
|
+
},
|
|
2243
2130
|
"environment": {
|
|
2244
2131
|
"auto_stop_in": undefined,
|
|
2245
2132
|
"name": "stage/api",
|
|
2246
2133
|
"on_stop": "api ๐ Stop โ ๏ธ | stage ",
|
|
2247
|
-
"url": "
|
|
2134
|
+
"url": "$CL_GITLAB_ENVIRONMENT_URL",
|
|
2248
2135
|
},
|
|
2249
2136
|
"image": "path/to/docker/kubernetes:the-version",
|
|
2250
2137
|
"interruptible": true,
|
|
@@ -2275,113 +2162,163 @@ mongodb:
|
|
|
2275
2162
|
},
|
|
2276
2163
|
],
|
|
2277
2164
|
"script": [
|
|
2165
|
+
"echo -e "\\e[0Ksection_start:$(date +%s):injectvars[collapsed=true]\\r\\e[0KInjecting variables"",
|
|
2166
|
+
"export ENV_SHORT="stage"",
|
|
2167
|
+
"export APP_DIR="api"",
|
|
2168
|
+
"export ENV_TYPE="stage"",
|
|
2169
|
+
"export BUILD_INFO_BUILD_ID="$(git describe --tags 2>/dev/null || git rev-parse HEAD)"",
|
|
2170
|
+
"export BUILD_INFO_BUILD_TIME="$CI_JOB_STARTED_AT"",
|
|
2171
|
+
"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")"",
|
|
2172
|
+
"export HOST="api.stage.test-app.pan.panter.cloud"",
|
|
2173
|
+
"export ROOT_URL="https://api.stage.test-app.pan.panter.cloud"",
|
|
2174
|
+
"export HOST_INTERNAL="api.stage.test-app.pan.panter.cloud"",
|
|
2175
|
+
"export HOST_CANONICAL="api.stage.test-app.pan.panter.cloud"",
|
|
2176
|
+
"export ROOT_URL_INTERNAL="https://api.stage.test-app.pan.panter.cloud"",
|
|
2177
|
+
"export KUBE_NAMESPACE="pan-test-app-stage"",
|
|
2178
|
+
"export KUBE_APP_NAME="api"",
|
|
2179
|
+
"export KUBE_APP_NAME_PREFIX=""",
|
|
2180
|
+
"export MONGODB_ROOT_PASSWORD="$CL_stage_api_MONGODB_ROOT_PASSWORD"",
|
|
2181
|
+
"export MONGODB_REPLICASET_KEY="$CL_stage_api_MONGODB_REPLICASET_KEY"",
|
|
2182
|
+
"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\\"]"",
|
|
2183
|
+
"export DOCKER_REGISTRY="$CI_REGISTRY"",
|
|
2184
|
+
"export DOCKER_CACHE_IMAGE="$CI_REGISTRY_IMAGE/caches/api"",
|
|
2185
|
+
"export DOCKER_IMAGE_NAME="stage/api"",
|
|
2186
|
+
"export DOCKER_IMAGE="$CI_REGISTRY_IMAGE/$DOCKER_IMAGE_NAME"",
|
|
2187
|
+
"export DOCKER_IMAGE_TAG="$CI_COMMIT_SHA"",
|
|
2188
|
+
"export RELEASE_NAME="pan-test-app-stage-api"",
|
|
2189
|
+
"export HELM_EXPERIMENTAL_OCI="1"",
|
|
2190
|
+
"export KUBE_DOCKER_IMAGE_PULL_SECRET="gitlab-registry-api"",
|
|
2191
|
+
"export HELM_GITLAB_CHART_NAME="/helm-charts/the-panter-chart"",
|
|
2192
|
+
"export HELM_ARGS=""",
|
|
2193
|
+
"export COMPONENT_NAME="api"",
|
|
2194
|
+
"export BUILD_ID="$(git describe --tags 2>/dev/null || git rev-parse HEAD)"",
|
|
2195
|
+
"echo -e "\\e[0Ksection_end:$(date +%s):injectvars\\r\\e[0K"",
|
|
2278
2196
|
"kubectl config set-cluster "kube-pan-test-app-stage-api" --server="$CL_stage_api_KUBE_URL" --certificate-authority <(echo $CL_stage_api_KUBE_CA_PEM | base64 -d) --embed-certs=true",
|
|
2279
2197
|
"kubectl config set-credentials "kube-pan-test-app-stage-api" --token="$CL_stage_api_KUBE_TOKEN"",
|
|
2280
2198
|
"kubectl config set-context "kube-pan-test-app-stage-api" --cluster="kube-pan-test-app-stage-api" --user="kube-pan-test-app-stage-api" --namespace="pan-test-app-stage"",
|
|
2281
2199
|
"kubectl config use-context "kube-pan-test-app-stage-api"",
|
|
2282
|
-
"
|
|
2283
|
-
"
|
|
2284
|
-
|
|
2285
|
-
"/dtrackuploader https://dep.panter.swiss/ "$DT_KEY_PROD" upload "pan-test-app/api" "https://api.stage.test-app.pan.panter.cloud" "__sbom.json" vex.json || true",
|
|
2286
|
-
"echo deployment successful ๐ป",
|
|
2287
|
-
],
|
|
2288
|
-
"stage": "deploy stage",
|
|
2289
|
-
"variables": {
|
|
2290
|
-
"APP_DIR": "api",
|
|
2291
|
-
"BUILD_ID": "some-id",
|
|
2292
|
-
"BUILD_INFO_BUILD_TIME": "01-01-2023 12:13:14",
|
|
2293
|
-
"BUILD_INFO_CURRENT_VERSION": "3.2.1",
|
|
2294
|
-
"BUILD_INFO_ID": "some-id",
|
|
2295
|
-
"COMPONENT_NAME": "api",
|
|
2296
|
-
"DOCKER_CACHE_IMAGE": "$CI_REGISTRY_IMAGE/caches/api",
|
|
2297
|
-
"DOCKER_IMAGE": "$CI_REGISTRY_IMAGE/$DOCKER_IMAGE_NAME",
|
|
2298
|
-
"DOCKER_IMAGE_NAME": "stage/api",
|
|
2299
|
-
"DOCKER_IMAGE_TAG": "$CI_COMMIT_SHA",
|
|
2300
|
-
"DOCKER_REGISTRY": "$CI_REGISTRY",
|
|
2301
|
-
"ENV_SHORT": "stage",
|
|
2302
|
-
"ENV_TYPE": "stage",
|
|
2303
|
-
"HELM_ARGS": "",
|
|
2304
|
-
"HELM_EXPERIMENTAL_OCI": "1",
|
|
2305
|
-
"HELM_GITLAB_CHART_NAME": "/helm-charts/the-panter-chart",
|
|
2306
|
-
"HOST": "api.stage.test-app.pan.panter.cloud",
|
|
2307
|
-
"HOST_CANONICAL": "api.stage.test-app.pan.panter.cloud",
|
|
2308
|
-
"HOST_INTERNAL": "api.stage.test-app.pan.panter.cloud",
|
|
2309
|
-
"KUBERNETES_CPU_REQUEST": "0.5",
|
|
2310
|
-
"KUBERNETES_MEMORY_LIMIT": "400Mi",
|
|
2311
|
-
"KUBERNETES_MEMORY_REQUEST": "200Mi",
|
|
2312
|
-
"KUBE_APP_NAME": "api",
|
|
2313
|
-
"KUBE_APP_NAME_PREFIX": "",
|
|
2314
|
-
"KUBE_DOCKER_IMAGE_PULL_SECRET": "gitlab-registry-api",
|
|
2315
|
-
"KUBE_NAMESPACE": "pan-test-app-stage",
|
|
2316
|
-
"KUBE_VALUES": "env:
|
|
2200
|
+
"echo -e "\\e[0Ksection_start:$(date +%s):writeallvalues[collapsed=true]\\r\\e[0KWrite __all_values.yml for helm deployment"",
|
|
2201
|
+
"cat > __all_values.yml <<EOF
|
|
2202
|
+
env:
|
|
2317
2203
|
secret:
|
|
2318
|
-
MONGODB_ROOT_PASSWORD:
|
|
2319
|
-
|
|
2320
|
-
|
|
2321
|
-
|
|
2204
|
+
MONGODB_ROOT_PASSWORD: |-
|
|
2205
|
+
$(printf %s "$CL_stage_api_MONGODB_ROOT_PASSWORD" | sed 's/^/ /')
|
|
2206
|
+
MONGODB_REPLICASET_KEY: |-
|
|
2207
|
+
$(printf %s "$CL_stage_api_MONGODB_REPLICASET_KEY" | sed 's/^/ /')
|
|
2208
|
+
MONGO_URL: |-
|
|
2209
|
+
mongodb://root:$CL_stage_api_MONGODB_ROOT_PASSWORD@api-mongodb-0.api-mongodb-headless.pan-test-app-stage.svc.cluster.local:27017,api-mongodb-1.api-mongodb-headless.pan-test-app-stage.svc.cluster.local:27017/app?replicaSet=rs0&authSource=admin
|
|
2210
|
+
MONGO_OPLOG_URL: |-
|
|
2211
|
+
mongodb://root:$CL_stage_api_MONGODB_ROOT_PASSWORD@api-mongodb-0.api-mongodb-headless.pan-test-app-stage.svc.cluster.local:27017,api-mongodb-1.api-mongodb-headless.pan-test-app-stage.svc.cluster.local:27017/local?replicaSet=rs0&authSource=admin
|
|
2322
2212
|
public:
|
|
2323
|
-
ENV_SHORT:
|
|
2324
|
-
|
|
2325
|
-
|
|
2326
|
-
|
|
2327
|
-
|
|
2328
|
-
|
|
2329
|
-
|
|
2330
|
-
|
|
2331
|
-
|
|
2332
|
-
|
|
2333
|
-
|
|
2334
|
-
|
|
2335
|
-
|
|
2336
|
-
|
|
2337
|
-
|
|
2213
|
+
ENV_SHORT: |-
|
|
2214
|
+
stage
|
|
2215
|
+
APP_DIR: |-
|
|
2216
|
+
api
|
|
2217
|
+
ENV_TYPE: |-
|
|
2218
|
+
stage
|
|
2219
|
+
BUILD_INFO_BUILD_ID: |-
|
|
2220
|
+
$(printf %s "$(git describe --tags 2>/dev/null || git rev-parse HEAD)" | sed 's/^/ /')
|
|
2221
|
+
BUILD_INFO_BUILD_TIME: |-
|
|
2222
|
+
$(printf %s "$CI_JOB_STARTED_AT" | sed 's/^/ /')
|
|
2223
|
+
BUILD_INFO_CURRENT_VERSION: |-
|
|
2224
|
+
$(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/^/ /')
|
|
2225
|
+
HOST: |-
|
|
2226
|
+
api.stage.test-app.pan.panter.cloud
|
|
2227
|
+
ROOT_URL: |-
|
|
2228
|
+
https://api.stage.test-app.pan.panter.cloud
|
|
2229
|
+
HOST_INTERNAL: |-
|
|
2230
|
+
api.stage.test-app.pan.panter.cloud
|
|
2231
|
+
HOST_CANONICAL: |-
|
|
2232
|
+
api.stage.test-app.pan.panter.cloud
|
|
2233
|
+
ROOT_URL_INTERNAL: |-
|
|
2234
|
+
https://api.stage.test-app.pan.panter.cloud
|
|
2235
|
+
KUBE_NAMESPACE: |-
|
|
2236
|
+
pan-test-app-stage
|
|
2237
|
+
KUBE_APP_NAME: |-
|
|
2238
|
+
api
|
|
2239
|
+
KUBE_APP_NAME_PREFIX: ""
|
|
2240
|
+
_ALL_ENV_VAR_KEYS: |-
|
|
2241
|
+
["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"]
|
|
2338
2242
|
application:
|
|
2339
|
-
host:
|
|
2340
|
-
|
|
2243
|
+
host: |-
|
|
2244
|
+
api.stage.test-app.pan.panter.cloud
|
|
2245
|
+
command: |-
|
|
2246
|
+
node main.js
|
|
2341
2247
|
livenessProbe:
|
|
2342
2248
|
httpGet:
|
|
2343
|
-
path:
|
|
2249
|
+
path: |-
|
|
2250
|
+
__health
|
|
2344
2251
|
readinessProbe:
|
|
2345
2252
|
httpGet:
|
|
2346
|
-
path:
|
|
2253
|
+
path: |-
|
|
2254
|
+
__health
|
|
2347
2255
|
startupProbe:
|
|
2348
2256
|
httpGet:
|
|
2349
|
-
path:
|
|
2257
|
+
path: |-
|
|
2258
|
+
__health
|
|
2350
2259
|
mongodb:
|
|
2351
2260
|
enabled: true
|
|
2352
2261
|
auth:
|
|
2353
2262
|
enabled: true
|
|
2354
|
-
rootPassword:
|
|
2355
|
-
|
|
2263
|
+
rootPassword: |-
|
|
2264
|
+
$CL_stage_api_MONGODB_ROOT_PASSWORD
|
|
2265
|
+
replicaSetKey: |-
|
|
2266
|
+
$CL_stage_api_MONGODB_REPLICASET_KEY
|
|
2356
2267
|
persistence:
|
|
2357
|
-
storageClass:
|
|
2268
|
+
storageClass: |-
|
|
2269
|
+
premium-rwo
|
|
2358
2270
|
backup:
|
|
2359
2271
|
enabled: true
|
|
2360
|
-
hostToBackup:
|
|
2361
|
-
|
|
2362
|
-
|
|
2363
|
-
|
|
2364
|
-
|
|
2365
|
-
|
|
2272
|
+
hostToBackup: |-
|
|
2273
|
+
api-mongodb-0.api-mongodb-headless.pan-test-app-stage.svc.cluster.local:27017
|
|
2274
|
+
pvcToBackup: |-
|
|
2275
|
+
datadir-api-mongodb-0
|
|
2276
|
+
image: |-
|
|
2277
|
+
mrelite/kubectlmongoshell:v1.0
|
|
2278
|
+
schedule: |-
|
|
2279
|
+
0 4 * * *
|
|
2280
|
+
volumeSnapshotClass: |-
|
|
2281
|
+
snapshotclass
|
|
2282
|
+
architecture: |-
|
|
2283
|
+
replicaset
|
|
2366
2284
|
tolerations:
|
|
2367
|
-
- key:
|
|
2368
|
-
|
|
2369
|
-
|
|
2370
|
-
|
|
2285
|
+
- key: |-
|
|
2286
|
+
mongodb
|
|
2287
|
+
operator: |-
|
|
2288
|
+
Equal
|
|
2289
|
+
value: |-
|
|
2290
|
+
true
|
|
2291
|
+
effect: |-
|
|
2292
|
+
NoSchedule
|
|
2293
|
+
|
|
2294
|
+
EOF
|
|
2371
2295
|
",
|
|
2372
|
-
"
|
|
2373
|
-
"
|
|
2374
|
-
"
|
|
2375
|
-
"
|
|
2376
|
-
"
|
|
2377
|
-
"
|
|
2296
|
+
"echo -e "\\e[0Ksection_end:$(date +%s):writeallvalues\\r\\e[0K"",
|
|
2297
|
+
"kubernetesCreateSecret",
|
|
2298
|
+
"kubernetesDeploy",
|
|
2299
|
+
"echo Uploading SBOM to Dependency Track",
|
|
2300
|
+
"/dtrackuploader https://dep.panter.swiss/ "$DT_KEY_PROD" upload "pan-test-app/api" "https://api.stage.test-app.pan.panter.cloud" "__sbom.json" vex.json || true",
|
|
2301
|
+
"echo deployment successful ๐ป",
|
|
2302
|
+
"echo "CL_GITLAB_ENVIRONMENT_URL=https://api.stage.test-app.pan.panter.cloud" >> gitlab_environment.env",
|
|
2303
|
+
],
|
|
2304
|
+
"stage": "deploy stage",
|
|
2305
|
+
"variables": {
|
|
2306
|
+
"KUBERNETES_CPU_REQUEST": "0.5",
|
|
2307
|
+
"KUBERNETES_MEMORY_LIMIT": "400Mi",
|
|
2308
|
+
"KUBERNETES_MEMORY_REQUEST": "200Mi",
|
|
2378
2309
|
},
|
|
2379
2310
|
},
|
|
2380
2311
|
"api ๐ Stop โ ๏ธ | prod ": {
|
|
2312
|
+
"allow_failure": true,
|
|
2313
|
+
"artifacts": {
|
|
2314
|
+
"reports": {
|
|
2315
|
+
"dotenv": "gitlab_environment.env",
|
|
2316
|
+
},
|
|
2317
|
+
},
|
|
2381
2318
|
"environment": {
|
|
2382
2319
|
"action": "stop",
|
|
2383
2320
|
"name": "prod/api",
|
|
2384
|
-
"url": "
|
|
2321
|
+
"url": "$CL_GITLAB_ENVIRONMENT_URL",
|
|
2385
2322
|
},
|
|
2386
2323
|
"image": "path/to/docker/kubernetes:the-version",
|
|
2387
2324
|
"interruptible": true,
|
|
@@ -2395,16 +2332,40 @@ mongodb:
|
|
|
2395
2332
|
},
|
|
2396
2333
|
"rules": [
|
|
2397
2334
|
{
|
|
2398
|
-
"allow_failure": true,
|
|
2399
2335
|
"if": "$CI_COMMIT_BRANCH =~ /^[0-9]+\\.([0-9]+|x)\\.x$/",
|
|
2400
2336
|
"when": "on_success",
|
|
2401
2337
|
},
|
|
2402
2338
|
{
|
|
2403
|
-
"allow_failure": true,
|
|
2404
2339
|
"when": "manual",
|
|
2405
2340
|
},
|
|
2406
2341
|
],
|
|
2407
2342
|
"script": [
|
|
2343
|
+
"echo -e "\\e[0Ksection_start:$(date +%s):injectvars[collapsed=true]\\r\\e[0KInjecting variables"",
|
|
2344
|
+
"export ENV_SHORT="prod"",
|
|
2345
|
+
"export APP_DIR="api"",
|
|
2346
|
+
"export ENV_TYPE="prod"",
|
|
2347
|
+
"export BUILD_INFO_BUILD_ID="$(git describe --tags 2>/dev/null || git rev-parse HEAD)"",
|
|
2348
|
+
"export BUILD_INFO_BUILD_TIME="$CI_JOB_STARTED_AT"",
|
|
2349
|
+
"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")"",
|
|
2350
|
+
"export HOST="api.prod.test-app.pan.panter.cloud"",
|
|
2351
|
+
"export ROOT_URL="https://api.prod.test-app.pan.panter.cloud"",
|
|
2352
|
+
"export HOST_INTERNAL="api.prod.test-app.pan.panter.cloud"",
|
|
2353
|
+
"export HOST_CANONICAL="api.prod.test-app.pan.panter.cloud"",
|
|
2354
|
+
"export ROOT_URL_INTERNAL="https://api.prod.test-app.pan.panter.cloud"",
|
|
2355
|
+
"export KUBE_NAMESPACE="pan-test-app-prod"",
|
|
2356
|
+
"export KUBE_APP_NAME="api"",
|
|
2357
|
+
"export KUBE_APP_NAME_PREFIX=""",
|
|
2358
|
+
"export MONGODB_ROOT_PASSWORD="$CL_prod_api_MONGODB_ROOT_PASSWORD"",
|
|
2359
|
+
"export MONGODB_REPLICASET_KEY="$CL_prod_api_MONGODB_REPLICASET_KEY"",
|
|
2360
|
+
"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\\"]"",
|
|
2361
|
+
"export RELEASE_NAME="pan-test-app-prod-api"",
|
|
2362
|
+
"export HELM_EXPERIMENTAL_OCI="1"",
|
|
2363
|
+
"export KUBE_DOCKER_IMAGE_PULL_SECRET="gitlab-registry-api"",
|
|
2364
|
+
"export HELM_GITLAB_CHART_NAME="/helm-charts/the-panter-chart"",
|
|
2365
|
+
"export HELM_ARGS=""",
|
|
2366
|
+
"export COMPONENT_NAME="api"",
|
|
2367
|
+
"export BUILD_ID="$(git describe --tags 2>/dev/null || git rev-parse HEAD)"",
|
|
2368
|
+
"echo -e "\\e[0Ksection_end:$(date +%s):injectvars\\r\\e[0K"",
|
|
2408
2369
|
"kubectl config set-cluster "kube-pan-test-app-prod-api" --server="$CL_prod_api_KUBE_URL" --certificate-authority <(echo $CL_prod_api_KUBE_CA_PEM | base64 -d) --embed-certs=true",
|
|
2409
2370
|
"kubectl config set-credentials "kube-pan-test-app-prod-api" --token="$CL_prod_api_KUBE_TOKEN"",
|
|
2410
2371
|
"kubectl config set-context "kube-pan-test-app-prod-api" --cluster="kube-pan-test-app-prod-api" --user="kube-pan-test-app-prod-api" --namespace="pan-test-app-prod"",
|
|
@@ -2412,100 +2373,27 @@ mongodb:
|
|
|
2412
2373
|
"kubernetesDelete",
|
|
2413
2374
|
"echo Disabling component in Dependency Track",
|
|
2414
2375
|
"/dtrackuploader https://dep.panter.swiss/ "$DT_KEY_PROD" disable "pan-test-app/api" "https://api.prod.test-app.pan.panter.cloud" || true",
|
|
2376
|
+
"echo "CL_GITLAB_ENVIRONMENT_URL=https://api.prod.test-app.pan.panter.cloud" >> gitlab_environment.env",
|
|
2415
2377
|
],
|
|
2416
2378
|
"stage": "stop prod",
|
|
2417
2379
|
"variables": {
|
|
2418
|
-
"APP_DIR": "api",
|
|
2419
|
-
"BUILD_ID": "some-id",
|
|
2420
|
-
"BUILD_INFO_BUILD_TIME": "01-01-2023 12:13:14",
|
|
2421
|
-
"BUILD_INFO_CURRENT_VERSION": "3.2.1",
|
|
2422
|
-
"BUILD_INFO_ID": "some-id",
|
|
2423
|
-
"COMPONENT_NAME": "api",
|
|
2424
|
-
"ENV_SHORT": "prod",
|
|
2425
|
-
"ENV_TYPE": "prod",
|
|
2426
2380
|
"GIT_STRATEGY": "none",
|
|
2427
|
-
"HELM_ARGS": "",
|
|
2428
|
-
"HELM_EXPERIMENTAL_OCI": "1",
|
|
2429
|
-
"HELM_GITLAB_CHART_NAME": "/helm-charts/the-panter-chart",
|
|
2430
|
-
"HOST": "api.prod.test-app.pan.panter.cloud",
|
|
2431
|
-
"HOST_CANONICAL": "api.prod.test-app.pan.panter.cloud",
|
|
2432
|
-
"HOST_INTERNAL": "api.prod.test-app.pan.panter.cloud",
|
|
2433
2381
|
"KUBERNETES_CPU_REQUEST": "0.5",
|
|
2434
2382
|
"KUBERNETES_MEMORY_LIMIT": "400Mi",
|
|
2435
2383
|
"KUBERNETES_MEMORY_REQUEST": "200Mi",
|
|
2436
|
-
"KUBE_APP_NAME": "api",
|
|
2437
|
-
"KUBE_APP_NAME_PREFIX": "",
|
|
2438
|
-
"KUBE_DOCKER_IMAGE_PULL_SECRET": "gitlab-registry-api",
|
|
2439
|
-
"KUBE_NAMESPACE": "pan-test-app-prod",
|
|
2440
|
-
"KUBE_VALUES": "env:
|
|
2441
|
-
secret:
|
|
2442
|
-
MONGODB_ROOT_PASSWORD: '$CL_prod_api_MONGODB_ROOT_PASSWORD'
|
|
2443
|
-
MONGODB_REPLICASET_KEY: '$CL_prod_api_MONGODB_REPLICASET_KEY'
|
|
2444
|
-
MONGO_URL: 'mongodb://root:$CL_prod_api_MONGODB_ROOT_PASSWORD@api-mongodb-0.api-mongodb-headless.pan-test-app-prod.svc.cluster.local:27017,api-mongodb-1.api-mongodb-headless.pan-test-app-prod.svc.cluster.local:27017/app?replicaSet=rs0&authSource=admin'
|
|
2445
|
-
MONGO_OPLOG_URL: 'mongodb://root:$CL_prod_api_MONGODB_ROOT_PASSWORD@api-mongodb-0.api-mongodb-headless.pan-test-app-prod.svc.cluster.local:27017,api-mongodb-1.api-mongodb-headless.pan-test-app-prod.svc.cluster.local:27017/local?replicaSet=rs0&authSource=admin'
|
|
2446
|
-
public:
|
|
2447
|
-
ENV_SHORT: 'prod'
|
|
2448
|
-
APP_DIR: 'api'
|
|
2449
|
-
ENV_TYPE: 'prod'
|
|
2450
|
-
BUILD_INFO_ID: 'some-id'
|
|
2451
|
-
BUILD_INFO_BUILD_TIME: '01-01-2023 12:13:14'
|
|
2452
|
-
BUILD_INFO_CURRENT_VERSION: '3.2.1'
|
|
2453
|
-
HOST: 'api.prod.test-app.pan.panter.cloud'
|
|
2454
|
-
ROOT_URL: 'https://api.prod.test-app.pan.panter.cloud'
|
|
2455
|
-
HOST_CANONICAL: 'api.prod.test-app.pan.panter.cloud'
|
|
2456
|
-
ROOT_URL_INTERNAL: 'https://api.prod.test-app.pan.panter.cloud'
|
|
2457
|
-
KUBE_NAMESPACE: 'pan-test-app-prod'
|
|
2458
|
-
KUBE_APP_NAME: 'api'
|
|
2459
|
-
KUBE_APP_NAME_PREFIX: ''
|
|
2460
|
-
HOST_INTERNAL: 'api.prod.test-app.pan.panter.cloud'
|
|
2461
|
-
_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"]'
|
|
2462
|
-
application:
|
|
2463
|
-
host: 'api.prod.test-app.pan.panter.cloud'
|
|
2464
|
-
command: 'node main.js'
|
|
2465
|
-
livenessProbe:
|
|
2466
|
-
httpGet:
|
|
2467
|
-
path: '__health'
|
|
2468
|
-
readinessProbe:
|
|
2469
|
-
httpGet:
|
|
2470
|
-
path: '__health'
|
|
2471
|
-
startupProbe:
|
|
2472
|
-
httpGet:
|
|
2473
|
-
path: '__health'
|
|
2474
|
-
mongodb:
|
|
2475
|
-
enabled: true
|
|
2476
|
-
auth:
|
|
2477
|
-
enabled: true
|
|
2478
|
-
rootPassword: '$CL_prod_api_MONGODB_ROOT_PASSWORD'
|
|
2479
|
-
replicaSetKey: '$CL_prod_api_MONGODB_REPLICASET_KEY'
|
|
2480
|
-
persistence:
|
|
2481
|
-
storageClass: 'premium-rwo'
|
|
2482
|
-
backup:
|
|
2483
|
-
enabled: true
|
|
2484
|
-
hostToBackup: 'api-mongodb-0.api-mongodb-headless.pan-test-app-prod.svc.cluster.local:27017'
|
|
2485
|
-
pvcToBackup: 'datadir-api-mongodb-0'
|
|
2486
|
-
image: 'mrelite/kubectlmongoshell:v1.0'
|
|
2487
|
-
schedule: '0 4 * * *'
|
|
2488
|
-
volumeSnapshotClass: 'snapshotclass'
|
|
2489
|
-
architecture: 'replicaset'
|
|
2490
|
-
tolerations:
|
|
2491
|
-
- key: 'mongodb'
|
|
2492
|
-
operator: 'Equal'
|
|
2493
|
-
value: 'true'
|
|
2494
|
-
effect: 'NoSchedule'
|
|
2495
|
-
",
|
|
2496
|
-
"MONGODB_REPLICASET_KEY": "$CL_prod_api_MONGODB_REPLICASET_KEY",
|
|
2497
|
-
"MONGODB_ROOT_PASSWORD": "$CL_prod_api_MONGODB_ROOT_PASSWORD",
|
|
2498
|
-
"RELEASE_NAME": "pan-test-app-prod-api",
|
|
2499
|
-
"ROOT_URL": "https://api.prod.test-app.pan.panter.cloud",
|
|
2500
|
-
"ROOT_URL_INTERNAL": "https://api.prod.test-app.pan.panter.cloud",
|
|
2501
|
-
"_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"]",
|
|
2502
2384
|
},
|
|
2503
2385
|
},
|
|
2504
2386
|
"api ๐ Stop โ ๏ธ | stage ": {
|
|
2387
|
+
"allow_failure": true,
|
|
2388
|
+
"artifacts": {
|
|
2389
|
+
"reports": {
|
|
2390
|
+
"dotenv": "gitlab_environment.env",
|
|
2391
|
+
},
|
|
2392
|
+
},
|
|
2505
2393
|
"environment": {
|
|
2506
2394
|
"action": "stop",
|
|
2507
2395
|
"name": "stage/api",
|
|
2508
|
-
"url": "
|
|
2396
|
+
"url": "$CL_GITLAB_ENVIRONMENT_URL",
|
|
2509
2397
|
},
|
|
2510
2398
|
"image": "path/to/docker/kubernetes:the-version",
|
|
2511
2399
|
"interruptible": true,
|
|
@@ -2519,16 +2407,40 @@ mongodb:
|
|
|
2519
2407
|
},
|
|
2520
2408
|
"rules": [
|
|
2521
2409
|
{
|
|
2522
|
-
"allow_failure": true,
|
|
2523
2410
|
"if": "$CI_COMMIT_BRANCH =~ /^[0-9]+\\.([0-9]+|x)\\.x$/",
|
|
2524
2411
|
"when": "on_success",
|
|
2525
2412
|
},
|
|
2526
2413
|
{
|
|
2527
|
-
"allow_failure": true,
|
|
2528
2414
|
"when": "manual",
|
|
2529
2415
|
},
|
|
2530
2416
|
],
|
|
2531
2417
|
"script": [
|
|
2418
|
+
"echo -e "\\e[0Ksection_start:$(date +%s):injectvars[collapsed=true]\\r\\e[0KInjecting variables"",
|
|
2419
|
+
"export ENV_SHORT="stage"",
|
|
2420
|
+
"export APP_DIR="api"",
|
|
2421
|
+
"export ENV_TYPE="stage"",
|
|
2422
|
+
"export BUILD_INFO_BUILD_ID="$(git describe --tags 2>/dev/null || git rev-parse HEAD)"",
|
|
2423
|
+
"export BUILD_INFO_BUILD_TIME="$CI_JOB_STARTED_AT"",
|
|
2424
|
+
"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")"",
|
|
2425
|
+
"export HOST="api.stage.test-app.pan.panter.cloud"",
|
|
2426
|
+
"export ROOT_URL="https://api.stage.test-app.pan.panter.cloud"",
|
|
2427
|
+
"export HOST_INTERNAL="api.stage.test-app.pan.panter.cloud"",
|
|
2428
|
+
"export HOST_CANONICAL="api.stage.test-app.pan.panter.cloud"",
|
|
2429
|
+
"export ROOT_URL_INTERNAL="https://api.stage.test-app.pan.panter.cloud"",
|
|
2430
|
+
"export KUBE_NAMESPACE="pan-test-app-stage"",
|
|
2431
|
+
"export KUBE_APP_NAME="api"",
|
|
2432
|
+
"export KUBE_APP_NAME_PREFIX=""",
|
|
2433
|
+
"export MONGODB_ROOT_PASSWORD="$CL_stage_api_MONGODB_ROOT_PASSWORD"",
|
|
2434
|
+
"export MONGODB_REPLICASET_KEY="$CL_stage_api_MONGODB_REPLICASET_KEY"",
|
|
2435
|
+
"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\\"]"",
|
|
2436
|
+
"export RELEASE_NAME="pan-test-app-stage-api"",
|
|
2437
|
+
"export HELM_EXPERIMENTAL_OCI="1"",
|
|
2438
|
+
"export KUBE_DOCKER_IMAGE_PULL_SECRET="gitlab-registry-api"",
|
|
2439
|
+
"export HELM_GITLAB_CHART_NAME="/helm-charts/the-panter-chart"",
|
|
2440
|
+
"export HELM_ARGS=""",
|
|
2441
|
+
"export COMPONENT_NAME="api"",
|
|
2442
|
+
"export BUILD_ID="$(git describe --tags 2>/dev/null || git rev-parse HEAD)"",
|
|
2443
|
+
"echo -e "\\e[0Ksection_end:$(date +%s):injectvars\\r\\e[0K"",
|
|
2532
2444
|
"kubectl config set-cluster "kube-pan-test-app-stage-api" --server="$CL_stage_api_KUBE_URL" --certificate-authority <(echo $CL_stage_api_KUBE_CA_PEM | base64 -d) --embed-certs=true",
|
|
2533
2445
|
"kubectl config set-credentials "kube-pan-test-app-stage-api" --token="$CL_stage_api_KUBE_TOKEN"",
|
|
2534
2446
|
"kubectl config set-context "kube-pan-test-app-stage-api" --cluster="kube-pan-test-app-stage-api" --user="kube-pan-test-app-stage-api" --namespace="pan-test-app-stage"",
|
|
@@ -2536,93 +2448,14 @@ mongodb:
|
|
|
2536
2448
|
"kubernetesDelete",
|
|
2537
2449
|
"echo Disabling component in Dependency Track",
|
|
2538
2450
|
"/dtrackuploader https://dep.panter.swiss/ "$DT_KEY_PROD" disable "pan-test-app/api" "https://api.stage.test-app.pan.panter.cloud" || true",
|
|
2451
|
+
"echo "CL_GITLAB_ENVIRONMENT_URL=https://api.stage.test-app.pan.panter.cloud" >> gitlab_environment.env",
|
|
2539
2452
|
],
|
|
2540
2453
|
"stage": "stop stage",
|
|
2541
2454
|
"variables": {
|
|
2542
|
-
"APP_DIR": "api",
|
|
2543
|
-
"BUILD_ID": "some-id",
|
|
2544
|
-
"BUILD_INFO_BUILD_TIME": "01-01-2023 12:13:14",
|
|
2545
|
-
"BUILD_INFO_CURRENT_VERSION": "3.2.1",
|
|
2546
|
-
"BUILD_INFO_ID": "some-id",
|
|
2547
|
-
"COMPONENT_NAME": "api",
|
|
2548
|
-
"ENV_SHORT": "stage",
|
|
2549
|
-
"ENV_TYPE": "stage",
|
|
2550
2455
|
"GIT_STRATEGY": "none",
|
|
2551
|
-
"HELM_ARGS": "",
|
|
2552
|
-
"HELM_EXPERIMENTAL_OCI": "1",
|
|
2553
|
-
"HELM_GITLAB_CHART_NAME": "/helm-charts/the-panter-chart",
|
|
2554
|
-
"HOST": "api.stage.test-app.pan.panter.cloud",
|
|
2555
|
-
"HOST_CANONICAL": "api.stage.test-app.pan.panter.cloud",
|
|
2556
|
-
"HOST_INTERNAL": "api.stage.test-app.pan.panter.cloud",
|
|
2557
2456
|
"KUBERNETES_CPU_REQUEST": "0.5",
|
|
2558
2457
|
"KUBERNETES_MEMORY_LIMIT": "400Mi",
|
|
2559
2458
|
"KUBERNETES_MEMORY_REQUEST": "200Mi",
|
|
2560
|
-
"KUBE_APP_NAME": "api",
|
|
2561
|
-
"KUBE_APP_NAME_PREFIX": "",
|
|
2562
|
-
"KUBE_DOCKER_IMAGE_PULL_SECRET": "gitlab-registry-api",
|
|
2563
|
-
"KUBE_NAMESPACE": "pan-test-app-stage",
|
|
2564
|
-
"KUBE_VALUES": "env:
|
|
2565
|
-
secret:
|
|
2566
|
-
MONGODB_ROOT_PASSWORD: '$CL_stage_api_MONGODB_ROOT_PASSWORD'
|
|
2567
|
-
MONGODB_REPLICASET_KEY: '$CL_stage_api_MONGODB_REPLICASET_KEY'
|
|
2568
|
-
MONGO_URL: 'mongodb://root:$CL_stage_api_MONGODB_ROOT_PASSWORD@api-mongodb-0.api-mongodb-headless.pan-test-app-stage.svc.cluster.local:27017,api-mongodb-1.api-mongodb-headless.pan-test-app-stage.svc.cluster.local:27017/app?replicaSet=rs0&authSource=admin'
|
|
2569
|
-
MONGO_OPLOG_URL: 'mongodb://root:$CL_stage_api_MONGODB_ROOT_PASSWORD@api-mongodb-0.api-mongodb-headless.pan-test-app-stage.svc.cluster.local:27017,api-mongodb-1.api-mongodb-headless.pan-test-app-stage.svc.cluster.local:27017/local?replicaSet=rs0&authSource=admin'
|
|
2570
|
-
public:
|
|
2571
|
-
ENV_SHORT: 'stage'
|
|
2572
|
-
APP_DIR: 'api'
|
|
2573
|
-
ENV_TYPE: 'stage'
|
|
2574
|
-
BUILD_INFO_ID: 'some-id'
|
|
2575
|
-
BUILD_INFO_BUILD_TIME: '01-01-2023 12:13:14'
|
|
2576
|
-
BUILD_INFO_CURRENT_VERSION: '3.2.1'
|
|
2577
|
-
HOST: 'api.stage.test-app.pan.panter.cloud'
|
|
2578
|
-
ROOT_URL: 'https://api.stage.test-app.pan.panter.cloud'
|
|
2579
|
-
HOST_CANONICAL: 'api.stage.test-app.pan.panter.cloud'
|
|
2580
|
-
ROOT_URL_INTERNAL: 'https://api.stage.test-app.pan.panter.cloud'
|
|
2581
|
-
KUBE_NAMESPACE: 'pan-test-app-stage'
|
|
2582
|
-
KUBE_APP_NAME: 'api'
|
|
2583
|
-
KUBE_APP_NAME_PREFIX: ''
|
|
2584
|
-
HOST_INTERNAL: 'api.stage.test-app.pan.panter.cloud'
|
|
2585
|
-
_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"]'
|
|
2586
|
-
application:
|
|
2587
|
-
host: 'api.stage.test-app.pan.panter.cloud'
|
|
2588
|
-
command: 'node main.js'
|
|
2589
|
-
livenessProbe:
|
|
2590
|
-
httpGet:
|
|
2591
|
-
path: '__health'
|
|
2592
|
-
readinessProbe:
|
|
2593
|
-
httpGet:
|
|
2594
|
-
path: '__health'
|
|
2595
|
-
startupProbe:
|
|
2596
|
-
httpGet:
|
|
2597
|
-
path: '__health'
|
|
2598
|
-
mongodb:
|
|
2599
|
-
enabled: true
|
|
2600
|
-
auth:
|
|
2601
|
-
enabled: true
|
|
2602
|
-
rootPassword: '$CL_stage_api_MONGODB_ROOT_PASSWORD'
|
|
2603
|
-
replicaSetKey: '$CL_stage_api_MONGODB_REPLICASET_KEY'
|
|
2604
|
-
persistence:
|
|
2605
|
-
storageClass: 'premium-rwo'
|
|
2606
|
-
backup:
|
|
2607
|
-
enabled: true
|
|
2608
|
-
hostToBackup: 'api-mongodb-0.api-mongodb-headless.pan-test-app-stage.svc.cluster.local:27017'
|
|
2609
|
-
pvcToBackup: 'datadir-api-mongodb-0'
|
|
2610
|
-
image: 'mrelite/kubectlmongoshell:v1.0'
|
|
2611
|
-
schedule: '0 4 * * *'
|
|
2612
|
-
volumeSnapshotClass: 'snapshotclass'
|
|
2613
|
-
architecture: 'replicaset'
|
|
2614
|
-
tolerations:
|
|
2615
|
-
- key: 'mongodb'
|
|
2616
|
-
operator: 'Equal'
|
|
2617
|
-
value: 'true'
|
|
2618
|
-
effect: 'NoSchedule'
|
|
2619
|
-
",
|
|
2620
|
-
"MONGODB_REPLICASET_KEY": "$CL_stage_api_MONGODB_REPLICASET_KEY",
|
|
2621
|
-
"MONGODB_ROOT_PASSWORD": "$CL_stage_api_MONGODB_ROOT_PASSWORD",
|
|
2622
|
-
"RELEASE_NAME": "pan-test-app-stage-api",
|
|
2623
|
-
"ROOT_URL": "https://api.stage.test-app.pan.panter.cloud",
|
|
2624
|
-
"ROOT_URL_INTERNAL": "https://api.stage.test-app.pan.panter.cloud",
|
|
2625
|
-
"_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"]",
|
|
2626
2459
|
},
|
|
2627
2460
|
},
|
|
2628
2461
|
"api ๐งพ sbom | prod ": {
|
|
@@ -2643,6 +2476,8 @@ mongodb:
|
|
|
2643
2476
|
],
|
|
2644
2477
|
},
|
|
2645
2478
|
"script": [
|
|
2479
|
+
"echo -e "\\e[0Ksection_start:$(date +%s):injectvars[collapsed=true]\\r\\e[0KInjecting variables"",
|
|
2480
|
+
"echo -e "\\e[0Ksection_end:$(date +%s):injectvars\\r\\e[0K"",
|
|
2646
2481
|
"trivy fs --quiet --format cyclonedx --output "__sbom.json" api",
|
|
2647
2482
|
],
|
|
2648
2483
|
"stage": "build",
|
|
@@ -2666,6 +2501,8 @@ mongodb:
|
|
|
2666
2501
|
],
|
|
2667
2502
|
},
|
|
2668
2503
|
"script": [
|
|
2504
|
+
"echo -e "\\e[0Ksection_start:$(date +%s):injectvars[collapsed=true]\\r\\e[0KInjecting variables"",
|
|
2505
|
+
"echo -e "\\e[0Ksection_end:$(date +%s):injectvars\\r\\e[0K"",
|
|
2669
2506
|
"trivy fs --quiet --format cyclonedx --output "__sbom.json" api",
|
|
2670
2507
|
],
|
|
2671
2508
|
"stage": "build",
|
|
@@ -2718,7 +2555,7 @@ mongodb:
|
|
|
2718
2555
|
],
|
|
2719
2556
|
"variables": {
|
|
2720
2557
|
"FF_USE_FASTZIP": "true",
|
|
2721
|
-
"GIT_DEPTH": 1,
|
|
2558
|
+
"GIT_DEPTH": "1",
|
|
2722
2559
|
},
|
|
2723
2560
|
"workflow": {
|
|
2724
2561
|
"rules": [
|