@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.
Files changed (79) hide show
  1. package/dist/build/base/createAppBuildJob.d.ts +8 -0
  2. package/dist/build/base/{createBuildJob.js → createAppBuildJob.js} +3 -3
  3. package/dist/build/base/index.d.ts +8 -0
  4. package/dist/build/base/index.js +57 -0
  5. package/dist/build/custom/buildJob.js +19 -22
  6. package/dist/build/docker.d.ts +2 -4
  7. package/dist/build/docker.js +4 -39
  8. package/dist/build/node/buildJob.js +30 -32
  9. package/dist/build/node/meteor.js +19 -21
  10. package/dist/build/rails/build.js +12 -19
  11. package/dist/build/types.d.ts +4 -3
  12. package/dist/bundles/catladder-gitlab/index.js +387 -300
  13. package/dist/constants.js +1 -1
  14. package/dist/context/getLabels.d.ts +1 -0
  15. package/dist/context/getLabels.js +1 -0
  16. package/dist/deploy/base/deploy.d.ts +5 -0
  17. package/dist/deploy/base/deploy.js +106 -0
  18. package/dist/deploy/base/index.d.ts +10 -8
  19. package/dist/deploy/base/index.js +7 -106
  20. package/dist/deploy/base/rollback.d.ts +4 -2
  21. package/dist/deploy/base/rollback.js +10 -8
  22. package/dist/deploy/base/stop.d.ts +5 -0
  23. package/dist/deploy/base/stop.js +41 -0
  24. package/dist/deploy/cloudRun/deployJob.js +29 -27
  25. package/dist/deploy/custom/deployJob.js +14 -11
  26. package/dist/deploy/dockerTag/deployJob.js +15 -5
  27. package/dist/deploy/kubernetes/deployJob.js +14 -26
  28. package/dist/deploy/kubernetes/mongodb.d.ts +1 -1
  29. package/dist/deploy/kubernetes/mongodb.js +8 -7
  30. package/dist/deploy/types/index.d.ts +1 -1
  31. package/dist/pipeline/gitlab/createGitlabJobs.d.ts +1 -0
  32. package/dist/pipeline/gitlab/createGitlabJobs.js +4 -1
  33. package/dist/tsconfig.tsbuildinfo +1 -1
  34. package/dist/types/gitlab-ci-yml.d.ts +769 -0
  35. package/dist/types/gitlab-ci-yml.js +9 -0
  36. package/dist/types/gitlab-types.d.ts +12 -85
  37. package/dist/types/jobs.d.ts +3 -3
  38. package/examples/__snapshots__/cloud-run-memory-limit.ts.snap +16 -16
  39. package/examples/__snapshots__/cloud-run-no-cpu-throttling.ts.snap +16 -16
  40. package/examples/__snapshots__/cloud-run-non-public.ts.snap +16 -16
  41. package/examples/__snapshots__/cloud-run-with-sql-reuse-db.ts.snap +32 -32
  42. package/examples/__snapshots__/cloud-run-with-sql.ts.snap +48 -48
  43. package/examples/__snapshots__/custom-build-job-with-tests.ts.snap +16 -16
  44. package/examples/__snapshots__/custom-build-job.ts.snap +16 -16
  45. package/examples/__snapshots__/custom-sbom-java.ts.snap +16 -16
  46. package/examples/__snapshots__/kubernetes-application-customization.ts.snap +0 -36
  47. package/examples/__snapshots__/kubernetes-with-cloud-sql-legacy.ts.snap +0 -36
  48. package/examples/__snapshots__/kubernetes-with-cloud-sql.ts.snap +0 -36
  49. package/examples/__snapshots__/kubernetes-with-jobs.ts.snap +0 -72
  50. package/examples/__snapshots__/kubernetes-with-mongodb.ts.snap +0 -36
  51. package/examples/__snapshots__/meteor-kubernetes.ts.snap +0 -36
  52. package/examples/__snapshots__/native-app.ts.snap +16 -16
  53. package/examples/__snapshots__/node-build-with-custom-image.ts.snap +16 -16
  54. package/examples/__snapshots__/rails-k8s-with-worker.ts.snap +0 -36
  55. package/package.json +4 -2
  56. package/scripts/generate-gitlab-ci-types.ts +51 -0
  57. package/src/build/base/{createBuildJob.ts → createAppBuildJob.ts} +3 -2
  58. package/src/build/base/index.ts +35 -0
  59. package/src/build/custom/buildJob.ts +32 -45
  60. package/src/build/docker.ts +14 -17
  61. package/src/build/node/buildJob.ts +50 -61
  62. package/src/build/node/meteor.ts +31 -36
  63. package/src/build/rails/build.ts +8 -10
  64. package/src/build/types.ts +4 -8
  65. package/src/context/getLabels.ts +1 -0
  66. package/src/deploy/base/deploy.ts +114 -0
  67. package/src/deploy/base/index.ts +21 -133
  68. package/src/deploy/base/rollback.ts +15 -3
  69. package/src/deploy/base/stop.ts +44 -0
  70. package/src/deploy/cloudRun/deployJob.ts +14 -16
  71. package/src/deploy/custom/deployJob.ts +17 -20
  72. package/src/deploy/dockerTag/deployJob.ts +6 -7
  73. package/src/deploy/kubernetes/deployJob.ts +17 -34
  74. package/src/deploy/kubernetes/mongodb.ts +3 -2
  75. package/src/pipeline/gitlab/createGitlabJobs.ts +3 -0
  76. package/src/types/gitlab-ci-yml.ts +892 -0
  77. package/src/types/gitlab-types.ts +49 -86
  78. package/src/types/jobs.ts +3 -4
  79. 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-deploy-5f0bbd8a" || "";
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 { JobWithoutScript } from "./types";
3
- export * from "./rollback";
4
- export declare const DEPLOY_JOB_NAME = "\uD83D\uDE80 Deploy";
5
- export declare const STOP_JOB_NAME = "\uD83D\uDED1 Stop \u26A0\uFE0F";
6
- export declare const ROLLBACK_JOB_NAME = "\u21A9\uFE0F Rollback \u26A0\uFE0F";
7
- export declare const getBaseDeploymentJob: (context: Context) => JobWithoutScript;
8
- export declare const getBaseDeploymentStopJob: (context: Context) => JobWithoutScript;
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.getBaseDeploymentStopJob = exports.getBaseDeploymentJob = exports.ROLLBACK_JOB_NAME = exports.STOP_JOB_NAME = exports.DEPLOY_JOB_NAME = void 0;
61
- var docker_1 = require("../../build/docker");
62
- var sbom_1 = require("../../build/sbom");
63
- var sbom_2 = require("../sbom");
64
- var utils_1 = require("../utils");
65
- var variables_1 = require("./variables");
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.getBaseDeploymentStopJob = getBaseDeploymentStopJob;
42
+ exports.createDeployementJobs = createDeployementJobs;
@@ -1,3 +1,5 @@
1
1
  import type { Context } from "../../types/context";
2
- import type { JobWithoutScript } from "./types";
3
- export declare const getBaseRollbackJob: (context: Context) => JobWithoutScript;
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.getBaseRollbackJob = void 0;
15
- var _1 = require(".");
14
+ exports.createRollbackJob = exports.ROLLBACK_JOB_NAME = void 0;
16
15
  var variables_1 = require("./variables");
17
- var getBaseRollbackJob = function (context) {
16
+ exports.ROLLBACK_JOB_NAME = "↩️ Rollback ⚠️";
17
+ var createRollbackJob = function (context, jobDefinition) {
18
18
  return {
19
- name: _1.ROLLBACK_JOB_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.getBaseRollbackJob = getBaseRollbackJob;
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 gcloudServiceAccountLoginCommands_1 = require("./utils/gcloudServiceAccountLoginCommands");
56
+ var createArgsString_1 = require("./utils/createArgsString");
55
57
  var database_1 = require("./utils/database");
56
- var gitlab_1 = require("../../utils/gitlab");
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, "/$DOCKER_IMAGE_NAME:$DOCKER_IMAGE_TAG");
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 [(0, lodash_1.merge)({}, baseDeploymentJob, (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
- }), (0, lodash_1.merge)({}, (0, base_1.getBaseDeploymentStopJob)(context), {
238
- image: (0, runner_1.getRunnerImage)("gcloud"),
239
- variables: {
240
- CLOUDSDK_CORE_DISABLE_PROMPTS: "1"
241
- },
242
- script: (0, gitlab_1.allowFailureInScripts)(stopScripts)
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 __spreadArray([(0, lodash_1.merge)({}, baseDeploymentJob, {
58
- image: (_a = deployConfig.jobImage) !== null && _a !== void 0 ? _a : (0, runner_1.getRunnerImage)("jobs-default"),
59
- cache: (_b = deployConfig.jobCache) !== null && _b !== void 0 ? _b : [],
60
- 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)
61
- })], __read(deployConfig.stopScript ? [(0, lodash_1.merge)({}, (0, base_1.getBaseDeploymentStopJob)(context), {
62
- image: (_c = deployConfig.jobImage) !== null && _c !== void 0 ? _c : (0, runner_1.getRunnerImage)("jobs-default"),
63
- script: __spreadArray(__spreadArray([], __read(deployConfig.stopScript), false), __read((0, sbom_1.getDependencyTrackDeleteScript)(context)), false)
64
- })] : []), false);
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 [(0, lodash_1.merge)({}, baseDeploymentJob, (0, docker_1.getDockerJobBaseProps)(context), {
21
- 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, "\"")]
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 sbom_1 = require("../sbom");
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, __1.getSecretVarNameForContext)(context, "KUBE_URL"), "\" --certificate-authority <(echo $").concat((0, __1.getSecretVarNameForContext)(context, "KUBE_CA_PEM"), " | base64 -d) --embed-certs=true"), "kubectl config set-credentials \"".concat(clusterName, "\" --token=\"$").concat((0, __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, "\"")];
90
- return [(0, lodash_1.merge)({}, baseDeploymentJob, shared, {
91
- script: __spreadArray(__spreadArray(__spreadArray(__spreadArray([], __read(connectContext), false), ["kubernetesCreateSecret", "kubernetesDeploy"], false), __read((0, sbom_1.getDependencyTrackUploadScript)(context)), false), ["echo deployment successful 😻"], false),
92
- environment: {
93
- kubernetes: kubernetesEnvironment
94
- }
95
- }), (0, lodash_1.merge)({}, baseStopJob, shared, {
96
- script: __spreadArray(__spreadArray(__spreadArray([], __read(connectContext), false), ["kubernetesDelete"], false), __read((0, sbom_1.getDependencyTrackDeleteScript)(context)), false),
97
- environment: {
98
- kubernetes: kubernetesEnvironment
99
- }
100
- }), (0, lodash_1.merge)({}, baseRollbackJob, shared, {
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;
@@ -1,4 +1,4 @@
1
- import type { Context } from "../..";
1
+ import type { Context } from "../../types/context";
2
2
  export declare const createMongodbBaseConfig: (context: Context) => {
3
3
  mongodb: {
4
4
  enabled: boolean;