plugins/ci/skills/fetch-prowjob-json/SKILL.md
Fetch and return key data from a Prow job's prowjob.json artifact given a Prow job URL
npx skillsauth add openshift-eng/ai-helpers fetch-prowjob-jsonInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
This skill fetches the prowjob.json artifact for a given Prow job and returns key fields including job metadata, spec details, status, and release annotations.
Use this skill when you need to:
release.openshift.io/tag)release.openshift.io/from-tag)RELEASE_IMAGE_LATEST, RELEASE_IMAGE_INITIAL) used in a jobcurl -s -o /dev/null -w '%{http_code}' https://gcsweb-ci.apps.ci.l2s4.p1.openshiftapps.com/Extract the GCS path from the Prow job URL. Prow URLs follow this pattern:
https://prow.ci.openshift.org/view/gs/<bucket>/<path>/<job-name>/<build-id>
Extract everything after /view/ to get the GCS reference:
gs/<bucket>/<path>/<job-name>/<build-id>
Convert the Prow URL to a gcsweb URL that serves the raw prowjob.json:
https://gcsweb-ci.apps.ci.l2s4.p1.openshiftapps.com/gcs/<bucket>/<path>/<job-name>/<build-id>/prowjob.json
Example:
https://prow.ci.openshift.org/view/gs/test-platform-results/logs/periodic-ci-openshift-release-master-ci-4.22-e2e-gcp-ovn-upgrade/2019864414127132672https://gcsweb-ci.apps.ci.l2s4.p1.openshiftapps.com/gcs/test-platform-results/logs/periodic-ci-openshift-release-master-ci-4.22-e2e-gcp-ovn-upgrade/2019864414127132672/prowjob.jsonThe conversion is: replace https://prow.ci.openshift.org/view/ with https://gcsweb-ci.apps.ci.l2s4.p1.openshiftapps.com/ and append /prowjob.json.
Use curl or WebFetch to retrieve the JSON content from the constructed URL.
curl -s "https://gcsweb-ci.apps.ci.l2s4.p1.openshiftapps.com/gcs/test-platform-results/logs/<job-name>/<build-id>/prowjob.json"
From the full prowjob.json, extract and return the following fields:
| Field | JSON Path | Description |
|-------|-----------|-------------|
| Job Name | spec.job | Full periodic/presubmit/postsubmit job name |
| Job Type | spec.type | periodic, presubmit, or postsubmit |
| Build ID | status.build_id | Unique build identifier |
| State | status.state | success, failure, aborted, pending, triggered |
| Description | status.description | Human-readable status description |
| Start Time | status.startTime | ISO 8601 timestamp |
| Completion Time | status.completionTime | ISO 8601 timestamp (null if still running) |
| Cluster | spec.cluster | Build cluster (e.g., build02, build05) |
| Pod Name | status.pod_name | Kubernetes pod name |
| Prow URL | status.url | Link back to the Prow job view |
| Payload Tag | metadata.annotations["release.openshift.io/tag"] | The payload version tested or upgraded to (e.g., 4.22.0-0.ci-2026-02-06-195709). This is the payload the cluster was tested against or upgraded to. |
| Upgrade From Tag | metadata.annotations["release.openshift.io/from-tag"] | The original payload version before upgrade (e.g., 4.22.0-0.ci-2026-02-05-195709). Only present for upgrade jobs. This is the version the cluster starts at before upgrading to the payload tag. |
| Release Source | metadata.annotations["release.openshift.io/source"] | Release stream source (e.g., ocp/4.22) |
| Architecture | metadata.annotations["release.openshift.io/architecture"] | CPU architecture (e.g., amd64, arm64, multi) |
| Refs | spec.extra_refs | Array of repo references (org, repo, base_ref) |
| Target | From spec.pod_spec.containers[0].args | The --target= value from ci-operator args |
| Variant | From spec.pod_spec.containers[0].args | The --variant= value from ci-operator args |
| RELEASE_IMAGE_LATEST | From spec.pod_spec.containers[0].env | The release image the job upgrades to or installs |
| RELEASE_IMAGE_INITIAL | From spec.pod_spec.containers[0].env | The initial release image (for upgrade jobs) |
release.openshift.io/tag: Present on release-controller-triggered jobs. Identifies the payload being validated. For upgrade jobs, this is the version the cluster upgrades to.release.openshift.io/from-tag: Only present on upgrade jobs. Identifies the version the cluster starts at before the upgrade. If absent, the job is not an upgrade job.RELEASE_IMAGE_LATEST and RELEASE_IMAGE_INITIAL environment variables correspond to these tags and contain the full registry pull spec.If the URL doesn't match the expected pattern https://prow.ci.openshift.org/view/gs/...:
If the GCS web proxy returns a 404:
If the GCS web proxy is unreachable:
gcsweb-ci.apps.ci.l2s4.p1.openshiftapps.comInput:
https://prow.ci.openshift.org/view/gs/test-platform-results/logs/periodic-ci-openshift-release-master-ci-4.22-e2e-gcp-ovn-upgrade/2019864414127132672
Key output fields:
Job Name: periodic-ci-openshift-release-master-ci-4.22-e2e-gcp-ovn-upgrade
Job Type: periodic
Build ID: 2019864414127132672
State: failure
Start Time: 2026-02-06T20:02:58Z
Completion Time: 2026-02-07T00:36:09Z
Cluster: build02
Payload Tag: 4.22.0-0.ci-2026-02-06-195709
Upgrade From Tag: 4.22.0-0.ci-2026-02-05-195709
Architecture: amd64
Target: e2e-gcp-ovn-upgrade
Variant: ci-4.22
RELEASE_IMAGE_LATEST: registry.ci.openshift.org/ocp/release:4.22.0-0.ci-2026-02-06-195709
RELEASE_IMAGE_INITIAL:registry.ci.openshift.org/ocp/release:4.22.0-0.ci-2026-02-05-195709
For a non-upgrade job, the Upgrade From Tag field will be absent:
Job Name: periodic-ci-openshift-release-master-ci-4.22-e2e-gcp-ovn
Job Type: periodic
Build ID: 2019864414127132999
State: success
Payload Tag: 4.22.0-0.ci-2026-02-06-195709
Upgrade From Tag: (not present - not an upgrade job)
Architecture: amd64
Target: e2e-gcp-ovn
Variant: ci-4.22
prowjob.json is uploaded to GCS by Prow's sidecar after the job completes (or is aborted). It may not be available for jobs still in progress.managedFields section of the metadata can be omitted from output as it contains only field ownership bookkeeping.metadata.labels section is truncated for some fields (e.g., job name) due to Kubernetes label length limits. Always use metadata.annotations or spec.job for the full job name.gcsweb-ci.apps.ci.l2s4.p1.openshiftapps.com serves raw file content without authentication.completionTime - startTime.spec.decoration_config.timeout field shows the maximum allowed runtime for the job./ci:analyze-prow-job-test-failure (analyzes test failures in a Prow job)/ci:analyze-prow-job-install-failure (analyzes install failures in a Prow job)ci:prow-job-analyze-test-failure (detailed test failure analysis)research
Shared engine for analyzing Jira issue activity and generating status summaries
testing
Snapshot OpenShift payload data (release controller, PR diffs, comments, CI jobs, JUnit results, regression tracking) to a local directory for offline analysis
development
Analyze a payload snapshot to identify root causes of blocking job failures, score candidate PRs, and produce an HTML report with revert recommendations
tools
Create TRT JIRA bugs, open revert PRs, and trigger payload jobs for high-confidence revert candidates