npx skills add ...
npx skills add openshift/hypershift --skill konflux-archived-pipelineruns
npx skills add openshift/hypershift --skill konflux-archived-pipelineruns
Accesses archived Konflux PipelineRuns, TaskRuns, and pod logs via KubeArchive. Auto-applies when checking Konflux PipelineRun results, investigating enterprise contract failures, or retrieving logs from completed Konflux CI runs.
This skill provides the workflow for accessing Konflux PipelineRuns that have been archived by the kube archiver. PipelineRuns are archived quickly after completion and are typically NOT available via oc get. Use the KubeArchive REST API to retrieve PipelineRun details, TaskRun results, and pod logs.
This skill automatically applies when:
oc get in the Konflux namespacecrt-redhat-acm-tenantapi.stone-prd-rh01.pg1f.p1.openshiftapps.com:6443oc getArchived PipelineRuns, TaskRuns, pods, and pod logs are accessible through the KubeArchive REST API:
Authentication uses the oc token:
Child TaskRun references are in status.childReferences:
TaskRun results are in status.results.
List available containers first from the pod spec (spec.initContainers and spec.containers), then fetch logs:
The PipelineRun name appears in an <a href="..."> tag in the output text.
The EC verify task pod has these containers with useful output:
step-report-json - Structured JSON with all violations (preferred)step-summary - Human-readable summarystep-detailed-report - Detailed reportGroup violations by metadata.code and present a summary with counts, rule names, and individual messages.
tasks.required_untrusted_task_foundA required task is present but not resolved from a trusted version. Fix by updating the task reference in .tekton/ pipeline files.
trusted_task.trustedA task version is not in the trusted task list. The violation message includes the required SHA to upgrade to. Fix by updating task digests in .tekton/ pipeline files.
oc whoami -t fails: User must log in to the Konflux cluster with oc login/livez fails: Check that oc is logged in to the correct cluster (api.stone-prd-rh01.pg1f.p1.openshiftapps.com:6443)oc get directly in namespace crt-redhat-acm-tenantdata['status']['childReferences'] # list of {name, kind, apiVersion, pipelineTaskName}curl -s -H "Authorization: Bearer $(oc whoami -t)" \
"${KA_HOST}/apis/tekton.dev/v1/namespaces/crt-redhat-acm-tenant/taskruns/<TASKRUN_NAME>"curl -s -H "Authorization: Bearer $(oc whoami -t)" \
"${KA_HOST}/api/v1/namespaces/crt-redhat-acm-tenant/pods?labelSelector=tekton.dev/taskRun=<TASKRUN_NAME>"curl -s -H "Authorization: Bearer $(oc whoami -t)" \
"${KA_HOST}/api/v1/namespaces/crt-redhat-acm-tenant/pods/<POD_NAME>/log?container=<CONTAINER_NAME>"HEAD_SHA=$(gh pr view <PR> --repo openshift/hypershift --json headRefOid -q .headRefOid)
# Find failing EC check runs
gh api repos/openshift/hypershift/commits/${HEAD_SHA}/check-runs --paginate \
--jq '.check_runs[] | select(.name | test("enterprise-contract")) | select(.conclusion == "failure") | {name: .name, id: .id}'
# Get PipelineRun names from check output
gh api repos/openshift/hypershift/commits/${HEAD_SHA}/check-runs --paginate \
--jq '.check_runs[] | select(.name | test("enterprise-contract")) | select(.conclusion == "failure") | .output.text'{
"success": false,
"components": [{
"name": "component-name",
"containerImage": "quay.io/...",
"violations": [{
"msg": "Human-readable message",
"metadata": {
"code": "rule.code.name",
"title": "Rule title",
"description": "Rule description",
"solution": "How to fix"
}
}]
}]
}