Accès aux PipelineRun Konflux Archivés
Cette skill fournit le workflow pour accéder aux PipelineRun Konflux qui ont été archivés par kube archiver. Les PipelineRun sont archivés rapidement après leur completion et ne sont généralement PAS disponibles via oc get. Utilisez l'API REST KubeArchive pour récupérer les détails des PipelineRun, les résultats des TaskRun et les logs des pods.
Quand utiliser cette skill
Cette skill s'applique automatiquement quand :
- Vérifier les résultats d'un PipelineRun Konflux complété
- Enquêter sur les échecs de vérification du contrat entreprise Konflux
- Récupérer les logs des builds ou tests Konflux CI terminés
- Analyser les violations de tâches de confiance dans CI
- Examiner les résultats de vérification Konflux sur les PR GitHub
- Un PipelineRun n'est pas trouvé via
oc getdans le namespace Konflux
Architecture
Konflux CI on HyperShift
- Namespace:
crt-redhat-acm-tenant - Cluster:
api.stone-prd-rh01.pg1f.p1.openshiftapps.com:6443 - Les PipelineRun sont archivés rapidement par kube archiver et ne sont généralement PAS disponibles via
oc get
KubeArchive
Les PipelineRun, TaskRun, pods et logs de pods archivés sont accessibles via l'API REST KubeArchive :
KA_HOST="https://kubearchive-api-server-product-kubearchive.apps.stone-prd-rh01.pg1f.p1.openshiftapps.com"
L'authentification utilise le token oc :
curl -s -H "Authorization: Bearer $(oc whoami -t)" "${KA_HOST}/livez"
Accès aux ressources archivées
Récupérer un PipelineRun archivé
curl -s -H "Authorization: Bearer $(oc whoami -t)" \
"${KA_HOST}/apis/tekton.dev/v1/namespaces/crt-redhat-acm-tenant/pipelineruns/<PIPELINERUN_NAME>"
Les références des TaskRun enfants se trouvent dans status.childReferences :
data['status']['childReferences'] # list of {name, kind, apiVersion, pipelineTaskName}
Récupérer un TaskRun archivé
curl -s -H "Authorization: Bearer $(oc whoami -t)" \
"${KA_HOST}/apis/tekton.dev/v1/namespaces/crt-redhat-acm-tenant/taskruns/<TASKRUN_NAME>"
Les résultats du TaskRun se trouvent dans status.results.
Trouver les pods pour un TaskRun
curl -s -H "Authorization: Bearer $(oc whoami -t)" \
"${KA_HOST}/api/v1/namespaces/crt-redhat-acm-tenant/pods?labelSelector=tekton.dev/taskRun=<TASKRUN_NAME>"
Récupérer les logs des pods
Listez d'abord les conteneurs disponibles dans la spec du pod (spec.initContainers et spec.containers), puis récupérez les logs :
curl -s -H "Authorization: Bearer $(oc whoami -t)" \
"${KA_HOST}/api/v1/namespaces/crt-redhat-acm-tenant/pods/<POD_NAME>/log?container=<CONTAINER_NAME>"
Violations du contrat entreprise
Identifier les échecs de vérification EC à partir de GitHub
HEAD_SHA=$(gh pr view <PR> --repo openshift/hypershift --json headRefOid -q .headRefOid)
# Trouver les vérifications EC défaillantes
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}'
# Obtenir les noms des PipelineRun à partir de la sortie de vérification
gh api repos/openshift/hypershift/commits/${HEAD_SHA}/check-runs --paginate \
--jq '.check_runs[] | select(.name | test("enterprise-contract")) | select(.conclusion == "failure") | .output.text'
Le nom du PipelineRun apparaît dans une balise <a href="..."> dans le texte de sortie.
Conteneurs du pod de tâche EC Verify
Le pod de tâche EC verify a ces conteneurs avec une sortie utile :
step-report-json- JSON structuré avec toutes les violations (préféré)step-summary- Résumé lisiblestep-detailed-report- Rapport détaillé
Structure du rapport JSON EC
{
"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"
}
}]
}]
}
Groupez les violations par metadata.code et présentez un résumé avec les comptages, les noms des règles et les messages individuels.
Types courants de violations EC
tasks.required_untrusted_task_found
Une tâche requise est présente mais n'est pas résolue à partir d'une version de confiance. Corrigez en mettant à jour la référence de la tâche dans les fichiers pipeline .tekton/.
trusted_task.trusted
Une version de tâche ne figure pas dans la liste des tâches de confiance. Le message de violation inclut le SHA requis pour mettre à jour. Corrigez en mettant à jour les digests de tâches dans les fichiers pipeline .tekton/.
Gestion des erreurs
oc whoami -téchoue : L'utilisateur doit se connecter au cluster Konflux avecoc login- KubeArchive
/livezéchoue : Vérifiez queocest connecté au cluster correct (api.stone-prd-rh01.pg1f.p1.openshiftapps.com:6443) - KubeArchive retourne 404 pour une ressource : Elle n'a peut-être pas encore été archivée; essayez
oc getdirectement dans le namespacecrt-redhat-acm-tenant - Les logs des pods retournent « no logs found » : Les logs peuvent avoir été supprimés; revenez aux résultats TaskRun pour le résumé
- Aucune vérification EC défaillante trouvée : Signalez que toutes les vérifications EC ont réussi