web-dev-qa-db-fra.com

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

Existe-t-il un moyen d'afficher l'état de la construction Jenkins sur le fichier 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 est compilé et qu'il exécute des tests unitaires et d'intégration avant de finalement produire la documentation et la publication des ensembles.

Il y a toujours un risque de commettre par inadvertance quelque chose qui casse la construction. Il serait bon que les utilisateurs visitant la page du projet GitHub sachent que le maître actuel est dans cet état.

161
Jasper Blues

Ok, voici comment vous pouvez configurer Jenkins pour définir les statuts de construction de GitHub. Cela suppose que vous avez déjà Jenkins avec le plugin GitHub configuré pour créer des builds pour chaque Push.

  1. Allez sur GitHub, connectez-vous, allez à Paramètres, Jetons d'accès personnel, cliquez sur Générer un nouveau jeton.

    screenshot of GitHub settings

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

    screenshot of GitHub token generation

  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 référencements privés) ou un membre d'une équipe avec un accès Push and Pull (pour les référentiels d'organisation) aux référentiels que vous souhaitez créer.

  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érer automatiquement les URL de hook, puis spécifiez votre GitHub nom d'utilisateur et le jeton OAuth vous avez à l'étape 3.

    screenshot of Jenkins global settings

  8. Vérifiez que cela fonctionne avec le bouton Test des informations d'identification. Enregistrer les paramètres.

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

    screenshot of Jenkins job configuration

C'est ça. Maintenant, faites un test de construction et allez dans le référentiel GitHub pour voir si cela fonctionne. Cliquez sur Branches dans la page du référentiel principal pour voir les statuts de construction.

sceenshot of the main page where you click on 'branches'

Vous devriez voir des coches vertes:

screenshot of GitHub branches with build status

154
Marius Gedminas

Entre-temps, l'interface utilisateur de Jenkins et GitHub a un peu changé et il m'a fallu un certain temps pour comprendre comment configurer Jenkins 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 travail Jenkins comme étant déclenché par un Webhook ou par une interrogation. Ce sont les mesures que j'ai prises pour le faire fonctionner:

  1. Configurez Github: créez un jeton d'accès personnel avec OAuth Scope repo:status
  2. Configurez Jenkins: Configure System et ajoutez le OAuth Secret en tant que serveur GitHub - utilisez Secret Text en tant que méthode d'authentification pour mettre le OAuth Secret à l'intérieur.
  3. Configurez votre travail Jenkins: Ajoutez Set GitHub commit status en tant que Action post-build . Définissez le résultat d'état sur One of the default messages and statuses.
  4. Vérifiez vos résultats sur GitHub: Vérifiez si vous obtenez l'état de la construction et la durée d'exécution de la compilation sur votre validation GitHub.

Configurer Github

Create Personal Access Token


enter image description here


enter image description here


enter image description here


Configurer Jenkins

enter image description here


enter image description here


enter image description here


enter image description here


enter image description here


Configurer le travail Jenkins

enter image description here


enter image description here


enter image description here


Résultat

Vous verrez maintenant le statut de vos commits et branches:

enter image description here

37
Alex

Ce que j'ai fait est assez 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

    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 post-tâche qui mettra un échec si "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 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

35
Natim

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 fichier README.md:

build passing

22
Koraktor

Le API de statut de validation vous permet d'afficher le " API d'état de dépôt ".

Et depuis le 26 avril 2013, vous pouvez maintenant voir le statut de la compilation sur votre page de branche du dépôt GitHub :

build status on GitHub repo branches

Cela signifie que c'est une autre façon, en visitant la page du projet GitHub, de voir ces statuts au lieu d'avoir uniquement Jenkins.

Depuis le 30 avril 2013, le noeud final d'API pour les statuts de validation a été étendu pour autoriser les noms de branche et de tag , ainsi que les SHA de validation .

11
VonC

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

build passing

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

10
mholm815

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

set build status on github

7
Rémy Virin

Ajoutez la ligne ci-dessous dans votre README.md et modifiez les deux URL en fonction de votre projet jenkins.

[![Build Status](https://jenkins../..project/lastBuild/buildStatus)](https://jenkins../..project/lastBuild/)
3
Kaushal

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 que cela fonctionne:

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 et sélectionnez la branche que vous souhaitez définir comme branche protégée.
  3. Activez les options selon vos besoins.

Sur le serveur Jenkins: (Assurez-vous que le plugin Git et GitHub est installé)

  1. Naviguez pour 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é ... puis sur 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 utilisé par Jenkins est un collaborateur du référentiel. Je l'ai défini avec le niveau d'autorisation d'écriture.

J'espère que cela t'aides.

3
d' ghostman

J'ai suivi les instructions de Alex et cela a fonctionné.

Cependant, pour GitHub Enterprise, vous devez modifier l'URL de l'API lors de l'ajout du serveur à Jenkins.

Par exemple, si votre société est creditcard.com, votre URL serait:

https://github.creditcard.com/api/v3/

1
Adan Amarillas

Jently met à jour votre statut de validation de Github (comme décrit par @vonc ci-dessus). Malheureusement, ils n'ont pas encore implémenté le API d'état du référentiel

1
chernjie

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 particulier: (les réponses ci-dessus étaient excellentes - merci!)

Comme notre serveur de compilation ne se trouve pas sur Internet, nous avons un script pour publier le statut de la compilation dans la branche gh-pages de github.

  • Echec du début de la création des timbres
  • Fin de la fabrication des timbres
  • Le projet s'exécute après le projet principal pour publier les résultats -> état de la construction, documents d'API, rapports de test et couverture de test.

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

Mettez ceci dans le répertoire avec l'image de build-status:

ExpiresByType image/png "access plus 2 minutes"

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:

  • Compiler les chèques
  • tests unitaires et d'intégration
  • Rapports d'essai
  • Rapports de couverture de code
  • Documents d'API
  • Publication sur Github

. . et ce script peut être exécuté à l'intérieur ou à l'extérieur de Jenkins, de sorte que:

  • Les développeurs peuvent exécuter ce script avant la validation, ce qui réduit le risque qu'une construction endommagée ait des répercussions sur les autres.
  • Un échec est facile à reproduire localement.

Les résultats:

Page principale du projet a le statut de construction, mis à jour après chaque construction, ainsi que les derniers documents API, résultats de test et couverture de tests.

1
Jasper Blues