Jobs
Why a job is not being served, in plain words.
Events
Why a launch failed, with your cloud’s own message.
Runners
What state a machine reached, and its instance ID.
Why a job was not run
The Jobs page shows one of these reasons.”No runner matching labels” from GitHub
This is GitHub’s message, not Airship’s, and it is the most common first-run surprise:No runner matching the specified labels was found: self-hostedGitHub only queues a job for a self-hosted label once a runner carrying that label has existed at least once. On the very first push in a new repository, none has. Push again. Airship registered the labels on the first attempt, so the second one queues properly. If it keeps happening:
The label does not match the file
The label does not match the file
Compare the labels on the Runners page with the job’s
runs-on.
Everything from -- onwards is ignored when matching, so
airship-build--123 matches a definition with airship-build, but
airship-buildd--123 matches nothing.The job asks for something the runner is not
The job asks for something the runner is not
A job on
[self-hosted, airship-build, gpu] needs a definition with
gpu: set. One asking for arm64 needs an Arm instance type. One asking
for windows needs a definition naming a Windows image — the Ubuntu
aliases are Linux.The definition is not in the file at that commit
The definition is not in the file at that commit
A job reads
airship.yaml at its own commit. A definition added on
main is not visible to a branch that has not merged it.A suffix on a pooled label
A suffix on a pooled label
Idle runners cannot carry a run ID, so
airship-build--${{ github.run_id }} never matches a pool runner. Drop
the suffix on pooled labels.Launch failures
Every cloud
AWS
Google Cloud
Azure
Runner states and finish reasons
On the machine itself
There is no inbound access, so reaching a machine means adding your own:
your own security group and your own key, in your own image.
Still stuck
Three things worth confirming
- The repository is activated, not just granted to the app.
- The cloud named by the definition’s
cloud:is connected and valid. - The definition exists in
airship.yamlat the commit the job ran from.