@catladder/pipeline 0.0.0-refactor-deploy-5f0bbd8a → 0.0.0-refactor-image-ca767657
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/build/base/createAppBuildJob.d.ts +8 -0
- package/dist/build/base/{createBuildJob.js → createAppBuildJob.js} +3 -3
- package/dist/build/base/index.d.ts +8 -0
- package/dist/build/base/index.js +57 -0
- package/dist/build/custom/buildJob.js +19 -22
- package/dist/build/docker.d.ts +2 -4
- package/dist/build/docker.js +4 -39
- package/dist/build/node/buildJob.js +30 -32
- package/dist/build/node/meteor.js +19 -21
- package/dist/build/rails/build.js +12 -19
- package/dist/build/types.d.ts +4 -3
- package/dist/bundles/catladder-gitlab/index.js +387 -300
- package/dist/constants.js +1 -1
- package/dist/context/getLabels.d.ts +1 -0
- package/dist/context/getLabels.js +1 -0
- package/dist/deploy/base/deploy.d.ts +5 -0
- package/dist/deploy/base/deploy.js +106 -0
- package/dist/deploy/base/index.d.ts +10 -8
- package/dist/deploy/base/index.js +7 -106
- package/dist/deploy/base/rollback.d.ts +4 -2
- package/dist/deploy/base/rollback.js +10 -8
- package/dist/deploy/base/stop.d.ts +5 -0
- package/dist/deploy/base/stop.js +41 -0
- package/dist/deploy/cloudRun/deployJob.js +29 -27
- package/dist/deploy/custom/deployJob.js +14 -11
- package/dist/deploy/dockerTag/deployJob.js +15 -5
- package/dist/deploy/kubernetes/deployJob.js +14 -26
- package/dist/deploy/kubernetes/mongodb.d.ts +1 -1
- package/dist/deploy/kubernetes/mongodb.js +8 -7
- package/dist/deploy/types/index.d.ts +1 -1
- package/dist/pipeline/gitlab/createGitlabJobs.d.ts +1 -0
- package/dist/pipeline/gitlab/createGitlabJobs.js +4 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/dist/types/gitlab-ci-yml.d.ts +769 -0
- package/dist/types/gitlab-ci-yml.js +9 -0
- package/dist/types/gitlab-types.d.ts +12 -85
- package/dist/types/jobs.d.ts +3 -3
- package/examples/__snapshots__/cloud-run-memory-limit.ts.snap +16 -16
- package/examples/__snapshots__/cloud-run-no-cpu-throttling.ts.snap +16 -16
- package/examples/__snapshots__/cloud-run-non-public.ts.snap +16 -16
- package/examples/__snapshots__/cloud-run-with-sql-reuse-db.ts.snap +32 -32
- package/examples/__snapshots__/cloud-run-with-sql.ts.snap +48 -48
- package/examples/__snapshots__/custom-build-job-with-tests.ts.snap +16 -16
- package/examples/__snapshots__/custom-build-job.ts.snap +16 -16
- package/examples/__snapshots__/custom-sbom-java.ts.snap +16 -16
- package/examples/__snapshots__/kubernetes-application-customization.ts.snap +0 -36
- package/examples/__snapshots__/kubernetes-with-cloud-sql-legacy.ts.snap +0 -36
- package/examples/__snapshots__/kubernetes-with-cloud-sql.ts.snap +0 -36
- package/examples/__snapshots__/kubernetes-with-jobs.ts.snap +0 -72
- package/examples/__snapshots__/kubernetes-with-mongodb.ts.snap +0 -36
- package/examples/__snapshots__/meteor-kubernetes.ts.snap +0 -36
- package/examples/__snapshots__/native-app.ts.snap +16 -16
- package/examples/__snapshots__/node-build-with-custom-image.ts.snap +16 -16
- package/examples/__snapshots__/rails-k8s-with-worker.ts.snap +0 -36
- package/package.json +4 -2
- package/scripts/generate-gitlab-ci-types.ts +51 -0
- package/src/build/base/{createBuildJob.ts → createAppBuildJob.ts} +3 -2
- package/src/build/base/index.ts +35 -0
- package/src/build/custom/buildJob.ts +32 -45
- package/src/build/docker.ts +14 -17
- package/src/build/node/buildJob.ts +50 -61
- package/src/build/node/meteor.ts +31 -36
- package/src/build/rails/build.ts +8 -10
- package/src/build/types.ts +4 -8
- package/src/context/getLabels.ts +1 -0
- package/src/deploy/base/deploy.ts +114 -0
- package/src/deploy/base/index.ts +21 -133
- package/src/deploy/base/rollback.ts +15 -3
- package/src/deploy/base/stop.ts +44 -0
- package/src/deploy/cloudRun/deployJob.ts +14 -16
- package/src/deploy/custom/deployJob.ts +17 -20
- package/src/deploy/dockerTag/deployJob.ts +6 -7
- package/src/deploy/kubernetes/deployJob.ts +17 -34
- package/src/deploy/kubernetes/mongodb.ts +3 -2
- package/src/pipeline/gitlab/createGitlabJobs.ts +3 -0
- package/src/types/gitlab-ci-yml.ts +892 -0
- package/src/types/gitlab-types.ts +49 -86
- package/src/types/jobs.ts +3 -4
- package/dist/build/base/createBuildJob.d.ts +0 -7
package/dist/constants.js
CHANGED
|
@@ -2,5 +2,5 @@
|
|
|
2
2
|
|
|
3
3
|
exports.__esModule = true;
|
|
4
4
|
exports.DOCKER_REGISTRY = exports.PIPELINE_IMAGE_TAG = void 0;
|
|
5
|
-
exports.PIPELINE_IMAGE_TAG = "refactor-
|
|
5
|
+
exports.PIPELINE_IMAGE_TAG = "refactor-image-ca767657" || "";
|
|
6
6
|
exports.DOCKER_REGISTRY = "git.panter.ch:5001/catladder/catladder" || "";
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import type { Context } from "../types";
|
|
2
2
|
export declare const getLabels: (context: Context) => {
|
|
3
3
|
"customer-name": string | undefined;
|
|
4
|
+
"component-name": string | undefined;
|
|
4
5
|
"app-name": string | undefined;
|
|
5
6
|
"env-type": string | undefined;
|
|
6
7
|
"env-name": string | undefined;
|
|
@@ -28,6 +28,7 @@ var getLabels = function (context) {
|
|
|
28
28
|
var _a, _b, _c;
|
|
29
29
|
var labels = __assign({
|
|
30
30
|
"customer-name": sanitize(context.fullConfig.customerName),
|
|
31
|
+
"component-name": sanitize(context.componentName),
|
|
31
32
|
"app-name": sanitize(context.fullConfig.appName),
|
|
32
33
|
"env-type": sanitize(context.environment.envType),
|
|
33
34
|
"env-name": sanitize(context.environment.shortName),
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { Context } from "../../types/context";
|
|
2
|
+
import type { CatladderJob } from "../../types/jobs";
|
|
3
|
+
export declare const DEPLOY_JOB_NAME = "\uD83D\uDE80 Deploy";
|
|
4
|
+
export declare type DeployJobDefinition = Pick<CatladderJob, "script" | "variables" | "image" | "cache" | "artifacts" | "services">;
|
|
5
|
+
export declare const createDeployJob: (context: Context, jobDefinition: DeployJobDefinition) => CatladderJob;
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var __assign = this && this.__assign || function () {
|
|
4
|
+
__assign = Object.assign || function (t) {
|
|
5
|
+
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
6
|
+
s = arguments[i];
|
|
7
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];
|
|
8
|
+
}
|
|
9
|
+
return t;
|
|
10
|
+
};
|
|
11
|
+
return __assign.apply(this, arguments);
|
|
12
|
+
};
|
|
13
|
+
var __read = this && this.__read || function (o, n) {
|
|
14
|
+
var m = typeof Symbol === "function" && o[Symbol.iterator];
|
|
15
|
+
if (!m) return o;
|
|
16
|
+
var i = m.call(o),
|
|
17
|
+
r,
|
|
18
|
+
ar = [],
|
|
19
|
+
e;
|
|
20
|
+
try {
|
|
21
|
+
while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
|
|
22
|
+
} catch (error) {
|
|
23
|
+
e = {
|
|
24
|
+
error: error
|
|
25
|
+
};
|
|
26
|
+
} finally {
|
|
27
|
+
try {
|
|
28
|
+
if (r && !r.done && (m = i["return"])) m.call(i);
|
|
29
|
+
} finally {
|
|
30
|
+
if (e) throw e.error;
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
return ar;
|
|
34
|
+
};
|
|
35
|
+
var __spreadArray = this && this.__spreadArray || function (to, from, pack) {
|
|
36
|
+
if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
|
|
37
|
+
if (ar || !(i in from)) {
|
|
38
|
+
if (!ar) ar = Array.prototype.slice.call(from, 0, i);
|
|
39
|
+
ar[i] = from[i];
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
return to.concat(ar || Array.prototype.slice.call(from));
|
|
43
|
+
};
|
|
44
|
+
exports.__esModule = true;
|
|
45
|
+
exports.createDeployJob = exports.DEPLOY_JOB_NAME = void 0;
|
|
46
|
+
var docker_1 = require("../../build/docker");
|
|
47
|
+
var sbom_1 = require("../../build/sbom");
|
|
48
|
+
var sbom_2 = require("../sbom");
|
|
49
|
+
var utils_1 = require("../utils");
|
|
50
|
+
var stop_1 = require("./stop");
|
|
51
|
+
var variables_1 = require("./variables");
|
|
52
|
+
exports.DEPLOY_JOB_NAME = "🚀 Deploy";
|
|
53
|
+
var createDeployJob = function (context, jobDefinition) {
|
|
54
|
+
var _a, _b, _c, _d;
|
|
55
|
+
var hasDocker = (0, docker_1.requiresDockerBuild)(context);
|
|
56
|
+
var isStoppable = (0, utils_1.contextIsStoppable)(context);
|
|
57
|
+
var autoStop = context.environment.envType === "review" ? "2 week" : context.environment.envType === "dev" ? "4 weeks" : undefined;
|
|
58
|
+
// if auto or manual is configured explicitly, use that
|
|
59
|
+
var whenDeployDefined = context.componentConfig.deploy && context.componentConfig.deploy.when ? context.componentConfig.deploy.when : undefined;
|
|
60
|
+
// otherwise auto deploy if env is not prod. If its prod, deploy automatically if stage is disabled
|
|
61
|
+
var whenDeployDefault = context.environment.envType !== "prod" ? "auto" // is not stage, auto deploy
|
|
62
|
+
: ((_a = context.componentConfig.env) === null || _a === void 0 ? void 0 : _a.stage) === false ? "auto" // is prod, but no staging, auto deploy
|
|
63
|
+
: "manual"; // manually deploy
|
|
64
|
+
var whenDeploy = whenDeployDefined ? whenDeployDefined : whenDeployDefault;
|
|
65
|
+
return {
|
|
66
|
+
name: exports.DEPLOY_JOB_NAME,
|
|
67
|
+
script: jobDefinition.script,
|
|
68
|
+
image: jobDefinition.image,
|
|
69
|
+
cache: jobDefinition.cache,
|
|
70
|
+
artifacts: jobDefinition.artifacts,
|
|
71
|
+
services: jobDefinition.services,
|
|
72
|
+
envMode: "stagePerEnv",
|
|
73
|
+
needs: __spreadArray(__spreadArray([], __read((0, sbom_2.sbomDeactivated)(context) ? [] : [{
|
|
74
|
+
job: sbom_1.SBOM_BUILD_JOB_NAME,
|
|
75
|
+
artifacts: true
|
|
76
|
+
}]), false), __read(context.componentConfig.deploy ? (_c = (_b = context.componentConfig.deploy.waitFor) === null || _b === void 0 ? void 0 : _b.map(function (c) {
|
|
77
|
+
return {
|
|
78
|
+
componentName: c,
|
|
79
|
+
job: exports.DEPLOY_JOB_NAME,
|
|
80
|
+
artifacts: false
|
|
81
|
+
};
|
|
82
|
+
})) !== null && _c !== void 0 ? _c : [] : []), false),
|
|
83
|
+
// we don't want to deploy when there is a broken test
|
|
84
|
+
needsStages: [{
|
|
85
|
+
stage: "build",
|
|
86
|
+
artifacts: hasDocker ? false : true
|
|
87
|
+
}, {
|
|
88
|
+
stage: "test",
|
|
89
|
+
artifacts: false
|
|
90
|
+
}],
|
|
91
|
+
rules: [whenDeploy === "auto" ? {
|
|
92
|
+
when: "on_success"
|
|
93
|
+
} : {
|
|
94
|
+
when: "manual"
|
|
95
|
+
}],
|
|
96
|
+
allow_failure: whenDeploy === "manual" ? true : false,
|
|
97
|
+
stage: "deploy",
|
|
98
|
+
variables: __assign(__assign(__assign(__assign(__assign(__assign({}, variables_1.DEPLOY_RUNNER_VARIABLES), context.environment.envVars), hasDocker ? (0, docker_1.getDockerImageVariables)(context) : {}), context.environment.jobOnlyVars.deploy.envVars), context.componentConfig.deploy ? (_d = context.componentConfig.deploy.extraVars) !== null && _d !== void 0 ? _d : {} : {}), jobDefinition.variables),
|
|
99
|
+
environment: __assign(__assign({}, context.environment.gitlabEnvironment), isStoppable ? {
|
|
100
|
+
on_stop: stop_1.STOP_JOB_NAME,
|
|
101
|
+
auto_stop_in: autoStop
|
|
102
|
+
} : {}),
|
|
103
|
+
jobTags: context.componentConfig.deploy ? context.componentConfig.deploy.jobTags : undefined
|
|
104
|
+
};
|
|
105
|
+
};
|
|
106
|
+
exports.createDeployJob = createDeployJob;
|
|
@@ -1,8 +1,10 @@
|
|
|
1
|
-
import type { Context } from "../../types";
|
|
2
|
-
import type {
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
export declare const
|
|
7
|
-
|
|
8
|
-
|
|
1
|
+
import type { Context } from "../../types/context";
|
|
2
|
+
import type { CatladderJob } from "../../types/jobs";
|
|
3
|
+
import { type DeployJobDefinition } from "./deploy";
|
|
4
|
+
import { type RollbackJobDefinition } from "./rollback";
|
|
5
|
+
import { type StopJobDefinition } from "./stop";
|
|
6
|
+
export declare const createDeployementJobs: (context: Context, definitions: {
|
|
7
|
+
deploy: DeployJobDefinition;
|
|
8
|
+
stop?: StopJobDefinition;
|
|
9
|
+
rollback?: RollbackJobDefinition;
|
|
10
|
+
}) => CatladderJob[];
|
|
@@ -1,30 +1,5 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
var __assign = this && this.__assign || function () {
|
|
4
|
-
__assign = Object.assign || function (t) {
|
|
5
|
-
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
6
|
-
s = arguments[i];
|
|
7
|
-
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];
|
|
8
|
-
}
|
|
9
|
-
return t;
|
|
10
|
-
};
|
|
11
|
-
return __assign.apply(this, arguments);
|
|
12
|
-
};
|
|
13
|
-
var __createBinding = this && this.__createBinding || (Object.create ? function (o, m, k, k2) {
|
|
14
|
-
if (k2 === undefined) k2 = k;
|
|
15
|
-
Object.defineProperty(o, k2, {
|
|
16
|
-
enumerable: true,
|
|
17
|
-
get: function () {
|
|
18
|
-
return m[k];
|
|
19
|
-
}
|
|
20
|
-
});
|
|
21
|
-
} : function (o, m, k, k2) {
|
|
22
|
-
if (k2 === undefined) k2 = k;
|
|
23
|
-
o[k2] = m[k];
|
|
24
|
-
});
|
|
25
|
-
var __exportStar = this && this.__exportStar || function (m, exports) {
|
|
26
|
-
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
27
|
-
};
|
|
28
3
|
var __read = this && this.__read || function (o, n) {
|
|
29
4
|
var m = typeof Symbol === "function" && o[Symbol.iterator];
|
|
30
5
|
if (!m) return o;
|
|
@@ -57,85 +32,11 @@ var __spreadArray = this && this.__spreadArray || function (to, from, pack) {
|
|
|
57
32
|
return to.concat(ar || Array.prototype.slice.call(from));
|
|
58
33
|
};
|
|
59
34
|
exports.__esModule = true;
|
|
60
|
-
exports.
|
|
61
|
-
var
|
|
62
|
-
var
|
|
63
|
-
var
|
|
64
|
-
var
|
|
65
|
-
|
|
66
|
-
__exportStar(require("./rollback"), exports);
|
|
67
|
-
exports.DEPLOY_JOB_NAME = "🚀 Deploy";
|
|
68
|
-
exports.STOP_JOB_NAME = "🛑 Stop ⚠️";
|
|
69
|
-
exports.ROLLBACK_JOB_NAME = "↩️ Rollback ⚠️";
|
|
70
|
-
var getBaseDeploymentJob = function (context) {
|
|
71
|
-
var _a, _b, _c, _d;
|
|
72
|
-
var hasDocker = (0, docker_1.requiresDockerBuild)(context);
|
|
73
|
-
var isStoppable = (0, utils_1.contextIsStoppable)(context);
|
|
74
|
-
var autoStop = context.environment.envType === "review" ? "2 week" : context.environment.envType === "dev" ? "4 weeks" : undefined;
|
|
75
|
-
// if auto or manual is configured explicitly, use that
|
|
76
|
-
var whenDeployDefined = context.componentConfig.deploy && context.componentConfig.deploy.when ? context.componentConfig.deploy.when : undefined;
|
|
77
|
-
// otherwise auto deploy if env is not prod. If its prod, deploy automatically if stage is disabled
|
|
78
|
-
var whenDeployDefault = context.environment.envType !== "prod" ? "auto" // is not stage, auto deploy
|
|
79
|
-
: ((_a = context.componentConfig.env) === null || _a === void 0 ? void 0 : _a.stage) === false ? "auto" // is prod, but no staging, auto deploy
|
|
80
|
-
: "manual"; // manually deploy
|
|
81
|
-
var whenDeploy = whenDeployDefined ? whenDeployDefined : whenDeployDefault;
|
|
82
|
-
return {
|
|
83
|
-
name: exports.DEPLOY_JOB_NAME,
|
|
84
|
-
envMode: "stagePerEnv",
|
|
85
|
-
needs: __spreadArray(__spreadArray([], __read((0, sbom_2.sbomDeactivated)(context) ? [] : [{
|
|
86
|
-
job: sbom_1.SBOM_BUILD_JOB_NAME,
|
|
87
|
-
artifacts: true
|
|
88
|
-
}]), false), __read(context.componentConfig.deploy ? (_c = (_b = context.componentConfig.deploy.waitFor) === null || _b === void 0 ? void 0 : _b.map(function (c) {
|
|
89
|
-
return {
|
|
90
|
-
componentName: c,
|
|
91
|
-
job: exports.DEPLOY_JOB_NAME,
|
|
92
|
-
artifacts: false
|
|
93
|
-
};
|
|
94
|
-
})) !== null && _c !== void 0 ? _c : [] : []), false),
|
|
95
|
-
// we don't want to deploy when there is a broken test
|
|
96
|
-
needsStages: [{
|
|
97
|
-
stage: "build",
|
|
98
|
-
artifacts: hasDocker ? false : true
|
|
99
|
-
}, {
|
|
100
|
-
stage: "test",
|
|
101
|
-
artifacts: false
|
|
102
|
-
}],
|
|
103
|
-
rules: [whenDeploy === "auto" ? {
|
|
104
|
-
when: "on_success"
|
|
105
|
-
} : {
|
|
106
|
-
when: "manual"
|
|
107
|
-
}],
|
|
108
|
-
allow_failure: whenDeploy === "manual" ? true : false,
|
|
109
|
-
stage: "deploy",
|
|
110
|
-
variables: __assign(__assign(__assign(__assign(__assign({}, variables_1.DEPLOY_RUNNER_VARIABLES), context.environment.envVars), hasDocker ? (0, docker_1.getDockerImageVariables)(context) : {}), context.environment.jobOnlyVars.deploy.envVars), context.componentConfig.deploy ? (_d = context.componentConfig.deploy.extraVars) !== null && _d !== void 0 ? _d : {} : {}),
|
|
111
|
-
environment: __assign(__assign({}, context.environment.gitlabEnvironment), isStoppable ? {
|
|
112
|
-
on_stop: exports.STOP_JOB_NAME,
|
|
113
|
-
auto_stop_in: autoStop
|
|
114
|
-
} : {}),
|
|
115
|
-
jobTags: context.componentConfig.deploy ? context.componentConfig.deploy.jobTags : undefined
|
|
116
|
-
};
|
|
117
|
-
};
|
|
118
|
-
exports.getBaseDeploymentJob = getBaseDeploymentJob;
|
|
119
|
-
var getBaseDeploymentStopJob = function (context) {
|
|
120
|
-
return {
|
|
121
|
-
name: exports.STOP_JOB_NAME,
|
|
122
|
-
envMode: "stagePerEnv",
|
|
123
|
-
needs: [],
|
|
124
|
-
rules: [{
|
|
125
|
-
"if": "$CI_COMMIT_BRANCH =~ /^[0-9]+\\.([0-9]+|x)\\.x$/",
|
|
126
|
-
when: "on_success",
|
|
127
|
-
allow_failure: true
|
|
128
|
-
}, {
|
|
129
|
-
when: "manual",
|
|
130
|
-
allow_failure: true
|
|
131
|
-
}],
|
|
132
|
-
variables: __assign(__assign(__assign({}, variables_1.DEPLOY_RUNNER_VARIABLES), context.environment.jobOnlyVars.deploy.envVars), {
|
|
133
|
-
GIT_STRATEGY: "none"
|
|
134
|
-
}),
|
|
135
|
-
stage: "stop",
|
|
136
|
-
environment: __assign(__assign({}, context.environment.gitlabEnvironment), {
|
|
137
|
-
action: "stop"
|
|
138
|
-
})
|
|
139
|
-
};
|
|
35
|
+
exports.createDeployementJobs = void 0;
|
|
36
|
+
var deploy_1 = require("./deploy");
|
|
37
|
+
var rollback_1 = require("./rollback");
|
|
38
|
+
var stop_1 = require("./stop");
|
|
39
|
+
var createDeployementJobs = function (context, definitions) {
|
|
40
|
+
return __spreadArray(__spreadArray([(0, deploy_1.createDeployJob)(context, definitions.deploy)], __read(definitions.stop ? [(0, stop_1.createStopJob)(context, definitions.stop)] : []), false), __read(definitions.rollback ? [(0, rollback_1.createRollbackJob)(context, definitions.rollback)] : []), false);
|
|
140
41
|
};
|
|
141
|
-
exports.
|
|
42
|
+
exports.createDeployementJobs = createDeployementJobs;
|
|
@@ -1,3 +1,5 @@
|
|
|
1
1
|
import type { Context } from "../../types/context";
|
|
2
|
-
import type {
|
|
3
|
-
export declare const
|
|
2
|
+
import type { CatladderJob } from "../../types/jobs";
|
|
3
|
+
export declare const ROLLBACK_JOB_NAME = "\u21A9\uFE0F Rollback \u26A0\uFE0F";
|
|
4
|
+
export declare type RollbackJobDefinition = Pick<CatladderJob, "script" | "variables" | "image">;
|
|
5
|
+
export declare const createRollbackJob: (context: Context, jobDefinition: RollbackJobDefinition) => CatladderJob;
|
|
@@ -11,25 +11,27 @@ var __assign = this && this.__assign || function () {
|
|
|
11
11
|
return __assign.apply(this, arguments);
|
|
12
12
|
};
|
|
13
13
|
exports.__esModule = true;
|
|
14
|
-
exports.
|
|
15
|
-
var _1 = require(".");
|
|
14
|
+
exports.createRollbackJob = exports.ROLLBACK_JOB_NAME = void 0;
|
|
16
15
|
var variables_1 = require("./variables");
|
|
17
|
-
|
|
16
|
+
exports.ROLLBACK_JOB_NAME = "↩️ Rollback ⚠️";
|
|
17
|
+
var createRollbackJob = function (context, jobDefinition) {
|
|
18
18
|
return {
|
|
19
|
-
name:
|
|
19
|
+
name: exports.ROLLBACK_JOB_NAME,
|
|
20
|
+
image: jobDefinition.image,
|
|
20
21
|
envMode: "stagePerEnv",
|
|
21
22
|
needs: [],
|
|
22
23
|
rules: [{
|
|
23
24
|
when: "manual",
|
|
24
25
|
allow_failure: true
|
|
25
26
|
}],
|
|
26
|
-
variables: __assign(__assign(__assign({}, variables_1.DEPLOY_RUNNER_VARIABLES), context.environment.jobOnlyVars.deploy.envVars), {
|
|
27
|
+
variables: __assign(__assign(__assign(__assign({}, variables_1.DEPLOY_RUNNER_VARIABLES), context.environment.jobOnlyVars.deploy.envVars), {
|
|
27
28
|
GIT_STRATEGY: "none"
|
|
28
|
-
}),
|
|
29
|
+
}), jobDefinition.variables),
|
|
29
30
|
stage: "rollback",
|
|
30
31
|
environment: __assign(__assign({}, context.environment.gitlabEnvironment), {
|
|
31
32
|
action: "access"
|
|
32
|
-
})
|
|
33
|
+
}),
|
|
34
|
+
script: jobDefinition.script
|
|
33
35
|
};
|
|
34
36
|
};
|
|
35
|
-
exports.
|
|
37
|
+
exports.createRollbackJob = createRollbackJob;
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { Context } from "../../types/context";
|
|
2
|
+
import type { CatladderJob } from "../../types/jobs";
|
|
3
|
+
export declare const STOP_JOB_NAME = "\uD83D\uDED1 Stop \u26A0\uFE0F";
|
|
4
|
+
export declare type StopJobDefinition = Pick<CatladderJob, "script" | "variables" | "image">;
|
|
5
|
+
export declare const createStopJob: (context: Context, jobDefinition: StopJobDefinition) => CatladderJob;
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var __assign = this && this.__assign || function () {
|
|
4
|
+
__assign = Object.assign || function (t) {
|
|
5
|
+
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
6
|
+
s = arguments[i];
|
|
7
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];
|
|
8
|
+
}
|
|
9
|
+
return t;
|
|
10
|
+
};
|
|
11
|
+
return __assign.apply(this, arguments);
|
|
12
|
+
};
|
|
13
|
+
exports.__esModule = true;
|
|
14
|
+
exports.createStopJob = exports.STOP_JOB_NAME = void 0;
|
|
15
|
+
var variables_1 = require("./variables");
|
|
16
|
+
exports.STOP_JOB_NAME = "🛑 Stop ⚠️";
|
|
17
|
+
var createStopJob = function (context, jobDefinition) {
|
|
18
|
+
return {
|
|
19
|
+
name: exports.STOP_JOB_NAME,
|
|
20
|
+
image: jobDefinition.image,
|
|
21
|
+
envMode: "stagePerEnv",
|
|
22
|
+
needs: [],
|
|
23
|
+
rules: [{
|
|
24
|
+
"if": "$CI_COMMIT_BRANCH =~ /^[0-9]+\\.([0-9]+|x)\\.x$/",
|
|
25
|
+
when: "on_success",
|
|
26
|
+
allow_failure: true
|
|
27
|
+
}, {
|
|
28
|
+
when: "manual",
|
|
29
|
+
allow_failure: true
|
|
30
|
+
}],
|
|
31
|
+
variables: __assign(__assign(__assign(__assign({}, variables_1.DEPLOY_RUNNER_VARIABLES), context.environment.jobOnlyVars.deploy.envVars), {
|
|
32
|
+
GIT_STRATEGY: "none"
|
|
33
|
+
}), jobDefinition.variables),
|
|
34
|
+
stage: "stop",
|
|
35
|
+
environment: __assign(__assign({}, context.environment.gitlabEnvironment), {
|
|
36
|
+
action: "stop"
|
|
37
|
+
}),
|
|
38
|
+
script: jobDefinition.script
|
|
39
|
+
};
|
|
40
|
+
};
|
|
41
|
+
exports.createStopJob = createStopJob;
|
|
@@ -49,14 +49,14 @@ var _1 = require(".");
|
|
|
49
49
|
var docker_1 = require("../../build/docker");
|
|
50
50
|
var getLabels_1 = require("../../context/getLabels");
|
|
51
51
|
var runner_1 = require("../../runner");
|
|
52
|
+
var gitlab_1 = require("../../utils/gitlab");
|
|
52
53
|
var base_1 = require("../base");
|
|
54
|
+
var sbom_1 = require("../sbom");
|
|
53
55
|
var types_1 = require("../types");
|
|
54
|
-
var
|
|
56
|
+
var createArgsString_1 = require("./utils/createArgsString");
|
|
55
57
|
var database_1 = require("./utils/database");
|
|
56
|
-
var
|
|
58
|
+
var gcloudServiceAccountLoginCommands_1 = require("./utils/gcloudServiceAccountLoginCommands");
|
|
57
59
|
var jobName_1 = require("./utils/jobName");
|
|
58
|
-
var createArgsString_1 = require("./utils/createArgsString");
|
|
59
|
-
var sbom_1 = require("../sbom");
|
|
60
60
|
var setExtraVarsScripts = function (deployConfig) {
|
|
61
61
|
return ["export GCLOUD_PROJECT_NUMBER=$(gcloud projects describe ".concat(deployConfig.projectId, " --format=\"value(projectNumber)\")"), "echo \"GCLOUD_PROJECT_NUMBER: $GCLOUD_PROJECT_NUMBER\""];
|
|
62
62
|
};
|
|
@@ -70,10 +70,9 @@ var createGoogleCloudRunDeployJobs = function (context) {
|
|
|
70
70
|
// should not happen
|
|
71
71
|
throw new Error("deploy config is wrong");
|
|
72
72
|
}
|
|
73
|
-
var baseDeploymentJob = (0, base_1.getBaseDeploymentJob)(context);
|
|
74
73
|
var fullAppName = "".concat(context.fullConfig.customerName, "-").concat(context.fullConfig.appName);
|
|
75
74
|
var dockerUrl = "".concat(deployConfig.region, "-docker.pkg.dev/").concat(deployConfig.projectId, "/catladder-deploy/").concat(fullAppName);
|
|
76
|
-
var gcloudImageName = "".concat(dockerUrl, "
|
|
75
|
+
var gcloudImageName = "".concat(dockerUrl, "/").concat(context.environment.shortName, "/").concat(context.componentName, ":$DOCKER_IMAGE_TAG");
|
|
77
76
|
var pushImageToArtifactsRegistry = [docker_1.gitlabDockerLogin, "gcloud auth configure-docker ".concat(deployConfig.region, "-docker.pkg.dev"), "docker pull $DOCKER_IMAGE:$DOCKER_IMAGE_TAG", "docker tag $DOCKER_IMAGE:$DOCKER_IMAGE_TAG ".concat(gcloudImageName), "docker push ".concat(gcloudImageName)];
|
|
78
77
|
var allEnvVars = (0, lodash_1.omit)(context.environment.envVars, _1.GCLOUD_DEPLOY_CREDENTIALS_KEY);
|
|
79
78
|
var labelsString = Object.entries((0, getLabels_1.getLabels)(context)).map(function (_a) {
|
|
@@ -220,26 +219,29 @@ var createGoogleCloudRunDeployJobs = function (context) {
|
|
|
220
219
|
name = _b[0];
|
|
221
220
|
return "gcloud run services delete ".concat(serviceName, "-").concat(name, " ").concat(commonArgsString);
|
|
222
221
|
})), false), __read(getDeleteSchedulesScripts()), false), __read(getDeleteJobsScripts()), false), __read(deployConfig.cloudSql && deployConfig.cloudSql.deleteDatabaseOnStop ? (0, database_1.getDatabaseDeleteScript)(context, deployConfig) : []), false), __read((0, sbom_1.getDependencyTrackDeleteScript)(context)), false);
|
|
223
|
-
return
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
222
|
+
return (0, base_1.createDeployementJobs)(context, {
|
|
223
|
+
deploy: (0, lodash_1.merge)((0, docker_1.getDockerJobBaseProps)(context), {
|
|
224
|
+
artifacts: {
|
|
225
|
+
paths: ["____envvars.yaml"]
|
|
226
|
+
},
|
|
227
|
+
variables: {
|
|
228
|
+
CLOUDSDK_CORE_DISABLE_PROMPTS: "1",
|
|
229
|
+
ENV_VARS: (0, js_yaml_1.dump)(allEnvVars, {
|
|
230
|
+
lineWidth: -1,
|
|
231
|
+
quotingType: "'",
|
|
232
|
+
forceQuotes: true
|
|
233
|
+
})
|
|
234
|
+
},
|
|
235
|
+
image: (0, runner_1.getRunnerImage)("gcloud"),
|
|
236
|
+
script: deployScripts
|
|
237
|
+
}),
|
|
238
|
+
stop: {
|
|
239
|
+
image: (0, runner_1.getRunnerImage)("gcloud"),
|
|
240
|
+
variables: {
|
|
241
|
+
CLOUDSDK_CORE_DISABLE_PROMPTS: "1"
|
|
242
|
+
},
|
|
243
|
+
script: (0, gitlab_1.allowFailureInScripts)(stopScripts)
|
|
244
|
+
}
|
|
245
|
+
});
|
|
244
246
|
};
|
|
245
247
|
exports.createGoogleCloudRunDeployJobs = createGoogleCloudRunDeployJobs;
|
|
@@ -33,12 +33,11 @@ var __spreadArray = this && this.__spreadArray || function (to, from, pack) {
|
|
|
33
33
|
};
|
|
34
34
|
exports.__esModule = true;
|
|
35
35
|
exports.createCustomDeployJobs = void 0;
|
|
36
|
-
var lodash_1 = require("lodash");
|
|
37
36
|
var yarn_1 = require("../../build/node/yarn");
|
|
38
37
|
var runner_1 = require("../../runner");
|
|
39
38
|
var base_1 = require("../base");
|
|
40
|
-
var types_1 = require("../types");
|
|
41
39
|
var sbom_1 = require("../sbom");
|
|
40
|
+
var types_1 = require("../types");
|
|
42
41
|
var createCustomDeployJobs = function (context) {
|
|
43
42
|
var _a, _b, _c;
|
|
44
43
|
var deployConfig = context.componentConfig.deploy;
|
|
@@ -49,18 +48,22 @@ var createCustomDeployJobs = function (context) {
|
|
|
49
48
|
// should not happen
|
|
50
49
|
throw new Error("deploy config is not custom");
|
|
51
50
|
}
|
|
52
|
-
var baseDeploymentJob = (0, base_1.getBaseDeploymentJob)(context);
|
|
53
51
|
// FIXME: custom deploy currently assumes yarn-based project
|
|
54
52
|
var yarnInstall = (0, yarn_1.getYarnInstall)(context, {
|
|
55
53
|
noCustomPostInstall: true
|
|
56
54
|
});
|
|
57
|
-
return
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
55
|
+
return (0, base_1.createDeployementJobs)(context, {
|
|
56
|
+
deploy: {
|
|
57
|
+
image: (_a = deployConfig.jobImage) !== null && _a !== void 0 ? _a : (0, runner_1.getRunnerImage)("jobs-default"),
|
|
58
|
+
cache: (_b = deployConfig.jobCache) !== null && _b !== void 0 ? _b : [],
|
|
59
|
+
script: __spreadArray(__spreadArray(__spreadArray(["cd ".concat(context.componentConfig.dir)], __read(deployConfig.requiresYarnInstall ? yarnInstall : []), false), __read(deployConfig.script), false), __read((0, sbom_1.getDependencyTrackUploadScript)(context)), false),
|
|
60
|
+
variables: {}
|
|
61
|
+
},
|
|
62
|
+
stop: deployConfig.stopScript ? {
|
|
63
|
+
image: (_c = deployConfig.jobImage) !== null && _c !== void 0 ? _c : (0, runner_1.getRunnerImage)("jobs-default"),
|
|
64
|
+
script: __spreadArray(__spreadArray([], __read(deployConfig.stopScript), false), __read((0, sbom_1.getDependencyTrackDeleteScript)(context)), false),
|
|
65
|
+
variables: {}
|
|
66
|
+
} : undefined
|
|
67
|
+
});
|
|
65
68
|
};
|
|
66
69
|
exports.createCustomDeployJobs = createCustomDeployJobs;
|
|
@@ -1,8 +1,17 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
+
var __assign = this && this.__assign || function () {
|
|
4
|
+
__assign = Object.assign || function (t) {
|
|
5
|
+
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
6
|
+
s = arguments[i];
|
|
7
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];
|
|
8
|
+
}
|
|
9
|
+
return t;
|
|
10
|
+
};
|
|
11
|
+
return __assign.apply(this, arguments);
|
|
12
|
+
};
|
|
3
13
|
exports.__esModule = true;
|
|
4
14
|
exports.createDockerTagDeployJobs = void 0;
|
|
5
|
-
var lodash_1 = require("lodash");
|
|
6
15
|
var docker_1 = require("../../build/docker");
|
|
7
16
|
var base_1 = require("../base");
|
|
8
17
|
var types_1 = require("../types");
|
|
@@ -15,10 +24,11 @@ var createDockerTagDeployJobs = function (context) {
|
|
|
15
24
|
// should not happen
|
|
16
25
|
throw new Error("deploy config is not dockerTag");
|
|
17
26
|
}
|
|
18
|
-
var baseDeploymentJob = (0, base_1.getBaseDeploymentJob)(context);
|
|
19
27
|
var tag = deployConfig.tag;
|
|
20
|
-
return
|
|
21
|
-
|
|
22
|
-
|
|
28
|
+
return (0, base_1.createDeployementJobs)(context, {
|
|
29
|
+
deploy: __assign(__assign({}, (0, docker_1.getDockerJobBaseProps)(context)), {
|
|
30
|
+
script: [docker_1.gitlabDockerLogin, "docker pull $DOCKER_IMAGE:$DOCKER_IMAGE_TAG", "docker tag $DOCKER_IMAGE:$DOCKER_IMAGE_TAG $DOCKER_IMAGE:".concat(tag), "docker push $DOCKER_IMAGE:".concat(tag), "echo \"pushed as $DOCKER_IMAGE:".concat(tag, "\"")]
|
|
31
|
+
})
|
|
32
|
+
});
|
|
23
33
|
};
|
|
24
34
|
exports.createDockerTagDeployJobs = createDockerTagDeployJobs;
|
|
@@ -44,13 +44,12 @@ var __spreadArray = this && this.__spreadArray || function (to, from, pack) {
|
|
|
44
44
|
exports.__esModule = true;
|
|
45
45
|
exports.createKubernetesDeployJobs = void 0;
|
|
46
46
|
var js_yaml_1 = require("js-yaml");
|
|
47
|
-
var lodash_1 = require("lodash");
|
|
48
|
-
var __1 = require("../..");
|
|
49
47
|
var runner_1 = require("../../runner");
|
|
50
48
|
var base_1 = require("../base");
|
|
49
|
+
var sbom_1 = require("../sbom");
|
|
51
50
|
var types_1 = require("../types");
|
|
52
51
|
var kubeValues_1 = require("./kubeValues");
|
|
53
|
-
var
|
|
52
|
+
var getEnvironmentVariables_1 = require("../../context/getEnvironmentVariables");
|
|
54
53
|
var createKubernetesDeployJobs = function (context) {
|
|
55
54
|
var _a, _b, _c;
|
|
56
55
|
var deployConfig = context.componentConfig.deploy;
|
|
@@ -62,9 +61,6 @@ var createKubernetesDeployJobs = function (context) {
|
|
|
62
61
|
throw new Error("deploy config is not kubernetes");
|
|
63
62
|
}
|
|
64
63
|
var kubeValues = (0, kubeValues_1.createKubeValues)(context);
|
|
65
|
-
var kubernetesEnvironment = {
|
|
66
|
-
namespace: context.environment.envVars.KUBE_NAMESPACE
|
|
67
|
-
};
|
|
68
64
|
var shared = {
|
|
69
65
|
image: (0, runner_1.getRunnerImage)("kubernetes"),
|
|
70
66
|
variables: __assign(__assign({}, context.environment.envVars), {
|
|
@@ -82,26 +78,18 @@ var createKubernetesDeployJobs = function (context) {
|
|
|
82
78
|
BUILD_ID: (_c = context.commitInfo) === null || _c === void 0 ? void 0 : _c.buildId
|
|
83
79
|
})
|
|
84
80
|
};
|
|
85
|
-
var baseDeploymentJob = (0, base_1.getBaseDeploymentJob)(context);
|
|
86
|
-
var baseStopJob = (0, base_1.getBaseDeploymentStopJob)(context);
|
|
87
|
-
var baseRollbackJob = (0, base_1.getBaseRollbackJob)(context);
|
|
88
81
|
var clusterName = "kube-".concat(context.environment.fullName);
|
|
89
|
-
var connectContext = ["kubectl config set-cluster \"".concat(clusterName, "\" --server=\"$").concat((0,
|
|
90
|
-
return
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
}
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
}
|
|
100
|
-
})
|
|
101
|
-
script: __spreadArray(__spreadArray([], __read(connectContext), false), ["kubernetesRollback"], false),
|
|
102
|
-
environment: {
|
|
103
|
-
kubernetes: kubernetesEnvironment
|
|
104
|
-
}
|
|
105
|
-
})];
|
|
82
|
+
var connectContext = ["kubectl config set-cluster \"".concat(clusterName, "\" --server=\"$").concat((0, getEnvironmentVariables_1.getSecretVarNameForContext)(context, "KUBE_URL"), "\" --certificate-authority <(echo $").concat((0, getEnvironmentVariables_1.getSecretVarNameForContext)(context, "KUBE_CA_PEM"), " | base64 -d) --embed-certs=true"), "kubectl config set-credentials \"".concat(clusterName, "\" --token=\"$").concat((0, getEnvironmentVariables_1.getSecretVarNameForContext)(context, "KUBE_TOKEN"), "\""), "kubectl config set-context \"".concat(clusterName, "\" --cluster=\"").concat(clusterName, "\" --user=\"").concat(clusterName, "\" --namespace=\"").concat(context.environment.envVars.KUBE_NAMESPACE, "\""), "kubectl config use-context \"".concat(clusterName, "\"")];
|
|
83
|
+
return (0, base_1.createDeployementJobs)(context, {
|
|
84
|
+
deploy: __assign(__assign({}, shared), {
|
|
85
|
+
script: __spreadArray(__spreadArray(__spreadArray(__spreadArray([], __read(connectContext), false), ["kubernetesCreateSecret", "kubernetesDeploy"], false), __read((0, sbom_1.getDependencyTrackUploadScript)(context)), false), ["echo deployment successful 😻"], false)
|
|
86
|
+
}),
|
|
87
|
+
stop: __assign(__assign({}, shared), {
|
|
88
|
+
script: __spreadArray(__spreadArray(__spreadArray([], __read(connectContext), false), ["kubernetesDelete"], false), __read((0, sbom_1.getDependencyTrackDeleteScript)(context)), false)
|
|
89
|
+
}),
|
|
90
|
+
rollback: __assign(__assign({}, shared), {
|
|
91
|
+
script: __spreadArray(__spreadArray([], __read(connectContext), false), ["kubernetesRollback"], false)
|
|
92
|
+
})
|
|
93
|
+
});
|
|
106
94
|
};
|
|
107
95
|
exports.createKubernetesDeployJobs = createKubernetesDeployJobs;
|