Spaces:
Build error
Build error
| name: Close/Lock issues after inactivity | |
| on: | |
| schedule: | |
| - cron: "0 0 * * *" | |
| jobs: | |
| close-issues-needs-more-info: | |
| runs-on: ubuntu-latest | |
| if: ${{ github.repository_owner == 'facebookresearch' }} | |
| steps: | |
| - name: Close old issues that need reply | |
| uses: actions/github-script@v3 | |
| with: | |
| github-token: ${{secrets.GITHUB_TOKEN}} | |
| # Modified from https://github.com/dwieeb/needs-reply | |
| script: | | |
| // Arguments available: | |
| // - github: A pre-authenticated octokit/rest.js client | |
| // - context: An object containing the context of the workflow run | |
| // - core: A reference to the @actions/core package | |
| // - io: A reference to the @actions/io package | |
| const kLabelToCheck = "needs-more-info"; | |
| const kInvalidLabel = "invalid/unrelated"; | |
| const kDaysBeforeClose = 7; | |
| const kMessage = "Requested information was not provided in 7 days, so we're closing this issue.\n\nPlease open new issue if information becomes available. Otherwise, use [github discussions](https://github.com/facebookresearch/detectron2/discussions) for free-form discussions." | |
| issues = await github.issues.listForRepo({ | |
| owner: context.repo.owner, | |
| repo: context.repo.repo, | |
| state: 'open', | |
| labels: kLabelToCheck, | |
| sort: 'updated', | |
| direction: 'asc', | |
| per_page: 30, | |
| page: 1, | |
| }); | |
| issues = issues.data; | |
| if (issues.length === 0) { | |
| core.info('No more issues found to process. Exiting.'); | |
| return; | |
| } | |
| for (const issue of issues) { | |
| if (!!issue.pull_request) | |
| continue; | |
| core.info(`Processing issue #${issue.number}`); | |
| let updatedAt = new Date(issue.updated_at).getTime(); | |
| const numComments = issue.comments; | |
| const comments = await github.issues.listComments({ | |
| owner: context.repo.owner, | |
| repo: context.repo.repo, | |
| issue_number: issue.number, | |
| per_page: 30, | |
| page: Math.floor((numComments - 1) / 30) + 1, // the last page | |
| }); | |
| const lastComments = comments.data | |
| .map(l => new Date(l.created_at).getTime()) | |
| .sort(); | |
| if (lastComments.length > 0) { | |
| updatedAt = lastComments[lastComments.length - 1]; | |
| } | |
| const now = new Date().getTime(); | |
| const daysSinceUpdated = (now - updatedAt) / 1000 / 60 / 60 / 24; | |
| if (daysSinceUpdated < kDaysBeforeClose) { | |
| core.info(`Skipping #${issue.number} because it has been updated in the last ${daysSinceUpdated} days`); | |
| continue; | |
| } | |
| core.info(`Closing #${issue.number} because it has not been updated in the last ${daysSinceUpdated} days`); | |
| await github.issues.createComment({ | |
| owner: context.repo.owner, | |
| repo: context.repo.repo, | |
| issue_number: issue.number, | |
| body: kMessage, | |
| }); | |
| const newLabels = numComments <= 2 ? [kInvalidLabel, kLabelToCheck] : issue.labels; | |
| await github.issues.update({ | |
| owner: context.repo.owner, | |
| repo: context.repo.repo, | |
| issue_number: issue.number, | |
| labels: newLabels, | |
| state: 'closed', | |
| }); | |
| } | |
| lock-issues-after-closed: | |
| runs-on: ubuntu-latest | |
| if: ${{ github.repository_owner == 'facebookresearch' }} | |
| steps: | |
| - name: Lock closed issues that have no activity for a while | |
| uses: dessant/lock-threads@v2 | |
| with: | |
| github-token: ${{ github.token }} | |
| issue-lock-inactive-days: '300' | |
| process-only: 'issues' | |
| issue-exclude-labels: 'enhancement,bug,documentation' | |