Afficher l'état actuel de Jenkins build sur GitHub repo
Existe-t-il un moyen d'afficher le statut de construction Jenkins sur le Github de mon projet Readme.md?
J'utilise Jenkins pour exécuter des builds d'intégration continue. Après chaque validation, il veille à ce que tout soit compilé, ainsi qu'à exécuter des tests unitaires et d'intégration, avant de finalement produire des bundles de documentation et de publication.
Il y a toujours un risque de commettre par inadvertance quelque chose qui casse la construction. Il serait bon pour les utilisateurs visitant la page du projet GitHub de connaître le courant le maître est dans cet état.
11 réponses
Ok, voici comment vous pouvez configurer Jenkins pour définir les Statuts de construction GitHub. Cela suppose que vous avez déjà Jenkins avec le plugin GitHub configuré pour faire des builds à chaque poussée.
-
Aller à GitHub, connectez-vous, allez à la Paramètres, Personnels des jetons d'accès, cliquez sur Générer un nouveau jeton.
-
Check repo: status (Je ne suis pas sûr que ce soit nécessaire, mais je l'ai fait, et cela a fonctionné pour je).
Générez le jeton, Copiez-le.
Assurez-vous que L'utilisateur GitHub que vous allez utiliser est un collaborateur de référentiel (pour les repos privés) ou est membre d'une équipe avec un accès push and pull (pour les repos d'organisation) aux référentiels que vous souhaitez construire.
Allez sur votre serveur Jenkins, connectez-vous.
- Gérer Jenkins → Configurer Le Système
-
Sous crochet Web GitHub Sélectionnez Laissez Jenkins gère automatiquement les URL de crochet , puis spécifiez votre nom D'utilisateur GitHub et le jeton OAuth que vous avez obtenu à l'étape 3.
Vérifiez que cela fonctionne avec le boutonTest Credential . enregistrez les paramètres.
-
Trouvez le travail Jenkins et ajoutez Définir le statut de construction sur GitHub commit aux étapes de post-construction
C'est ça. Maintenant, faites une version de test et allez dans le référentiel GitHub pour voir si travaillé. Cliquez sur Branches dans la page du référentiel principal pour voir les Statuts de construction.
Vous devriez voir des coches vertes:
Ce que j'ai fait est assez simple:
- Installez le plugin Hudson Post Task
- Créez un jeton D'accès personnel ici: https://github.com/settings/tokens
-
Ajouter un Plugin de tâche Post qui met toujours le succès
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!\" }"
-
Ajouter un Plugin de tâche Post qui mettra l'échec si "build marqué comme échec"
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!\" }"
-
Vous pouvez également ajouter un appel à pending 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!\" }"
Ce plugin devrait fonctionner: https://wiki.jenkins-ci.org/display/JENKINS/Embeddable+Construire+Statut+Plugin
Vous devriez pouvoir intégrer des badges comme celui-ci dans votre fichier README.md
:
Le Commettre d'État de l'API permet de voir les "Repo Statuts de l'API".
Et depuis le 26 avril 2013, vous pouvez maintenant Voir le statut build sur votre page de branche GitHub repo :
Cela signifie que c'est une autre façon, en visitant la page du projet GitHub, de voir ces statuts au lieu d'avoir seulement Jenkins.
À partir du 30 avril 2013, le point de terminaison de l'API pour les Statuts de validation a été étendu pour autoriser la branche et les noms de balise, ainsi que commit SHAs .
Il y a aussi ce plugin qui vous donnera une URL de badge que vous pouvez poster dans votre README.md et ressemble à ceci
Https://wiki.jenkins-ci.org/display/JENKINS/Embeddable+Construire+Statut+Plugin
, En attendant l'INTERFACE utilisateur de Jenkins et GitHub a un peu changé et il m'a fallu un certain temps à comprendre comment configurer Jenkins maintenant correctement. L'explication ici est basée sur Jenkins version 2.121.1.
Je suppose également que vous avez déjà configuré votre travail Jenkins être déclenché par un webhook ou par un sondage. Ceux sont les mesures que j'ai prises pour le faire fonctionner:
- Configurer Github: créer un jeton D'accès personnel avec la portée OAuth
repo:status
- Configurer Jenkins: {[1] } et ajoutez le Secret OAuth en tant que serveur Github - utilisez
Secret Text
comme méthode d'authentification pour y placer le Secret OAuth. - configurez votre travail Jenkins: ajoutez
Set GitHub commit status
comme action Post-construction . Définissez le résultat D'État surOne of the default messages and statuses
. - vérifiez votre résultat sur GitHub: vérifiez si vous obtenez le statut de build et la durée d'exécution de build sur votre commit GitHub.
Configurer Github
Configurer Jenkins
Configurer Jenkins Emploi
Résultat
Vous verrez maintenant le statut de vos commits et branches:
Si vous avez Github
le plugin installé sur votre Jenkins
, vous pouvez le faire dans le Post build actions
comme ceci :
En ce qui concerne la configuration de la branche protégée de Jenkins et de GitHub. J'utilise Jenkins 2.6, et ce sont les étapes que j'ai faites pour le faire fonctionner:
Sur la page Web Github de votre référentiel:
- accédez à Paramètres > Branches.
- sous protéger les branches, cliquez sur le menu Choisir une branche noyer vers le bas et sélectionnez la branche que vous voulez définir comme une branche Protégé.
- activez les options si nécessaire.
Sur le serveur Jenkins: (Assurez-vous d'avoir le Git et Github plugin installé)
- accédez à gérer Jenkins > configurer le système.
- sous GitHub, définissez l'URL de L'API sur https://api.github.com . bien que ce soit la valeur par défaut.
- Sélectionnez votre jeton généré pour les informations d'Identification. Si vous n'avez pas encore généré de jeton, cliquez sur Avancé... ensuite, sur des actions supplémentaires, vous pouvez convertir votre identifiant et votre mot de passe en jeton et l'utiliser comme identifiant.
Assurez-vous également que le compte GitHub que votre Jenkins c'est un collaborateur pour le référentiel. Je l'ai défini avec le niveau d'autorisation d'écriture.
J'espère que cela aide.
Ajouter la ligne ci-dessous dans votre README.md {[3] } et modifiez les deux URL en fonction de votre projet jenkins.
[![Build Status](https://jenkins../..project/lastBuild/buildStatus)](https://jenkins../..project/lastBuild/)
Jently met à jour votre GitHub commit status (comme décrit par @vonc ci-dessus), malheureusement, ils n'ont pas encore implémenté L'API Repo Status
Modifier:
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 super-merci!)
Parce que notre serveur de build n'est pas sur internet, nous avons un script pour publier le statut de build dans la branche gh-pages dans github.
- échec du début des timbres de construction
- fin de construction timbres succès
- le projet s'exécute après main projet pour publier les résultats - > build-status, API docs, rapports de test et couverture de test.
GitHub met en cache des images, donc nous avons créé .fichier htaccess, qui indique un court délai d'expiration du cache pour l'image d'état de construction.
Mettez ceci dans le répertoire avec l'image d'état de construction:
ExpiresByType image/png "access plus 2 minutes"
Voici le script de construction. La cible qui publie dans gh-pages est '--publier.site.sec.exécuter'
Avec moins de 400 lignes de configuration, nous avons:
- compiler les vérifications
- tests d'unité et d'intégration
- Rapports D'Essai
- Rapports De Couverture De Code
- API Docs
- 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 brisée qui impacte les autres.
- Un échec est facile à reproduire localement.
Le Résultats:
La page principale du projet a le statut de build, mis à jour après chaque build, ainsi que les derniers documents API, les résultats des tests et la couverture des tests.