Issue Management (Test Version) #3
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: Issue Management (Test Version) | |
on: | |
schedule: | |
- cron: '*/5 * * * *' # Run every 5 minutes | |
workflow_dispatch: # Allow manual trigger | |
jobs: | |
manage-issues: | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout code | |
uses: actions/checkout@v3 | |
- name: Warn inactive issues | |
uses: actions/github-script@v6 | |
with: | |
github-token: ${{secrets.GITHUB_TOKEN}} | |
script: | | |
const twoMinutesAgo = new Date(Date.now() - 2 * 60 * 1000); | |
const issues = await github.rest.issues.listForRepo({ | |
owner: context.repo.owner, | |
repo: context.repo.repo, | |
state: 'open', | |
assignee: '*' | |
}); | |
for (const issue of issues.data) { | |
const lastUpdated = new Date(issue.updated_at); | |
if (lastUpdated < twoMinutesAgo) { | |
await github.rest.issues.createComment({ | |
owner: context.repo.owner, | |
repo: context.repo.repo, | |
issue_number: issue.number, | |
body: 'This issue has been inactive for 2 minutes. Please provide an update or it may be unassigned in 1 minute.' | |
}); | |
} | |
} | |
- name: Unassign inactive issues | |
uses: actions/github-script@v6 | |
with: | |
github-token: ${{secrets.GITHUB_TOKEN}} | |
script: | | |
const threeMinutesAgo = new Date(Date.now() - 3 * 60 * 1000); | |
const issues = await github.rest.issues.listForRepo({ | |
owner: context.repo.owner, | |
repo: context.repo.repo, | |
state: 'open', | |
assignee: '*' | |
}); | |
for (const issue of issues.data) { | |
const lastUpdated = new Date(issue.updated_at); | |
if (lastUpdated < threeMinutesAgo) { | |
await github.rest.issues.removeAssignees({ | |
owner: context.repo.owner, | |
repo: context.repo.repo, | |
issue_number: issue.number, | |
assignees: issue.assignees.map(a => a.login) | |
}); | |
await github.rest.issues.createComment({ | |
owner: context.repo.owner, | |
repo: context.repo.repo, | |
issue_number: issue.number, | |
body: 'This issue has been inactive for 3 minutes and has been unassigned. Feel free to pick it up again when you\'re ready to work on it.' | |
}); | |
} | |
} |