web-dev-qa-db-fra.com

Jenkins-Build quand un changement est poussé sur l'option GitHub ne fonctionne pas

Jenkins est en cours d'exécution sur localhost. J'ai mon référentiel dans GitHub. J'ai l'option "Construire lorsqu'un changement est poussé dans GitHub" cochée.

Quand je clique sur 'Build Now', la construction est réussie, pas de problème. Mais lorsque je commets du code dans mon référentiel, la génération automatique ne se produit pas. Je peux accéder à GitHub à partir de mon système car le référentiel est public et je pense que même Jenkins devrait pouvoir le détecter. Je sais qu'il existe une option de sondage, mais je veux que Jenkins le construise lorsqu'un changement est détecté dans le référentiel (car c'est ce que nous essayons de réaliser).

Configuration:

Jenkins 1.615

Git Plugin 2.3.5

Git Client Plugin 1.17.1

—————————————————————————————————————————————

(~ ~ ~ ~] edit [~ # ~]: " Construit quand une modification est poussée dans GitHub " l'option a été renommé " GitHub hook trigger pour GITScm polling " dans la version la plus récente du plugin GitHub. (merci au feedback de @ smrubin.)

35
Anuj Balan

Je suppose que vous avez raté le webhook url.

En plus de vérifier le Build when a change is pushed to GitHub, vous devez également ajouter l’URL webhook dans votre référentiel Github pour que le mécanisme de déclenchement automatique fonctionne. Voici comment:

Accédez à votre référentiel Github:

Paramètres -> Webhooks et services -> Service -> Ajouter des services -> Choisissez "Jenkins (plugin GitHub)"

Puis remplissez le Jenkins hook url avec votre URL Jenkins comme ceci: http: // your_jenkins_url/github-webhook /enter image description here


Et, TRES IMPORTANT , puisque vous installez votre serveur Jenkins dans votre localhost, sachez que vous ne devriez pas ' t remplir ci-dessus l'url de l'hameçon Jenkins comme http://localhost:8080/github-webhook/ parce que Github n'est pas capable de reconnaître localhost ou 127.0.0.1 ou 192.168.*.*.

Soit vous devez utiliser un nom DNS accessible de l'extérieur ou une adresse IP, qui peut être reconnue par Github.

70
mainframer

J'ai eu le même problème et l'ai résolu. Le problème était que l'URL devait se terminer par un /. Sens:

http://<jenkinsurl>:8080/github-webhook/

http://<jenkinsurl>:8080/github-webhook

(Remarquez le manquant / à la fin.)

34
AskYous

En fait, si vous faites les réglages webhook de Jenkins -> Github plugin configuration _ (mentionné ci-dessus), vous verrez toujours que les webhooks sont créés dans github. Donc, au-dessus de deux approches, on fait essentiellement la même chose.

Personnellement, j'aime bien créer Webhook à partir de Github, car vous n'avez ainsi pas besoin de partager ou de stocker des informations sur l'utilisateur github dans Jenkins.

Pas :

  1. Connectez-vous à Github (avec Admin)

  2. Accédez au référentiel que vous souhaitez accrocher avec Jenkins

  3. Cliquez sur l'onglet Paramètres -> Webhooks & services
  4. Cliquez sur Add Webhook.
  5. Entrez l'URL de la charge utile: type: http: //: 8080/github-webhook /
  6. Sélectionnez le type de contenu comme json.
  7. vous avez terminé.

Maintenant que vous apportez les modifications et que vous vous engagez, vous verrez que jenkins build get déclenchera automatiquement. N'oubliez pas de définir les paramètres dans les travaux jenkins pour démarrer la construction lorsque Push code in github.

3
suprakash

Le plugin GitHub ( https://wiki.jenkins-ci.org/display/JENKINS/GitHub+Plugin ) mentionnait deux méthodes: le mode manuel et le mode automatique. mainframer donne la réponse au mode manuel. Aujourd'hui, j'ai trouvé quelque chose de nouveau. L'ajout de mainframer au service ne me permet pas d'ajouter plusieurs instances de Jenkins. J'ajoute donc les autres ajoutent Webhook, comme indiqué ci-dessous. Cela fonctionne aussi très bien.

Je voulais inclure une photo ici mais mon identifiant n'a pas le droit de le faire.

1
Jirong Hu