@catladder/pipeline 1.144.1 → 1.146.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/bash/BashExpression.d.ts +40 -0
- package/dist/bash/BashExpression.js +124 -0
- package/dist/bash/bashExpressionPerPipelineType.d.ts +6 -0
- package/dist/bash/bashExpressionPerPipelineType.js +11 -0
- package/dist/bash/bashYaml.d.ts +10 -0
- package/dist/bash/bashYaml.js +46 -0
- package/dist/bash/getInjectVarsScript.d.ts +2 -0
- package/dist/bash/getInjectVarsScript.js +45 -0
- package/dist/bash/replaceAsync.d.ts +2 -0
- package/dist/{pipeline/commitInfo/getCommitInfo.js → bash/replaceAsync.js} +49 -21
- package/dist/build/base/__tests__/createArtifactsConfig.test.js +3 -1
- package/dist/build/base/constants.js +3 -1
- package/dist/build/base/createAppBuildJob.d.ts +2 -1
- package/dist/build/base/createAppBuildJob.js +10 -6
- package/dist/build/base/createArtifactsConfig.d.ts +1 -1
- package/dist/build/base/createArtifactsConfig.js +3 -1
- package/dist/build/base/index.js +3 -1
- package/dist/build/base/writeBuildInfo.js +4 -3
- package/dist/build/base/writeDotEnv.js +12 -3
- package/dist/build/custom/__tests__/testJob.test.js +3 -1
- package/dist/build/custom/buildJob.js +4 -12
- package/dist/build/custom/index.js +3 -1
- package/dist/build/custom/testJob.d.ts +1 -1
- package/dist/build/custom/testJob.js +18 -14
- package/dist/build/docker.d.ts +5 -31
- package/dist/build/docker.js +16 -9
- package/dist/build/index.d.ts +1 -1
- package/dist/build/index.js +13 -7
- package/dist/build/node/buildJob.js +4 -12
- package/dist/build/node/cache.js +6 -3
- package/dist/build/node/constants.js +3 -1
- package/dist/build/node/index.js +3 -1
- package/dist/build/node/meteor.js +5 -2
- package/dist/build/node/testJob.js +18 -14
- package/dist/build/node/yarn.d.ts +3 -2
- package/dist/build/node/yarn.js +6 -3
- package/dist/build/rails/build.js +3 -1
- package/dist/build/rails/index.js +3 -1
- package/dist/build/rails/test.js +15 -11
- package/dist/build/sbom.js +3 -1
- package/dist/build/types.d.ts +24 -18
- package/dist/build/types.js +3 -1
- package/dist/bundles/catladder-gitlab/index.js +3 -3
- package/dist/catladder-gitlab.js +10 -54
- package/dist/config/__tests__/configruedEnvs.test.js +3 -1
- package/dist/config/configruedEnvs.js +3 -1
- package/dist/config/index.js +13 -7
- package/dist/config/readConfig.js +6 -5
- package/dist/constants.js +5 -3
- package/dist/context/__tests__/resolveReferences.test.js +40 -8
- package/dist/context/getBuildInfoVariables.d.ts +7 -0
- package/dist/context/getBuildInfoVariables.js +29 -0
- package/dist/context/getEnvConfig.js +3 -1
- package/dist/context/getEnvType.js +3 -1
- package/dist/context/getEnvironment.d.ts +3 -3
- package/dist/context/getEnvironment.js +10 -14
- package/dist/context/getEnvironmentContext.d.ts +7 -3
- package/dist/context/getEnvironmentContext.js +21 -11
- package/dist/context/getEnvironmentVariables.d.ts +26 -5
- package/dist/context/getEnvironmentVariables.js +40 -25
- package/dist/context/getLabels.js +4 -2
- package/dist/context/getReviewSlug.d.ts +4 -0
- package/dist/context/getReviewSlug.js +22 -0
- package/dist/context/index.d.ts +12 -3
- package/dist/context/index.js +21 -15
- package/dist/context/resolveReferences.d.ts +3 -1
- package/dist/context/resolveReferences.js +53 -21
- package/dist/context/transformJobOnlyVars.d.ts +5 -2
- package/dist/context/transformJobOnlyVars.js +4 -2
- package/dist/context/utils/envVars.d.ts +1 -1
- package/dist/context/utils/envVars.js +5 -2
- package/dist/defaults/index.js +3 -1
- package/dist/deploy/base/deploy.d.ts +1 -1
- package/dist/deploy/base/deploy.js +12 -11
- package/dist/deploy/base/index.js +3 -1
- package/dist/deploy/base/rollback.d.ts +1 -1
- package/dist/deploy/base/rollback.js +13 -9
- package/dist/deploy/base/stop.d.ts +1 -1
- package/dist/deploy/base/stop.js +16 -11
- package/dist/deploy/base/types.d.ts +1 -1
- package/dist/deploy/base/types.js +3 -1
- package/dist/deploy/base/variables.js +3 -1
- package/dist/deploy/cloudRun/artifactsRegistry.d.ts +2 -1
- package/dist/deploy/cloudRun/artifactsRegistry.js +6 -4
- package/dist/deploy/cloudRun/cleanup.js +3 -1
- package/dist/deploy/cloudRun/cloudRunRevisions.js +3 -1
- package/dist/deploy/cloudRun/createJobs/cloudRunJobs.js +8 -5
- package/dist/deploy/cloudRun/createJobs/cloudRunServices.d.ts +2 -2
- package/dist/deploy/cloudRun/createJobs/cloudRunServices.js +6 -3
- package/dist/deploy/cloudRun/createJobs/common.d.ts +3 -3
- package/dist/deploy/cloudRun/createJobs/common.js +3 -1
- package/dist/deploy/cloudRun/createJobs/constants.d.ts +1 -0
- package/dist/deploy/cloudRun/createJobs/constants.js +7 -0
- package/dist/deploy/cloudRun/createJobs/getCloudRunDeployScripts.js +10 -4
- package/dist/deploy/cloudRun/createJobs/getCloudRunStopScripts.js +3 -1
- package/dist/deploy/cloudRun/createJobs/index.js +25 -8
- package/dist/deploy/cloudRun/createJobs/volumes.js +3 -1
- package/dist/deploy/cloudRun/index.js +5 -3
- package/dist/deploy/cloudRun/utils/createArgsString.d.ts +2 -1
- package/dist/deploy/cloudRun/utils/createArgsString.js +3 -1
- package/dist/deploy/cloudRun/utils/database.js +13 -13
- package/dist/deploy/cloudRun/utils/gcloudServiceAccountLoginCommands.js +3 -1
- package/dist/deploy/cloudRun/utils/getServiceName.d.ts +1 -1
- package/dist/deploy/cloudRun/utils/getServiceName.js +3 -1
- package/dist/deploy/cloudRun/utils/jobName.d.ts +2 -1
- package/dist/deploy/cloudRun/utils/jobName.js +4 -2
- package/dist/deploy/cloudRun/utils/removeFirstLinesFromCommandOutput.js +3 -1
- package/dist/deploy/cloudSql/utils.d.ts +2 -1
- package/dist/deploy/cloudSql/utils.js +7 -2
- package/dist/deploy/custom/deployJob.js +3 -1
- package/dist/deploy/custom/index.js +3 -1
- package/dist/deploy/dockerTag/deployJob.js +3 -1
- package/dist/deploy/dockerTag/index.js +3 -1
- package/dist/deploy/index.d.ts +4 -3
- package/dist/deploy/index.js +13 -7
- package/dist/deploy/kubernetes/additionalSecretKeys.js +3 -1
- package/dist/deploy/kubernetes/cloudSql/index.d.ts +3 -2
- package/dist/deploy/kubernetes/cloudSql/index.js +6 -4
- package/dist/deploy/kubernetes/deployJob.js +22 -15
- package/dist/deploy/kubernetes/index.js +51 -14
- package/dist/deploy/kubernetes/kubeEnv.d.ts +3 -2
- package/dist/deploy/kubernetes/kubeEnv.js +7 -4
- package/dist/deploy/kubernetes/kubeValues.d.ts +2 -2
- package/dist/deploy/kubernetes/kubeValues.js +4 -5
- package/dist/deploy/kubernetes/mongodb.js +3 -1
- package/dist/deploy/kubernetes/processSecretsAsFiles.d.ts +2 -1
- package/dist/deploy/kubernetes/processSecretsAsFiles.js +3 -1
- package/dist/deploy/sbom.js +3 -1
- package/dist/deploy/types/base.d.ts +8 -2
- package/dist/deploy/types/base.js +3 -1
- package/dist/deploy/types/custom.d.ts +1 -1
- package/dist/deploy/types/custom.js +3 -1
- package/dist/deploy/types/dockerTag.d.ts +1 -1
- package/dist/deploy/types/dockerTag.js +3 -1
- package/dist/deploy/types/googleCloudRun.d.ts +19 -18
- package/dist/deploy/types/googleCloudRun.js +3 -1
- package/dist/deploy/types/index.d.ts +6 -6
- package/dist/deploy/types/index.js +13 -7
- package/dist/deploy/types/kubernetes.d.ts +22 -22
- package/dist/deploy/types/kubernetes.js +3 -1
- package/dist/deploy/utils.js +3 -1
- package/dist/index.d.ts +3 -2
- package/dist/index.js +16 -9
- package/dist/packageInfos.d.ts +2 -0
- package/dist/packageInfos.js +14 -0
- package/dist/pipeline/createAllJobs.d.ts +13 -5
- package/dist/pipeline/createAllJobs.js +21 -10
- package/dist/pipeline/createChildPipeline.d.ts +1 -1
- package/dist/pipeline/createChildPipeline.js +24 -7
- package/dist/pipeline/createJobsForComponent.d.ts +3 -3
- package/dist/pipeline/createJobsForComponent.js +19 -18
- package/dist/pipeline/createMainPipeline.d.ts +3 -0
- package/dist/pipeline/createMainPipeline.js +248 -0
- package/dist/pipeline/generatePipelineFiles.d.ts +2 -0
- package/dist/pipeline/generatePipelineFiles.js +178 -0
- package/dist/pipeline/getPipelineStages.js +3 -1
- package/dist/pipeline/gitlab/createGitlabJobs.d.ts +15 -5
- package/dist/pipeline/gitlab/createGitlabJobs.js +98 -25
- package/dist/pipeline/gitlab/createGitlabPipeline.d.ts +7 -2
- package/dist/pipeline/gitlab/createGitlabPipeline.js +34 -17
- package/dist/pipeline/gitlab/getPipelineTriggerForGitlabChildPipeline.d.ts +1 -0
- package/dist/pipeline/gitlab/getPipelineTriggerForGitlabChildPipeline.js +29 -0
- package/dist/pipeline/gitlab/gitlabReleaseJobs.d.ts +33 -0
- package/dist/pipeline/gitlab/gitlabReleaseJobs.js +24 -0
- package/dist/pipeline/index.d.ts +3 -1
- package/dist/pipeline/index.js +16 -8
- package/dist/pipeline/packageManager.js +4 -2
- package/dist/pipeline/yarn/yarnUtils.js +6 -4
- package/dist/rules/index.d.ts +4 -1
- package/dist/rules/index.js +25 -18
- package/dist/runner/index.d.ts +1 -1
- package/dist/runner/index.js +3 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/dist/types/config.d.ts +18 -15
- package/dist/types/config.js +5 -2
- package/dist/types/context.d.ts +37 -32
- package/dist/types/context.js +3 -1
- package/dist/types/environmentContext.d.ts +11 -7
- package/dist/types/environmentContext.js +3 -1
- package/dist/types/gitlab-ci-yml.d.ts +30 -30
- package/dist/types/gitlab-ci-yml.js +3 -2
- package/dist/types/gitlab-types.d.ts +4 -6
- package/dist/types/gitlab-types.js +3 -1
- package/dist/types/index.js +13 -7
- package/dist/types/jobs.d.ts +23 -6
- package/dist/types/jobs.js +3 -1
- package/dist/types/pipeline.d.ts +4 -3
- package/dist/types/pipeline.js +3 -1
- package/dist/types/utils.d.ts +1 -1
- package/dist/types/utils.js +3 -1
- package/dist/utils/gitlab.js +3 -1
- package/dist/utils/index.d.ts +1 -1
- package/dist/utils/index.js +3 -1
- package/dist/utils/writeFiles.d.ts +7 -0
- package/dist/{pipeline/commitInfo/getBuildId.js → utils/writeFiles.js} +39 -22
- package/examples/__snapshots__/cloud-run-memory-limit.ts.snap +480 -384
- package/examples/__snapshots__/cloud-run-meteor-with-worker.ts.snap +462 -366
- package/examples/__snapshots__/cloud-run-no-cpu-throttling.ts.snap +480 -384
- package/examples/__snapshots__/cloud-run-no-service.ts.snap +501 -393
- package/examples/__snapshots__/cloud-run-non-public.ts.snap +480 -384
- package/examples/__snapshots__/cloud-run-post-stop-job.ts.snap +489 -392
- package/examples/__snapshots__/cloud-run-service-gen2.ts.snap +480 -384
- package/examples/__snapshots__/cloud-run-service-with-volumes.ts.snap +501 -401
- package/examples/__snapshots__/cloud-run-with-sql-reuse-db.ts.snap +1155 -915
- package/examples/__snapshots__/cloud-run-with-sql.ts.snap +1116 -888
- package/examples/__snapshots__/cloud-run-with-worker.ts.snap +482 -386
- package/examples/__snapshots__/custom-build-job-with-tests.ts.snap +452 -356
- package/examples/__snapshots__/custom-build-job.ts.snap +434 -350
- package/examples/__snapshots__/custom-deploy.ts.snap +319 -223
- package/examples/__snapshots__/custom-envs.ts.snap +123 -81
- package/examples/__snapshots__/custom-sbom-java.ts.snap +434 -350
- package/examples/__snapshots__/kubernetes-application-customization.ts.snap +846 -969
- package/examples/__snapshots__/kubernetes-with-cloud-sql-legacy.ts.snap +886 -957
- package/examples/__snapshots__/kubernetes-with-cloud-sql.ts.snap +894 -969
- package/examples/__snapshots__/kubernetes-with-jobs.ts.snap +1626 -1728
- package/examples/__snapshots__/kubernetes-with-mongodb.ts.snap +974 -1137
- package/examples/__snapshots__/local-dot-env.ts.snap +480 -384
- package/examples/__snapshots__/meteor-kubernetes.ts.snap +906 -1069
- package/examples/__snapshots__/multiline-var.ts.snap +4500 -0
- package/examples/__snapshots__/native-app.ts.snap +706 -578
- package/examples/__snapshots__/node-build-with-custom-image.ts.snap +480 -384
- package/examples/__snapshots__/node-build-with-docker-additions.ts.snap +488 -384
- package/examples/__snapshots__/rails-k8s-with-worker.ts.snap +1656 -1942
- package/examples/__snapshots__/wait-for-other-deploy.ts.snap +287 -231
- package/examples/__utils__/helpers.ts +2 -2
- package/examples/custom-deploy.ts +7 -7
- package/examples/multiline-var.ts +64 -0
- package/package.json +5 -8
- package/scripts/generate-gitlab-ci-types.ts +2 -2
- package/src/bash/BashExpression.ts +81 -0
- package/src/bash/bashExpressionPerPipelineType.ts +16 -0
- package/src/bash/bashYaml.ts +46 -0
- package/src/bash/getInjectVarsScript.ts +12 -0
- package/src/bash/replaceAsync.ts +50 -0
- package/src/build/base/__tests__/createArtifactsConfig.test.ts +3 -3
- package/src/build/base/createAppBuildJob.ts +8 -4
- package/src/build/base/createArtifactsConfig.ts +2 -2
- package/src/build/base/index.ts +1 -1
- package/src/build/base/writeBuildInfo.ts +1 -1
- package/src/build/base/writeDotEnv.ts +6 -1
- package/src/build/custom/__tests__/testJob.test.ts +1 -1
- package/src/build/custom/buildJob.ts +4 -6
- package/src/build/custom/testJob.ts +6 -5
- package/src/build/docker.ts +21 -13
- package/src/build/index.ts +1 -1
- package/src/build/node/buildJob.ts +3 -5
- package/src/build/node/cache.ts +4 -4
- package/src/build/node/meteor.ts +1 -1
- package/src/build/node/testJob.ts +6 -5
- package/src/build/node/yarn.ts +14 -9
- package/src/build/rails/test.ts +2 -1
- package/src/build/types.ts +8 -1
- package/src/catladder-gitlab.ts +8 -55
- package/src/config/configruedEnvs.ts +6 -6
- package/src/config/readConfig.ts +4 -5
- package/src/constants.ts +5 -2
- package/src/context/__tests__/resolveReferences.test.ts +11 -6
- package/src/context/getBuildInfoVariables.ts +40 -0
- package/src/context/getEnvConfig.ts +1 -1
- package/src/context/getEnvType.ts +1 -1
- package/src/context/getEnvironment.ts +7 -30
- package/src/context/getEnvironmentContext.ts +25 -29
- package/src/context/getEnvironmentVariables.ts +72 -47
- package/src/context/getReviewSlug.ts +27 -0
- package/src/context/index.ts +26 -25
- package/src/context/resolveReferences.ts +40 -17
- package/src/context/transformJobOnlyVars.ts +6 -3
- package/src/context/utils/envVars.ts +5 -4
- package/src/deploy/base/deploy.ts +25 -23
- package/src/deploy/base/index.ts +1 -1
- package/src/deploy/base/rollback.ts +9 -11
- package/src/deploy/base/stop.ts +9 -10
- package/src/deploy/cloudRun/artifactsRegistry.ts +13 -8
- package/src/deploy/cloudRun/cleanup.ts +3 -3
- package/src/deploy/cloudRun/cloudRunRevisions.ts +3 -3
- package/src/deploy/cloudRun/createJobs/cloudRunJobs.ts +22 -17
- package/src/deploy/cloudRun/createJobs/cloudRunServices.ts +7 -6
- package/src/deploy/cloudRun/createJobs/common.ts +1 -1
- package/src/deploy/cloudRun/createJobs/constants.ts +1 -0
- package/src/deploy/cloudRun/createJobs/getCloudRunDeployScripts.ts +25 -7
- package/src/deploy/cloudRun/createJobs/getCloudRunStopScripts.ts +1 -1
- package/src/deploy/cloudRun/createJobs/index.ts +18 -9
- package/src/deploy/cloudRun/createJobs/volumes.ts +2 -2
- package/src/deploy/cloudRun/index.ts +22 -10
- package/src/deploy/cloudRun/utils/createArgsString.ts +3 -2
- package/src/deploy/cloudRun/utils/database.ts +7 -7
- package/src/deploy/cloudRun/utils/gcloudServiceAccountLoginCommands.ts +1 -1
- package/src/deploy/cloudRun/utils/jobName.ts +7 -2
- package/src/deploy/cloudRun/utils/removeFirstLinesFromCommandOutput.ts +1 -1
- package/src/deploy/cloudSql/utils.ts +13 -10
- package/src/deploy/index.ts +5 -4
- package/src/deploy/kubernetes/cloudSql/index.ts +6 -5
- package/src/deploy/kubernetes/deployJob.ts +28 -14
- package/src/deploy/kubernetes/index.ts +15 -8
- package/src/deploy/kubernetes/kubeEnv.ts +9 -7
- package/src/deploy/kubernetes/kubeValues.ts +5 -6
- package/src/deploy/kubernetes/mongodb.ts +1 -1
- package/src/deploy/kubernetes/processSecretsAsFiles.ts +5 -4
- package/src/deploy/types/base.ts +6 -0
- package/src/deploy/types/googleCloudRun.ts +2 -0
- package/src/deploy/utils.ts +2 -2
- package/src/index.ts +2 -1
- package/src/packageInfos.ts +10 -0
- package/src/pipeline/createAllJobs.ts +28 -14
- package/src/pipeline/createChildPipeline.ts +20 -9
- package/src/pipeline/createJobsForComponent.ts +15 -23
- package/src/pipeline/createMainPipeline.ts +91 -0
- package/src/pipeline/generatePipelineFiles.ts +29 -0
- package/src/pipeline/getPipelineStages.ts +1 -1
- package/src/pipeline/gitlab/createGitlabJobs.ts +182 -59
- package/src/pipeline/gitlab/createGitlabPipeline.ts +16 -14
- package/src/pipeline/gitlab/getPipelineTriggerForGitlabChildPipeline.ts +46 -0
- package/src/pipeline/gitlab/gitlabReleaseJobs.ts +20 -0
- package/src/pipeline/index.ts +2 -0
- package/src/pipeline/packageManager.ts +2 -2
- package/src/pipeline/yarn/yarnUtils.ts +7 -7
- package/src/rules/index.ts +15 -9
- package/src/types/config.ts +12 -3
- package/src/types/context.ts +39 -26
- package/src/types/environmentContext.ts +13 -7
- package/src/types/gitlab-ci-yml.ts +0 -1
- package/src/types/gitlab-types.ts +5 -4
- package/src/types/jobs.ts +29 -4
- package/src/types/pipeline.ts +4 -0
- package/src/types/utils.ts +4 -4
- package/src/utils/gitlab.ts +1 -1
- package/src/utils/index.ts +2 -2
- package/src/utils/writeFiles.ts +40 -0
- package/dist/deploy/cloudRun/createJobs/variables.d.ts +0 -5
- package/dist/deploy/cloudRun/createJobs/variables.js +0 -19
- package/dist/pipeline/commitInfo/getBuildId.d.ts +0 -6
- package/dist/pipeline/commitInfo/getCommitInfo.d.ts +0 -2
- package/src/deploy/cloudRun/createJobs/variables.ts +0 -21
- package/src/pipeline/commitInfo/getBuildId.ts +0 -17
- package/src/pipeline/commitInfo/getCommitInfo.ts +0 -15
|
@@ -15,11 +15,17 @@ export const DEPLOY_JOB_NAME = "🚀 Deploy";
|
|
|
15
15
|
|
|
16
16
|
export type DeployJobDefinition = Pick<
|
|
17
17
|
CatladderJob,
|
|
18
|
-
|
|
18
|
+
| "script"
|
|
19
|
+
| "variables"
|
|
20
|
+
| "image"
|
|
21
|
+
| "cache"
|
|
22
|
+
| "artifacts"
|
|
23
|
+
| "services"
|
|
24
|
+
| "runnerVariables"
|
|
19
25
|
>;
|
|
20
26
|
export const createDeployJob = (
|
|
21
27
|
context: Context,
|
|
22
|
-
jobDefinition: DeployJobDefinition
|
|
28
|
+
jobDefinition: DeployJobDefinition,
|
|
23
29
|
): CatladderJob => {
|
|
24
30
|
const hasDocker = requiresDockerBuild(context);
|
|
25
31
|
const isStoppable = contextIsStoppable(context);
|
|
@@ -28,8 +34,8 @@ export const createDeployJob = (
|
|
|
28
34
|
context.environment.envType === "review"
|
|
29
35
|
? "1 week"
|
|
30
36
|
: context.environment.envType === "dev"
|
|
31
|
-
|
|
32
|
-
|
|
37
|
+
? "4 weeks"
|
|
38
|
+
: undefined;
|
|
33
39
|
|
|
34
40
|
// if auto or manual is configured explicitly, use that
|
|
35
41
|
const whenDeployDefined =
|
|
@@ -41,8 +47,8 @@ export const createDeployJob = (
|
|
|
41
47
|
context.environment.envType !== "prod"
|
|
42
48
|
? "auto" // is not stage, auto deploy
|
|
43
49
|
: context.componentConfig.env?.stage === false
|
|
44
|
-
|
|
45
|
-
|
|
50
|
+
? "auto" // is prod, but no staging, auto deploy
|
|
51
|
+
: "manual"; // manually deploy
|
|
46
52
|
const whenDeploy = whenDeployDefined ? whenDeployDefined : whenDeployDefault;
|
|
47
53
|
|
|
48
54
|
return {
|
|
@@ -77,19 +83,11 @@ export const createDeployJob = (
|
|
|
77
83
|
artifacts: false,
|
|
78
84
|
},
|
|
79
85
|
], // workaround for https://gitlab.com/gitlab-org/gitlab/-/issues/220758
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
? {
|
|
83
|
-
when: "on_success",
|
|
84
|
-
}
|
|
85
|
-
: {
|
|
86
|
-
when: "manual",
|
|
87
|
-
},
|
|
88
|
-
],
|
|
86
|
+
when: whenDeploy === "auto" ? "on_success" : "manual",
|
|
87
|
+
|
|
89
88
|
allow_failure: whenDeploy === "manual" ? true : false,
|
|
90
89
|
stage: "deploy",
|
|
91
90
|
variables: {
|
|
92
|
-
...DEPLOY_RUNNER_VARIABLES,
|
|
93
91
|
...context.environment.envVars,
|
|
94
92
|
...(hasDocker ? getDockerImageVariables(context) : {}),
|
|
95
93
|
...context.environment.jobOnlyVars.deploy.envVars,
|
|
@@ -98,15 +96,19 @@ export const createDeployJob = (
|
|
|
98
96
|
: {}),
|
|
99
97
|
...jobDefinition.variables,
|
|
100
98
|
},
|
|
101
|
-
|
|
102
|
-
...
|
|
103
|
-
...(
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
auto_stop_in: autoStop,
|
|
107
|
-
}
|
|
99
|
+
runnerVariables: {
|
|
100
|
+
...DEPLOY_RUNNER_VARIABLES,
|
|
101
|
+
...(jobDefinition.runnerVariables ?? {}),
|
|
102
|
+
...(context.componentConfig.deploy
|
|
103
|
+
? context.componentConfig.deploy.runnerVariables ?? {}
|
|
108
104
|
: {}),
|
|
109
105
|
},
|
|
106
|
+
environment: isStoppable
|
|
107
|
+
? {
|
|
108
|
+
on_stop: STOP_JOB_NAME,
|
|
109
|
+
auto_stop_in: autoStop,
|
|
110
|
+
}
|
|
111
|
+
: undefined,
|
|
110
112
|
jobTags: context.componentConfig.deploy
|
|
111
113
|
? context.componentConfig.deploy.jobTags
|
|
112
114
|
: undefined,
|
package/src/deploy/base/index.ts
CHANGED
|
@@ -6,32 +6,30 @@ export const ROLLBACK_JOB_NAME = "↩️ Rollback ⚠️";
|
|
|
6
6
|
|
|
7
7
|
export type RollbackJobDefinition = Pick<
|
|
8
8
|
CatladderJob,
|
|
9
|
-
"script" | "variables" | "image"
|
|
9
|
+
"script" | "variables" | "runnerVariables" | "image"
|
|
10
10
|
>;
|
|
11
11
|
export const createRollbackJob = (
|
|
12
12
|
context: Context,
|
|
13
|
-
jobDefinition: RollbackJobDefinition
|
|
13
|
+
jobDefinition: RollbackJobDefinition,
|
|
14
14
|
): CatladderJob => {
|
|
15
15
|
return {
|
|
16
16
|
name: ROLLBACK_JOB_NAME,
|
|
17
17
|
image: jobDefinition.image,
|
|
18
18
|
envMode: "stagePerEnv", // makes it easier to run manual tasks er env
|
|
19
19
|
needs: [], // can be executed even if the deploy job failed
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
when: "manual",
|
|
23
|
-
allow_failure: true,
|
|
24
|
-
},
|
|
25
|
-
],
|
|
20
|
+
allow_failure: true,
|
|
21
|
+
when: "manual",
|
|
26
22
|
variables: {
|
|
27
|
-
...DEPLOY_RUNNER_VARIABLES,
|
|
28
23
|
...context.environment.jobOnlyVars.deploy.envVars,
|
|
29
|
-
GIT_STRATEGY: "none",
|
|
30
24
|
...jobDefinition.variables,
|
|
31
25
|
},
|
|
26
|
+
runnerVariables: {
|
|
27
|
+
...DEPLOY_RUNNER_VARIABLES,
|
|
28
|
+
GIT_STRATEGY: "none",
|
|
29
|
+
...(jobDefinition.runnerVariables ?? {}),
|
|
30
|
+
},
|
|
32
31
|
stage: "rollback",
|
|
33
32
|
environment: {
|
|
34
|
-
...context.environment.gitlabEnvironment,
|
|
35
33
|
action: "access",
|
|
36
34
|
},
|
|
37
35
|
|
package/src/deploy/base/stop.ts
CHANGED
|
@@ -6,37 +6,36 @@ export const STOP_JOB_NAME = "🛑 Stop ⚠️";
|
|
|
6
6
|
|
|
7
7
|
export type StopJobDefinition = Pick<
|
|
8
8
|
CatladderJob,
|
|
9
|
-
"script" | "variables" | "image"
|
|
9
|
+
"script" | "variables" | "image" | "runnerVariables"
|
|
10
10
|
>;
|
|
11
11
|
export const createStopJob = (
|
|
12
12
|
context: Context,
|
|
13
|
-
jobDefinition: StopJobDefinition
|
|
13
|
+
jobDefinition: StopJobDefinition,
|
|
14
14
|
): CatladderJob => {
|
|
15
15
|
return {
|
|
16
16
|
name: STOP_JOB_NAME,
|
|
17
17
|
image: jobDefinition.image,
|
|
18
18
|
envMode: "stagePerEnv", // makes it easier to run manual tasks er env
|
|
19
19
|
needs: [], // can be executed even if the deploy job failed
|
|
20
|
+
allow_failure: true,
|
|
21
|
+
when: "manual", // stop is always manual
|
|
20
22
|
rules: [
|
|
21
23
|
{
|
|
22
24
|
if: "$CI_COMMIT_BRANCH =~ /^[0-9]+\\.([0-9]+|x)\\.x$/", // automatic on hotfix branches
|
|
23
25
|
when: "on_success",
|
|
24
|
-
allow_failure: true,
|
|
25
|
-
},
|
|
26
|
-
{
|
|
27
|
-
when: "manual",
|
|
28
|
-
allow_failure: true,
|
|
29
26
|
},
|
|
30
27
|
],
|
|
31
28
|
variables: {
|
|
32
|
-
...DEPLOY_RUNNER_VARIABLES,
|
|
33
29
|
...context.environment.jobOnlyVars.deploy.envVars,
|
|
34
|
-
GIT_STRATEGY: "none",
|
|
35
30
|
...jobDefinition.variables,
|
|
36
31
|
},
|
|
32
|
+
runnerVariables: {
|
|
33
|
+
...DEPLOY_RUNNER_VARIABLES,
|
|
34
|
+
GIT_STRATEGY: "none",
|
|
35
|
+
...jobDefinition.runnerVariables,
|
|
36
|
+
},
|
|
37
37
|
stage: "stop",
|
|
38
38
|
environment: {
|
|
39
|
-
...context.environment.gitlabEnvironment,
|
|
40
39
|
action: "stop",
|
|
41
40
|
},
|
|
42
41
|
script: jobDefinition.script,
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
import type { StringOrBashExpression } from "../../bash/BashExpression";
|
|
2
|
+
import { joinBashExpressions } from "../../bash/BashExpression";
|
|
1
3
|
import type { Context } from "../../types/context";
|
|
2
4
|
import { allowFailureInScripts } from "../../utils/gitlab";
|
|
3
5
|
import { isOfDeployType } from "../types";
|
|
@@ -34,7 +36,7 @@ export const getArtifactsRegistryDockerUrl = (context: Context) => {
|
|
|
34
36
|
*/
|
|
35
37
|
export const getArtifactsRegistryImageName = (
|
|
36
38
|
context: Context,
|
|
37
|
-
lecacyReviewImageName = false
|
|
39
|
+
lecacyReviewImageName = false,
|
|
38
40
|
) => {
|
|
39
41
|
if (lecacyReviewImageName && context.environment.envType !== "review") {
|
|
40
42
|
throw new Error("lecacyReviewImageName is only allowed for review app");
|
|
@@ -46,11 +48,11 @@ export const getArtifactsRegistryImageName = (
|
|
|
46
48
|
context.environment.shortName,
|
|
47
49
|
context.componentName,
|
|
48
50
|
|
|
49
|
-
...(context.environment.
|
|
50
|
-
? [context.
|
|
51
|
+
...(context.environment.reviewSlug && !lecacyReviewImageName
|
|
52
|
+
? [context.environment.reviewSlug]
|
|
51
53
|
: []),
|
|
52
54
|
];
|
|
53
|
-
return gcloudImagePath
|
|
55
|
+
return joinBashExpressions(gcloudImagePath, "/");
|
|
54
56
|
};
|
|
55
57
|
|
|
56
58
|
export const getArtifactsRegistryBuildCacheImage = (context: Context) => {
|
|
@@ -63,7 +65,10 @@ export const getArtifactsRegistryBuildCacheImage = (context: Context) => {
|
|
|
63
65
|
export const getArtifactsRegistryImage = (context: Context) =>
|
|
64
66
|
`${getArtifactsRegistryImageName(context)}:$DOCKER_IMAGE_TAG`;
|
|
65
67
|
|
|
66
|
-
const getDeleteImageCommands = (
|
|
68
|
+
const getDeleteImageCommands = (
|
|
69
|
+
fullImageName: StringOrBashExpression,
|
|
70
|
+
keepNewest = 0,
|
|
71
|
+
) => {
|
|
67
72
|
if (keepNewest === 0) {
|
|
68
73
|
// no need to list tags, we delete the whole thing
|
|
69
74
|
return [
|
|
@@ -75,7 +80,7 @@ const getDeleteImageCommands = (fullImageName: string, keepNewest = 0) => {
|
|
|
75
80
|
|
|
76
81
|
const listImagesToDeletecommand = removeFirstLinesFromCommandOutput(
|
|
77
82
|
listAllImagesCommand,
|
|
78
|
-
keepNewest
|
|
83
|
+
keepNewest,
|
|
79
84
|
);
|
|
80
85
|
const deleteImageCommand = `gcloud artifacts docker images delete ${fullImageName}@$version --quiet --delete-tags`;
|
|
81
86
|
|
|
@@ -114,8 +119,8 @@ export const getDeleteUnusedImagesCommands = (context: Context, keep = 0) => {
|
|
|
114
119
|
? allowFailureInScripts(
|
|
115
120
|
getDeleteImageCommands(
|
|
116
121
|
getArtifactsRegistryImageName(context, true),
|
|
117
|
-
0
|
|
118
|
-
)
|
|
122
|
+
0,
|
|
123
|
+
),
|
|
119
124
|
)
|
|
120
125
|
: []),
|
|
121
126
|
];
|
|
@@ -4,7 +4,7 @@ import { getDeleteUnusedRevisionsCommands } from "./cloudRunRevisions";
|
|
|
4
4
|
|
|
5
5
|
export const getRemoveOldRevisionsAndImagesCommand = (
|
|
6
6
|
context: Context,
|
|
7
|
-
when: "postDeploy" | "onStop"
|
|
7
|
+
when: "postDeploy" | "onStop",
|
|
8
8
|
) => {
|
|
9
9
|
if (when === "onStop") {
|
|
10
10
|
// service is already deleted, so we don't need to delete old revisions, just delete all images
|
|
@@ -19,11 +19,11 @@ export const getRemoveOldRevisionsAndImagesCommand = (
|
|
|
19
19
|
|
|
20
20
|
const deleteOldRevisionsCommands = getDeleteUnusedRevisionsCommands(
|
|
21
21
|
context,
|
|
22
|
-
revisionsToKeep
|
|
22
|
+
revisionsToKeep,
|
|
23
23
|
);
|
|
24
24
|
const deleteOldImagesCommands = getDeleteUnusedImagesCommands(
|
|
25
25
|
context,
|
|
26
|
-
imagesToKeep
|
|
26
|
+
imagesToKeep,
|
|
27
27
|
);
|
|
28
28
|
|
|
29
29
|
return [...deleteOldRevisionsCommands, ...deleteOldImagesCommands];
|
|
@@ -9,7 +9,7 @@ const getListRevisionsCommand = (
|
|
|
9
9
|
args: {
|
|
10
10
|
filter?: string;
|
|
11
11
|
format: string;
|
|
12
|
-
}
|
|
12
|
+
},
|
|
13
13
|
) => {
|
|
14
14
|
const serviceName = getServiceName(context);
|
|
15
15
|
const deployConfig = context.componentConfig.deploy;
|
|
@@ -35,7 +35,7 @@ const getListRevisionsCommand = (
|
|
|
35
35
|
|
|
36
36
|
export const getDeleteUnusedRevisionsCommands = (
|
|
37
37
|
context: Context,
|
|
38
|
-
keep: number
|
|
38
|
+
keep: number,
|
|
39
39
|
) => {
|
|
40
40
|
const deployConfig = context.componentConfig.deploy;
|
|
41
41
|
if (deployConfig === false) {
|
|
@@ -54,7 +54,7 @@ export const getDeleteUnusedRevisionsCommands = (
|
|
|
54
54
|
// this removes the newest `revisionsToKeep` images
|
|
55
55
|
const listRevisionsToDeleteCmd = removeFirstLinesFromCommandOutput(
|
|
56
56
|
listAllInactiveRevisionsCmd,
|
|
57
|
-
keep
|
|
57
|
+
keep,
|
|
58
58
|
);
|
|
59
59
|
const deleteRevisionCmd = `gcloud run revisions delete ${createArgsString({
|
|
60
60
|
project: deployConfig.projectId,
|
|
@@ -17,16 +17,21 @@ import {
|
|
|
17
17
|
} from "./common";
|
|
18
18
|
import { getLabels } from "../../../context/getLabels";
|
|
19
19
|
import { createVolumeConfig } from "./volumes";
|
|
20
|
+
import type {
|
|
21
|
+
BashExpression,
|
|
22
|
+
StringOrBashExpression,
|
|
23
|
+
} from "../../../bash/BashExpression";
|
|
24
|
+
import { ENV_VARS_FILENAME } from "./constants";
|
|
20
25
|
|
|
21
26
|
const getJobRunScriptForJob = (
|
|
22
27
|
context: Context,
|
|
23
|
-
jobName:
|
|
24
|
-
wait: boolean
|
|
28
|
+
jobName: StringOrBashExpression,
|
|
29
|
+
wait: boolean,
|
|
25
30
|
) => {
|
|
26
31
|
const commonArgs = getCommonCloudRunArgs(context);
|
|
27
32
|
|
|
28
33
|
const commonArgsString = createArgsString(commonArgs);
|
|
29
|
-
return `${gcloudRunCmd()} jobs execute ${jobName} ${commonArgsString}${
|
|
34
|
+
return `${gcloudRunCmd()} jobs execute ${jobName.toString()} ${commonArgsString}${
|
|
30
35
|
wait ? " --wait" : ""
|
|
31
36
|
}`;
|
|
32
37
|
};
|
|
@@ -61,7 +66,7 @@ export const getDeleteJobsScripts = (context: Context) => {
|
|
|
61
66
|
|
|
62
67
|
export const getJobRunScripts = (
|
|
63
68
|
context: Context,
|
|
64
|
-
when: DeployConfigCloudRunJob["when"]
|
|
69
|
+
when: DeployConfigCloudRunJob["when"],
|
|
65
70
|
) => {
|
|
66
71
|
const jobsWithNames = getCloudRunJobsWithNames(context);
|
|
67
72
|
return jobsWithNames
|
|
@@ -71,8 +76,8 @@ export const getJobRunScripts = (
|
|
|
71
76
|
context,
|
|
72
77
|
jobName,
|
|
73
78
|
// wait for completin on stop jobs, since stop will delete the jobs afterwards, so they will fail
|
|
74
|
-
["preStop", "postStop"].includes(when)
|
|
75
|
-
)
|
|
79
|
+
["preStop", "postStop"].includes(when),
|
|
80
|
+
),
|
|
76
81
|
);
|
|
77
82
|
};
|
|
78
83
|
|
|
@@ -86,8 +91,8 @@ export const getJobCreateScripts = (context: Context) => {
|
|
|
86
91
|
|
|
87
92
|
const getJobCreateScriptsForJob = (
|
|
88
93
|
context: Context,
|
|
89
|
-
jobName:
|
|
90
|
-
job: DeployConfigCloudRunJob
|
|
94
|
+
jobName: StringOrBashExpression,
|
|
95
|
+
job: DeployConfigCloudRunJob,
|
|
91
96
|
) => {
|
|
92
97
|
const commonDeployArgs = getCommonDeployArgs(context);
|
|
93
98
|
|
|
@@ -103,14 +108,14 @@ const getJobCreateScriptsForJob = (
|
|
|
103
108
|
...commonDeployArgs,
|
|
104
109
|
labels: makeLabelString({
|
|
105
110
|
...getLabels(context),
|
|
106
|
-
"cloud-run-job-name": jobName,
|
|
111
|
+
"cloud-run-job-name": jobName.toString(),
|
|
107
112
|
}),
|
|
108
113
|
image: job.image || commonDeployArgs.image,
|
|
109
114
|
cpu: job?.cpu,
|
|
110
115
|
memory: job.memory || "512Mi",
|
|
111
116
|
"task-timeout": job.timeout || "10m",
|
|
112
117
|
parallelism: job.parallelism || 1,
|
|
113
|
-
"env-vars-file":
|
|
118
|
+
"env-vars-file": ENV_VARS_FILENAME,
|
|
114
119
|
"max-retries": 0,
|
|
115
120
|
});
|
|
116
121
|
|
|
@@ -120,9 +125,9 @@ const getJobCreateScriptsForJob = (
|
|
|
120
125
|
return [
|
|
121
126
|
...allowFailureInScripts([`${gcloudRunCmd()} jobs create ${argsString}`]),
|
|
122
127
|
`${gcloudRunCmd(
|
|
123
|
-
requiresBeta ? "beta" : undefined
|
|
128
|
+
requiresBeta ? "beta" : undefined,
|
|
124
129
|
)} jobs update ${argsString} ${createArgsString(
|
|
125
|
-
...createVolumeConfig(job?.volumes, "job")
|
|
130
|
+
...createVolumeConfig(job?.volumes, "job"),
|
|
126
131
|
)}`,
|
|
127
132
|
];
|
|
128
133
|
};
|
|
@@ -161,16 +166,16 @@ const getCloudRunJobsWithSchedule = (context: Context) => {
|
|
|
161
166
|
return jobsWithNames
|
|
162
167
|
.filter(
|
|
163
168
|
(
|
|
164
|
-
entry
|
|
169
|
+
entry,
|
|
165
170
|
): entry is {
|
|
166
|
-
jobName:
|
|
171
|
+
jobName: BashExpression;
|
|
167
172
|
job: DeployConfigCloudRunJobWithSchedule;
|
|
168
|
-
} => entry.job.when === "schedule"
|
|
173
|
+
} => entry.job.when === "schedule",
|
|
169
174
|
)
|
|
170
175
|
.map(({ job, jobName }) => ({
|
|
171
176
|
job,
|
|
172
177
|
jobName,
|
|
173
|
-
schedulerName: jobName
|
|
178
|
+
schedulerName: jobName.concat("-scheduler"),
|
|
174
179
|
}));
|
|
175
180
|
};
|
|
176
181
|
|
|
@@ -183,7 +188,7 @@ const getCloudRunJobsWithNames = (context: Context) => {
|
|
|
183
188
|
const jobsWithNames = Object.entries(deployConfig.jobs ?? {})
|
|
184
189
|
// filter out disabled jobs
|
|
185
190
|
.filter((entry): entry is [string, DeployConfigCloudRunJob] =>
|
|
186
|
-
Boolean(entry[1])
|
|
191
|
+
Boolean(entry[1]),
|
|
187
192
|
)
|
|
188
193
|
.map(([name, job]) => ({
|
|
189
194
|
jobName: getFullJobName(name),
|
|
@@ -10,12 +10,13 @@ import {
|
|
|
10
10
|
getCommonDeployArgs,
|
|
11
11
|
makeLabelString,
|
|
12
12
|
} from "./common";
|
|
13
|
+
import { ENV_VARS_FILENAME } from "./constants";
|
|
13
14
|
import { createVolumeConfig } from "./volumes";
|
|
14
15
|
|
|
15
16
|
export const getServiceDeployScript = (
|
|
16
17
|
context: Context,
|
|
17
18
|
service: DeployConfigCloudRunService | true | undefined,
|
|
18
|
-
nameSuffix?: string
|
|
19
|
+
nameSuffix?: string,
|
|
19
20
|
) => {
|
|
20
21
|
const commonDeployArgs = getCommonDeployArgs(context);
|
|
21
22
|
|
|
@@ -32,7 +33,7 @@ export const getServiceDeployScript = (
|
|
|
32
33
|
? command
|
|
33
34
|
: command.split(" ")
|
|
34
35
|
: undefined;
|
|
35
|
-
const fullServiceName =
|
|
36
|
+
const fullServiceName = serviceName.concat(nameSuffix ?? "");
|
|
36
37
|
const argsString = createArgsString(
|
|
37
38
|
{
|
|
38
39
|
// command as empty string resets it to default (uses the image's entrypoint)
|
|
@@ -42,7 +43,7 @@ export const getServiceDeployScript = (
|
|
|
42
43
|
...getLabels(context),
|
|
43
44
|
"cloud-run-service-name": fullServiceName,
|
|
44
45
|
}),
|
|
45
|
-
"env-vars-file":
|
|
46
|
+
"env-vars-file": ENV_VARS_FILENAME,
|
|
46
47
|
"min-instances": customConfig?.minInstances ?? 0,
|
|
47
48
|
"max-instances": customConfig?.maxInstances ?? 100,
|
|
48
49
|
"cpu-throttling": customConfig?.noCpuThrottling !== true,
|
|
@@ -53,20 +54,20 @@ export const getServiceDeployScript = (
|
|
|
53
54
|
"cpu-boost": true,
|
|
54
55
|
"execution-environment": customConfig?.executionEnvironment,
|
|
55
56
|
},
|
|
56
|
-
...createVolumeConfig(customConfig?.volumes, "service")
|
|
57
|
+
...createVolumeConfig(customConfig?.volumes, "service"),
|
|
57
58
|
);
|
|
58
59
|
// volumes require beta
|
|
59
60
|
const requiresBeta =
|
|
60
61
|
customConfig?.volumes && Object.keys(customConfig?.volumes).length > 0;
|
|
61
62
|
|
|
62
63
|
return `${gcloudRunCmd(
|
|
63
|
-
requiresBeta ? "beta" : undefined
|
|
64
|
+
requiresBeta ? "beta" : undefined,
|
|
64
65
|
)} deploy ${fullServiceName} ${argsString}`;
|
|
65
66
|
};
|
|
66
67
|
|
|
67
68
|
export const getServiceDeleteScript = (
|
|
68
69
|
context: Context,
|
|
69
|
-
serviceSuffix?: string
|
|
70
|
+
serviceSuffix?: string,
|
|
70
71
|
) => {
|
|
71
72
|
const commonArgs = getCommonCloudRunArgs(context);
|
|
72
73
|
|
|
@@ -16,7 +16,7 @@ export const gcloudSchedulerCmd = (version?: "beta") => {
|
|
|
16
16
|
};
|
|
17
17
|
|
|
18
18
|
export const setGoogleProjectNumberScript = (
|
|
19
|
-
deployConfig: DeployConfigCloudRun
|
|
19
|
+
deployConfig: DeployConfigCloudRun,
|
|
20
20
|
) => [
|
|
21
21
|
`export GCLOUD_PROJECT_NUMBER=$(${gcloudCmd()} projects describe ${
|
|
22
22
|
deployConfig.projectId
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export const ENV_VARS_FILENAME = "____envvars.yaml";
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import
|
|
1
|
+
import { isNil, omit } from "lodash";
|
|
2
|
+
import type { Context, UnspecifiedEnvVars } from "../../../types/context";
|
|
2
3
|
import { collapseableSection } from "../../../utils/gitlab";
|
|
3
4
|
import { getDependencyTrackUploadScript } from "../../sbom";
|
|
4
5
|
|
|
@@ -15,22 +16,39 @@ import {
|
|
|
15
16
|
getCloudRunDeployConfig,
|
|
16
17
|
setGoogleProjectNumberScript,
|
|
17
18
|
} from "./common";
|
|
19
|
+
import { GCLOUD_DEPLOY_CREDENTIALS_KEY } from "..";
|
|
20
|
+
import type { StringOrBashExpression } from "../../../bash/BashExpression";
|
|
21
|
+
import { BashExpression, bashEscape } from "../../../bash/BashExpression";
|
|
22
|
+
import { ENV_VARS_FILENAME } from "./constants";
|
|
23
|
+
import {
|
|
24
|
+
writeBashYamlToFileScript,
|
|
25
|
+
yamlBashString,
|
|
26
|
+
} from "../../../bash/bashYaml";
|
|
18
27
|
|
|
19
28
|
export function getCloudRunDeployScripts(context: Context) {
|
|
20
29
|
const deployConfig = getCloudRunDeployConfig(context);
|
|
30
|
+
const allEnvVars = omit(
|
|
31
|
+
context.environment.envVars,
|
|
32
|
+
GCLOUD_DEPLOY_CREDENTIALS_KEY,
|
|
33
|
+
);
|
|
34
|
+
|
|
21
35
|
return [
|
|
22
36
|
...collapseableSection(
|
|
23
37
|
"prepare",
|
|
24
|
-
"Prepare..."
|
|
38
|
+
"Prepare...",
|
|
25
39
|
)([
|
|
26
40
|
...gcloudServiceAccountLoginCommands(context),
|
|
27
41
|
...setGoogleProjectNumberScript(deployConfig),
|
|
28
42
|
]),
|
|
43
|
+
...collapseableSection(
|
|
44
|
+
"writeenvvars",
|
|
45
|
+
"Write env vars to file",
|
|
46
|
+
)(writeBashYamlToFileScript(allEnvVars, ENV_VARS_FILENAME)),
|
|
47
|
+
|
|
29
48
|
...collapseableSection(
|
|
30
49
|
"deploy",
|
|
31
|
-
"Deploy to cloud run"
|
|
50
|
+
"Deploy to cloud run",
|
|
32
51
|
)([
|
|
33
|
-
`echo "$ENV_VARS" > ____envvars.yaml`, // TODO: split secrets out
|
|
34
52
|
...(deployConfig.cloudSql
|
|
35
53
|
? getDatabaseCreateScript(context, deployConfig) // we create the db, so that we can also delete it afterwards
|
|
36
54
|
: []),
|
|
@@ -43,15 +61,15 @@ export function getCloudRunDeployScripts(context: Context) {
|
|
|
43
61
|
: []),
|
|
44
62
|
...Object.entries(deployConfig.additionalServices ?? {}).map(
|
|
45
63
|
([name, service]) =>
|
|
46
|
-
getServiceDeployScript(context, service, "-" + name)
|
|
64
|
+
getServiceDeployScript(context, service, "-" + name),
|
|
47
65
|
),
|
|
48
66
|
...getJobRunScripts(context, "postDeploy"),
|
|
49
67
|
]),
|
|
50
68
|
...collapseableSection(
|
|
51
69
|
"cleanup",
|
|
52
|
-
"Cleanup"
|
|
70
|
+
"Cleanup",
|
|
53
71
|
)(
|
|
54
|
-
getRemoveOldRevisionsAndImagesCommand(context, "postDeploy") // we cleanup inactive images both on deploy and stop
|
|
72
|
+
getRemoveOldRevisionsAndImagesCommand(context, "postDeploy"), // we cleanup inactive images both on deploy and stop
|
|
55
73
|
),
|
|
56
74
|
...getDependencyTrackUploadScript(context),
|
|
57
75
|
];
|
|
@@ -19,7 +19,7 @@ export function getCloudRunStopScripts(context: Context) {
|
|
|
19
19
|
...getJobRunScripts(context, "preStop"),
|
|
20
20
|
...(deployConfig.service !== false ? getServiceDeleteScript(context) : []),
|
|
21
21
|
...Object.entries(deployConfig.additionalServices ?? {}).flatMap(([name]) =>
|
|
22
|
-
getServiceDeleteScript(context, name)
|
|
22
|
+
getServiceDeleteScript(context, name),
|
|
23
23
|
),
|
|
24
24
|
...getJobRunScripts(context, "postStop"),
|
|
25
25
|
...getDeleteSchedulesScripts(context),
|
|
@@ -1,6 +1,3 @@
|
|
|
1
|
-
import { merge } from "lodash";
|
|
2
|
-
|
|
3
|
-
import { getDockerJobBaseProps } from "../../../build/docker";
|
|
4
1
|
import { getRunnerImage } from "../../../runner";
|
|
5
2
|
import type { Context } from "../../../types/context";
|
|
6
3
|
import type { CatladderJob } from "../../../types/jobs";
|
|
@@ -8,12 +5,12 @@ import { allowFailureInScripts } from "../../../utils/gitlab";
|
|
|
8
5
|
import { createDeployementJobs } from "../../base";
|
|
9
6
|
|
|
10
7
|
import { isOfDeployType } from "../../types";
|
|
11
|
-
import {
|
|
8
|
+
import { ENV_VARS_FILENAME } from "./constants";
|
|
12
9
|
import { getCloudRunDeployScripts } from "./getCloudRunDeployScripts";
|
|
13
10
|
import { getCloudRunStopScripts } from "./getCloudRunStopScripts";
|
|
14
11
|
|
|
15
12
|
export const createGoogleCloudRunDeployJobs = (
|
|
16
|
-
context: Context
|
|
13
|
+
context: Context,
|
|
17
14
|
): CatladderJob[] => {
|
|
18
15
|
const deployConfig = context.componentConfig.deploy;
|
|
19
16
|
if (deployConfig === false) {
|
|
@@ -28,12 +25,24 @@ export const createGoogleCloudRunDeployJobs = (
|
|
|
28
25
|
const stopScripts = getCloudRunStopScripts(context);
|
|
29
26
|
|
|
30
27
|
return createDeployementJobs(context, {
|
|
31
|
-
deploy:
|
|
32
|
-
|
|
33
|
-
|
|
28
|
+
deploy: {
|
|
29
|
+
variables: {
|
|
30
|
+
CLOUDSDK_CORE_DISABLE_PROMPTS: "1",
|
|
31
|
+
},
|
|
32
|
+
...(deployConfig.debug
|
|
33
|
+
? {
|
|
34
|
+
artifacts: {
|
|
35
|
+
paths: [
|
|
36
|
+
ENV_VARS_FILENAME, // debug
|
|
37
|
+
],
|
|
38
|
+
when: "always",
|
|
39
|
+
},
|
|
40
|
+
}
|
|
41
|
+
: {}),
|
|
42
|
+
|
|
34
43
|
image: getRunnerImage("gcloud"),
|
|
35
44
|
script: deployScripts,
|
|
36
|
-
}
|
|
45
|
+
},
|
|
37
46
|
stop: {
|
|
38
47
|
image: getRunnerImage("gcloud"),
|
|
39
48
|
variables: {
|
|
@@ -3,7 +3,7 @@ import type { keyValuesArg } from "../utils/createArgsString";
|
|
|
3
3
|
|
|
4
4
|
export const createVolumeConfig = (
|
|
5
5
|
volumes: DeployConfigCloudRunVolumes | undefined,
|
|
6
|
-
type: "service" | "job"
|
|
6
|
+
type: "service" | "job",
|
|
7
7
|
): keyValuesArg[] => {
|
|
8
8
|
if (!volumes) {
|
|
9
9
|
return [];
|
|
@@ -16,7 +16,7 @@ export const createVolumeConfig = (
|
|
|
16
16
|
readonly ? ",readonly=true" : ""
|
|
17
17
|
}`,
|
|
18
18
|
"add-volume-mount": `volume=${volumeName},mount-path=${mountPath}`,
|
|
19
|
-
})
|
|
19
|
+
}),
|
|
20
20
|
),
|
|
21
21
|
type === "service" ? { "execution-environment": "gen2" } : {},
|
|
22
22
|
];
|