From fb963b6887125d58bcf2c0e87677d56fb5f1cedb Mon Sep 17 00:00:00 2001 From: Lewis Crichton Date: Sat, 11 Nov 2023 10:39:05 +0000 Subject: [PATCH] ci: automatically enforce contributor requirement on issues --- .../contributor-issue-enforcement.yml | 45 +++++++++++++++++++ 1 file changed, 45 insertions(+) create mode 100644 .github/workflows/contributor-issue-enforcement.yml diff --git a/.github/workflows/contributor-issue-enforcement.yml b/.github/workflows/contributor-issue-enforcement.yml new file mode 100644 index 00000000..10f0e272 --- /dev/null +++ b/.github/workflows/contributor-issue-enforcement.yml @@ -0,0 +1,45 @@ +name: Enforce contributor requirement +on: + issues: + types: + - created + +jobs: + enforcement: + runs-on: ubuntu-latest + + steps: + - name: Delay to allow contributor comment + run: sleep 180 + + - name: Find potential contributor comment + uses: peter-evans/find-comment@d362b58d73ad53d089dd54460397ec1b8b47dbfd + id: comment + with: + issue-number: ${{ github.event.number }} + body-includes: /ok + + - name: Check commenter is contributor + uses: actions-cool/check-user-permission@a0668c9aec87f3875fc56170b6452a453e9dd819 + id: comment-contrib + if: ${{ !steps.comment.outputs.comment-id }} + with: + username: ${{ steps.comment.outputs.comment-author }} + check-contributor: true + + - name: Check author is contributor + uses: actions-cool/check-user-permission@a0668c9aec87f3875fc56170b6452a453e9dd819 + id: author-contrib + if: ${{ !steps.comment-contrib.check-result }} + with: + # no username means it checks the person who triggered the workflow run i.e. the issue creator + check-contributor: true + + - name: Tag and close issue + if: ${{ !steps.comment-contrib.check-result && !steps.author-contrib.check-result }} + run: | + gh issue close $ISSUE -c "Your issue does not comply with our contributor requirement. Please do not ignore the issue template." -r "not planned" + gh issue edit $ISSUE --add-label "ignored contributor requirement" + gh issue lock $ISSUE + env: + ISSUE: ${{ github.event.issue.html_url }}