
Unlike `rerun_url`, this endpoint isn't in the run API response, but we can construct it manually easily. Documentation for it is here: https://docs.github.com/en/rest/actions/workflow-runs#re-run-failed-jobs-from-a-workflow-run Signed-off-by: JP Simard <jp@jpsim.com>
46 lines
1.4 KiB
Bash
Executable File
46 lines
1.4 KiB
Bash
Executable File
#!/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
|
|
|
|
RUN_URL=$(jq -r '.rerun_url' run.json)
|
|
|
|
curl --request POST \
|
|
--url "${RUN_URL}/rerun-failed-jobs" \
|
|
--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" }'
|