From 788eb654941efe1f725143d7e1bc9b5236ecbb37 Mon Sep 17 00:00:00 2001 From: dundargoc <33953936+dundargoc@users.noreply.github.com> Date: Fri, 23 Dec 2022 12:54:30 +0100 Subject: [PATCH] ci: remove needs:response label if author responds (#21489) ci: remove "needs:response" label if author responds The default behavior of the stale action is to indiscriminately remove the `needs:response` label for any activity whatsoever, from anyone. The other option is to turn it off completely, meaning the maintainers needs to manually remove the label themselves when the author responds for an issue to not close automatically. Neither of these behaviors are useful to us. --- .github/scripts/unstale.js | 19 +++++++++++++++++++ .github/workflows/stale.yml | 18 +++++++++++++++++- 2 files changed, 36 insertions(+), 1 deletion(-) create mode 100644 .github/scripts/unstale.js diff --git a/.github/scripts/unstale.js b/.github/scripts/unstale.js new file mode 100644 index 0000000000..f645fca5cb --- /dev/null +++ b/.github/scripts/unstale.js @@ -0,0 +1,19 @@ +module.exports = async ({ github, context }) => { + const commenter = context.actor; + const issue = await github.rest.issues.get({ + owner: context.repo.owner, + repo: context.repo.repo, + issue_number: context.issue.number, + }); + const author = issue.data.user.login; + const labels = issue.data.labels.map((e) => e.name); + + if (author === commenter && labels.includes("needs:response")) { + github.rest.issues.removeLabel({ + owner: context.repo.owner, + repo: context.repo.repo, + issue_number: context.issue.number, + name: "needs:response", + }); + } +}; diff --git a/.github/workflows/stale.yml b/.github/workflows/stale.yml index 40f6616110..c1d3ee3ff3 100644 --- a/.github/workflows/stale.yml +++ b/.github/workflows/stale.yml @@ -3,9 +3,11 @@ on: schedule: - cron: '30 1 * * *' # Run every day at 01:30 workflow_dispatch: + issue_comment: jobs: - stale: + close: + if: github.event_name == 'schedule' || github.event_name == 'workflow_dispatch' runs-on: ubuntu-latest permissions: issues: write @@ -24,3 +26,17 @@ jobs: close-pr-message: "This PR has been closed since a request for changes has not been answered for 30 days. It can be reopened when the requested changes are provided." + + remove-label: + if: github.event_name == 'issue_comment' + runs-on: ubuntu-latest + permissions: + issues: write + pull-requests: write + steps: + - uses: actions/checkout@v3 + - uses: actions/github-script@v6 + with: + script: | + const script = require('./.github/scripts/unstale.js') + await script({github, context})