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.

143
demandé sur Etienne Neveu 2013-01-11 12:31:04

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.

  1. Aller à GitHub, connectez-vous, allez à la Paramètres, Personnels des jetons d'accès, cliquez sur Générer un nouveau jeton.

    capture D'écran des paramètres GitHub

  2. 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).

    capture d'écran de GitHub génération du jeton

  3. Générez le jeton, Copiez-le.

  4. 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.

  5. Allez sur votre serveur Jenkins, connectez-vous.

  6. Gérer JenkinsConfigurer Le Système
  7. 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.

    capture D'écran des paramètres globaux Jenkins

  8. Vérifiez que cela fonctionne avec le boutonTest Credential . enregistrez les paramètres.

  9. Trouvez le travail Jenkins et ajoutez Définir le statut de construction sur GitHub commit aux étapes de post-construction

    capture D'écran de Jenkins job configuration

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.

sceenshot de la page principale, où vous cliquez sur "branches"

Vous devriez voir des coches vertes:

capture D'écran des branches GitHub avec le statut de construction

141
répondu Marius Gedminas 2015-10-15 01:02:15

Ce que j'ai fait est assez simple:

  1. Installez le plugin Hudson Post Task
  2. Créez un jeton D'accès personnel ici: https://github.com/settings/tokens
  3. 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!\"
    }"
    
  4. 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!\"
    }"
    
  5. 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!\"
    }"
    

Capture d'écran de la configuration des tâches post build

34
répondu Natim 2018-03-20 13:56:32

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:

construire en passant

19
répondu Koraktor 2018-01-02 13:48:42

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 :

statut de construction sur les branches 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 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 .

11
répondu VonC 2013-04-30 13:05:33

Il y a aussi ce plugin qui vous donnera une URL de badge que vous pouvez poster dans votre README.md et ressemble à ceci

construire en passant

Https://wiki.jenkins-ci.org/display/JENKINS/Embeddable+Construire+Statut+Plugin

9
répondu mholm815 2015-04-07 22:39:33

, 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:

  1. Configurer Github: créer un jeton D'accès personnel avec la portée OAuth repo:status
  2. 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.
  3. configurez votre travail Jenkins: ajoutez Set GitHub commit status comme action Post-construction . Définissez le résultat D'État sur One of the default messages and statuses.
  4. 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

Créer Un Jeton D'Accès Personnel


entrez la description de l'image ici


entrez la description de l'image ici


entrez la description de l'image ici


Configurer Jenkins

entrez la description de l'image ici


entrez la description de l'image ici


entrez la description de l'image ici


entrez la description de l'image ici


entrez la description de l'image ici


Configurer Jenkins Emploi

entrez la description de l'image ici


entrez la description de l'image ici


entrez la description de l'image ici


Résultat

Vous verrez maintenant le statut de vos commits et branches:

entrez la description de l'image ici

8
répondu Alex 2018-06-23 17:03:33

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

définir le statut de construction sur github

7
répondu Rémy Virin 2014-06-17 16:39:12

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:

  1. accédez à Paramètres > Branches.
  2. 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é.
  3. activez les options si nécessaire.

Sur le serveur Jenkins: (Assurez-vous d'avoir le Git et Github plugin installé)

  1. accédez à gérer Jenkins > configurer le système.
  2. sous GitHub, définissez l'URL de L'API sur https://api.github.com . bien que ce soit la valeur par défaut.
  3. 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.

3
répondu d' ghostman 2016-06-01 12:17:09

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/)
2
répondu Kaushal 2017-11-07 21:01:09

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

1
répondu chernjie 2014-04-07 07:10:59

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.

1
répondu Jasper Blues 2018-02-21 01:48:13