name: Close PRs with Feedback on: workflow_dispatch: schedule: - cron: '0 0 * * *' jobs: close-pr: runs-on: ubuntu-latest steps: - name: Close PR if it has label "feedback left" and no changes in 7 days uses: actions/github-script@v3 with: github-token: ${{ secrets.GITHUB_TOKEN }} script: | const { data: pullRequests } = await github.pulls.list({ owner: context.repo.owner, repo: context.repo.repo, state: 'open', base: 'master', }); for (const pullRequest of pullRequests) { const { data: labels } = await github.issues.listLabelsOnIssue({ owner: context.repo.owner, repo: context.repo.repo, issue_number: pullRequest.number, }); const feedbackLabel = labels.find((label) => label.name === 'feedback left'); if (feedbackLabel) { const lastUpdated = new Date(pullRequest.updated_at); const sevenDaysAgo = new Date(); sevenDaysAgo.setDate(sevenDaysAgo.getDate() - 7); if (lastUpdated < sevenDaysAgo) { await github.issues.createComment({ owner: context.repo.owner, repo: context.repo.repo, issue_number: pullRequest.number, body: 'Closing this PR because there has been no activity for the past 7 days. Feel free to reopen if you have any feedback.', }); await github.pulls.update({ owner: context.repo.owner, repo: context.repo.repo, pull_number: pullRequest.number, state: 'closed', }); } } }