@catladder/pipeline 3.13.1 → 3.14.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 (107) hide show
  1. package/dist/bash/bashEscape.d.ts +2 -0
  2. package/dist/bash/bashEscape.js +9 -1
  3. package/dist/constants.js +1 -1
  4. package/dist/pipeline/agent/createAgentContext.d.ts +6 -0
  5. package/dist/pipeline/agent/createAgentContext.js +141 -0
  6. package/dist/pipeline/agent/createAgentEventJob.d.ts +2 -0
  7. package/dist/pipeline/agent/createAgentEventJob.js +74 -0
  8. package/dist/pipeline/agent/createAgentReviewJob.d.ts +2 -0
  9. package/dist/pipeline/agent/createAgentReviewJob.js +69 -0
  10. package/dist/pipeline/agent/createJobsForAgentContext.d.ts +2 -0
  11. package/dist/pipeline/agent/createJobsForAgentContext.js +12 -0
  12. package/dist/pipeline/agent/prompts.d.ts +10 -0
  13. package/dist/pipeline/agent/prompts.js +66 -0
  14. package/dist/pipeline/agent/shared.d.ts +8 -0
  15. package/dist/pipeline/agent/shared.js +29 -0
  16. package/dist/pipeline/agent/utils.d.ts +3 -0
  17. package/dist/pipeline/agent/utils.js +16 -0
  18. package/dist/pipeline/createAllJobs.d.ts +5 -1
  19. package/dist/pipeline/createAllJobs.js +32 -6
  20. package/dist/pipeline/createMainPipeline.js +10 -5
  21. package/dist/pipeline/gitlab/createGitlabJobs.d.ts +3 -3
  22. package/dist/pipeline/gitlab/createGitlabJobs.js +13 -11
  23. package/dist/pipeline/gitlab/createGitlabPipeline.js +6 -0
  24. package/dist/rules/index.d.ts +1 -0
  25. package/dist/rules/index.js +8 -3
  26. package/dist/tsconfig.tsbuildinfo +1 -1
  27. package/dist/types/agent.d.ts +7 -0
  28. package/dist/types/agent.js +5 -0
  29. package/dist/types/config.d.ts +2 -0
  30. package/dist/types/context.d.ts +7 -0
  31. package/dist/types/index.d.ts +2 -1
  32. package/dist/types/index.js +2 -1
  33. package/dist/types/jobs.d.ts +5 -1
  34. package/dist/types/jobs.js +1 -1
  35. package/examples/__snapshots__/cloud-run-health-check-defaults.test.ts.snap +65 -0
  36. package/examples/__snapshots__/cloud-run-health-check-only-startup.test.ts.snap +65 -0
  37. package/examples/__snapshots__/cloud-run-health-check.test.ts.snap +65 -0
  38. package/examples/__snapshots__/cloud-run-http2.test.ts.snap +65 -0
  39. package/examples/__snapshots__/cloud-run-llama.test.ts.snap +29 -0
  40. package/examples/__snapshots__/cloud-run-memory-limit.test.ts.snap +65 -0
  41. package/examples/__snapshots__/cloud-run-meteor-with-worker.test.ts.snap +65 -0
  42. package/examples/__snapshots__/cloud-run-nextjs.test.ts.snap +65 -0
  43. package/examples/__snapshots__/cloud-run-no-cpu-throttling.test.ts.snap +65 -0
  44. package/examples/__snapshots__/cloud-run-no-service.test.ts.snap +65 -0
  45. package/examples/__snapshots__/cloud-run-non-public.test.ts.snap +65 -0
  46. package/examples/__snapshots__/cloud-run-post-stop-job.test.ts.snap +65 -0
  47. package/examples/__snapshots__/cloud-run-service-custom-vpc-connector.test.ts.snap +65 -0
  48. package/examples/__snapshots__/cloud-run-service-custom-vpc.test.ts.snap +65 -0
  49. package/examples/__snapshots__/cloud-run-service-gen2.test.ts.snap +65 -0
  50. package/examples/__snapshots__/cloud-run-service-increase-timout.test.ts.snap +65 -0
  51. package/examples/__snapshots__/cloud-run-service-with-volumes.test.ts.snap +65 -0
  52. package/examples/__snapshots__/cloud-run-storybook.test.ts.snap +53 -0
  53. package/examples/__snapshots__/cloud-run-with-agents.test.ts.snap +1576 -0
  54. package/examples/__snapshots__/cloud-run-with-gpu.test.ts.snap +65 -0
  55. package/examples/__snapshots__/cloud-run-with-ngnix.test.ts.snap +65 -0
  56. package/examples/__snapshots__/cloud-run-with-sql-legacy-jobs.test.ts.snap +65 -0
  57. package/examples/__snapshots__/cloud-run-with-sql-multiple-dbs.test.ts.snap +169 -0
  58. package/examples/__snapshots__/cloud-run-with-sql-reuse-db.test.ts.snap +117 -0
  59. package/examples/__snapshots__/cloud-run-with-sql.test.ts.snap +65 -0
  60. package/examples/__snapshots__/cloud-run-with-worker.test.ts.snap +65 -0
  61. package/examples/__snapshots__/custom-build-job-with-tests.test.ts.snap +65 -0
  62. package/examples/__snapshots__/custom-build-job.test.ts.snap +53 -0
  63. package/examples/__snapshots__/custom-deploy.test.ts.snap +59 -0
  64. package/examples/__snapshots__/custom-envs.test.ts.snap +63 -0
  65. package/examples/__snapshots__/custom-sbom-java.test.ts.snap +53 -0
  66. package/examples/__snapshots__/custom-verify-job.test.ts.snap +73 -0
  67. package/examples/__snapshots__/git-submodule.test.ts.snap +65 -0
  68. package/examples/__snapshots__/kubernetes-application-customization.test.ts.snap +73 -0
  69. package/examples/__snapshots__/kubernetes-with-cloud-sql.test.ts.snap +73 -0
  70. package/examples/__snapshots__/kubernetes-with-jobs.test.ts.snap +133 -0
  71. package/examples/__snapshots__/kubernetes-with-mongodb.test.ts.snap +73 -0
  72. package/examples/__snapshots__/local-dot-env.test.ts.snap +65 -0
  73. package/examples/__snapshots__/meteor-kubernetes.test.ts.snap +73 -0
  74. package/examples/__snapshots__/multiline-var.test.ts.snap +177 -0
  75. package/examples/__snapshots__/native-app.test.ts.snap +101 -0
  76. package/examples/__snapshots__/node-build-with-custom-image.test.ts.snap +65 -0
  77. package/examples/__snapshots__/node-build-with-docker-additions.test.ts.snap +65 -0
  78. package/examples/__snapshots__/override-secrets.test.ts.snap +65 -0
  79. package/examples/__snapshots__/rails-k8s-with-worker-dockerfile.test.ts.snap +65 -0
  80. package/examples/__snapshots__/rails-k8s-with-worker.test.ts.snap +65 -0
  81. package/examples/__snapshots__/referencing-other-vars.test.ts.snap +177 -0
  82. package/examples/__snapshots__/wait-for-other-deploy.test.ts.snap +85 -0
  83. package/examples/__snapshots__/workspace-api-www-turbo-cache.test.ts.snap +97 -0
  84. package/examples/__snapshots__/workspace-api-www.test.ts.snap +97 -0
  85. package/examples/cloud-run-with-agents.test.ts +11 -0
  86. package/examples/cloud-run-with-agents.ts +36 -0
  87. package/package.json +1 -1
  88. package/src/bash/bashEscape.ts +6 -0
  89. package/src/pipeline/__tests__/__snapshots__/getPipelineStages.test.ts.snap +9 -0
  90. package/src/pipeline/agent/createAgentContext.ts +19 -0
  91. package/src/pipeline/agent/createAgentEventJob.ts +35 -0
  92. package/src/pipeline/agent/createAgentReviewJob.ts +33 -0
  93. package/src/pipeline/agent/createJobsForAgentContext.ts +7 -0
  94. package/src/pipeline/agent/prompts.ts +233 -0
  95. package/src/pipeline/agent/shared.ts +36 -0
  96. package/src/pipeline/agent/utils.ts +9 -0
  97. package/src/pipeline/createAllJobs.ts +20 -1
  98. package/src/pipeline/createJobsForComponent.ts +1 -0
  99. package/src/pipeline/createMainPipeline.ts +19 -4
  100. package/src/pipeline/gitlab/createGitlabJobs.ts +39 -30
  101. package/src/pipeline/gitlab/createGitlabPipeline.ts +8 -0
  102. package/src/rules/index.ts +7 -0
  103. package/src/types/agent.ts +7 -0
  104. package/src/types/config.ts +3 -0
  105. package/src/types/context.ts +8 -0
  106. package/src/types/index.ts +1 -0
  107. package/src/types/jobs.ts +6 -0
@@ -183,7 +183,7 @@ var getFullJobName = function (_a) {
183
183
  allJobs = _a.allJobs,
184
184
  env = _a.env;
185
185
  var shouldAddIcon = allJobs.workspaces.length > 0;
186
- var icon = type === "component" ? "🔹" : "🔸";
186
+ var icon = type === "component" ? "🔹" : type === "agent" ? "🤖" : "🔸";
187
187
  var prefix = shouldAddIcon ? icon + " " : "";
188
188
  if (env) {
189
189
  return "".concat(prefix).concat(baseName, " ").concat(name, " | ").concat(env, " ");
@@ -244,13 +244,13 @@ var makeGitlabJob = function (context, job, allJobs, baseRules) {
244
244
  runnerVariables = job.runnerVariables,
245
245
  when = job.when,
246
246
  rest = __rest(job, ["environment", "envMode", "needsStages", "name", "needs", "jobTags", "script", "variables", "runnerVariables", "when"]);
247
- var stage = envMode === "stagePerEnv" ? "".concat(job.stage, " ").concat(context.env) : job.stage;
247
+ var stage = envMode === "stagePerEnv" && context.type !== "agent" ? "".concat(job.stage, " ").concat(context.env) : job.stage;
248
248
  var deduplicatedGitlabNeeds = getGitlabNeeds(context, job, allJobs);
249
249
  var fullJobName = getFullJobName({
250
250
  type: context.type,
251
251
  name: name,
252
252
  baseName: context.name,
253
- env: envMode !== "none" ? context.env : undefined,
253
+ env: envMode !== "none" && context.type !== "agent" ? context.env : undefined,
254
254
  allJobs: allJobs
255
255
  });
256
256
  // backwards compatibility, some may still use KUBERNETES_CPU_REQUEST, KUBERNETES_MEMORY_REQUEST, etc. in variables.
@@ -279,16 +279,17 @@ var makeGitlabJob = function (context, job, allJobs, baseRules) {
279
279
  }) : when ? [{
280
280
  when: when
281
281
  }] : []), false);
282
- var gitlabJob = __assign(__assign({}, rest), {
282
+ var gitlabJob = __assign(__assign({
283
+ retry: defaults_1.BASE_RETRY,
284
+ interruptible: true
285
+ }, rest), {
283
286
  rules: rules.length > 0 ? rules : undefined,
284
287
  variables: __assign(__assign({}, legacyRunnerVariables), runnerVariables),
285
288
  script: __spreadArray(__spreadArray([], __read(varsInjectScripts), false), __read((_b = script === null || script === void 0 ? void 0 : script.filter(utils_1.notNil)) !== null && _b !== void 0 ? _b : []), false),
286
289
  tags: jobTags,
287
290
  stage: stage,
288
291
  // sort in a predictable manner for snapshot tests
289
- needs: deduplicatedGitlabNeeds,
290
- retry: defaults_1.BASE_RETRY,
291
- interruptible: true
292
+ needs: deduplicatedGitlabNeeds
292
293
  });
293
294
  var modified = addGitlabEnvironment(context, environment, gitlabJob, allJobs);
294
295
  return [fullJobName, (0, removeUndefined_1.removeUndefined)(modified)];
@@ -300,7 +301,7 @@ var addGitlabEnvironment = function (context, catladderJobEnvironment, job, allJ
300
301
  return job;
301
302
  }
302
303
  if (context.type !== "component") {
303
- // don't add enviornment for workspace jobs atm.
304
+ // don't add enviornment for workspace and agent jobs atm.
304
305
  return job;
305
306
  }
306
307
  var env = context.env,
@@ -340,7 +341,7 @@ var createGitlabJobs = function (allJobs, baseRules) {
340
341
  return __awaiter(void 0, void 0, void 0, function () {
341
342
  return __generator(this, function (_a) {
342
343
  // TODO: add workspace jobs
343
- return [2 /*return*/, __spreadArray(__spreadArray([], __read(allJobs.workspaces), false), __read(allJobs.components), false).flatMap(function (_a) {
344
+ return [2 /*return*/, __spreadArray(__spreadArray(__spreadArray([], __read(allJobs.workspaces), false), __read(allJobs.components), false), __read(allJobs.agents), false).flatMap(function (_a) {
344
345
  var context = _a.context,
345
346
  jobs = _a.jobs;
346
347
  return jobs.map(function (job) {
@@ -359,8 +360,9 @@ var createGitlabJobs = function (allJobs, baseRules) {
359
360
  };
360
361
  exports.createGitlabJobs = createGitlabJobs;
361
362
  function getGitlabNeeds(context, job, allJobs) {
362
- var needs = context.type === "workspace" ? getGitlabNeedsForWorkspaceJob(context, job, allJobs) : getGitlabNeedsForComponentJob(context, job, allJobs);
363
- return deduplicateNeeds(needs);
363
+ var _a;
364
+ var needs = context.type === "workspace" ? getGitlabNeedsForWorkspaceJob(context, job, allJobs) : context.type === "agent" ? (_a = job.needs) !== null && _a !== void 0 ? _a : null : getGitlabNeedsForComponentJob(context, job, allJobs);
365
+ return needs ? deduplicateNeeds(needs) : undefined;
364
366
  }
365
367
  function deduplicateNeeds(needs) {
366
368
  return needs ? __spreadArray([], __read(new Map(needs.map(function (n) {
@@ -76,6 +76,12 @@ var createGitlabPipelineWithDefaults = function (_a) {
76
76
  workflow: {
77
77
  name: "$PIPELINE_ICON $PIPELINE_NAME",
78
78
  rules: [{
79
+ if: '$CI_PIPELINE_SOURCE == "trigger"',
80
+ variables: {
81
+ PIPELINE_ICON: "🤖",
82
+ PIPELINE_NAME: "Thinking..."
83
+ }
84
+ }, {
79
85
  if: rules_1.RULE_IS_MERGE_REQUEST.if,
80
86
  variables: {
81
87
  PIPELINE_ICON: "🐱🔨",
@@ -5,6 +5,7 @@ export declare const RULE_CONDITION_NOT_RELEASE_COMMIT = "$CI_COMMIT_MESSAGE !~
5
5
  export declare const RULE_IS_MAIN_BRANCH: GitlabRule;
6
6
  export declare const RULE_IS_MAIN_BRANCH_AND_NOT_RELEASE_COMMIT: GitlabRule;
7
7
  export declare const RULE_NEVER_ON_RELEASE_COMMIT: GitlabRule;
8
+ export declare const RULE_NEVER_ON_AGENT_TRIGGER: GitlabRule;
8
9
  export declare const RULE_NEVER_ON_SCHEDULE: GitlabRule;
9
10
  export declare const RULE_IS_MERGE_REQUEST: GitlabRule;
10
11
  export declare const RULE_IS_TAGGED_RELEASE: GitlabRule;
@@ -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_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.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;
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\\).*/";
@@ -17,6 +17,11 @@ exports.RULE_NEVER_ON_RELEASE_COMMIT = {
17
17
  if: exports.RULE_CONDITION_RELEASE_COMMIT,
18
18
  when: "never"
19
19
  };
20
+ // currently, we consider all triggered pipelines as agent triggers
21
+ exports.RULE_NEVER_ON_AGENT_TRIGGER = {
22
+ if: '$CI_PIPELINE_SOURCE == "trigger"',
23
+ when: "never"
24
+ };
20
25
  exports.RULE_NEVER_ON_SCHEDULE = {
21
26
  if: '$CI_PIPELINE_SOURCE == "schedule"',
22
27
  when: "never"
@@ -28,7 +33,7 @@ exports.RULE_IS_TAGGED_RELEASE = {
28
33
  if: "$CI_COMMIT_TAG"
29
34
  };
30
35
  exports.RULE_CONDITION_HOTFIX_BRANCH = "$CI_COMMIT_BRANCH =~ /^[0-9]+.([0-9]+|x).x$/";
31
- exports.RULES_RELEASE = [exports.RULE_NEVER_ON_RELEASE_COMMIT, exports.RULE_NEVER_ON_SCHEDULE, {
36
+ exports.RULES_RELEASE = [exports.RULE_NEVER_ON_RELEASE_COMMIT, exports.RULE_NEVER_ON_AGENT_TRIGGER, exports.RULE_NEVER_ON_SCHEDULE, {
32
37
  if: exports.RULE_CONDITION_MAIN_BRANCH + ' && $AUTO_RELEASE == "true"',
33
38
  when: "on_success"
34
39
  }, {
@@ -38,7 +43,7 @@ exports.RULES_RELEASE = [exports.RULE_NEVER_ON_RELEASE_COMMIT, exports.RULE_NEVE
38
43
  if: exports.RULE_CONDITION_HOTFIX_BRANCH,
39
44
  when: "manual"
40
45
  }];
41
- exports.RULES_MANUAL_RELEASE = [exports.RULE_NEVER_ON_RELEASE_COMMIT, exports.RULE_NEVER_ON_SCHEDULE, {
46
+ exports.RULES_MANUAL_RELEASE = [exports.RULE_NEVER_ON_RELEASE_COMMIT, exports.RULE_NEVER_ON_AGENT_TRIGGER, exports.RULE_NEVER_ON_SCHEDULE, {
42
47
  if: exports.RULE_CONDITION_MAIN_BRANCH,
43
48
  when: "manual"
44
49
  }, {