209 votes

Afficher l'état actuel de la construction de Jenkins sur le repo GitHub

Existe-t-il un moyen d'afficher l'état de construction de Jenkins sur le Readme.md de mon projet sur GitHub ?

J'utilise Jenkins pour exécuter des constructions en intégration continue. Après chaque livraison, il s'assure que tout est compilé et exécute les tests unitaires et d'intégration, avant de produire la documentation et les paquets de versions.

Il y a toujours un risque de commettre par inadvertance quelque chose qui casse la compilation. Il serait bon pour les utilisateurs qui visitent la page du projet sur GitHub de savoir que le master actuel est dans cet état.

14 votes

Pourquoi ce vote a-t-il été refusé ? Y a-t-il quelque chose d'évident dans le guide de l'utilisateur de Jenkins que j'ai manqué ? J'ai fait une recherche sur Google avant de commencer, mais je n'ai rien trouvé.

1 votes

Le serveur de construction Travis peut faire quelque chose comme ça, mais j'utilise Jenkins sur Osx. Voici le genre de chose que je recherche : github.com/CocoaPods/CocoaPods

0 votes

35voto

Natim Points 4393

Ce que j'ai fait est très simple :

  1. Installer le plugin Hudson Post Task

  2. Créez un jeton d'accès personnel ici : https://github.com/settings/tokens

  3. Ajouter un plugin Post Task qui met toujours le succès en avant

    curl -XPOST -H "Authorization: token OAUTH TOKEN" https://api.github.com/repos/:organization/:repos/statuses/$(git rev-parse HEAD) -d "{
      \"state\": \"success\",
      \"target_url\": \"${BUILD_URL}\",
      \"description\": \"The build has succeeded!\"
    }"
  4. Ajouter un plugin de post-tâche qui mettra l'échec si "marked build as failure".

    curl -XPOST -H "Authorization: token OAUTH TOKEN" https://api.github.com/repos/:organization/:repos/statuses/$(git rev-parse HEAD) -d "{
      \"state\": \"failure\",
      \"target_url\": \"${BUILD_URL}\",
      \"description\": \"The build has failed!\"
    }"
  5. Vous pouvez également ajouter un appel en attente au début des tests.

    curl -XPOST -H "Authorization: token OAUTH TOKEN" https://api.github.com/repos/:organization/:repos/statuses/$(git rev-parse HEAD) -d "{
      \"state\": \"pending\",
      \"target_url\": \"${BUILD_URL}\",
      \"description\": \"The build is pending!\"
    }"

Screenshot of the Post build task configuration

0 votes

Vous pouvez également le faire à partir du pipeline - par exemple, vous pouvez simplement l'appeler par le biais de sh et même d'exploiter le stockage des informations d'identification de Jenkins avec withCredentials

0 votes

0 votes

Cette réponse ne répond pas à la question de l'OP sur le fait de mettre le statut de la construction dans le README.md du projet.

32voto

Koraktor Points 9532

Ce plugin devrait fonctionner : https://wiki.jenkins-ci.org/display/JENKINS/Embeddable+Build+Status+Plugin

Vous devriez être en mesure d'intégrer des badges de ce type dans votre site Web. README.md fichier :

build passing

6 votes

Malheureusement, il semble que GitHub ait commencé à mettre en cache ces images sur un service d'hébergement d'images, et elles s'affichent maintenant de manière incorrecte.

0 votes

Maintenant, cela fonctionne bien si vous avez correctement configuré l'accès (un utilisateur anonyme devrait pouvoir voir le statut de la construction).

11voto

VonC Points 414372

El API d'état d'engagement vous permet de voir le " Statuts des repo API ".

Et depuis le 26 avril 2013, vous pouvez maintenant voir les statut de construction sur votre Page de branche du repo GitHub :

build status on GitHub repo branches

Cela signifie qu'il existe un autre moyen, en visitant la page du projet GitHub, de voir ces statuts au lieu de n'avoir que Jenkins.

À partir du 30 avril 2013, le Point de terminaison de l'API pour les statuts de commit a été étendu pour permettre à la branche et les noms de balises, ainsi que les SHA de commit .

0 votes

Où dois-je mettre les URLs à frapper ? Existe-t-il un plugin ou dois-je utiliser les boucles dans une étape de construction ?

0 votes

@IanVaughan que voulez vous dire par "frapper" ? Pour voir quoi ? Pour voir un statut, ce serait un curl ( developer.github.com/v3/repos/status/ )

0 votes

Désolé, oui, je savais que curl pouvait être utilisé, et je connaissais l'interface API, il s'agissait plus de savoir où mettre le curl, et si une abstraction de plus haut niveau de curl n'était pas disponible ? c'est-à-dire que je pourrais ajouter un POST curl avant le début de la construction pour indiquer que le commit/PR est en cours de construction, et puis un après, mais tout cela semble très bas niveau, et j'espérais qu'il y avait un plugin de plus haut niveau pour faire ces choses pour moi.

6voto

Rémy Virin Points 1351

Si vous avez Github installé sur votre Jenkins vous pouvez le faire dans le Post build actions comme ceci :

set build status on github

14 votes

5 votes

Cette réponse manque de détails : comment créer un jeton d'accès OAuth sur GitHub pour permettre au plugin GitHub d'utiliser les API nécessaires pour définir le statut de la construction ? Quelles sont les autorisations nécessaires sur ce jeton ? Où, dans la configuration de Jenkins, puis-je spécifier le nom d'utilisateur/le jeton ?

3 votes

Ceci n'est vraiment pas utile, comment accéder à cette fenêtre de dialogue ?

1voto

Jasper Blues Points 7262

Editar:

Je n'utilise plus cette approche, veuillez utiliser l'une des autres réponses.

Mise à jour : ce que j'ai fini par faire, pour notre cas spécifique : (les réponses ci-dessus étaient excellentes - merci !)

Parce que notre serveur de build n'est pas sur internet, nous avons un script pour publier le statut du build à la branche gh-pages dans github.

  • Le début des timbres de construction échoue
  • Succès des timbres de fin de construction
  • Le projet est exécuté après le projet principal pour publier les résultats -> état de la construction, documentation API, rapports de test et couverture de test.

GitHub met les images en cache, nous avons donc créé un fichier .htaccess qui indique un court délai de mise en cache pour l'image de l'état de construction.

Mettez-le dans le répertoire avec l'image d'état de construction :

ExpiresByType image/png "access plus 2 minutes"

Voici la construction script. La cible qui publie sur gh-pages est --publish.site.dry.run' (publier.le.site.à.sec.)

Avec moins de 400 lignes de configuration, nous avons :

  • Contrôles de compilation
  • tests unitaires et d'intégration
  • Rapports d'essai
  • Rapports sur la couverture du code
  • Docs API
  • Publication sur Github

. . et ce script peut être exécuté dans ou en dehors de Jenkins, de sorte que :

  • Les développeurs peuvent exécuter ce script avant la validation, ce qui réduit le risque d'une construction défectueuse ayant un impact sur les autres.
  • Une panne est facile à reproduire localement.

Les résultats :

Page principale du projet contient l'état de la construction, mis à jour après chaque construction, ainsi que les derniers documents de l'API, les résultats des tests et la couverture des tests.

0 votes

Excellent retour d'information, plus précis que ma réponse. +1

2 votes

Le lien Build script est mort

1 votes

Avez-vous un lien direct vers votre script ?

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X