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 :
-
Mettre à jour les tâches à partir du journal de contrat d'entreprise :
/update-konflux-tasks ../../hypershift-operator-enterprise-contract-lxgvw-verify.log -
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 --jsonpour détecter les mises à jour - Utilise
skopeo inspectpour mapper les digests SHA256 aux balises de version appropriées - Vérifie la documentation de migration pour les changements de version
- Nécessite que
skopeoetjqsoient installés
Flux du processus :
-
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
- Exécuter
- Si un fichier journal est fourni ({{args.0}}) :
-
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-tagsetskopeo inspectpour 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
- Pour chaque tâche obsolète, utiliser le script auxiliaire
-
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
-
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
- Découvrir tous les fichiers YAML de pipeline Tekton en utilisant le glob
-
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.2danstask: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 :
skopeodoit être installé (pour l'inspection des images de conteneur)jqdoit être installé (pour l'analyse JSON)yqdoit être installé (pour l'analyse YAML et la vérification des builds multi-plateforme)- Le paquet Python
pyyamldoit ê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 --jsonpour 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.