# 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