ci: Optimize pull request labeler

We keep running into rate limits, so let's optimize the number of
requests we do in the pull request labeler to hopefully fix that.
This commit is contained in:
Daan De Meyer 2024-05-07 15:53:35 +02:00 committed by Luca Boccassi
parent 1213fc94b4
commit 5dd3657f86

View file

@ -52,38 +52,34 @@ jobs:
repo: context.repo.repo, repo: context.repo.repo,
}); });
good_to_merge = [ original = new Set(response.data.map(l => l.name));
labels = new Set(original);
good_to_merge = new Set([
"good-to-merge/waiting-for-ci 👍", "good-to-merge/waiting-for-ci 👍",
"good-to-merge/after-next-release", "good-to-merge/after-next-release",
"good-to-merge/with-minor-suggestions", "good-to-merge/with-minor-suggestions",
"good-to-merge/waiting-for-reporter-feedback 👍", "good-to-merge/waiting-for-reporter-feedback 👍",
]; ]);
if (response.data.every(l => !good_to_merge.includes(l.name))) { if (Array.from(labels).filter(l => good_to_merge.has(l)).length == 0) {
await github.rest.issues.addLabels({ labels.add("please-review");
issue_number: context.issue.number,
owner: context.repo.owner,
repo: context.repo.repo,
labels: ["please-review"]
});
} }
for (const label of ["reviewed/needs-rework 🔨", for (const label of ["reviewed/needs-rework 🔨",
"ci-fails/needs-rework 🔥", "ci-fails/needs-rework 🔥",
"ci-failure-appears-unrelated", "ci-failure-appears-unrelated",
"needs-rebase"]) { "needs-rebase"]) {
try { labels.delete(label);
await github.rest.issues.removeLabel({ }
issue_number: context.issue.number,
owner: context.repo.owner, if (labels.size != original.size || Array.from(labels).some(l => !original.has(l))) {
repo: context.repo.repo, await github.rest.issues.setLabels({
name: label, issue_number: context.issue.number,
}); owner: context.repo.owner,
} catch (err) { repo: context.repo.repo,
if (err.status != 404) { labels: Array.from(labels),
throw err; });
}
}
} }
- name: Add please-review label on command in issue comment - name: Add please-review label on command in issue comment
@ -103,6 +99,15 @@ jobs:
if: startsWith(github.event_name, 'pull_request') && github.event.action == 'closed' if: startsWith(github.event_name, 'pull_request') && github.event.action == 'closed'
with: with:
script: | script: |
response = await github.rest.issues.listLabelsOnIssue({
issue_number: context.issue.number,
owner: context.repo.owner,
repo: context.repo.repo,
});
original = new Set(response.data.map(l => l.name));
labels = new Set(original);
for (const label of ["please-review", for (const label of ["please-review",
"reviewed/needs-rework 🔨", "reviewed/needs-rework 🔨",
"ci-fails/needs-rework 🔥", "ci-fails/needs-rework 🔥",
@ -116,16 +121,14 @@ jobs:
"dont-merge 💣", "dont-merge 💣",
"squash-on-merge", "squash-on-merge",
"quick-review 🏃‍♂️"]) { "quick-review 🏃‍♂️"]) {
try { labels.delete(label);
await github.rest.issues.removeLabel({ }
issue_number: context.issue.number,
owner: context.repo.owner, if (labels.size != original.size || Array.from(labels).some(l => !original.has(l))) {
repo: context.repo.repo, await github.rest.issues.setLabels({
name: label, issue_number: context.issue.number,
}); owner: context.repo.owner,
} catch (err) { repo: context.repo.repo,
if (err.status != 404) { labels: Array.from(labels),
throw err; });
}
}
} }