forked from HKUDS/OpenSpace
-
Notifications
You must be signed in to change notification settings - Fork 0
36 lines (33 loc) · 1.19 KB
/
Copy pathauto-close.yml
File metadata and controls
36 lines (33 loc) · 1.19 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
name: Auto-Close Issues on PR Merge
on:
pull_request:
types: [closed]
jobs:
auto-close:
if: github.event.pull_request.merged == true
runs-on: ubuntu-latest
steps:
- name: Close linked issues and update project
uses: actions/github-script@v7
with:
script: |
const pr = context.payload.pull_request;
const body = pr.body || '';
const title = pr.title || '';
const combined = body + ' ' + title;
// Extract issue references (Closes #123, Fixes #456, etc.)
const issueRefs = [...combined.matchAll(/(?:closes?|fixes?|resolves?)\s+#(\d+)/gi)];
for (const match of issueRefs) {
const issueNum = parseInt(match[1]);
try {
await github.rest.issues.update({
owner: context.repo.owner,
repo: context.repo.repo,
issue_number: issueNum,
state: 'closed'
});
console.log(`✅ Closed issue #${issueNum}`);
} catch (error) {
console.log(`❌ Failed to close #${issueNum}: ${error.message}`);
}
}