blob: 707867f74edd6ba90c7716809ba354087013d512 [file] [log] [blame] [edit]
# In the unlikely event a self-hosted runner was selected and reserved but it
# goes down before the workload starts, cancel the workflow run.
name: Detect self-hosted runner assigment timeout
description: "Cancel the workflow run if a self-hosted runner was selected, but the job failed to start"
inputs:
unique-id:
required: true
description: "Unique ID of the runner"
github_token:
required: true
description: "Must be able to do github API calls and cancel jobs."
runs:
using: "composite"
steps:
- name: Wait a bit
shell: bash
run: sleep 120
- name: Cancel if workload job is still queued
shell: bash
run: |
run_url=/repos/${{ github.repository }}/actions/runs/${{ github.run_id }}
export GH_TOKEN=${{ inputs.github_token }}
if [ "$(gh api "$run_url/jobs" \
| jq -er --arg id '${{ inputs.unique-id }}' \
'.jobs[] | select(.name | contains("[" + $id + "]")) | .status'
)" = queued ]; then
echo 'Timeout waiting for runner assignment!'
echo 'Hint: does this repo have permission to access the runner group?'
echo 'Hint: https://github.com/organizations/servo/settings/actions/runner-groups'
echo
echo 'Cancelling workflow run'
gh api "$run_url/cancel" --method POST
exit 1
fi