Add ability to trigger retests via comments
Signed-off-by: Casey Callendrello <cdc@redhat.com>
This commit is contained in:
parent
3ae85c1093
commit
8d52c42f90
7
.github/actions/retest-action/Dockerfile
vendored
Normal file
7
.github/actions/retest-action/Dockerfile
vendored
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
FROM alpine:3.10
|
||||||
|
|
||||||
|
RUN apk add --no-cache curl jq
|
||||||
|
|
||||||
|
COPY entrypoint.sh /entrypoint.sh
|
||||||
|
|
||||||
|
ENTRYPOINT ["/entrypoint.sh"]
|
11
.github/actions/retest-action/action.yml
vendored
Normal file
11
.github/actions/retest-action/action.yml
vendored
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
name: 'Re-Test'
|
||||||
|
description: 'Re-Runs the last workflow for a PR'
|
||||||
|
inputs:
|
||||||
|
token:
|
||||||
|
description: 'GitHub API Token'
|
||||||
|
required: true
|
||||||
|
runs:
|
||||||
|
using: 'docker'
|
||||||
|
image: 'Dockerfile'
|
||||||
|
env:
|
||||||
|
GITHUB_TOKEN: ${{ inputs.token }}
|
45
.github/actions/retest-action/entrypoint.sh
vendored
Executable file
45
.github/actions/retest-action/entrypoint.sh
vendored
Executable file
@ -0,0 +1,45 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
set -ex
|
||||||
|
|
||||||
|
if ! jq -e '.issue.pull_request' ${GITHUB_EVENT_PATH}; then
|
||||||
|
echo "Not a PR... Exiting."
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ "$(jq -r '.comment.body' ${GITHUB_EVENT_PATH})" != "/retest" ]; then
|
||||||
|
echo "Nothing to do... Exiting."
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
PR_URL=$(jq -r '.issue.pull_request.url' ${GITHUB_EVENT_PATH})
|
||||||
|
|
||||||
|
curl --request GET \
|
||||||
|
--url "${PR_URL}" \
|
||||||
|
--header "authorization: Bearer ${GITHUB_TOKEN}" \
|
||||||
|
--header "content-type: application/json" > pr.json
|
||||||
|
|
||||||
|
ACTOR=$(jq -r '.user.login' pr.json)
|
||||||
|
BRANCH=$(jq -r '.head.ref' pr.json)
|
||||||
|
|
||||||
|
curl --request GET \
|
||||||
|
--url "https://api.github.com/repos/${GITHUB_REPOSITORY}/actions/runs?event=pull_request&actor=${ACTOR}&branch=${BRANCH}" \
|
||||||
|
--header "authorization: Bearer ${GITHUB_TOKEN}" \
|
||||||
|
--header "content-type: application/json" | jq '.workflow_runs | max_by(.run_number)' > run.json
|
||||||
|
|
||||||
|
RERUN_URL=$(jq -r '.rerun_url' run.json)
|
||||||
|
|
||||||
|
curl --request POST \
|
||||||
|
--url "${RERUN_URL}" \
|
||||||
|
--header "authorization: Bearer ${GITHUB_TOKEN}" \
|
||||||
|
--header "content-type: application/json"
|
||||||
|
|
||||||
|
|
||||||
|
REACTION_URL="$(jq -r '.comment.url' ${GITHUB_EVENT_PATH})/reactions"
|
||||||
|
|
||||||
|
curl --request POST \
|
||||||
|
--url "${REACTION_URL}" \
|
||||||
|
--header "authorization: Bearer ${GITHUB_TOKEN}" \
|
||||||
|
--header "accept: application/vnd.github.squirrel-girl-preview+json" \
|
||||||
|
--header "content-type: application/json" \
|
||||||
|
--data '{ "content" : "rocket" }'
|
17
.github/workflows/commands.yml
vendored
Normal file
17
.github/workflows/commands.yml
vendored
Normal file
@ -0,0 +1,17 @@
|
|||||||
|
name: commands
|
||||||
|
on:
|
||||||
|
issue_comment:
|
||||||
|
types: [created]
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
retest:
|
||||||
|
if: github.repository == 'containernetworking/plugins'
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- name: Check out code
|
||||||
|
uses: actions/checkout@v2
|
||||||
|
|
||||||
|
- name: Re-Test Action
|
||||||
|
uses: ./.github/actions/retest-action
|
||||||
|
with:
|
||||||
|
token: ${{ secrets.REPO_ACCESS_TOKEN }}
|
Loading…
x
Reference in New Issue
Block a user