pr-check-publish

Par liferay · liferay-portal

Commenter sur une PR GitHub existante avec un marqueur que le webhook analyse pour appliquer le statut de commit et le label. À utiliser après avoir relancé pr-check sur une PR ouverte.

npx skills add https://github.com/liferay/liferay-portal --skill pr-check-publish

Publier les Résultats pr-check

Poster le Résumé des Résultats pr-check en tant que commentaire sur une PR GitHub existante, en terminant le commentaire par un marqueur caché. Le webhook analyse ce marqueur et applique le statut de commit pr-check au SHA testé et l'étiquette pr-check - <state> à la PR — cette skill n'écrit jamais le statut ou l'étiquette elle-même, donc elle fonctionne de la même manière que l'utilisateur ait ou non accès en écriture au dépôt cible.

Les PRs nouvellement créées n'ont pas besoin de cette skill : la skill pr écrit le même Résumé des Résultats et marqueur dans la description de la PR à la création, et le webhook la lit de là. Utilisez cette skill uniquement pour enregistrer une exécution ultérieure — par exemple après avoir poussé des commits supplémentaires et réexécuté pr-check sur une PR ouverte — où la description ne reflète plus le head actuel.

Input

Pull Request

${ARGUMENTS} porte une URL de PR de la forme https://github.com/<target-org>/liferay-portal/pull/<number>. Si elle est absente ou mal formée, abandonnez et demandez à l'utilisateur l'URL.

Résumé des Résultats

Utilisez le bloc Résumé des Résultats émis par l'exécution pr-check dans la session actuelle — la ligne d'état global, le SHA testé et le tableau par validation. Quand aucun Résumé des Résultats n'est disponible (pr-check n'a pas été exécuté cette session), abandonnez et demandez à l'utilisateur d'exécuter d'abord pr-check ; cette skill enregistre une exécution, elle n'en effectue pas une.

Expected Output

Commentaire Posté

Poster un commentaire neuf à chaque exécution plutôt que d'en modifier un antérieur, de sorte que la PR conserve un historique chronologique. Le corps du commentaire est le Résumé des Résultats tel quel, une ligne vierge, puis le marqueur — un commentaire HTML, invisible en Markdown rendu, dont la charge utile est un objet JSON de la forme <!-- pr-check {"result": "<state>", "sha": "<tested-SHA>"} -->, où <state> est success quand l'état global est PASS et failure quand c'est FAIL, et <tested-SHA> est le SHA complet de 40 caractères du Résumé des Résultats :

**pr-check: PASS** — tested on `<tested-SHA>`

| Validation | Result |
| --- | --- |
| Source Format | PASS |
| Full Portal Build | PASS |
| Java Unit Tests | PASS |

<!-- pr-check {"result": "success", "sha": "<tested-SHA>"} -->

Poster le corps avec --body-file, ou avec --body depuis une variable heredoc entre guillemets ; cela évite que le caractère littéral ! du marqueur ne se retrouve sur la ligne de commande, où il pourrait sinon déclencher l'expansion d'historique et corrompre le marqueur. Utilisez mktemp pour le fichier de manière à ce qu'il reste en dehors de l'arborescence de travail, et supprimez-le après.

comment_file=$(mktemp)

gh pr comment \
    --body-file "${comment_file}" \
    "<pr-url>"

rm "${comment_file}"

Quand le commentaire échoue à être posté, exposez l'erreur — sans elle le webhook n'a rien à analyser, donc le statut et l'étiquette n'apparaîtront pas.

Summary

Rendre compte à l'utilisateur avec :

  • L'URL du commentaire et le SHA testé que le marqueur enregistre.
  • Que le statut de commit pr-check et l'étiquette pr-check - <state> sont appliqués par le webhook une fois qu'il traite le commentaire, et peuvent donc être en retard par rapport au commentaire d'un moment.

Skills similaires