with one click
zuul
// Troubleshoot failing Zuul CI jobs for this project. Use this when asked to debug, investigate, or fix Zuul job failures.
// Troubleshoot failing Zuul CI jobs for this project. Use this when asked to debug, investigate, or fix Zuul job failures.
Backport a merged PR to one or more stable branches. Handles cherry-pick conflict resolution and creates individual PRs per branch. Can be invoked with a PR number and optional list of target branches, or will auto-detect target branches from the PR's backport labels. Use when asked to backport a PR, fix a failed automated backport, or manually port changes to stable branches.
Bump an OpenStack service container image to the latest digest in `roles/defaults/vars/main.yml`, across one or more Atmosphere branches. Use this when asked to bump, refresh, or update the digest for a service image such as Magnum, Neutron, Nova, Cinder, Keystone, Glance, Heat, Manila, Barbican, Octavia, Placement, Horizon, Designate, Ironic, or similar.
| name | zuul |
| description | Troubleshoot failing Zuul CI jobs for this project. Use this when asked to debug, investigate, or fix Zuul job failures. |
Get the list of checks for the pull request. Identify the Zuul check by
looking for a check whose URL points to a Zuul instance (typically
containing /buildset/ in the path). Note the check name, status, and
buildset URL for further investigation.
Zuul's dashboard is an SPA so you cannot scrape it directly. Use the REST API instead. Extract the Zuul base URL and buildset UUID from the check URL, then call:
GET <zuul_base_url>/api/buildset/<buildset_uuid>
The response is JSON containing the buildset result, pipeline, refs, and
a builds array. Each build has job_name, result, duration,
log_url, and error_detail. Use this to identify which specific
job(s) failed within the buildset.
For details on reading job logs, scanning the artifact manifest, and
the artifact directory structure, see .github/skills/zuul/logs.md.
job-output.txt for FAILED (excluding RETRYING) and
PLAY RECAP with failed= > 0 to locate the failure point.failed=0) — the root
cause may be environmental rather than a deployment error.ok vs changed vs failed)
with the actual system state from artifacts — tasks can report
success while the underlying command silently fails.When a buildset has multiple job variants (for example OVN vs OVS, or different CSI backends), and only one variant fails:
Tempest is the OpenStack integration test suite used in the verify stage. When tempest tests fail:
tempest-run-tests pod log contains the full
tempest output and is much easier to parse than searching through
job-output.txt.When OpenStack or infrastructure services are unhealthy:
failed-pods/ — these are pods that were not
running at the time of log collection.When Ansible tasks fail or behave unexpectedly:
PLAY RECAP lines to identify which play had failures.TASK that
failed and its error output.|| true, ignore_errors, or
failed_when: false — these mask real errors. A task can show ok
in the recap but have actually failed underneath.become: true.
If a molecule scenario or Zuul job changed how privilege escalation
is configured (for example removing a global ansible_become
setting), individual plays may need explicit become: true.