@catladder/pipeline 1.89.0 → 1.89.2

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 (32) hide show
  1. package/dist/build/rails/build.js +4 -8
  2. package/dist/build/rails/test.js +1 -2
  3. package/dist/bundles/catladder-gitlab/index.js +3 -3
  4. package/dist/constants.js +1 -1
  5. package/dist/pipeline/createAllJobs.d.ts +8 -0
  6. package/dist/pipeline/createAllJobs.js +164 -0
  7. package/dist/pipeline/createChildPipeline.js +24 -48
  8. package/dist/pipeline/createJobsForComponent.d.ts +3 -0
  9. package/dist/pipeline/{createJobs.js → createJobsForComponent.js} +8 -100
  10. package/dist/pipeline/gitlab/createGitlabJobs.d.ts +14 -0
  11. package/dist/pipeline/gitlab/createGitlabJobs.js +260 -0
  12. package/dist/pipeline/index.d.ts +1 -1
  13. package/dist/pipeline/index.js +1 -1
  14. package/dist/tsconfig.tsbuildinfo +1 -1
  15. package/package.json +1 -1
  16. package/src/build/index.ts +1 -1
  17. package/src/build/node/cache.ts +2 -2
  18. package/src/build/rails/build.ts +9 -6
  19. package/src/build/rails/test.ts +43 -39
  20. package/src/config/configruedEnvs.ts +2 -8
  21. package/src/deploy/kubernetes/deployJob.ts +2 -1
  22. package/src/pipeline/createAllJobs.ts +38 -0
  23. package/src/pipeline/createChildPipeline.ts +6 -22
  24. package/src/pipeline/createJobsForComponent.ts +64 -0
  25. package/src/pipeline/gitlab/createGitlabJobs.ts +149 -0
  26. package/src/pipeline/index.ts +1 -1
  27. package/src/types/gitlab-types.ts +8 -6
  28. package/dist/pipeline/createJobs.d.ts +0 -3
  29. package/dist/pipeline/gitlab/makeGitlabJob.d.ts +0 -10
  30. package/dist/pipeline/gitlab/makeGitlabJob.js +0 -75
  31. package/src/pipeline/createJobs.ts +0 -196
  32. package/src/pipeline/gitlab/makeGitlabJob.ts +0 -25
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 = "v1-89-0-d22fc6b2" || "";
5
+ exports.PIPELINE_IMAGE_TAG = "v1-89-2-f962281c" || "";
6
6
  exports.DOCKER_REGISTRY = "git.panter.ch:5001/catladder/catladder" || "";
@@ -0,0 +1,8 @@
1
+ import type { Config, PipelineTrigger } from "../types";
2
+ import type { CatladderJob } from "../types/jobs";
3
+ export declare type AllCatladderJobs = {
4
+ [componentName: string]: {
5
+ [env: string]: Array<CatladderJob>;
6
+ };
7
+ };
8
+ export declare const createAllJobs: (config: Config, trigger: PipelineTrigger) => Promise<AllCatladderJobs>;
@@ -0,0 +1,164 @@
1
+ "use strict";
2
+
3
+ var __awaiter = this && this.__awaiter || function (thisArg, _arguments, P, generator) {
4
+ function adopt(value) {
5
+ return value instanceof P ? value : new P(function (resolve) {
6
+ resolve(value);
7
+ });
8
+ }
9
+ return new (P || (P = Promise))(function (resolve, reject) {
10
+ function fulfilled(value) {
11
+ try {
12
+ step(generator.next(value));
13
+ } catch (e) {
14
+ reject(e);
15
+ }
16
+ }
17
+ function rejected(value) {
18
+ try {
19
+ step(generator["throw"](value));
20
+ } catch (e) {
21
+ reject(e);
22
+ }
23
+ }
24
+ function step(result) {
25
+ result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);
26
+ }
27
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
28
+ });
29
+ };
30
+ var __generator = this && this.__generator || function (thisArg, body) {
31
+ var _ = {
32
+ label: 0,
33
+ sent: function () {
34
+ if (t[0] & 1) throw t[1];
35
+ return t[1];
36
+ },
37
+ trys: [],
38
+ ops: []
39
+ },
40
+ f,
41
+ y,
42
+ t,
43
+ g;
44
+ return g = {
45
+ next: verb(0),
46
+ "throw": verb(1),
47
+ "return": verb(2)
48
+ }, typeof Symbol === "function" && (g[Symbol.iterator] = function () {
49
+ return this;
50
+ }), g;
51
+ function verb(n) {
52
+ return function (v) {
53
+ return step([n, v]);
54
+ };
55
+ }
56
+ function step(op) {
57
+ if (f) throw new TypeError("Generator is already executing.");
58
+ while (_) try {
59
+ if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
60
+ if (y = 0, t) op = [op[0] & 2, t.value];
61
+ switch (op[0]) {
62
+ case 0:
63
+ case 1:
64
+ t = op;
65
+ break;
66
+ case 4:
67
+ _.label++;
68
+ return {
69
+ value: op[1],
70
+ done: false
71
+ };
72
+ case 5:
73
+ _.label++;
74
+ y = op[1];
75
+ op = [0];
76
+ continue;
77
+ case 7:
78
+ op = _.ops.pop();
79
+ _.trys.pop();
80
+ continue;
81
+ default:
82
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) {
83
+ _ = 0;
84
+ continue;
85
+ }
86
+ if (op[0] === 3 && (!t || op[1] > t[0] && op[1] < t[3])) {
87
+ _.label = op[1];
88
+ break;
89
+ }
90
+ if (op[0] === 6 && _.label < t[1]) {
91
+ _.label = t[1];
92
+ t = op;
93
+ break;
94
+ }
95
+ if (t && _.label < t[2]) {
96
+ _.label = t[2];
97
+ _.ops.push(op);
98
+ break;
99
+ }
100
+ if (t[2]) _.ops.pop();
101
+ _.trys.pop();
102
+ continue;
103
+ }
104
+ op = body.call(thisArg, _);
105
+ } catch (e) {
106
+ op = [6, e];
107
+ y = 0;
108
+ } finally {
109
+ f = t = 0;
110
+ }
111
+ if (op[0] & 5) throw op[1];
112
+ return {
113
+ value: op[0] ? op[1] : void 0,
114
+ done: true
115
+ };
116
+ }
117
+ };
118
+ exports.__esModule = true;
119
+ exports.createAllJobs = void 0;
120
+ var config_1 = require("../config");
121
+ var createJobsForComponent_1 = require("./createJobsForComponent");
122
+ var createAllJobs = function (config, trigger) {
123
+ return __awaiter(void 0, void 0, void 0, function () {
124
+ var _a, _b;
125
+ return __generator(this, function (_c) {
126
+ switch (_c.label) {
127
+ case 0:
128
+ _b = (_a = Object).fromEntries;
129
+ return [4 /*yield*/, Promise.all(Object.keys(config.components).map(function (componentName) {
130
+ return __awaiter(void 0, void 0, void 0, function () {
131
+ var envs, _a, _b, _c;
132
+ return __generator(this, function (_d) {
133
+ switch (_d.label) {
134
+ case 0:
135
+ envs = (0, config_1.getAllEnvsByTrigger)(config, componentName, trigger);
136
+ _a = [componentName];
137
+ _c = (_b = Object).fromEntries;
138
+ return [4 /*yield*/, Promise.all(envs.map(function (env) {
139
+ return __awaiter(void 0, void 0, void 0, function () {
140
+ var _a;
141
+ return __generator(this, function (_b) {
142
+ switch (_b.label) {
143
+ case 0:
144
+ _a = [env];
145
+ return [4 /*yield*/, (0, createJobsForComponent_1.createJobsForComponent)(config, componentName, env, trigger)];
146
+ case 1:
147
+ return [2 /*return*/, _a.concat([_b.sent()])];
148
+ }
149
+ });
150
+ });
151
+ }))];
152
+ case 1:
153
+ return [2 /*return*/, _a.concat([_c.apply(_b, [_d.sent()])])];
154
+ }
155
+ });
156
+ });
157
+ }))];
158
+ case 1:
159
+ return [2 /*return*/, _b.apply(_a, [_c.sent()])];
160
+ }
161
+ });
162
+ });
163
+ };
164
+ exports.createAllJobs = createAllJobs;
@@ -1,15 +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
3
  var __awaiter = this && this.__awaiter || function (thisArg, _arguments, P, generator) {
14
4
  function adopt(value) {
15
5
  return value instanceof P ? value : new P(function (resolve) {
@@ -162,54 +152,40 @@ var config_1 = require("../config");
162
152
  var rules_1 = require("../rules");
163
153
  var runner_1 = require("../runner");
164
154
  var jobs_1 = require("../types/jobs");
165
- var createJobs_1 = require("./createJobs");
155
+ var createAllJobs_1 = require("./createAllJobs");
156
+ var createGitlabJobs_1 = require("./gitlab/createGitlabJobs");
166
157
  var createChildPipeline = function (type, trigger, config) {
167
158
  return __awaiter(void 0, void 0, void 0, function () {
168
- var components, jobs, allEnvs, stages, pipeline;
169
- return __generator(this, function (_a) {
170
- switch (_a.label) {
159
+ var jobs, allEnvs, stages, pipeline;
160
+ var _a;
161
+ return __generator(this, function (_b) {
162
+ switch (_b.label) {
171
163
  case 0:
172
- components = Object.keys(config.components);
173
- return [4 /*yield*/, components.reduce(function (acc, componentName) {
174
- return __awaiter(void 0, void 0, void 0, function () {
175
- var envs, _a, _b;
176
- return __generator(this, function (_c) {
177
- switch (_c.label) {
178
- case 0:
179
- envs = (0, config_1.getAllEnvsByTrigger)(config, componentName, trigger);
180
- _a = [{}];
181
- return [4 /*yield*/, acc];
182
- case 1:
183
- _b = [__assign.apply(void 0, _a.concat([_c.sent()]))];
184
- return [4 /*yield*/, (0, createJobs_1.createJobs)(type, envs, config, componentName, trigger)];
185
- case 2:
186
- return [2 /*return*/, __assign.apply(void 0, _b.concat([_c.sent()]))];
187
- }
188
- });
189
- });
190
- }, Promise.resolve({}))];
164
+ return [4 /*yield*/, (0, createAllJobs_1.createAllJobs)(config, trigger)];
191
165
  case 1:
192
- jobs = _a.sent();
166
+ jobs = _b.sent();
193
167
  allEnvs = (0, config_1.getAllEnvsInAllComponents)(config);
194
168
  stages = jobs_1.BASE_STAGES.reduce(function (acc, baseStage) {
195
169
  return __spreadArray(__spreadArray(__spreadArray([], __read(acc), false), [baseStage], false), __read(allEnvs.map(function (e) {
196
170
  return "".concat(baseStage, " ").concat(e);
197
171
  })), false);
198
172
  }, []);
199
- if (type === "gitlab") {
200
- pipeline = {
201
- image: (0, runner_1.getRunnerImage)("jobs-default"),
202
- variables: {
203
- FF_USE_FASTZIP: "true"
204
- },
205
- workflow: {
206
- rules: rules_1.RULES_ALWAYS
207
- },
208
- stages: stages,
209
- jobs: jobs
210
- };
211
- return [2 /*return*/, pipeline];
212
- }
173
+ if (!(type === "gitlab")) return [3 /*break*/, 3];
174
+ _a = {
175
+ image: (0, runner_1.getRunnerImage)("jobs-default"),
176
+ variables: {
177
+ FF_USE_FASTZIP: "true"
178
+ },
179
+ workflow: {
180
+ rules: rules_1.RULES_ALWAYS
181
+ },
182
+ stages: stages
183
+ };
184
+ return [4 /*yield*/, (0, createGitlabJobs_1.createGitlabJobs)(jobs)];
185
+ case 2:
186
+ pipeline = (_a.jobs = _b.sent(), _a);
187
+ return [2 /*return*/, pipeline];
188
+ case 3:
213
189
  throw new Error("".concat(type, " is not supported"));
214
190
  }
215
191
  });
@@ -0,0 +1,3 @@
1
+ import type { Config, PipelineTrigger } from "../types/config";
2
+ import type { CatladderJob } from "../types/jobs";
3
+ export declare const createJobsForComponent: (config: Config, componentName: string, env: string, trigger: PipelineTrigger) => Promise<Array<CatladderJob>>;
@@ -165,14 +165,12 @@ var __spreadArray = this && this.__spreadArray || function (to, from, pack) {
165
165
  return to.concat(ar || Array.prototype.slice.call(from));
166
166
  };
167
167
  exports.__esModule = true;
168
- exports.createJobs = void 0;
168
+ exports.createJobsForComponent = void 0;
169
169
  var lodash_1 = require("lodash");
170
170
  var build_1 = require("../build");
171
171
  var context_1 = require("../context");
172
172
  var deploy_1 = require("../deploy");
173
- var utils_1 = require("../utils");
174
173
  var getCommitInfo_1 = require("./commitInfo/getCommitInfo");
175
- var makeGitlabJob_1 = require("./gitlab/makeGitlabJob");
176
174
  var packageManager_1 = require("./packageManager");
177
175
  var injectDefaultVarsInCustomJobs = function (context, jobs) {
178
176
  return jobs.map(function (_a) {
@@ -200,71 +198,9 @@ var createRawJobs = function (context) {
200
198
  var customJobs = getCustomJobs(context);
201
199
  return __spreadArray(__spreadArray(__spreadArray([], __read(buildJobs), false), __read(deployJobs), false), __read(customJobs), false);
202
200
  };
203
- var getFullJobName = function (name, componentName, env) {
204
- if (env) {
205
- return "".concat(componentName, " ").concat(name, " | ").concat(env, " ");
206
- }
207
- return "".concat(componentName, " ").concat(name);
208
- };
209
- var getFullReferencedJobName = function (referencedJobName, componentName, env, allRawJobs) {
210
- var referencedJob = allRawJobs.find(function (j) {
211
- return j.name === referencedJobName;
212
- });
213
- if (!referencedJob) {
214
- throw new Error("unknown job referenced: " + referencedJobName);
215
- }
216
- var envToSet = referencedJob.envMode !== "none" ? env : null;
217
- return getFullJobName(referencedJobName, componentName, envToSet);
218
- };
219
- // replaces references to other jobs with the full name
220
- // the full name contains the componentname and the env name (if any)
221
- var replaceReferences = function (job, componentName, env, allRawJobs) {
222
- var _a, _b, _c;
223
- var stage = job.envMode === "stagePerEnv" ? "".concat(job.stage, " ").concat(env) : job.stage;
224
- var cleanedNeeds = __spreadArray(__spreadArray([], __read((_a = job.needs) !== null && _a !== void 0 ? _a : []), false), __read((_b = job.needsOtherComponent) !== null && _b !== void 0 ? _b : []), false);
225
- var needs = cleanedNeeds === null || cleanedNeeds === void 0 ? void 0 : cleanedNeeds.map(function (n) {
226
- var _a;
227
- return (0, lodash_1.isObject)(n) ? {
228
- job: getFullReferencedJobName(n.job, (_a = n.componentName) !== null && _a !== void 0 ? _a : componentName, env, allRawJobs),
229
- artifacts: n.artifacts
230
- } : getFullReferencedJobName(n, componentName, env, allRawJobs);
231
- });
232
- return __assign(__assign({}, job), {
233
- stage: stage,
234
- needs: needs,
235
- environment: ((_c = job.environment) === null || _c === void 0 ? void 0 : _c.on_stop) ? __assign(__assign({}, job.environment), {
236
- on_stop: getFullReferencedJobName(job.environment.on_stop, componentName, env, allRawJobs)
237
- }) : job.environment
238
- });
239
- };
240
- // this can be removed once https://gitlab.com/gitlab-org/gitlab/-/issues/220758 is resolved
241
- var addStageNeeds = function (jobs) {
242
- // when a job defines needsStages, we add these as needs
243
- return jobs.map(function (job) {
244
- var _a;
245
- if (!job.needsStages || job.needsStages.length === 0) {
246
- return job;
247
- }
248
- var neededJobs = jobs.map(function (j) {
249
- var _a, _b;
250
- var neededStage = (_a = job.needsStages) === null || _a === void 0 ? void 0 : _a.find(function (s) {
251
- return j.stage === s.stage;
252
- });
253
- if (neededStage) {
254
- return {
255
- job: j.name,
256
- artifacts: (_b = neededStage.artifacts) !== null && _b !== void 0 ? _b : false
257
- };
258
- }
259
- }).filter(utils_1.notNil);
260
- return __assign(__assign({}, job), {
261
- needs: __spreadArray(__spreadArray([], __read((_a = job.needs) !== null && _a !== void 0 ? _a : []), false), __read(neededJobs), false)
262
- });
263
- });
264
- };
265
- var createJobs = function (type, envs, config, componentName, trigger) {
201
+ var createJobsForComponent = function (config, componentName, env, trigger) {
266
202
  return __awaiter(void 0, void 0, void 0, function () {
267
- var commitInfo, _a, packageManagerInfo;
203
+ var commitInfo, _a, packageManagerInfo, context;
268
204
  return __generator(this, function (_b) {
269
205
  switch (_b.label) {
270
206
  case 0:
@@ -277,40 +213,12 @@ var createJobs = function (type, envs, config, componentName, trigger) {
277
213
  return [4 /*yield*/, (0, packageManager_1.getPackageManagerInfo)(config, componentName)];
278
214
  case 2:
279
215
  packageManagerInfo = _b.sent();
280
- return [2 /*return*/, envs.reduce(function (acc, env) {
281
- return __awaiter(void 0, void 0, void 0, function () {
282
- var context, jobs, result, _a, _b, _c, _d, _e;
283
- return __generator(this, function (_f) {
284
- switch (_f.label) {
285
- case 0:
286
- return [4 /*yield*/, (0, context_1.createContext)(config, componentName, env, commitInfo, packageManagerInfo)];
287
- case 1:
288
- context = _f.sent();
289
- jobs = addStageNeeds(createRawJobs(context));
290
- _a = [{}];
291
- return [4 /*yield*/, acc];
292
- case 2:
293
- _b = [__assign.apply(void 0, _a.concat([_f.sent()]))];
294
- _d = (_c = jobs).reduce;
295
- _e = [function (acc, job) {
296
- var _a;
297
- var jobWithResolvedReferences = replaceReferences(job, componentName, env, jobs);
298
- var jobName = getFullJobName(job.name, componentName, job.envMode !== "none" ? env : undefined);
299
- if (type === "gitlab") {
300
- return __assign(__assign({}, acc), (_a = {}, _a[jobName] = (0, makeGitlabJob_1.makeGitlabJob)(jobWithResolvedReferences), _a));
301
- }
302
- throw new Error("not supported");
303
- }];
304
- return [4 /*yield*/, Promise.resolve({})];
305
- case 3:
306
- result = __assign.apply(void 0, _b.concat([_d.apply(_c, _e.concat([_f.sent()]))]));
307
- return [2 /*return*/, result];
308
- }
309
- });
310
- });
311
- }, {})];
216
+ return [4 /*yield*/, (0, context_1.createContext)(config, componentName, env, commitInfo, packageManagerInfo)];
217
+ case 3:
218
+ context = _b.sent();
219
+ return [2 /*return*/, createRawJobs(context)];
312
220
  }
313
221
  });
314
222
  });
315
223
  };
316
- exports.createJobs = createJobs;
224
+ exports.createJobsForComponent = createJobsForComponent;
@@ -0,0 +1,14 @@
1
+ import type { GitlabJobDef } from "../../types";
2
+ import type { CatladderJob } from "../../types/jobs";
3
+ import type { AllCatladderJobs } from "../createAllJobs";
4
+ declare type AllGitlabJobs = Record<string, GitlabJobDef>;
5
+ export declare const makeGitlabJob: (componentName: string, env: string, {
6
+ envMode,
7
+ needsStages,
8
+ needsOtherComponent,
9
+ name,
10
+ needs,
11
+ ...job
12
+ }: CatladderJob<string>, allJobs: AllCatladderJobs) => [fullName: string, job: GitlabJobDef];
13
+ export declare const createGitlabJobs: (allJobs: AllCatladderJobs) => Promise<AllGitlabJobs>;
14
+ export {};