Existe-t-il un moyen d'afficher l'état de la compilation Jenkins sur GitHub Readme.md de mon projet?
J'utilise Jenkins pour exécuter des builds d'intégration continue. Après chaque validation, il s'assure que tout se compile, ainsi que des tests unitaires et d'intégration, avant de finalement produire la documentation et les lots de publication.
Il y a toujours un risque de commettre par inadvertance quelque chose qui rompt la construction. Il serait bon que les utilisateurs visitant la page du projet GitHub sachent que le maître actuel est dans cet état.
Réponses:
Ok, voici comment configurer Jenkins pour définir les statuts de compilation GitHub. Cela suppose que vous avez déjà Jenkins avec le plugin GitHub configuré pour faire des compilations à chaque push.
Allez sur GitHub, connectez-vous, allez dans Paramètres , Jetons d'accès personnels , cliquez sur Générer un nouveau jeton .
Vérifiez repo: status (je ne suis pas sûr que ce soit nécessaire, mais je l'ai fait, et cela a fonctionné pour moi).
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 dépôts privés) ou est membre d'une équipe avec un accès push and pull (pour les dépôts d'organisation) aux référentiels que vous souhaitez créer.
Accédez à votre serveur Jenkins, connectez-vous.
Sous GitHub Web Hook, sélectionnez Laisser Jenkins gérer automatiquement les URL de hook , puis spécifiez votre nom d'utilisateur GitHub et le jeton OAuth que vous avez obtenu à l'étape 3.
Vérifiez qu'il fonctionne avec le bouton Tester les informations d'identification . Enregistrez les paramètres.
Recherchez le travail Jenkins et ajoutez le statut de compilation défini sur la validation GitHub aux étapes de post-construction
C'est ça. Maintenant, faites un test de compilation et accédez au référentiel GitHub pour voir si cela a fonctionné. Cliquez sur Branches dans la page principale du référentiel pour voir les statuts de construction.
Vous devriez voir des coches vertes:
la source
En attendant, l'interface utilisateur de Jenkins et GitHub a un peu changé et il m'a fallu un certain temps pour comprendre comment configurer Jenkins maintenant correctement. L'explication ici est basée sur la version 2.121.1 de Jenkins.
Je suppose également que vous avez déjà configuré votre Job Jenkins pour qu'il soit déclenché par un webhook ou par sondage. Voici les mesures que j'ai prises pour le faire fonctionner:
repo:status
Configure System
et ajoutez le secret OAuth en tant que serveur GitHub - utilisez-leSecret Text
comme méthode d'authentification pour y placer le secret OAuth.Set GitHub commit status
comme action post-build . Définissez le résultat du statut surOne of the default messages and statuses
.Configurer Github
Configurer Jenkins
Configurer le travail Jenkins
Résultat
Vous verrez maintenant le statut de vos commits et branches:
la source
Manage Hooks
case est mise en surbrillance mais non cochée dans les images ci-dessus, cela signifie-t-il qu'elle doit être décochée lors de l'enregistrement?Ce que j'ai fait est assez simple:
Ajouter un plug-in Post Task qui réussit toujours
Ajoutez un plug-in de post-tâche qui mettra en échec si "la construction est marquée comme un échec"
Vous pouvez également ajouter un appel à en attente au début des tests
la source
sh
et même tirer parti du stockage des informations d'identification Jenkins avecwithCredentials
Ce plugin devrait fonctionner: https://wiki.jenkins-ci.org/display/JENKINS/Embeddable+Build+Status+Plugin
Vous devriez pouvoir intégrer des badges comme celui-ci dans votre
README.md
fichier:la source
L' API Commit Status vous permet de voir «l' API Repo Statuses ».
Et depuis le 26 avril 2013, vous pouvez maintenant voir l' état de la compilation sur votre page de branche de dépôt GitHub :
Cela signifie que c'est une autre façon, en visitant la page du projet GitHub, de voir ces statuts au lieu de n'avoir que Jenkins.
Depuis le 30 avril 2013, le point de terminaison de l' API pour les statuts de validation a été étendu pour autoriser les noms de branche et de balise, ainsi que les SHA de validation .
la source
curl
( developer.github.com/v3/repos/statuses/… )Il y a aussi ce plugin qui vous donnera une URL de badge que vous pouvez publier dans votre README.md et qui ressemble à ceci
https://wiki.jenkins-ci.org/display/JENKINS/Embeddable+Build+Status+Plugin
la source
Si vous avez
Github
installé un plugin sur votreJenkins
, vous pouvez le faire de la manièrePost build actions
suivante:la source
Ajoutez la ligne ci-dessous dans votre README.md et modifiez les deux URL en fonction de votre projet jenkins.
la source
En ce qui concerne la mise en place de la branche protégée de Jenkins et GitHub. J'utilise Jenkins 2.6, et voici les étapes que j'ai suivies pour le faire fonctionner:
Sur la page Web GitHub de votre référentiel:
Sur le serveur Jenkins: (assurez-vous que le plugin Git et GitHub est installé)
Assurez-vous également que le compte GitHub que votre Jenkins utilise 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 t'aides.
la source
J'ai suivi les instructions d' Alex et cela a fonctionné.
Mais, pour GitHub Enterprise, vous devez modifier l'URL de l'API lors de l'ajout du serveur à Jenkins.
Par exemple, si votre entreprise est creditcard.com, votre URL serait
https://github.creditcard.com/api/v3/
la source
Met à jour jently votre statut de validation Github (comme décrit par @vonc ci-dessus), malheureusement ils n'ont pas encore implémenté l' API Repo Status
la source
Éditer:
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!)
Comme notre serveur de build n'est pas sur Internet, nous avons un script pour publier le statut de build dans la branche gh-pages de github.
GitHub met en cache les images, nous avons donc créé un 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:
Voici le script de construction. La cible qui publie sur gh-pages est «--publish.site.dry.run»
Avec moins de 400 lignes de configuration, nous avons:
. . et ce script peut être exécuté dans ou en dehors de Jenkins, de sorte que:
Les resultats:
La page principale du projet présente l'état de la construction, mis à jour après chaque version, ainsi que les derniers documents sur l'API, les résultats des tests et la couverture des tests.
la source