mirror of
https://github.com/hl-archive-node/nanoreth.git
synced 2025-12-06 10:59:55 +00:00
ci: automatically set pr labels upon open (#7613)
This commit is contained in:
35
.github/scripts/label_pr.js
vendored
Normal file
35
.github/scripts/label_pr.js
vendored
Normal file
@ -0,0 +1,35 @@
|
||||
module.exports = async ({ github, context }) => {
|
||||
try {
|
||||
const prNumber = context.payload.pull_request.number;
|
||||
const prBody = context.payload.pull_request.body;
|
||||
const repo = context.repo;
|
||||
|
||||
const repoUrl = context.payload.repository.html_url;
|
||||
const pattern = new RegExp(`(close|closes|closed|fix|fixes|fixed|resolve|resolves|resolved) ${repoUrl}/issues/(?<issue_number>\\d+)`, 'i')
|
||||
|
||||
const re = prBody.match(pattern);
|
||||
const issueNumber = re.groups?.issue_number;
|
||||
|
||||
if (!issueNumber) {
|
||||
console.log("No issue reference found in PR description.");
|
||||
return;
|
||||
}
|
||||
|
||||
const issue = await github.rest.issues.get({
|
||||
...repo,
|
||||
issue_number: issueNumber,
|
||||
});
|
||||
|
||||
const issueLabels = issue.data.labels.map(label => label.name);
|
||||
if (issueLabels.length > 0) {
|
||||
await github.rest.issues.setLabels({
|
||||
...repo,
|
||||
issue_number: prNumber,
|
||||
labels: issueLabels,
|
||||
});
|
||||
}
|
||||
} catch (err) {
|
||||
console.error(`Failed to label PR`);
|
||||
console.error(err);
|
||||
}
|
||||
}
|
||||
24
.github/workflows/label-pr.yml
vendored
Normal file
24
.github/workflows/label-pr.yml
vendored
Normal file
@ -0,0 +1,24 @@
|
||||
name: Label PRs
|
||||
|
||||
on:
|
||||
pull_request:
|
||||
types: [opened]
|
||||
|
||||
jobs:
|
||||
label_prs:
|
||||
runs-on: ubuntu-latest
|
||||
permissions:
|
||||
issues: write
|
||||
pull-requests: write
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
with:
|
||||
fetch-depth: 0
|
||||
|
||||
- name: Label PRs
|
||||
uses: actions/github-script@v7
|
||||
with:
|
||||
script: |
|
||||
const label_pr = require('./.github/scripts/label_pr.js')
|
||||
await label_pr({github, context})
|
||||
|
||||
Reference in New Issue
Block a user