Reopen and Update Stale Issues #11
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Reopen and Update Stale Issues | |
on: | |
workflow_dispatch: # 手动触发 | |
jobs: | |
reopen_stale_issues: | |
runs-on: ubuntu-latest | |
permissions: | |
issues: write | |
contents: read | |
steps: | |
- name: Checkout Repository | |
uses: actions/checkout@v4 | |
- name: Fetch Closed Issues with lifecycle/stale Label | |
id: fetch_issues | |
uses: actions/github-script@v7 | |
with: | |
github-token: ${{ secrets.GITHUB_TOKEN }} | |
script: | | |
const issues = await github.paginate(github.rest.issues.listForRepo, { | |
owner: context.repo.owner, | |
repo: context.repo.repo, | |
state: 'closed', | |
labels: 'lifecycle/stale', | |
per_page: 100 | |
}); | |
const issueNumbers = issues | |
.filter(issue => !issue.pull_request) // 排除PR | |
.map(issue => issue.number); | |
console.log(`Fetched issues: ${issueNumbers}`); | |
return { issue_numbers: issueNumbers.join(',') }; | |
- name: Set issue numbers | |
run: echo "ISSUE_NUMBERS=${{ steps.fetch_issues.outputs.issue_numbers }}" >> $GITHUB_ENV | |
- name: Reopen Issues | |
uses: actions/github-script@v7 | |
with: | |
github-token: ${{ secrets.GITHUB_TOKEN }} | |
script: | | |
const issueNumbers = process.env.ISSUE_NUMBERS.split(','); | |
for (const issue_number of issueNumbers) { | |
// Reopen the issue | |
await github.rest.issues.update({ | |
owner: context.repo.owner, | |
repo: context.repo.repo, | |
issue_number: parseInt(issue_number, 10), | |
state: 'open' | |
}); | |
console.log(`Reopened issue #${issue_number}`); | |
} | |
- name: Remove lifecycle/stale Label | |
uses: actions/github-script@v7 | |
with: | |
github-token: ${{ secrets.GITHUB_TOKEN }} | |
script: | | |
const issueNumbers = process.env.ISSUE_NUMBERS.split(','); | |
for (const issue_number of issueNumbers) { | |
// Remove the lifecycle/stale label | |
await github.rest.issues.removeLabel({ | |
owner: context.repo.owner, | |
repo: context.repo.repo, | |
issue_number: parseInt(issue_number, 10), | |
name: 'lifecycle/stale' | |
}); | |
console.log(`Removed label 'lifecycle/stale' from issue #${issue_number}`); | |
} |