From a607493dee9c9efe0a33da7f14ba7ebb4d932877 Mon Sep 17 00:00:00 2001 From: stack72 Date: Mon, 23 Mar 2026 10:50:14 +0100 Subject: [PATCH] chore: Reintroduce issue responder A previous PR removed this because it used the same name as the old file --- .github/workflows/auto-response.yml | 62 +++++++++++++++++++++++++++++ 1 file changed, 62 insertions(+) create mode 100644 .github/workflows/auto-response.yml diff --git a/.github/workflows/auto-response.yml b/.github/workflows/auto-response.yml new file mode 100644 index 00000000..e92f9d38 --- /dev/null +++ b/.github/workflows/auto-response.yml @@ -0,0 +1,62 @@ +name: Issue Auto Responder + +on: + issues: + types: [opened] + +permissions: + issues: write + contents: read + +jobs: + triage: + name: Triage New Issue + runs-on: ubuntu-latest + steps: + - name: Check if author is a maintainer + id: check-role + uses: actions/github-script@v7 + with: + github-token: ${{ secrets.GITHUB_TOKEN }} + script: | + const login = context.payload.issue.user.login; + let isMaintainer = false; + try { + const { data } = await github.rest.repos.getCollaboratorPermissionLevel({ + owner: context.repo.owner, + repo: context.repo.repo, + username: login, + }); + core.info(`Permission level for ${login}: ${data.permission}`); + isMaintainer = ['admin', 'write'].includes(data.permission); + } catch (error) { + core.info(`Could not fetch permission level for ${login}: ${error.message}`); + } + core.setOutput('is_maintainer', isMaintainer.toString()); + + - name: Add needs-triage label + if: steps.check-role.outputs.is_maintainer == 'false' + uses: actions/github-script@v7 + with: + github-token: ${{ secrets.GITHUB_TOKEN }} + script: | + await github.rest.issues.addLabels({ + owner: context.repo.owner, + repo: context.repo.repo, + issue_number: context.payload.issue.number, + labels: ['needs-triage'], + }); + + - name: Post welcome comment + if: steps.check-role.outputs.is_maintainer == 'false' + uses: actions/github-script@v7 + with: + github-token: ${{ secrets.GITHUB_TOKEN }} + script: | + const author = context.payload.issue.user.login; + await github.rest.issues.createComment({ + owner: context.repo.owner, + repo: context.repo.repo, + issue_number: context.payload.issue.number, + body: `Hi @${author}, thanks for opening this issue!\n\nWe appreciate you taking the time to report it. A maintainer will review it as soon as possible.\n\nIn the meantime, please make sure you've included all relevant details (steps to reproduce, expected vs actual behaviour, swamp version, etc.) to help us triage it quickly.`, + });