@catladder/cli 0.0.0-main-4c899109 → 0.0.0-main-3df5566d

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.
@@ -5468,7 +5468,7 @@ const createMainPipeline = async (pipelineType, config) => {
5468
5468
  // for all triggers create jobs and add base rules
5469
5469
  const allJobsPerTrigger = await Promise.all(config_1.ALL_PIPELINE_TRIGGERS.map(async (trigger) => await (0, createGitlabJobs_1.createGitlabJobs)(await (0, createAllJobs_1.createAllJobs)({ config, trigger, pipelineType }), getGitlabRulesForTrigger(trigger)))).then((j) => j.flat());
5470
5470
  const allWorkspaceJobs = allJobsPerTrigger
5471
- .filter((j) => j.context.type === "workspace") // sort by componentName in the same order as they appear in the config
5471
+ .filter((j) => { var _a; return ((_a = j.context) === null || _a === void 0 ? void 0 : _a.type) === "workspace"; }) // sort by componentName in the same order as they appear in the config
5472
5472
  // this is purely for better readability in git diffs when you add new components
5473
5473
  .sort((a, b) => {
5474
5474
  var _a;
@@ -5478,7 +5478,7 @@ const createMainPipeline = async (pipelineType, config) => {
5478
5478
  return aIndex - bIndex;
5479
5479
  });
5480
5480
  const allComponentJobs = allJobsPerTrigger
5481
- .filter((j) => j.context.type === "component")
5481
+ .filter((j) => { var _a; return ((_a = j.context) === null || _a === void 0 ? void 0 : _a.type) === "component"; })
5482
5482
  // sort by componentName in the same order as they appear in the config
5483
5483
  // this is purely for better readability in git diffs when you add new components
5484
5484
  .sort((a, b) => {
@@ -5487,18 +5487,18 @@ const createMainPipeline = async (pipelineType, config) => {
5487
5487
  const bIndex = componentNames.findIndex((c) => c === b.context.name);
5488
5488
  return aIndex - bIndex;
5489
5489
  });
5490
- const allJobs = [...allWorkspaceJobs, ...allComponentJobs].reduce((acc, { gitlabJob, name }) => {
5490
+ const allJobs = [...allWorkspaceJobs, ...allComponentJobs].reduce((acc, { gitlabJob, name, context }) => {
5491
5491
  var _a, _b;
5492
5492
  // merge jobs, if a job is already there, merge the rules
5493
5493
  // this is currently needed because of envMode: "none", which creates the same job for all triggers, so it can appear multiple times
5494
5494
  if (acc[name]) {
5495
- acc[name].rules = [
5496
- ...((_a = acc[name].rules) !== null && _a !== void 0 ? _a : []),
5495
+ acc[name].gitlabJob.rules = [
5496
+ ...((_a = acc[name].gitlabJob.rules) !== null && _a !== void 0 ? _a : []),
5497
5497
  ...((_b = gitlabJob.rules) !== null && _b !== void 0 ? _b : []),
5498
5498
  ];
5499
5499
  }
5500
5500
  else {
5501
- acc[name] = gitlabJob;
5501
+ acc[name] = { context, gitlabJob };
5502
5502
  }
5503
5503
  return acc;
5504
5504
  }, {});
@@ -5506,7 +5506,13 @@ const createMainPipeline = async (pipelineType, config) => {
5506
5506
  stages: [...stages, "release"],
5507
5507
  jobs: {
5508
5508
  ...allJobs,
5509
- ...(0, gitlabReleaseJobs_1.getGitlabReleaseJobs)(),
5509
+ ...Object.fromEntries(Object.entries((0, gitlabReleaseJobs_1.getGitlabReleaseJobs)()).map(([name, gitlabJob]) => [
5510
+ name,
5511
+ {
5512
+ gitlabJob,
5513
+ context: null,
5514
+ },
5515
+ ])),
5510
5516
  },
5511
5517
  variables: config.runnerVariables,
5512
5518
  });
@@ -5537,32 +5543,83 @@ function getGitlabRulesForTrigger(trigger) {
5537
5543
  "use strict";
5538
5544
 
5539
5545
  Object.defineProperty(exports, "__esModule", ({ value: true }));
5540
- exports.generatePipelineFiles = exports.generateLocalPipelineContent = void 0;
5546
+ exports.getGitlabCompletePipeline = exports.generatePipelineFiles = void 0;
5547
+ const promises_1 = __nccwpck_require__(3292);
5548
+ const path_1 = __nccwpck_require__(1017);
5541
5549
  const writeFiles_1 = __nccwpck_require__(2228);
5542
5550
  const createMainPipeline_1 = __nccwpck_require__(9192);
5543
5551
  const sortGitLabJobDefProps_1 = __nccwpck_require__(2361);
5544
- async function generateLocalPipelineContent(config, pipelineType) {
5545
- const { jobs, image, stages, variables, workflow, ...pipelineRest } = await (0, createMainPipeline_1.createMainPipeline)(pipelineType, config);
5546
- const jobsWithSortedProps = Object.fromEntries(Object.entries(jobs).map(([jobName, job]) => [
5547
- jobName,
5548
- (0, sortGitLabJobDefProps_1.sortGitLabJobDefProps)(job),
5549
- ]));
5550
- return {
5551
- image,
5552
- stages,
5553
- variables,
5554
- workflow,
5555
- ...pipelineRest,
5556
- // jobs need to be spread into main YAML, because GitLab pipeline YAML has no jobs key - jobs are top level with their key as their name
5557
- ...jobsWithSortedProps,
5558
- };
5559
- }
5560
- exports.generateLocalPipelineContent = generateLocalPipelineContent;
5552
+ const CATLADDER_GENERATED_FOLDER = ".catladder-generated";
5553
+ const GITLAB_GENERATED_FOLDER = CATLADDER_GENERATED_FOLDER + "/gitlab";
5561
5554
  async function generatePipelineFiles(config, pipelineType) {
5562
- const pipelineContent = await generateLocalPipelineContent(config, pipelineType);
5563
- return (0, writeFiles_1.writeYamlfile)(`.gitlab-ci.yml`, pipelineContent);
5555
+ if (pipelineType !== "gitlab") {
5556
+ throw new Error("Pipeline type not supported");
5557
+ }
5558
+ const includes = await getGitlabPipelineIncludes(config);
5559
+ const mainFile = {
5560
+ path: ".gitlab-ci.yml",
5561
+ content: {
5562
+ include: includes.map((i) => i.path),
5563
+ },
5564
+ };
5565
+ const files = [mainFile, ...includes];
5566
+ // first clean up the folder
5567
+ await (0, promises_1.rm)(GITLAB_GENERATED_FOLDER, { recursive: true });
5568
+ // write files
5569
+ await Promise.all(files.map(async ({ path, content }) => {
5570
+ await (0, promises_1.mkdir)((0, path_1.dirname)(path), { recursive: true });
5571
+ await (0, writeFiles_1.writeYamlfile)(path, content);
5572
+ }));
5564
5573
  }
5565
5574
  exports.generatePipelineFiles = generatePipelineFiles;
5575
+ async function getGitlabPipelineIncludes(config) {
5576
+ const { jobs, image, stages, variables, workflow, ...pipelineRest } = await (0, createMainPipeline_1.createMainPipeline)("gitlab", config);
5577
+ // we will create 1 include per component or workspace
5578
+ // this is for better readability in git diffs and to avoid problems with yaml files beeing too large
5579
+ // group by context
5580
+ const groups = Object.entries(jobs).reduce((acc, [jobName, { gitlabJob, context }]) => {
5581
+ const group = !context
5582
+ ? "global-jobs"
5583
+ : (context === null || context === void 0 ? void 0 : context.type) + "/" + context.name;
5584
+ if (!acc[group]) {
5585
+ acc[group] = {};
5586
+ }
5587
+ acc[group][jobName] = (0, sortGitLabJobDefProps_1.sortGitLabJobDefProps)(gitlabJob); // also sort properties for more consistent diffing
5588
+ return acc;
5589
+ }, {});
5590
+ const componentIncludes = Object.entries(groups).map(([group, jobs]) => {
5591
+ return {
5592
+ path: GITLAB_GENERATED_FOLDER + "/" + group + ".yaml",
5593
+ content: jobs,
5594
+ };
5595
+ });
5596
+ const mainInclude = {
5597
+ path: GITLAB_GENERATED_FOLDER + "/main.yaml",
5598
+ content: {
5599
+ image,
5600
+ stages,
5601
+ variables,
5602
+ workflow,
5603
+ ...pipelineRest,
5604
+ },
5605
+ };
5606
+ const includes = [mainInclude, ...componentIncludes];
5607
+ return includes;
5608
+ }
5609
+ /**
5610
+ *
5611
+ * for testing purposes
5612
+ */
5613
+ async function getGitlabCompletePipeline(config) {
5614
+ const includes = await getGitlabPipelineIncludes(config);
5615
+ return includes.reduce((acc, { content }) => {
5616
+ return {
5617
+ ...acc,
5618
+ ...content, // merge all includes into one object
5619
+ };
5620
+ }, {});
5621
+ }
5622
+ exports.getGitlabCompletePipeline = getGitlabCompletePipeline;
5566
5623
  //# sourceMappingURL=generatePipelineFiles.js.map
5567
5624
 
5568
5625
  /***/ }),
@@ -8405,7 +8405,7 @@ const createMainPipeline = async (pipelineType, config) => {
8405
8405
  // for all triggers create jobs and add base rules
8406
8406
  const allJobsPerTrigger = await Promise.all(config_1.ALL_PIPELINE_TRIGGERS.map(async (trigger) => await (0, createGitlabJobs_1.createGitlabJobs)(await (0, createAllJobs_1.createAllJobs)({ config, trigger, pipelineType }), getGitlabRulesForTrigger(trigger)))).then((j) => j.flat());
8407
8407
  const allWorkspaceJobs = allJobsPerTrigger
8408
- .filter((j) => j.context.type === "workspace") // sort by componentName in the same order as they appear in the config
8408
+ .filter((j) => { var _a; return ((_a = j.context) === null || _a === void 0 ? void 0 : _a.type) === "workspace"; }) // sort by componentName in the same order as they appear in the config
8409
8409
  // this is purely for better readability in git diffs when you add new components
8410
8410
  .sort((a, b) => {
8411
8411
  var _a;
@@ -8415,7 +8415,7 @@ const createMainPipeline = async (pipelineType, config) => {
8415
8415
  return aIndex - bIndex;
8416
8416
  });
8417
8417
  const allComponentJobs = allJobsPerTrigger
8418
- .filter((j) => j.context.type === "component")
8418
+ .filter((j) => { var _a; return ((_a = j.context) === null || _a === void 0 ? void 0 : _a.type) === "component"; })
8419
8419
  // sort by componentName in the same order as they appear in the config
8420
8420
  // this is purely for better readability in git diffs when you add new components
8421
8421
  .sort((a, b) => {
@@ -8424,18 +8424,18 @@ const createMainPipeline = async (pipelineType, config) => {
8424
8424
  const bIndex = componentNames.findIndex((c) => c === b.context.name);
8425
8425
  return aIndex - bIndex;
8426
8426
  });
8427
- const allJobs = [...allWorkspaceJobs, ...allComponentJobs].reduce((acc, { gitlabJob, name }) => {
8427
+ const allJobs = [...allWorkspaceJobs, ...allComponentJobs].reduce((acc, { gitlabJob, name, context }) => {
8428
8428
  var _a, _b;
8429
8429
  // merge jobs, if a job is already there, merge the rules
8430
8430
  // this is currently needed because of envMode: "none", which creates the same job for all triggers, so it can appear multiple times
8431
8431
  if (acc[name]) {
8432
- acc[name].rules = [
8433
- ...((_a = acc[name].rules) !== null && _a !== void 0 ? _a : []),
8432
+ acc[name].gitlabJob.rules = [
8433
+ ...((_a = acc[name].gitlabJob.rules) !== null && _a !== void 0 ? _a : []),
8434
8434
  ...((_b = gitlabJob.rules) !== null && _b !== void 0 ? _b : []),
8435
8435
  ];
8436
8436
  }
8437
8437
  else {
8438
- acc[name] = gitlabJob;
8438
+ acc[name] = { context, gitlabJob };
8439
8439
  }
8440
8440
  return acc;
8441
8441
  }, {});
@@ -8443,7 +8443,13 @@ const createMainPipeline = async (pipelineType, config) => {
8443
8443
  stages: [...stages, "release"],
8444
8444
  jobs: {
8445
8445
  ...allJobs,
8446
- ...(0, gitlabReleaseJobs_1.getGitlabReleaseJobs)(),
8446
+ ...Object.fromEntries(Object.entries((0, gitlabReleaseJobs_1.getGitlabReleaseJobs)()).map(([name, gitlabJob]) => [
8447
+ name,
8448
+ {
8449
+ gitlabJob,
8450
+ context: null,
8451
+ },
8452
+ ])),
8447
8453
  },
8448
8454
  variables: config.runnerVariables,
8449
8455
  });
@@ -8474,32 +8480,83 @@ function getGitlabRulesForTrigger(trigger) {
8474
8480
  "use strict";
8475
8481
 
8476
8482
  Object.defineProperty(exports, "__esModule", ({ value: true }));
8477
- exports.generatePipelineFiles = exports.generateLocalPipelineContent = void 0;
8483
+ exports.getGitlabCompletePipeline = exports.generatePipelineFiles = void 0;
8484
+ const promises_1 = __nccwpck_require__(73292);
8485
+ const path_1 = __nccwpck_require__(71017);
8478
8486
  const writeFiles_1 = __nccwpck_require__(92228);
8479
8487
  const createMainPipeline_1 = __nccwpck_require__(39192);
8480
8488
  const sortGitLabJobDefProps_1 = __nccwpck_require__(72361);
8481
- async function generateLocalPipelineContent(config, pipelineType) {
8482
- const { jobs, image, stages, variables, workflow, ...pipelineRest } = await (0, createMainPipeline_1.createMainPipeline)(pipelineType, config);
8483
- const jobsWithSortedProps = Object.fromEntries(Object.entries(jobs).map(([jobName, job]) => [
8484
- jobName,
8485
- (0, sortGitLabJobDefProps_1.sortGitLabJobDefProps)(job),
8486
- ]));
8487
- return {
8488
- image,
8489
- stages,
8490
- variables,
8491
- workflow,
8492
- ...pipelineRest,
8493
- // jobs need to be spread into main YAML, because GitLab pipeline YAML has no jobs key - jobs are top level with their key as their name
8494
- ...jobsWithSortedProps,
8495
- };
8496
- }
8497
- exports.generateLocalPipelineContent = generateLocalPipelineContent;
8489
+ const CATLADDER_GENERATED_FOLDER = ".catladder-generated";
8490
+ const GITLAB_GENERATED_FOLDER = CATLADDER_GENERATED_FOLDER + "/gitlab";
8498
8491
  async function generatePipelineFiles(config, pipelineType) {
8499
- const pipelineContent = await generateLocalPipelineContent(config, pipelineType);
8500
- return (0, writeFiles_1.writeYamlfile)(`.gitlab-ci.yml`, pipelineContent);
8492
+ if (pipelineType !== "gitlab") {
8493
+ throw new Error("Pipeline type not supported");
8494
+ }
8495
+ const includes = await getGitlabPipelineIncludes(config);
8496
+ const mainFile = {
8497
+ path: ".gitlab-ci.yml",
8498
+ content: {
8499
+ include: includes.map((i) => i.path),
8500
+ },
8501
+ };
8502
+ const files = [mainFile, ...includes];
8503
+ // first clean up the folder
8504
+ await (0, promises_1.rm)(GITLAB_GENERATED_FOLDER, { recursive: true });
8505
+ // write files
8506
+ await Promise.all(files.map(async ({ path, content }) => {
8507
+ await (0, promises_1.mkdir)((0, path_1.dirname)(path), { recursive: true });
8508
+ await (0, writeFiles_1.writeYamlfile)(path, content);
8509
+ }));
8501
8510
  }
8502
8511
  exports.generatePipelineFiles = generatePipelineFiles;
8512
+ async function getGitlabPipelineIncludes(config) {
8513
+ const { jobs, image, stages, variables, workflow, ...pipelineRest } = await (0, createMainPipeline_1.createMainPipeline)("gitlab", config);
8514
+ // we will create 1 include per component or workspace
8515
+ // this is for better readability in git diffs and to avoid problems with yaml files beeing too large
8516
+ // group by context
8517
+ const groups = Object.entries(jobs).reduce((acc, [jobName, { gitlabJob, context }]) => {
8518
+ const group = !context
8519
+ ? "global-jobs"
8520
+ : (context === null || context === void 0 ? void 0 : context.type) + "/" + context.name;
8521
+ if (!acc[group]) {
8522
+ acc[group] = {};
8523
+ }
8524
+ acc[group][jobName] = (0, sortGitLabJobDefProps_1.sortGitLabJobDefProps)(gitlabJob); // also sort properties for more consistent diffing
8525
+ return acc;
8526
+ }, {});
8527
+ const componentIncludes = Object.entries(groups).map(([group, jobs]) => {
8528
+ return {
8529
+ path: GITLAB_GENERATED_FOLDER + "/" + group + ".yaml",
8530
+ content: jobs,
8531
+ };
8532
+ });
8533
+ const mainInclude = {
8534
+ path: GITLAB_GENERATED_FOLDER + "/main.yaml",
8535
+ content: {
8536
+ image,
8537
+ stages,
8538
+ variables,
8539
+ workflow,
8540
+ ...pipelineRest,
8541
+ },
8542
+ };
8543
+ const includes = [mainInclude, ...componentIncludes];
8544
+ return includes;
8545
+ }
8546
+ /**
8547
+ *
8548
+ * for testing purposes
8549
+ */
8550
+ async function getGitlabCompletePipeline(config) {
8551
+ const includes = await getGitlabPipelineIncludes(config);
8552
+ return includes.reduce((acc, { content }) => {
8553
+ return {
8554
+ ...acc,
8555
+ ...content, // merge all includes into one object
8556
+ };
8557
+ }, {});
8558
+ }
8559
+ exports.getGitlabCompletePipeline = getGitlabCompletePipeline;
8503
8560
  //# sourceMappingURL=generatePipelineFiles.js.map
8504
8561
 
8505
8562
  /***/ }),
@@ -14,7 +14,7 @@ const createMainPipeline = async (pipelineType, config) => {
14
14
  // for all triggers create jobs and add base rules
15
15
  const allJobsPerTrigger = await Promise.all(config_1.ALL_PIPELINE_TRIGGERS.map(async (trigger) => await (0, createGitlabJobs_1.createGitlabJobs)(await (0, createAllJobs_1.createAllJobs)({ config, trigger, pipelineType }), getGitlabRulesForTrigger(trigger)))).then((j) => j.flat());
16
16
  const allWorkspaceJobs = allJobsPerTrigger
17
- .filter((j) => j.context.type === "workspace") // sort by componentName in the same order as they appear in the config
17
+ .filter((j) => { var _a; return ((_a = j.context) === null || _a === void 0 ? void 0 : _a.type) === "workspace"; }) // sort by componentName in the same order as they appear in the config
18
18
  // this is purely for better readability in git diffs when you add new components
19
19
  .sort((a, b) => {
20
20
  var _a;
@@ -24,7 +24,7 @@ const createMainPipeline = async (pipelineType, config) => {
24
24
  return aIndex - bIndex;
25
25
  });
26
26
  const allComponentJobs = allJobsPerTrigger
27
- .filter((j) => j.context.type === "component")
27
+ .filter((j) => { var _a; return ((_a = j.context) === null || _a === void 0 ? void 0 : _a.type) === "component"; })
28
28
  // sort by componentName in the same order as they appear in the config
29
29
  // this is purely for better readability in git diffs when you add new components
30
30
  .sort((a, b) => {
@@ -33,18 +33,18 @@ const createMainPipeline = async (pipelineType, config) => {
33
33
  const bIndex = componentNames.findIndex((c) => c === b.context.name);
34
34
  return aIndex - bIndex;
35
35
  });
36
- const allJobs = [...allWorkspaceJobs, ...allComponentJobs].reduce((acc, { gitlabJob, name }) => {
36
+ const allJobs = [...allWorkspaceJobs, ...allComponentJobs].reduce((acc, { gitlabJob, name, context }) => {
37
37
  var _a, _b;
38
38
  // merge jobs, if a job is already there, merge the rules
39
39
  // this is currently needed because of envMode: "none", which creates the same job for all triggers, so it can appear multiple times
40
40
  if (acc[name]) {
41
- acc[name].rules = [
42
- ...((_a = acc[name].rules) !== null && _a !== void 0 ? _a : []),
41
+ acc[name].gitlabJob.rules = [
42
+ ...((_a = acc[name].gitlabJob.rules) !== null && _a !== void 0 ? _a : []),
43
43
  ...((_b = gitlabJob.rules) !== null && _b !== void 0 ? _b : []),
44
44
  ];
45
45
  }
46
46
  else {
47
- acc[name] = gitlabJob;
47
+ acc[name] = { context, gitlabJob };
48
48
  }
49
49
  return acc;
50
50
  }, {});
@@ -52,7 +52,13 @@ const createMainPipeline = async (pipelineType, config) => {
52
52
  stages: [...stages, "release"],
53
53
  jobs: {
54
54
  ...allJobs,
55
- ...(0, gitlabReleaseJobs_1.getGitlabReleaseJobs)(),
55
+ ...Object.fromEntries(Object.entries((0, gitlabReleaseJobs_1.getGitlabReleaseJobs)()).map(([name, gitlabJob]) => [
56
+ name,
57
+ {
58
+ gitlabJob,
59
+ context: null,
60
+ },
61
+ ])),
56
62
  },
57
63
  variables: config.runnerVariables,
58
64
  });
@@ -1 +1 @@
1
- {"version":3,"file":"createMainPipeline.js","sourceRoot":"","sources":["../../../../../pipeline/src/pipeline/createMainPipeline.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"createMainPipeline.js","sourceRoot":"","sources":["../../../../../pipeline/src/pipeline/createMainPipeline.ts"],"names":[],"mappings":"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"}
@@ -1,21 +1,7 @@
1
1
  import type { Config, PipelineType } from "../types";
2
- export declare function generateLocalPipelineContent<T extends PipelineType>(config: Config, pipelineType: T): Promise<{
3
- image: string;
4
- stages: string[];
5
- variables: import("../types/gitlab-ci-yml").JobVariables1;
6
- workflow: {
7
- rules: {
8
- if?: string;
9
- changes?: import("../types/gitlab-ci-yml").Changes;
10
- exists?: import("../types/gitlab-ci-yml").Exists;
11
- variables?: import("../types/gitlab-ci-yml").RulesVariables;
12
- when?: import("../types/gitlab-ci-yml").When;
13
- start_in?: string;
14
- allow_failure?: import("../types/gitlab-ci-yml").AllowFailure;
15
- needs?: import("../types/gitlab-ci-yml").RulesNeeds;
16
- }[];
17
- };
18
- } & Omit<import("../types").Pipeline<T>, "image" | "jobs" | "variables" | "workflow" | "stages"> & {
19
- [k: string]: import("../types").GitlabJobDef;
20
- }>;
21
2
  export declare function generatePipelineFiles<T extends PipelineType>(config: Config, pipelineType: T): Promise<void>;
3
+ /**
4
+ *
5
+ * for testing purposes
6
+ */
7
+ export declare function getGitlabCompletePipeline(config: Config): Promise<{}>;
@@ -1,29 +1,80 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.generatePipelineFiles = exports.generateLocalPipelineContent = void 0;
3
+ exports.getGitlabCompletePipeline = exports.generatePipelineFiles = void 0;
4
+ const promises_1 = require("fs/promises");
5
+ const path_1 = require("path");
4
6
  const writeFiles_1 = require("../utils/writeFiles");
5
7
  const createMainPipeline_1 = require("./createMainPipeline");
6
8
  const sortGitLabJobDefProps_1 = require("./gitlab/sortGitLabJobDefProps");
7
- async function generateLocalPipelineContent(config, pipelineType) {
8
- const { jobs, image, stages, variables, workflow, ...pipelineRest } = await (0, createMainPipeline_1.createMainPipeline)(pipelineType, config);
9
- const jobsWithSortedProps = Object.fromEntries(Object.entries(jobs).map(([jobName, job]) => [
10
- jobName,
11
- (0, sortGitLabJobDefProps_1.sortGitLabJobDefProps)(job),
12
- ]));
13
- return {
14
- image,
15
- stages,
16
- variables,
17
- workflow,
18
- ...pipelineRest,
19
- // jobs need to be spread into main YAML, because GitLab pipeline YAML has no jobs key - jobs are top level with their key as their name
20
- ...jobsWithSortedProps,
21
- };
22
- }
23
- exports.generateLocalPipelineContent = generateLocalPipelineContent;
9
+ const CATLADDER_GENERATED_FOLDER = ".catladder-generated";
10
+ const GITLAB_GENERATED_FOLDER = CATLADDER_GENERATED_FOLDER + "/gitlab";
24
11
  async function generatePipelineFiles(config, pipelineType) {
25
- const pipelineContent = await generateLocalPipelineContent(config, pipelineType);
26
- return (0, writeFiles_1.writeYamlfile)(`.gitlab-ci.yml`, pipelineContent);
12
+ if (pipelineType !== "gitlab") {
13
+ throw new Error("Pipeline type not supported");
14
+ }
15
+ const includes = await getGitlabPipelineIncludes(config);
16
+ const mainFile = {
17
+ path: ".gitlab-ci.yml",
18
+ content: {
19
+ include: includes.map((i) => i.path),
20
+ },
21
+ };
22
+ const files = [mainFile, ...includes];
23
+ // first clean up the folder
24
+ await (0, promises_1.rm)(GITLAB_GENERATED_FOLDER, { recursive: true });
25
+ // write files
26
+ await Promise.all(files.map(async ({ path, content }) => {
27
+ await (0, promises_1.mkdir)((0, path_1.dirname)(path), { recursive: true });
28
+ await (0, writeFiles_1.writeYamlfile)(path, content);
29
+ }));
27
30
  }
28
31
  exports.generatePipelineFiles = generatePipelineFiles;
32
+ async function getGitlabPipelineIncludes(config) {
33
+ const { jobs, image, stages, variables, workflow, ...pipelineRest } = await (0, createMainPipeline_1.createMainPipeline)("gitlab", config);
34
+ // we will create 1 include per component or workspace
35
+ // this is for better readability in git diffs and to avoid problems with yaml files beeing too large
36
+ // group by context
37
+ const groups = Object.entries(jobs).reduce((acc, [jobName, { gitlabJob, context }]) => {
38
+ const group = !context
39
+ ? "global-jobs"
40
+ : (context === null || context === void 0 ? void 0 : context.type) + "/" + context.name;
41
+ if (!acc[group]) {
42
+ acc[group] = {};
43
+ }
44
+ acc[group][jobName] = (0, sortGitLabJobDefProps_1.sortGitLabJobDefProps)(gitlabJob); // also sort properties for more consistent diffing
45
+ return acc;
46
+ }, {});
47
+ const componentIncludes = Object.entries(groups).map(([group, jobs]) => {
48
+ return {
49
+ path: GITLAB_GENERATED_FOLDER + "/" + group + ".yaml",
50
+ content: jobs,
51
+ };
52
+ });
53
+ const mainInclude = {
54
+ path: GITLAB_GENERATED_FOLDER + "/main.yaml",
55
+ content: {
56
+ image,
57
+ stages,
58
+ variables,
59
+ workflow,
60
+ ...pipelineRest,
61
+ },
62
+ };
63
+ const includes = [mainInclude, ...componentIncludes];
64
+ return includes;
65
+ }
66
+ /**
67
+ *
68
+ * for testing purposes
69
+ */
70
+ async function getGitlabCompletePipeline(config) {
71
+ const includes = await getGitlabPipelineIncludes(config);
72
+ return includes.reduce((acc, { content }) => {
73
+ return {
74
+ ...acc,
75
+ ...content, // merge all includes into one object
76
+ };
77
+ }, {});
78
+ }
79
+ exports.getGitlabCompletePipeline = getGitlabCompletePipeline;
29
80
  //# sourceMappingURL=generatePipelineFiles.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"generatePipelineFiles.js","sourceRoot":"","sources":["../../../../../pipeline/src/pipeline/generatePipelineFiles.ts"],"names":[],"mappings":";;;AACA,oDAAoD;AACpD,6DAA0D;AAC1D,0EAAuE;AAEhE,KAAK,UAAU,4BAA4B,CAChD,MAAc,EACd,YAAe;IAEf,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,GAAG,YAAY,EAAE,GACjE,MAAM,IAAA,uCAAkB,EAAC,YAAY,EAAE,MAAM,CAAC,CAAC;IAEjD,MAAM,mBAAmB,GAAG,MAAM,CAAC,WAAW,CAC5C,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC;QAC3C,OAAO;QACP,IAAA,6CAAqB,EAAC,GAAG,CAAC;KAC3B,CAAC,CACH,CAAC;IAEF,OAAO;QACL,KAAK;QACL,MAAM;QACN,SAAS;QACT,QAAQ;QACR,GAAG,YAAY;QACf,wIAAwI;QACxI,GAAG,mBAAmB;KACvB,CAAC;AACJ,CAAC;AAvBD,oEAuBC;AAEM,KAAK,UAAU,qBAAqB,CACzC,MAAc,EACd,YAAe;IAEf,MAAM,eAAe,GAAG,MAAM,4BAA4B,CACxD,MAAM,EACN,YAAY,CACb,CAAC;IACF,OAAO,IAAA,0BAAa,EAAC,gBAAgB,EAAE,eAAe,CAAC,CAAC;AAC1D,CAAC;AATD,sDASC"}
1
+ {"version":3,"file":"generatePipelineFiles.js","sourceRoot":"","sources":["../../../../../pipeline/src/pipeline/generatePipelineFiles.ts"],"names":[],"mappings":"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"}
@@ -1,11 +1,13 @@
1
1
  import type { Context, GitlabJobDef, GitlabRule } from "../../types";
2
2
  import type { CatladderJob } from "../../types/jobs";
3
3
  import type { AllCatladderJobs } from "../createAllJobs";
4
- export type AllGitlabJobs = {
5
- name: string;
4
+ export type GitlabJobWithContext = {
6
5
  gitlabJob: GitlabJobDef;
7
- context: Context;
8
- }[];
6
+ context: Context | null;
7
+ };
8
+ export type AllGitlabJobs = (GitlabJobWithContext & {
9
+ name: string;
10
+ })[];
9
11
  export declare const GITLAB_ENVIRONMENT_URL_VARIABLE = "CL_GITLAB_ENVIRONMENT_URL";
10
12
  export declare const makeGitlabJob: (context: Context, job: CatladderJob<string>, allJobs: AllCatladderJobs, baseRules?: GitlabRule[]) => [fullName: string, job: GitlabJobDef];
11
13
  export declare const createGitlabJobs: (allJobs: AllCatladderJobs, baseRules?: GitlabRule[]) => Promise<AllGitlabJobs>;
@@ -1,3 +1,4 @@
1
+ import type { GitlabJobWithContext } from "../pipeline/gitlab/createGitlabJobs";
1
2
  import type { Artifacts as GitlabCiArtifacts, JobTemplate, Cache as GitlabJobCache, Rules } from "./gitlab-ci-yml";
2
3
  export { Retry, Image as GitlabJobImage } from "./gitlab-ci-yml";
3
4
  export type Artifacts = GitlabCiArtifacts;
@@ -22,6 +23,6 @@ export interface GitlabPipeline extends Pick<JobTemplate, "variables"> {
22
23
  rules: GitlabRule[];
23
24
  };
24
25
  stages: string[];
25
- jobs: Record<string, GitlabJobDef>;
26
+ jobs: Record<string, GitlabJobWithContext>;
26
27
  before_script?: string[];
27
28
  }