From e16bd20ee81f660eb12d929c9eb680f51819f56c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mattias=20F=C3=A4lt?= Date: Tue, 31 Mar 2020 20:26:23 +0200 Subject: [PATCH 1/2] Script to respond to comments in PRs --- .github/workflows/PRCommentResponder.yaml | 40 +++++++++++++++++++++++ 1 file changed, 40 insertions(+) create mode 100644 .github/workflows/PRCommentResponder.yaml diff --git a/.github/workflows/PRCommentResponder.yaml b/.github/workflows/PRCommentResponder.yaml new file mode 100644 index 000000000..63ca7811f --- /dev/null +++ b/.github/workflows/PRCommentResponder.yaml @@ -0,0 +1,40 @@ +name: PR Comment Responder +on: + issue_comment: + types: [created] # Trigger when comment is created on issue or PR + +jobs: + mentioned: + runs-on: ubuntu-latest + if: contains(github.event.comment.body, '@JuliaControlBot test-plots') # Only run if requested + steps: + - id: get_user_permissons # Get permissions for user who commented + uses: octokit/request-action@v2.x + with: + route: GET /repos/JuliaControl/ControlSystems.jl/collaborators/:user/permission + user: ${{ github.event.comment.user.login }} + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} # This is a short-time token generated by github + + - id: parse_permisson # Parse permissions for user who commented, save in "outputs.permission" + uses: gr2m/get-json-paths-action@v1.x + with: + json: ${{ steps.get_user_permissons.outputs.data }} + permission: "permission" + + + - name: Is admin # For debugging, check if admin + if: steps.parse_permisson.outputs.permission == 'admin' + run: | + echo Is admin + - name: Is PR # For debugging, check if comment is in PR + if: github.event.issue.pull_request != null + run: | + echo Is PR + - name: PR ping ControlExamplePlots # Post the ping to ControlExamplePlots to handle, using secret key for JuliaControlBot + if: github.event.issue.pull_request != null && steps.parse_permisson.outputs.permission == 'admin' + run: | + curl -X POST https://api.github.com/repos/JuliaControl/ControlExamplePlots.jl/dispatches \ + -H 'Accept: application/vnd.github.everest-preview+json' \ + -u ${{ secrets.ACCESS_TOKEN_BOT }} \ + --data '{"event_type": "prupdate", "client_payload": { "repository": "'"$GITHUB_REPOSITORY"'", "pr_number": ${{ github.event.issue.number }} }}' From 956b0bb3729e5fe8993aba29107704f084616eef Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mattias=20F=C3=A4lt?= Date: Fri, 3 Apr 2020 01:35:34 +0200 Subject: [PATCH 2/2] Avoid running script when failing on forks --- .github/workflows/PingControlExamplePlots.yml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/.github/workflows/PingControlExamplePlots.yml b/.github/workflows/PingControlExamplePlots.yml index a7b4dfe0d..64658d2a9 100644 --- a/.github/workflows/PingControlExamplePlots.yml +++ b/.github/workflows/PingControlExamplePlots.yml @@ -10,7 +10,11 @@ jobs: steps: - name: PR ping ControlExamplePlots run: | + if [ "$SECRET" != "" ]; then curl -X POST https://api.github.com/repos/JuliaControl/ControlExamplePlots.jl/dispatches \ -H 'Accept: application/vnd.github.everest-preview+json' \ -u ${{ secrets.ACCESS_TOKEN_BOT }} \ --data '{"event_type": "prupdate", "client_payload": { "repository": "'"$GITHUB_REPOSITORY"'", "pr_number": ${{ github.event.number }} }}' + fi + env: + SECRET: ${{ secrets.ACCESS_TOKEN_BOT }}