update-konflux-tasks

Par openshift · hypershift

Mettre à jour automatiquement les tâches Tekton Konflux obsolètes à partir des journaux de vérification du contrat d'entreprise.

npx skills add https://github.com/openshift/hypershift --skill update-konflux-tasks

Mettre à jour automatiquement les tâches Tekton Konflux obsolètes en fonction des journaux de vérification du contrat d'entreprise ou en détectant directement les mises à jour.

[Extended thinking: Cette commande peut soit analyser les journaux de contrat d'entreprise, soit utiliser le script update_trusted_task_bundles.py pour identifier les tâches Tekton obsolètes, utilise skopeo pour mapper les digests aux balises de version, vérifie les notes de migration pour les changements critiques, et met à jour tous les fichiers YAML de pipeline dans le répertoire .tekton/ avec les dernières versions.]

Mise à jour des tâches Tekton Konflux

Exemples d'utilisation :

  1. Mettre à jour les tâches à partir du journal de contrat d'entreprise : /update-konflux-tasks ../../hypershift-operator-enterprise-contract-lxgvw-verify.log

  2. Détecter et mettre à jour les tâches automatiquement (sans fichier journal) : /update-konflux-tasks

Détails de l'implémentation :

  • Quand un fichier journal est fourni : Analyse les journaux de vérification du contrat d'entreprise Konflux pour les avertissements de tâches obsolètes
  • Quand aucun fichier journal n'est fourni : Utilise hack/tools/scripts/update_trusted_task_bundles.py --dry-run --json pour détecter les mises à jour
  • Utilise skopeo inspect pour mapper les digests SHA256 aux balises de version appropriées
  • Vérifie la documentation de migration pour les changements de version
  • Nécessite que skopeo et jq soient installés

Flux du processus :

  1. Détecter les tâches obsolètes :

    • Si un fichier journal est fourni ({{args.0}}) :
      • Lire le fichier journal fourni
      • Extraire tous les avertissements de tâches Tekton obsolètes mentionnant « une version plus récente existe »
      • Analyser les noms de tâches, les digests actuels et les derniers digests
    • Si aucun fichier journal n'est fourni :
      • Exécuter hack/tools/scripts/update_trusted_task_bundles.py $(find .tekton -name '*.yaml') --dry-run --json --upgrade-versions
      • Analyser la sortie JSON pour identifier les tâches nécessitant des mises à jour
      • La sortie JSON contient des mises à jour et available_upgrades par fichier avec les champs task_name, current_version, current_digest, latest_version, latest_digest et is_version_bump
  2. Mapper les derniers digests aux balises de version :

    • Pour chaque tâche obsolète, utiliser le script auxiliaire hack/tools/scripts/find_task_version_by_digest.sh <task-name> <digest> pour déterminer la balise de version appropriée pour le dernier digest
    • Le script auxiliaire utilise skopeo list-tags et skopeo inspect pour trouver quelle balise de version sémantique (p. ex. 0.2, 0.3) correspond au digest donné
    • Il filtre les balises de type hash de commit (p. ex. « 0.2-f788d9b... ») et renvoie uniquement les versions sémantiques propres
    • Créer un mappage de : task-name → current-version@digest → latest-version@digest
  3. Vérifier les notes de migration :

    • Pour toute tâche avec changements de version (pas seulement mises à jour de digest), vérifier les notes de migration
    • Si une tâche correspond à quay.io/redhat-appstudio-tekton-catalog/ plutôt qu'à quay.io/konflux-ci/tekton-catalog, nous devrions vérifier si elle est disponible dans quay.io/konflux-ci/tekton-catalog et changer pour utiliser cette dernière.
    • Utiliser le motif d'URL : https://github.com/konflux-ci/build-definitions/blob/main/task/{task-name}/{version}/MIGRATION.md
    • Si les notes de migration référencent un script de migration, vérifier leur disponibilité avec le motif : https://github.com/konflux-ci/build-definitions/blob/main/task/{task-name}/{version}/migrations/{version}.sh. S'il est disponible :
      • Exécuter le script de migration sur les fichiers de pipeline identifiés
    • Extraire les changements critiques, les nouveaux paramètres ou les étapes manuelles requises
    • Demander l'entrée de l'utilisateur si des étapes manuelles sont requises
    • Signaler « Aucune action requise » ou lister les étapes de migration spécifiques
  4. Mettre à jour les fichiers de pipeline :

    • Découvrir tous les fichiers YAML de pipeline Tekton en utilisant le glob .tekton/**/*.yaml
    • Remplacer l'ancien quay.io/konflux-ci/tekton-catalog/task-{name}:{old-version}@{old-digest} par les nouvelles versions
    • Utiliser MultiEdit pour l'efficacité lors de la mise à jour de plusieurs tâches par fichier
  5. Fournir un résumé complet :

    • Lister toutes les tâches obsolètes trouvées et leur statut de mise à jour
    • Afficher les mappages de version actuelle vs. dernière
    • Mettre en évidence les changements de version par rapport aux mises à jour de digest uniquement
    • Signaler les notes de migration ou étapes manuelles requises
    • Lister tous les fichiers mis à jour
    • Fournir des exemples avant/après pour les changements clés

Format de sortie attendu :

## 🔄 Mise à jour des tâches Tekton Konflux terminée

### Tâches mises à jour :
- ✅ apply-tags: 0.2@old-digest → 0.2@new-digest (mise à jour de digest)
- ✅ buildah-remote-oci-ta: 0.4@old-digest → 0.5@new-digest (CHANGEMENT DE VERSION - notes de migration vérifiées)
- ✅ init: 0.2@old-digest → 0.2@new-digest (mise à jour de digest)
[... etc pour toutes les tâches]

### Fichiers mis à jour :
- ✅ .tekton/hypershift-operator-main-push.yaml (8 tâches mises à jour)
- ✅ .tekton/hypershift-operator-main-pull-request.yaml (8 tâches mises à jour)
[... etc pour tous les fichiers]

### Notes de migration :
- buildah-remote-oci-ta v0.4→v0.5: ✅ Aucune action requise (correction de bug pour la génération SBOM)

### Résumé :
- Total de tâches mises à jour : X
- Changements de version : X (notes de migration vérifiées)
- Mises à jour de digest : X
- Fichiers mis à jour : X
- Étapes manuelles requises : Aucune / [lister les étapes]

Gestion des erreurs :

  • Si le fichier journal est fourni mais n'existe pas, fournir un message d'erreur clair
  • Si aucun fichier journal n'est fourni et update_trusted_task_bundles.py échoue, fournir les détails de l'erreur
  • Si skopeo n'est pas installé, fournir les instructions d'installation
  • Si jq n'est pas installé, fournir les instructions d'installation
  • Si yq n'est pas installé, fournir les instructions d'installation
  • Si le paquet PyYAML n'est pas installé (requis pour update_trusted_task_bundles.py), fournir les instructions d'installation : pip install pyyaml
  • Si aucune tâche obsolète n'est trouvée, signaler le succès sans changements nécessaires
  • Si l'URL des notes de migration renvoie 404, noter qu'aucune documentation de migration n'existe
  • Si les notes de migration incluent des changements de paramètres, de sortie ou d'étapes manuelles, informer l'utilisateur à ce sujet

Fonctionnalités de sécurité :

  • ✅ Préserve les balises de version (p. ex. garde 0.2 dans task:0.2@sha256:...)
  • ✅ Vérifie les notes de migration pour les changements critiques avant les changements de version majeure
  • ✅ Fournit un résumé détaillé de tous les changements effectués
  • ✅ Utiliser TodoWrite pour suivre la progression à travers les mises à jour complexes de plusieurs fichiers

Conditions requises :

  • skopeo doit être installé (pour l'inspection des images de conteneur)
  • jq doit être installé (pour l'analyse JSON)
  • yq doit être installé (pour l'analyse YAML et la vérification des builds multi-plateforme)
  • Le paquet Python pyyaml doit être installé lors de l'exécution sans fichier journal (pour update_trusted_task_bundles.py)
  • Connectivité Internet (pour vérifier les notes de migration et inspecter les images de conteneur)

Arguments :

  • {{args.0}}: Chemin vers le fichier journal de vérification du contrat d'entreprise contenant les avertissements de tâches obsolètes (optionnel). Quand il n'est pas fourni, la compétence utilise hack/tools/scripts/update_trusted_task_bundles.py --dry-run --json pour détecter automatiquement les tâches obsolètes.

La commande fournira des mises à jour de progression et mettent automatiquement à jour tous les fichiers de pipeline Tekton pertinents avec les dernières versions de tâches.

Skills similaires