@catladder/pipeline 3.13.0 → 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.
- package/dist/bash/bashEscape.d.ts +2 -0
- package/dist/bash/bashEscape.js +9 -1
- package/dist/constants.js +1 -1
- package/dist/pipeline/agent/createAgentContext.d.ts +6 -0
- package/dist/pipeline/agent/createAgentContext.js +141 -0
- package/dist/pipeline/agent/createAgentEventJob.d.ts +2 -0
- package/dist/pipeline/agent/createAgentEventJob.js +74 -0
- package/dist/pipeline/agent/createAgentReviewJob.d.ts +2 -0
- package/dist/pipeline/agent/createAgentReviewJob.js +69 -0
- package/dist/pipeline/agent/createJobsForAgentContext.d.ts +2 -0
- package/dist/pipeline/agent/createJobsForAgentContext.js +12 -0
- package/dist/pipeline/agent/prompts.d.ts +10 -0
- package/dist/pipeline/agent/prompts.js +66 -0
- package/dist/pipeline/agent/shared.d.ts +8 -0
- package/dist/pipeline/agent/shared.js +29 -0
- package/dist/pipeline/agent/utils.d.ts +3 -0
- package/dist/pipeline/agent/utils.js +16 -0
- package/dist/pipeline/createAllJobs.d.ts +5 -1
- package/dist/pipeline/createAllJobs.js +32 -6
- package/dist/pipeline/createMainPipeline.js +10 -5
- package/dist/pipeline/gitlab/createGitlabJobs.d.ts +3 -3
- package/dist/pipeline/gitlab/createGitlabJobs.js +13 -11
- package/dist/pipeline/gitlab/createGitlabPipeline.js +7 -1
- package/dist/rules/index.d.ts +1 -0
- package/dist/rules/index.js +8 -3
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/dist/types/agent.d.ts +7 -0
- package/dist/types/agent.js +5 -0
- package/dist/types/config.d.ts +2 -0
- package/dist/types/context.d.ts +7 -0
- package/dist/types/index.d.ts +2 -1
- package/dist/types/index.js +2 -1
- package/dist/types/jobs.d.ts +5 -1
- package/dist/types/jobs.js +1 -1
- package/examples/__snapshots__/cloud-run-health-check-defaults.test.ts.snap +66 -1
- package/examples/__snapshots__/cloud-run-health-check-only-startup.test.ts.snap +66 -1
- package/examples/__snapshots__/cloud-run-health-check.test.ts.snap +66 -1
- package/examples/__snapshots__/cloud-run-http2.test.ts.snap +66 -1
- package/examples/__snapshots__/cloud-run-llama.test.ts.snap +30 -1
- package/examples/__snapshots__/cloud-run-memory-limit.test.ts.snap +66 -1
- package/examples/__snapshots__/cloud-run-meteor-with-worker.test.ts.snap +66 -1
- package/examples/__snapshots__/cloud-run-nextjs.test.ts.snap +66 -1
- package/examples/__snapshots__/cloud-run-no-cpu-throttling.test.ts.snap +66 -1
- package/examples/__snapshots__/cloud-run-no-service.test.ts.snap +66 -1
- package/examples/__snapshots__/cloud-run-non-public.test.ts.snap +66 -1
- package/examples/__snapshots__/cloud-run-post-stop-job.test.ts.snap +66 -1
- package/examples/__snapshots__/cloud-run-service-custom-vpc-connector.test.ts.snap +66 -1
- package/examples/__snapshots__/cloud-run-service-custom-vpc.test.ts.snap +66 -1
- package/examples/__snapshots__/cloud-run-service-gen2.test.ts.snap +66 -1
- package/examples/__snapshots__/cloud-run-service-increase-timout.test.ts.snap +66 -1
- package/examples/__snapshots__/cloud-run-service-with-volumes.test.ts.snap +66 -1
- package/examples/__snapshots__/cloud-run-storybook.test.ts.snap +54 -1
- package/examples/__snapshots__/cloud-run-with-agents.test.ts.snap +1576 -0
- package/examples/__snapshots__/cloud-run-with-gpu.test.ts.snap +66 -1
- package/examples/__snapshots__/cloud-run-with-ngnix.test.ts.snap +66 -1
- package/examples/__snapshots__/cloud-run-with-sql-legacy-jobs.test.ts.snap +66 -1
- package/examples/__snapshots__/cloud-run-with-sql-multiple-dbs.test.ts.snap +170 -1
- package/examples/__snapshots__/cloud-run-with-sql-reuse-db.test.ts.snap +118 -1
- package/examples/__snapshots__/cloud-run-with-sql.test.ts.snap +66 -1
- package/examples/__snapshots__/cloud-run-with-worker.test.ts.snap +66 -1
- package/examples/__snapshots__/custom-build-job-with-tests.test.ts.snap +66 -1
- package/examples/__snapshots__/custom-build-job.test.ts.snap +54 -1
- package/examples/__snapshots__/custom-deploy.test.ts.snap +60 -1
- package/examples/__snapshots__/custom-envs.test.ts.snap +64 -1
- package/examples/__snapshots__/custom-sbom-java.test.ts.snap +54 -1
- package/examples/__snapshots__/custom-verify-job.test.ts.snap +74 -1
- package/examples/__snapshots__/git-submodule.test.ts.snap +66 -1
- package/examples/__snapshots__/kubernetes-application-customization.test.ts.snap +74 -1
- package/examples/__snapshots__/kubernetes-with-cloud-sql.test.ts.snap +74 -1
- package/examples/__snapshots__/kubernetes-with-jobs.test.ts.snap +134 -1
- package/examples/__snapshots__/kubernetes-with-mongodb.test.ts.snap +74 -1
- package/examples/__snapshots__/local-dot-env.test.ts.snap +66 -1
- package/examples/__snapshots__/meteor-kubernetes.test.ts.snap +74 -1
- package/examples/__snapshots__/multiline-var.test.ts.snap +178 -1
- package/examples/__snapshots__/native-app.test.ts.snap +102 -1
- package/examples/__snapshots__/node-build-with-custom-image.test.ts.snap +66 -1
- package/examples/__snapshots__/node-build-with-docker-additions.test.ts.snap +66 -1
- package/examples/__snapshots__/override-secrets.test.ts.snap +66 -1
- package/examples/__snapshots__/rails-k8s-with-worker-dockerfile.test.ts.snap +66 -1
- package/examples/__snapshots__/rails-k8s-with-worker.test.ts.snap +66 -1
- package/examples/__snapshots__/referencing-other-vars.test.ts.snap +178 -1
- package/examples/__snapshots__/wait-for-other-deploy.test.ts.snap +86 -1
- package/examples/__snapshots__/workspace-api-www-turbo-cache.test.ts.snap +98 -1
- package/examples/__snapshots__/workspace-api-www.test.ts.snap +98 -1
- package/examples/cloud-run-with-agents.test.ts +11 -0
- package/examples/cloud-run-with-agents.ts +36 -0
- package/package.json +1 -1
- package/src/bash/bashEscape.ts +6 -0
- package/src/pipeline/__tests__/__snapshots__/getPipelineStages.test.ts.snap +9 -0
- package/src/pipeline/agent/createAgentContext.ts +19 -0
- package/src/pipeline/agent/createAgentEventJob.ts +35 -0
- package/src/pipeline/agent/createAgentReviewJob.ts +33 -0
- package/src/pipeline/agent/createJobsForAgentContext.ts +7 -0
- package/src/pipeline/agent/prompts.ts +233 -0
- package/src/pipeline/agent/shared.ts +36 -0
- package/src/pipeline/agent/utils.ts +9 -0
- package/src/pipeline/createAllJobs.ts +20 -1
- package/src/pipeline/createJobsForComponent.ts +1 -0
- package/src/pipeline/createMainPipeline.ts +19 -4
- package/src/pipeline/gitlab/createGitlabJobs.ts +39 -30
- package/src/pipeline/gitlab/createGitlabPipeline.ts +9 -1
- package/src/rules/index.ts +7 -0
- package/src/types/agent.ts +7 -0
- package/src/types/config.ts +3 -0
- package/src/types/context.ts +8 -0
- package/src/types/index.ts +1 -0
- 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({
|
|
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
|
|
363
|
-
|
|
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: "🐱🔨",
|
|
@@ -91,7 +97,7 @@ var createGitlabPipelineWithDefaults = function (_a) {
|
|
|
91
97
|
if: rules_1.RULE_IS_MAIN_BRANCH_AND_NOT_RELEASE_COMMIT.if,
|
|
92
98
|
variables: {
|
|
93
99
|
PIPELINE_ICON: "🐱🔨",
|
|
94
|
-
PIPELINE_NAME: "Main
|
|
100
|
+
PIPELINE_NAME: "Main"
|
|
95
101
|
}
|
|
96
102
|
}, {
|
|
97
103
|
when: "always",
|
package/dist/rules/index.d.ts
CHANGED
|
@@ -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;
|
package/dist/rules/index.js
CHANGED
|
@@ -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
|
}, {
|