Skip to content

ci: reconfigure CodeRabbit to improve signal-to-noise ratio #69

ci: reconfigure CodeRabbit to improve signal-to-noise ratio

ci: reconfigure CodeRabbit to improve signal-to-noise ratio #69

name: remove-needs-review-on-review
on:
pull_request_review:
types:
- submitted
jobs:
remove-needs-review:
name: 🏷️ Remove needs review label
if: github.repository == 'npmx-dev/npmx.dev'
runs-on: ubuntu-slim
permissions:
contents: read
issues: write
pull-requests: write
steps:
- name: 🏷️ Remove needs review label
uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8.0.0
with:
script: |
const pr = context.payload.pull_request;
const review = context.payload.review;
const LABEL = 'needs review';
const reviewer = review?.user?.login;
const author = pr.user?.login;
const reviewerType = review?.user?.type;
if (!reviewer) {
console.log('No reviewer login found in payload, skipping.');
return;
}
if (reviewerType === 'Bot') {
console.log(`Skipping bot review from @${reviewer} on PR #${pr.number}.`);
return;
}
if (reviewer === author) {
console.log(`Skipping self-review from @${reviewer} on PR #${pr.number}.`);
return;
}
if (!pr.labels.some(({ name }) => name === LABEL)) {
console.log(`PR #${pr.number} does not have the "${LABEL}" label.`);
return;
}
const { data: permission } = await github.rest.repos.getCollaboratorPermissionLevel({
owner: context.repo.owner,
repo: context.repo.repo,
username: reviewer,
});
console.log(`Reviewer @${reviewer} permission is "${permission.permission}".`);
if (!['admin', 'maintain', 'write'].includes(permission.permission)) {
console.log(`Reviewer @${reviewer} is not a maintainer, skipping.`);
return;
}
await github.rest.issues.removeLabel({
owner: context.repo.owner,
repo: context.repo.repo,
issue_number: pr.number,
name: LABEL,
});
console.log(`Removed "${LABEL}" from PR #${pr.number}.`);