Skip to content

Issue Management (Test Version) #3

Issue Management (Test Version)

Issue Management (Test Version) #3

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.'
});
}
}