@catladder/pipeline 3.18.0 → 3.20.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (89) hide show
  1. package/dist/catenv/index.d.ts +7 -0
  2. package/dist/catenv/index.js +14 -0
  3. package/dist/catladder-gitlab.js +4 -1
  4. package/dist/constants.js +1 -1
  5. package/dist/index.d.ts +2 -1
  6. package/dist/index.js +2 -1
  7. package/dist/pipeline/createMainPipeline.js +1 -1
  8. package/dist/pipeline/generatePipelineFiles.d.ts +2 -1
  9. package/dist/pipeline/generatePipelineFiles.js +3 -4
  10. package/dist/pipeline/gitlab/gitlabReleaseJobs.d.ts +2 -1
  11. package/dist/pipeline/gitlab/gitlabReleaseJobs.js +48 -3
  12. package/dist/rules/index.d.ts +1 -3
  13. package/dist/rules/index.js +2 -19
  14. package/dist/tsconfig.tsbuildinfo +1 -1
  15. package/dist/types/config.d.ts +10 -0
  16. package/dist/types/hooks.d.ts +26 -0
  17. package/dist/types/hooks.js +5 -0
  18. package/dist/types/release.d.ts +7 -0
  19. package/dist/types/release.js +5 -0
  20. package/dist/utils/writeFiles.d.ts +12 -6
  21. package/dist/utils/writeFiles.js +59 -41
  22. package/examples/__snapshots__/automatic-releases.test.ts.snap +1484 -0
  23. package/examples/__snapshots__/cloud-run-health-check-defaults.test.ts.snap +0 -2
  24. package/examples/__snapshots__/cloud-run-health-check-only-startup.test.ts.snap +0 -2
  25. package/examples/__snapshots__/cloud-run-health-check.test.ts.snap +0 -2
  26. package/examples/__snapshots__/cloud-run-http2.test.ts.snap +0 -2
  27. package/examples/__snapshots__/cloud-run-llama.test.ts.snap +0 -2
  28. package/examples/__snapshots__/cloud-run-memory-limit.test.ts.snap +0 -2
  29. package/examples/__snapshots__/cloud-run-meteor-with-worker.test.ts.snap +0 -2
  30. package/examples/__snapshots__/cloud-run-nextjs.test.ts.snap +0 -2
  31. package/examples/__snapshots__/cloud-run-no-cpu-throttling.test.ts.snap +0 -2
  32. package/examples/__snapshots__/cloud-run-no-service.test.ts.snap +0 -2
  33. package/examples/__snapshots__/cloud-run-non-public.test.ts.snap +0 -2
  34. package/examples/__snapshots__/cloud-run-post-stop-job.test.ts.snap +0 -2
  35. package/examples/__snapshots__/cloud-run-service-custom-vpc-connector.test.ts.snap +0 -2
  36. package/examples/__snapshots__/cloud-run-service-custom-vpc.test.ts.snap +0 -2
  37. package/examples/__snapshots__/cloud-run-service-gen2.test.ts.snap +0 -2
  38. package/examples/__snapshots__/cloud-run-service-increase-timout.test.ts.snap +0 -2
  39. package/examples/__snapshots__/cloud-run-service-with-volumes.test.ts.snap +0 -2
  40. package/examples/__snapshots__/cloud-run-storybook.test.ts.snap +0 -2
  41. package/examples/__snapshots__/cloud-run-with-agents.test.ts.snap +0 -2
  42. package/examples/__snapshots__/cloud-run-with-gpu.test.ts.snap +0 -2
  43. package/examples/__snapshots__/cloud-run-with-ngnix.test.ts.snap +0 -2
  44. package/examples/__snapshots__/cloud-run-with-sql-legacy-jobs.test.ts.snap +0 -2
  45. package/examples/__snapshots__/cloud-run-with-sql-multiple-dbs.test.ts.snap +0 -2
  46. package/examples/__snapshots__/cloud-run-with-sql-reuse-db.test.ts.snap +0 -2
  47. package/examples/__snapshots__/cloud-run-with-sql.test.ts.snap +0 -2
  48. package/examples/__snapshots__/cloud-run-with-worker.test.ts.snap +0 -2
  49. package/examples/__snapshots__/custom-build-job-with-tests.test.ts.snap +0 -2
  50. package/examples/__snapshots__/custom-build-job.test.ts.snap +0 -2
  51. package/examples/__snapshots__/custom-deploy.test.ts.snap +0 -2
  52. package/examples/__snapshots__/custom-envs.test.ts.snap +0 -2
  53. package/examples/__snapshots__/custom-sbom-java.test.ts.snap +0 -2
  54. package/examples/__snapshots__/custom-verify-job.test.ts.snap +0 -2
  55. package/examples/__snapshots__/git-submodule.test.ts.snap +0 -2
  56. package/examples/__snapshots__/kubernetes-application-customization.test.ts.snap +0 -2
  57. package/examples/__snapshots__/kubernetes-with-cloud-sql.test.ts.snap +0 -2
  58. package/examples/__snapshots__/kubernetes-with-jobs.test.ts.snap +0 -2
  59. package/examples/__snapshots__/kubernetes-with-mongodb.test.ts.snap +0 -2
  60. package/examples/__snapshots__/local-dot-env.test.ts.snap +0 -2
  61. package/examples/__snapshots__/meteor-kubernetes.test.ts.snap +0 -2
  62. package/examples/__snapshots__/modify-generated-files.test.ts.snap +640 -0
  63. package/examples/__snapshots__/multiline-var.test.ts.snap +0 -2
  64. package/examples/__snapshots__/native-app.test.ts.snap +0 -2
  65. package/examples/__snapshots__/node-build-with-custom-image.test.ts.snap +0 -2
  66. package/examples/__snapshots__/node-build-with-docker-additions.test.ts.snap +0 -2
  67. package/examples/__snapshots__/override-secrets.test.ts.snap +0 -2
  68. package/examples/__snapshots__/rails-k8s-with-worker-dockerfile.test.ts.snap +0 -2
  69. package/examples/__snapshots__/rails-k8s-with-worker.test.ts.snap +0 -2
  70. package/examples/__snapshots__/referencing-other-vars.test.ts.snap +0 -2
  71. package/examples/__snapshots__/wait-for-other-deploy.test.ts.snap +0 -2
  72. package/examples/__snapshots__/workspace-api-www-turbo-cache.test.ts.snap +0 -2
  73. package/examples/__snapshots__/workspace-api-www.test.ts.snap +0 -2
  74. package/examples/automatic-releases.test.ts +11 -0
  75. package/examples/automatic-releases.ts +28 -0
  76. package/examples/modify-generated-files.test.ts +11 -0
  77. package/examples/modify-generated-files.ts +29 -0
  78. package/package.json +1 -1
  79. package/src/catenv/index.ts +14 -0
  80. package/src/catladder-gitlab.ts +4 -1
  81. package/src/index.ts +1 -0
  82. package/src/pipeline/createMainPipeline.ts +9 -7
  83. package/src/pipeline/generatePipelineFiles.ts +5 -4
  84. package/src/pipeline/gitlab/gitlabReleaseJobs.ts +37 -4
  85. package/src/rules/index.ts +0 -32
  86. package/src/types/config.ts +12 -0
  87. package/src/types/hooks.ts +29 -0
  88. package/src/types/release.ts +7 -0
  89. package/src/utils/writeFiles.ts +58 -34
@@ -0,0 +1,7 @@
1
+ import type { Config } from "../types";
2
+ import { FileWriter } from "../utils/writeFiles";
3
+ export type CatenvContext = {
4
+ config: Config;
5
+ fileWriter: FileWriter;
6
+ };
7
+ export declare const createCatenvContext: (config: Config) => CatenvContext;
@@ -0,0 +1,14 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.createCatenvContext = void 0;
7
+ var writeFiles_1 = require("../utils/writeFiles");
8
+ var createCatenvContext = function (config) {
9
+ return {
10
+ config: config,
11
+ fileWriter: writeFiles_1.FileWriter.create(config)
12
+ };
13
+ };
14
+ exports.createCatenvContext = createCatenvContext;
@@ -120,15 +120,18 @@ Object.defineProperty(exports, "__esModule", {
120
120
  });
121
121
  var config_1 = require("./config");
122
122
  var generatePipelineFiles_1 = require("./pipeline/generatePipelineFiles");
123
+ var catenv_1 = require("./catenv");
123
124
  (0, config_1.readConfig)().then(function (result) {
124
125
  return __awaiter(void 0, void 0, void 0, function () {
126
+ var context;
125
127
  return __generator(this, function (_a) {
126
128
  switch (_a.label) {
127
129
  case 0:
128
130
  if (!(result === null || result === void 0 ? void 0 : result.config)) {
129
131
  throw new Error("no catladder config found");
130
132
  }
131
- return [4 /*yield*/, (0, generatePipelineFiles_1.generatePipelineFiles)(result.config, "gitlab")];
133
+ context = (0, catenv_1.createCatenvContext)(result.config);
134
+ return [4 /*yield*/, (0, generatePipelineFiles_1.generatePipelineFiles)(context, "gitlab")];
132
135
  case 1:
133
136
  _a.sent();
134
137
  return [2 /*return*/];
package/dist/constants.js CHANGED
@@ -4,5 +4,5 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.DOCKER_REGISTRY = exports.PIPELINE_IMAGE_TAG = void 0;
7
- exports.PIPELINE_IMAGE_TAG = "v3-18-0-3386f3ec" || "latest";
7
+ exports.PIPELINE_IMAGE_TAG = "v3-20-0-f84d9d38" || "latest";
8
8
  exports.DOCKER_REGISTRY = "git.panter.ch:5001/catladder/catladder" || "git.panter.ch:5001/catladder/catladder";
package/dist/index.d.ts CHANGED
@@ -8,4 +8,5 @@ export * from "./build";
8
8
  export * from "./deploy";
9
9
  export * from "./utils/writeFiles";
10
10
  export * from "./variables/VariableValue";
11
- export * from "./bash";
11
+ export * from "./bash";
12
+ export * from "./catenv";
package/dist/index.js CHANGED
@@ -32,4 +32,5 @@ __exportStar(require("./build"), exports);
32
32
  __exportStar(require("./deploy"), exports);
33
33
  __exportStar(require("./utils/writeFiles"), exports);
34
34
  __exportStar(require("./variables/VariableValue"), exports);
35
- __exportStar(require("./bash"), exports);
35
+ __exportStar(require("./bash"), exports);
36
+ __exportStar(require("./catenv"), exports);
@@ -254,7 +254,7 @@ var createMainPipeline = function (pipelineType, config) {
254
254
  }, {});
255
255
  return [2 /*return*/, (0, createGitlabPipeline_1.createGitlabPipelineWithDefaults)({
256
256
  stages: __spreadArray(__spreadArray([], __read(stages), false), ["release"], false),
257
- jobs: __assign(__assign({}, allJobs), Object.fromEntries(Object.entries((0, gitlabReleaseJobs_1.getGitlabReleaseJobs)()).map(function (_a) {
257
+ jobs: __assign(__assign({}, allJobs), Object.fromEntries(Object.entries((0, gitlabReleaseJobs_1.getGitlabReleaseJobs)(config)).map(function (_a) {
258
258
  var _b = __read(_a, 2),
259
259
  name = _b[0],
260
260
  gitlabJob = _b[1];
@@ -1,5 +1,6 @@
1
1
  import type { Config, PipelineType } from "../types";
2
- export declare function generatePipelineFiles<T extends PipelineType>(config: Config, pipelineType: T): Promise<void>;
2
+ import type { CatenvContext } from "../catenv";
3
+ export declare function generatePipelineFiles<T extends PipelineType>(context: CatenvContext, pipelineType: T): Promise<void>;
3
4
  /**
4
5
  *
5
6
  * for testing purposes
@@ -170,12 +170,11 @@ Object.defineProperty(exports, "__esModule", {
170
170
  exports.getGitlabCompletePipeline = exports.generatePipelineFiles = void 0;
171
171
  var promises_1 = require("fs/promises");
172
172
  var path_1 = require("path");
173
- var writeFiles_1 = require("../utils/writeFiles");
174
173
  var createMainPipeline_1 = require("./createMainPipeline");
175
174
  var sortGitLabJobDefProps_1 = require("./gitlab/sortGitLabJobDefProps");
176
175
  var CATLADDER_GENERATED_FOLDER = ".catladder-generated";
177
176
  var GITLAB_GENERATED_FOLDER = CATLADDER_GENERATED_FOLDER + "/gitlab";
178
- function generatePipelineFiles(config, pipelineType) {
177
+ function generatePipelineFiles(context, pipelineType) {
179
178
  return __awaiter(this, void 0, void 0, function () {
180
179
  var includes, mainFile, files;
181
180
  var _this = this;
@@ -185,7 +184,7 @@ function generatePipelineFiles(config, pipelineType) {
185
184
  if (pipelineType !== "gitlab") {
186
185
  throw new Error("Pipeline type not supported");
187
186
  }
188
- return [4 /*yield*/, getGitlabPipelineIncludes(config)];
187
+ return [4 /*yield*/, getGitlabPipelineIncludes(context.config)];
189
188
  case 1:
190
189
  includes = _a.sent();
191
190
  mainFile = {
@@ -218,7 +217,7 @@ function generatePipelineFiles(config, pipelineType) {
218
217
  })];
219
218
  case 1:
220
219
  _c.sent();
221
- return [4 /*yield*/, (0, writeFiles_1.writeYamlfile)(path, content)];
220
+ return [4 /*yield*/, context.fileWriter.writeYamlfile(path, content)];
222
221
  case 2:
223
222
  _c.sent();
224
223
  return [2 /*return*/];
@@ -1,4 +1,5 @@
1
- export declare const getGitlabReleaseJobs: () => {
1
+ import type { Config } from "../../types/config";
2
+ export declare const getGitlabReleaseJobs: (config: Config) => {
2
3
  "create release": {
3
4
  stage: string;
4
5
  image: string;
@@ -1,5 +1,36 @@
1
1
  "use strict";
2
2
 
3
+ var __read = this && this.__read || function (o, n) {
4
+ var m = typeof Symbol === "function" && o[Symbol.iterator];
5
+ if (!m) return o;
6
+ var i = m.call(o),
7
+ r,
8
+ ar = [],
9
+ e;
10
+ try {
11
+ while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
12
+ } catch (error) {
13
+ e = {
14
+ error: error
15
+ };
16
+ } finally {
17
+ try {
18
+ if (r && !r.done && (m = i["return"])) m.call(i);
19
+ } finally {
20
+ if (e) throw e.error;
21
+ }
22
+ }
23
+ return ar;
24
+ };
25
+ var __spreadArray = this && this.__spreadArray || function (to, from, pack) {
26
+ if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
27
+ if (ar || !(i in from)) {
28
+ if (!ar) ar = Array.prototype.slice.call(from, 0, i);
29
+ ar[i] = from[i];
30
+ }
31
+ }
32
+ return to.concat(ar || Array.prototype.slice.call(from));
33
+ };
3
34
  Object.defineProperty(exports, "__esModule", {
4
35
  value: true
5
36
  });
@@ -7,19 +38,33 @@ exports.getGitlabReleaseJobs = void 0;
7
38
  var rules_1 = require("../../rules");
8
39
  var runner_1 = require("../../runner");
9
40
  var EXPIRED_TOKEN_HELP = "echo '👉 The project access token might be invald - run `project-renew-token` in catladder CLI to fix.'";
10
- var getGitlabReleaseJobs = function () {
41
+ var baseReleaseRules = [rules_1.RULE_NEVER_ON_RELEASE_COMMIT, rules_1.RULE_NEVER_ON_AGENT_TRIGGER, rules_1.RULE_NEVER_ON_SCHEDULE];
42
+ var getGitlabReleaseJobs = function (config) {
11
43
  var _a;
44
+ var _b;
12
45
  return _a = {}, _a["create release"] = {
13
46
  stage: "release",
14
47
  image: (0, runner_1.getRunnerImage)("semantic-release"),
15
48
  script: ["semanticRelease", EXPIRED_TOKEN_HELP],
16
- rules: rules_1.RULES_RELEASE
49
+ rules: __spreadArray(__spreadArray([], __read(baseReleaseRules), false), [{
50
+ if: rules_1.RULE_CONDITION_MAIN_BRANCH,
51
+ when: ((_b = config.releases) === null || _b === void 0 ? void 0 : _b.when) === "auto" ? "on_success" : "manual"
52
+ }, {
53
+ if: rules_1.RULE_CONDITION_HOTFIX_BRANCH,
54
+ when: "manual"
55
+ }], false)
17
56
  }, _a["⚠️ force create release"] = {
18
57
  stage: "release",
19
58
  image: (0, runner_1.getRunnerImage)("semantic-release"),
20
59
  script: ["semanticRelease", EXPIRED_TOKEN_HELP],
21
60
  needs: [],
22
- rules: rules_1.RULES_MANUAL_RELEASE
61
+ rules: __spreadArray(__spreadArray([], __read(baseReleaseRules), false), [{
62
+ if: rules_1.RULE_CONDITION_MAIN_BRANCH,
63
+ when: "manual"
64
+ }, {
65
+ if: rules_1.RULE_CONDITION_HOTFIX_BRANCH,
66
+ when: "manual"
67
+ }], false)
23
68
  }, _a;
24
69
  };
25
70
  exports.getGitlabReleaseJobs = getGitlabReleaseJobs;
@@ -9,6 +9,4 @@ export declare const RULE_NEVER_ON_AGENT_TRIGGER: GitlabRule;
9
9
  export declare const RULE_NEVER_ON_SCHEDULE: GitlabRule;
10
10
  export declare const RULE_IS_MERGE_REQUEST: GitlabRule;
11
11
  export declare const RULE_IS_TAGGED_RELEASE: GitlabRule;
12
- export declare const RULE_CONDITION_HOTFIX_BRANCH = "$CI_COMMIT_BRANCH =~ /^[0-9]+.([0-9]+|x).x$/";
13
- export declare const RULES_RELEASE: GitlabRule[];
14
- export declare const RULES_MANUAL_RELEASE: GitlabRule[];
12
+ export declare const RULE_CONDITION_HOTFIX_BRANCH = "$CI_COMMIT_BRANCH =~ /^[0-9]+.([0-9]+|x).x$/";
@@ -3,7 +3,7 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.RULES_MANUAL_RELEASE = exports.RULES_RELEASE = exports.RULE_CONDITION_HOTFIX_BRANCH = exports.RULE_IS_TAGGED_RELEASE = exports.RULE_IS_MERGE_REQUEST = exports.RULE_NEVER_ON_SCHEDULE = exports.RULE_NEVER_ON_AGENT_TRIGGER = exports.RULE_NEVER_ON_RELEASE_COMMIT = exports.RULE_IS_MAIN_BRANCH_AND_NOT_RELEASE_COMMIT = exports.RULE_IS_MAIN_BRANCH = exports.RULE_CONDITION_NOT_RELEASE_COMMIT = exports.RULE_CONDITION_RELEASE_COMMIT = exports.RULE_CONDITION_MAIN_BRANCH = void 0;
6
+ exports.RULE_CONDITION_HOTFIX_BRANCH = exports.RULE_IS_TAGGED_RELEASE = exports.RULE_IS_MERGE_REQUEST = exports.RULE_NEVER_ON_SCHEDULE = exports.RULE_NEVER_ON_AGENT_TRIGGER = exports.RULE_NEVER_ON_RELEASE_COMMIT = exports.RULE_IS_MAIN_BRANCH_AND_NOT_RELEASE_COMMIT = exports.RULE_IS_MAIN_BRANCH = exports.RULE_CONDITION_NOT_RELEASE_COMMIT = exports.RULE_CONDITION_RELEASE_COMMIT = exports.RULE_CONDITION_MAIN_BRANCH = void 0;
7
7
  exports.RULE_CONDITION_MAIN_BRANCH = "$CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH";
8
8
  exports.RULE_CONDITION_RELEASE_COMMIT = "$CI_COMMIT_MESSAGE =~ /^chore\\(release\\).*/";
9
9
  exports.RULE_CONDITION_NOT_RELEASE_COMMIT = "$CI_COMMIT_MESSAGE !~ /^chore\\(release\\).*/";
@@ -32,21 +32,4 @@ exports.RULE_IS_MERGE_REQUEST = {
32
32
  exports.RULE_IS_TAGGED_RELEASE = {
33
33
  if: "$CI_COMMIT_TAG"
34
34
  };
35
- exports.RULE_CONDITION_HOTFIX_BRANCH = "$CI_COMMIT_BRANCH =~ /^[0-9]+.([0-9]+|x).x$/";
36
- exports.RULES_RELEASE = [exports.RULE_NEVER_ON_RELEASE_COMMIT, exports.RULE_NEVER_ON_AGENT_TRIGGER, exports.RULE_NEVER_ON_SCHEDULE, {
37
- if: exports.RULE_CONDITION_MAIN_BRANCH + ' && $AUTO_RELEASE == "true"',
38
- when: "on_success"
39
- }, {
40
- if: exports.RULE_CONDITION_MAIN_BRANCH,
41
- when: "manual"
42
- }, {
43
- if: exports.RULE_CONDITION_HOTFIX_BRANCH,
44
- when: "manual"
45
- }];
46
- exports.RULES_MANUAL_RELEASE = [exports.RULE_NEVER_ON_RELEASE_COMMIT, exports.RULE_NEVER_ON_AGENT_TRIGGER, exports.RULE_NEVER_ON_SCHEDULE, {
47
- if: exports.RULE_CONDITION_MAIN_BRANCH,
48
- when: "manual"
49
- }, {
50
- if: exports.RULE_CONDITION_HOTFIX_BRANCH,
51
- when: "manual"
52
- }];
35
+ exports.RULE_CONDITION_HOTFIX_BRANCH = "$CI_COMMIT_BRANCH =~ /^[0-9]+.([0-9]+|x).x$/";