Correction des vérifications de PR avec Gh
Aperçu
Utiliser gh pour localiser les vérifications de PR défaillantes, récupérer les journaux GitHub Actions pour les défaillances exploitables, résumer l'extrait d'erreur, puis proposer un plan de correction et l'implémenter après approbation explicite.
- Si une compétence orientée plan (par exemple
create-plan) est disponible, l'utiliser ; sinon, rédiger un plan concis en ligne et demander l'approbation avant d'implémenter.
Prérequis : s'authentifier avec la CLI GitHub standard une fois (par exemple, exécuter gh auth login), puis confirmer avec gh auth status (les portées repo + workflow sont généralement requises).
Entrées
repo: chemin à l'intérieur du dépôt (par défaut.)pr: numéro ou URL de la PR (optionnel ; par défaut la PR de la branche actuelle)- authentification
ghpour l'hôte du dépôt
Démarrage rapide
python "<path-to-skill>/scripts/inspect_pr_checks.py" --repo "." --pr "<number-or-url>"- Ajouter
--jsonsi vous souhaitez une sortie conviviale pour les machines en vue de la résumé.
Flux de travail
- Vérifier l'authentification gh.
- Exécuter
gh auth statusdans le dépôt. - Si non authentifié, demander à l'utilisateur d'exécuter
gh auth login(en veillant à inclure les portées repo + workflow) avant de poursuivre.
- Exécuter
- Résoudre la PR.
- Préférer la PR de la branche actuelle :
gh pr view --json number,url. - Si l'utilisateur fournit un numéro de PR ou une URL, l'utiliser directement.
- Préférer la PR de la branche actuelle :
- Inspecter les vérifications défaillantes (GitHub Actions uniquement).
- Préféré : exécuter le script fourni (gère la dérive des champs gh et les replis de journaux de tâches) :
python "<path-to-skill>/scripts/inspect_pr_checks.py" --repo "." --pr "<number-or-url>"- Ajouter
--jsonpour une sortie conviviale pour les machines.
- Repli manuel :
gh pr checks <pr> --json name,state,bucket,link,startedAt,completedAt,workflow- Si un champ est rejeté, réexécuter avec les champs disponibles signalés par
gh.
- Si un champ est rejeté, réexécuter avec les champs disponibles signalés par
- Pour chaque vérification défaillante, extraire l'identifiant d'exécution de
detailsUrlet exécuter :gh run view <run_id> --json name,workflowName,conclusion,status,url,event,headBranch,headShagh run view <run_id> --log
- Si le journal d'exécution indique qu'il est toujours en cours, récupérer les journaux de tâches directement :
gh api "/repos/<owner>/<repo>/actions/jobs/<job_id>/logs" > "<path>"
- Préféré : exécuter le script fourni (gère la dérive des champs gh et les replis de journaux de tâches) :
- Traiter les vérifications non-GitHub Actions.
- Si
detailsUrln'est pas une exécution GitHub Actions, l'étiqueter comme externe et signaler uniquement l'URL. - Ne pas tenter Buildkite ou d'autres fournisseurs ; garder le flux de travail léger.
- Si
- Résumer les défaillances pour l'utilisateur.
- Fournir le nom de la vérification défaillante, l'URL d'exécution (le cas échéant) et un extrait de journal concis.
- Signaler explicitement les journaux manquants.
- Créer un plan.
- Utiliser la compétence
create-planpour rédiger un plan concis et demander l'approbation.
- Utiliser la compétence
- Implémenter après approbation.
- Appliquer le plan approuvé, résumer les diffs/tests et demander si l'utilisateur souhaite ouvrir une PR.
- Vérifier à nouveau le statut.
- Après les modifications, suggérer de réexécuter les tests pertinents et
gh pr checkspour confirmer.
- Après les modifications, suggérer de réexécuter les tests pertinents et
Ressources fournies
scripts/inspect_pr_checks.py
Récupérer les vérifications de PR défaillantes, extraire les journaux GitHub Actions et extraire un extrait d'erreur. Sort avec un code non nul lorsque des défaillances subsistent pour pouvoir être utilisé dans l'automation.
Exemples d'utilisation :
python "<path-to-skill>/scripts/inspect_pr_checks.py" --repo "." --pr "123"python "<path-to-skill>/scripts/inspect_pr_checks.py" --repo "." --pr "https://github.com/org/repo/pull/123" --jsonpython "<path-to-skill>/scripts/inspect_pr_checks.py" --repo "." --max-lines 200 --context 40