ci: reviewers.yml ping instead
This commit is contained in:
parent
a096af75ea
commit
feb8c605ba
41
.github/workflows/reviewers.yml
vendored
41
.github/workflows/reviewers.yml
vendored
@ -10,14 +10,14 @@ on:
|
|||||||
|
|
||||||
permissions:
|
permissions:
|
||||||
contents: read
|
contents: read
|
||||||
pull-requests: write
|
issues: write
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
request-reviewers:
|
request-reviewers:
|
||||||
name: Request reviewers
|
name: Request reviewers
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- name: Request reviewers based on changed files
|
- name: Notify reviewers based on changed files
|
||||||
uses: actions/github-script@v8
|
uses: actions/github-script@v8
|
||||||
with:
|
with:
|
||||||
script: |
|
script: |
|
||||||
@ -76,15 +76,42 @@ jobs:
|
|||||||
reviewers.delete(author);
|
reviewers.delete(author);
|
||||||
|
|
||||||
if (reviewers.size === 0) {
|
if (reviewers.size === 0) {
|
||||||
core.info('No eligible reviewers matched the changed files.');
|
core.info('No reviewers matched the changed files.');
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
await github.rest.pulls.requestReviewers({
|
const mentionList = [...reviewers].sort().map((reviewer) => `@${reviewer}`);
|
||||||
|
const marker = '<!-- pumpkin-reviewers -->';
|
||||||
|
const body = [
|
||||||
|
marker,
|
||||||
|
'Review requested from:',
|
||||||
|
'',
|
||||||
|
mentionList.join(' '),
|
||||||
|
].join('\n');
|
||||||
|
|
||||||
|
const comments = await github.paginate(
|
||||||
|
github.rest.issues.listComments,
|
||||||
|
{
|
||||||
|
owner: context.repo.owner,
|
||||||
|
repo: context.repo.repo,
|
||||||
|
issue_number: context.issue.number,
|
||||||
|
per_page: 100,
|
||||||
|
},
|
||||||
|
);
|
||||||
|
const previousComment = comments
|
||||||
|
.filter((comment) => comment.body?.includes(marker))
|
||||||
|
.sort((a, b) => new Date(b.created_at) - new Date(a.created_at))[0];
|
||||||
|
|
||||||
|
if (previousComment?.body === body) {
|
||||||
|
core.info('Reviewer notification is already up to date.');
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
await github.rest.issues.createComment({
|
||||||
owner: context.repo.owner,
|
owner: context.repo.owner,
|
||||||
repo: context.repo.repo,
|
repo: context.repo.repo,
|
||||||
pull_number: context.issue.number,
|
issue_number: context.issue.number,
|
||||||
reviewers: [...reviewers],
|
body,
|
||||||
});
|
});
|
||||||
|
|
||||||
core.info(`Requested reviewers: ${[...reviewers].join(', ')}`);
|
core.info(`Notified reviewers: ${mentionList.join(', ')}`);
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user