From fe7e1939de237543805f315572fc95d24f010ae1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?oliver=20k=C3=B6nig?= Date: Wed, 15 May 2024 08:59:49 +0200 Subject: [PATCH] ci: Add `watchdog` (#807) A daemon that reacts to PR comments and fires the presubmit CI. Signed-off-by: Oliver Koenig --- .github/workflows/_watchdog.yaml | 68 ++++++++++++++++++++++++++++++++ 1 file changed, 68 insertions(+) create mode 100644 .github/workflows/_watchdog.yaml diff --git a/.github/workflows/_watchdog.yaml b/.github/workflows/_watchdog.yaml new file mode 100644 index 000000000..5399efc39 --- /dev/null +++ b/.github/workflows/_watchdog.yaml @@ -0,0 +1,68 @@ +name: watchdog + +on: + issue_comment: + types: [created] + +jobs: + woof: + runs-on: ubuntu-22.04 + if: > + github.event_name == 'issue_comment' && + github.event.issue.pull_request && + startsWith(github.event.comment.body, '/ci') && + contains('ko3n1g,nouiz,joker-eph,yhtang,terrykong,hemildesai,chaserileyroberts,CliveUnger,DwarKapex,mingxu1067,kocchop,SahilJain314,ashors1,maanug-nv,hmonishN,gspschmid', format('{0},', github.actor)) + steps: + - name: Get PR number + shell: bash + id: get-pr-num + run: | + PR_URL="${{ github.event.issue.pull_request.url }}" + PR_NUM=${PR_URL##*/} + echo "pr_number=$PR_NUM" >> $GITHUB_OUTPUT + + - name: Get Pull Request Information + uses: actions/github-script@v6 + id: get-pr-branch + with: + result-encoding: string + script: | + const pr = await github.rest.pulls.get({ + owner: context.repo.owner, + repo: context.repo.repo, + pull_number: ${{ steps.get-pr-num.outputs.pr_number }} + }); + console.log('Pull Request Information:', pr.data); + return pr.data.head.ref; + + - name: Trigger `CI` workflow on subset of tests + uses: aurelien-baudet/workflow-dispatch@v2.1.1 + id: trigger + with: + workflow: "CI" + token: ${{ secrets.GITHUB_TOKEN }} + wait-for-completion: false + ref: ${{ steps.get-pr-branch.outputs.result }} + + - name: Update `GITHUB_STEP_SUMMARY` + shell: bash + run: echo "Click [here](${{ steps.trigger.outputs.workflow-url }}) to navigate to the workflow run." >> $GITHUB_STEP_SUMMARY + + - name: Update PR issue comment + shell: bash + run: | + message="${{ github.event.comment.body}} + + --- + + Watchdog 🤖: presubmit CI was automatically triggered. Click [here](${{ steps.trigger.outputs.workflow-url }}) to navigate to the workflow run. + " + message="${message//$'\n'/
}" + + curl -L \ + -X PATCH \ + -H "Accept: application/vnd.github+json" \ + -H "Authorization: Bearer ${{ secrets.GITHUB_TOKEN }}" \ + -H "X-GitHub-Api-Version: 2022-11-28" \ + https://api.github.com/repos/${{ github.repository }}/issues/comments/${{ github.event.comment.id }} \ + -d '{"body":"'"$message"'"}' \ No newline at end of file