Konflux Archived PipelineRuns

Par openshift · hypershift

Accède aux PipelineRuns, TaskRuns et logs de pods Konflux archivés via KubeArchive. S'applique automatiquement lors de la vérification des résultats de PipelineRun Konflux, de l'investigation des échecs de contrats enterprise, ou de la récupération des logs des exécutions Konflux CI terminées.

npx skills add https://github.com/openshift/hypershift --skill Konflux Archived PipelineRuns

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 get dans 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é lisible
  • step-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 avec oc login
  • KubeArchive /livez échoue : Vérifiez que oc est 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 get directement dans le namespace crt-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

Skills similaires