From cbf8eee70b6230e4f82592c64b8209459ae3bc5f Mon Sep 17 00:00:00 2001 From: Eleanor Boyd Date: Mon, 16 Dec 2024 15:58:37 -0800 Subject: [PATCH] warn about month old stale PRs (#24615) closes https://github.com/microsoft/vscode-python/issues/20945 --- .github/workflows/stale-prs.yml | 51 +++++++++++++++++++++++++++++++++ 1 file changed, 51 insertions(+) create mode 100644 .github/workflows/stale-prs.yml diff --git a/.github/workflows/stale-prs.yml b/.github/workflows/stale-prs.yml new file mode 100644 index 000000000000..fc4497c197b1 --- /dev/null +++ b/.github/workflows/stale-prs.yml @@ -0,0 +1,51 @@ +name: Warn about month-old PRs + +on: + schedule: + - cron: '0 0 */2 * *' # Runs every other day at midnight + +jobs: + stale-prs: + runs-on: ubuntu-latest + steps: + - name: Checkout repository + uses: actions/checkout@v2 + + - name: Warn about stale PRs + uses: actions/github-script@v4 + with: + script: | + const { Octokit } = require("@octokit/rest"); + const octokit = new Octokit({ auth: process.env.GITHUB_TOKEN }); + + const owner = context.repo.owner; + const repo = context.repo.repo; + const staleTime = new Date(); + staleTime.setMonth(staleTime.getMonth() - 1); + + const prs = await octokit.pulls.list({ + owner, + repo, + state: 'open' + }); + + for (const pr of prs.data) { + const comments = await octokit.issues.listComments({ + owner, + repo, + issue_number: pr.number + }); + + const lastComment = comments.data.length > 0 ? new Date(comments.data[comments.data.length - 1].created_at) : new Date(pr.created_at); + + if (lastComment < staleTime) { + await octokit.issues.createComment({ + owner, + repo, + issue_number: pr.number, + body: 'This PR has been stale for over a month. Please update or close it.' + }); + } + } + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}