mirror of
https://github.com/openclaw/openclaw.git
synced 2026-05-06 05:50:43 +00:00
fix(ci): exempt automation PRs from Barnacle PR limit
Treat ClawSweeper and Clownfish head refs as automation PRs for Barnacle's active-PR-limit close path, and cover the behavior with a regression test.
This commit is contained in:
8
.github/workflows/labeler.yml
vendored
8
.github/workflows/labeler.yml
vendored
@@ -375,10 +375,12 @@ jobs:
|
||||
return false;
|
||||
};
|
||||
|
||||
const isClawsweeperPullRequest =
|
||||
typeof headRefName === "string" && headRefName.startsWith("clawsweeper/");
|
||||
const automationPrHeadPrefixes = ["clawsweeper/", "clownfish/"];
|
||||
const isAutomationPullRequest =
|
||||
typeof headRefName === "string" &&
|
||||
automationPrHeadPrefixes.some((prefix) => headRefName.startsWith(prefix));
|
||||
|
||||
if ((await isPrivilegedAuthor()) || isClawsweeperPullRequest) {
|
||||
if ((await isPrivilegedAuthor()) || isAutomationPullRequest) {
|
||||
if (labelNames.has(activePrLimitLabel)) {
|
||||
try {
|
||||
await github.rest.issues.removeLabel({
|
||||
|
||||
@@ -237,10 +237,14 @@ const candidateActionRules = [
|
||||
];
|
||||
|
||||
const normalizeLogin = (login) => login.toLowerCase();
|
||||
const automationPrHeadPrefixes = ["clawsweeper/", "clownfish/"];
|
||||
|
||||
export function isClawsweeperPullRequest(pullRequest) {
|
||||
export function isAutomationPullRequest(pullRequest) {
|
||||
const headRefName = pullRequest.headRefName ?? pullRequest.head?.ref ?? "";
|
||||
return typeof headRefName === "string" && headRefName.startsWith("clawsweeper/");
|
||||
return (
|
||||
typeof headRefName === "string" &&
|
||||
automationPrHeadPrefixes.some((prefix) => headRefName.startsWith(prefix))
|
||||
);
|
||||
}
|
||||
|
||||
export function extractIssueFormValue(body, field) {
|
||||
@@ -1031,7 +1035,7 @@ export async function runBarnacleAutoResponse({ github, context, core = console
|
||||
if (pullRequest && labelSet.has(activePrLimitOverrideLabel)) {
|
||||
labelSet.delete(activePrLimitLabel);
|
||||
}
|
||||
if (pullRequest && isClawsweeperPullRequest(pullRequest)) {
|
||||
if (pullRequest && isAutomationPullRequest(pullRequest)) {
|
||||
await removeLabels(github, context, pullRequest.number, [activePrLimitLabel], labelSet);
|
||||
}
|
||||
|
||||
|
||||
@@ -290,20 +290,26 @@ describe("barnacle-auto-response", () => {
|
||||
);
|
||||
});
|
||||
|
||||
it("does not close ClawSweeper PRs for the active PR limit", async () => {
|
||||
for (const headRef of [
|
||||
{ head: { ref: "clawsweeper/openclaw-openclaw-73880" } },
|
||||
{ headRefName: "clawsweeper/openclaw-openclaw-73880" },
|
||||
it("does not close automation PRs for the active PR limit", async () => {
|
||||
for (const automationPullRequest of [
|
||||
{ head: { ref: "clawsweeper/openclaw-openclaw-73880" }, login: "app/openclaw-clawsweeper" },
|
||||
{ headRefName: "clawsweeper/openclaw-openclaw-73880", login: "app/openclaw-clawsweeper" },
|
||||
{
|
||||
head: { ref: "clownfish/ghcrawl-156993-autonomous-smoke" },
|
||||
login: "app/openclaw-clownfish",
|
||||
},
|
||||
{ headRefName: "clownfish/ghcrawl-156993-autonomous-smoke", login: "app/openclaw-clownfish" },
|
||||
]) {
|
||||
const { calls, github } = barnacleGithub([]);
|
||||
const { login, ...pullRequest } = automationPullRequest;
|
||||
|
||||
await runBarnacleAutoResponse({
|
||||
github,
|
||||
context: barnacleContext(
|
||||
{
|
||||
...headRef,
|
||||
...pullRequest,
|
||||
user: {
|
||||
login: "app/openclaw-clawsweeper",
|
||||
login,
|
||||
},
|
||||
},
|
||||
["r: too-many-prs"],
|
||||
|
||||
Reference in New Issue
Block a user