web-dev-qa-db-fra.com

Comment faire en sorte que Jenkins utilise Push pour un référentiel git BitBucket?

J'ai un référentiel Git hébergé sur BitBucket et j'ai configuré l'authentification SSH entre le référentiel et mon serveur Jenkins. Je peux construire manuellement sur Jenkins, mais je ne peux pas demander au service Jenkins de BitBucket de déclencher des générations.

Jenkins configuration:  
- Project Name: [my_jenkins_job]  
- Build Triggers:  
--Trigger Builds Remotely:  
---Token: [token]

BitBucket configuration:  
- Endpoint: http://[my_jenkins_address]/job/[my_jenkins_job]/build (I've also tried build?token=[token])  
- Project Name: [my_jenkins_job]  
- Module Name: [blank]  
- Token: [token]

Visiting http: // {my_jenkins_address}/job/{my_jenkins_job}/build? Token = {token}démarre correctement la construction.

Pourquoi ne pas imposer une modification à BitBucket incite Jenkins à lancer une construction?

54
Allen T.

Notre instance Jenkins est configurée pour interroger le référentiel toutes les minutes. N'est-ce pas assez fréquent pour vos besoins?

Notre configuration Jenkins:

Générer des déclencheurs> Poll SCM = Checked

Construire des déclencheurs> interroger le SCM> Schedule =

# every 1 minute
*/1 * * * *
30
Joseph Sturtevant

En raison du Jenkins, Hook of Bitbucket ne fonctionne pas du tout pour moi et j'ai différents projets Jenkins pour différentes branches. J'étais parvenu à cette solution:

  • Installer Plugin Bitbucket chez votre Jenkins
  • Ajoutez une publication normale en tant que crochet à votre référentiel Bitbucket (Paramètres -> Crochets) et utilisez l'URL suivante: 

https: // _ {YOUR.JENKINS.SERVER: PORT} bitbucket-hook /

et si vous avez configuré l'authentification sur Jenkins, alors l'URL doit être comme

https: // _ {NOM D'UTILISATEUR: [email protected]: PORT} _/bitbucket-hook /

  • Configurez votre projet Jenkins comme suit:
  • sous _/build trigger, activez Build lorsqu'un changement est transmis à BitBucket
  • sous Gestion du code source, sélectionnez GIT; entrez vos identifiants et définissez Branches pour construire (comme ** feature/*)

De cette façon, j'ai trois projets de construction, un pour toutes les fonctionnalités, un pour le développement et un pour la branche de publication. Assurez-vous d'inclure la barre oblique ('/') à la fin de l'URL, sinon le hook ne fonctionnera pas.

Et mieux encore, vous n’avez pas besoin de nouveaux crochets pour les nouveaux projets Jenkins.

64
salcosand

Vous pouvez réellement obtenir que cela fonctionne dans Jenkins avec le service Bitbucket, mais cela a pris du temps pour le faire fonctionner.

Si vous utilisez l'authentification, vous pouvez récupérer un jeton d'API auprès de l'un des utilisateurs pouvant créer des générations. J'ai créé un compte séparé juste pour Bitbucket. Vous aurez besoin de au moins Jenkins 1.426 pour utiliser le jeton API. Vous pouvez ensuite utiliser l'authentification HTTP avec le jeton de l'API comme mot de passe pour le service Bitbucket.

Voici comment le mien est mis en place:

Point de terminaison: http: // [bitbucket]: [APITOKEN] @ [www.example.com/jenkins/]

Nom du projet: [NameOfMyJenkinsProject]

Nom du module: [vide]

Jeton: [Jeton trouvé dans les paramètres du projet Jenkins]

Après l'avoir configuré ainsi, j'ai pu utiliser le jeton ainsi que l'authentification pour activer les versions déclenchées par Push de Bitbucket.

12
Ian Hunter

Le jeton n'est pas utile si vous utilisez l'authentification dans Jenkins.

utilisez le plugin Git et utilisez un hook POST avec http[s]://your.site.com[/jenkins]/git/[email protected]:your-username/your-repo.git dedans. Assurez-vous que l'interrogation est activée et planifiez à une valeur quelconque, sinon cela ne fonctionnera pas.

11
floatingLomas

Utiliser Poll SCM est bon, mais il présente également quelques inconvénients, il récupérera les métadonnées de votre référentiel GIT, qui utilise malgré tout un pourcentage de la bande passante de votre serveur bitbucket et de votre serveur Jenkins. 

Il est préférable que Bitbucket sache quand déclencher Jenkins si une nouvelle mise à jour arrive. Si vous utilisez les dernières versions de bitbucket, il existe un nom de plugin "Stash webhooks for Jenkins" qui est désormais compatible avec Bitbucket.

Dans ce plugin, il vous suffit de spécifier l'URL Jenkins et le nom du travail, cela fournit également une couche de sécurité supplémentaire entre Jenkins et Bitbucket .  enter image description here

C'est le plugin (Stash webhooks pour Jenkins qui ne s'appelle pas Bitbucket webhooks pour Jenkins) qui peut être téléchargé à partir d'Atlassian Marketplace.

 enter image description here Ci-dessus, les paramètres du module complémentaire dans lesquels vous devez spécifier l'URL Jenkins et l'URL de repo Clone. Avec la gâchette, vous pouvez également vérifier la connexion, etc.

Lien pour le plugin: Bitbucket webhooks pour Jenkins

Comment fonctionne ce plugin:

  1. Installez le plugin Git dans Jenkins. Configurez votre projet pour utiliser Git pour votre gestion de code source. Vous devrez conserver l'URL du référentiel que vous utilisez pour la configuration dans Stash. Activez l'option Poll SCM dans les déclencheurs de construction. Cela est nécessaire pour déclencher une génération à distance. Comme nous n'avons pas vraiment besoin d'interroger, vous pouvez définir très rarement la fréquence d'interrogation. Enregistrez la configuration de votre projet.
  2. Entrez l'URL de votre instance Jenkins et l'URL du référentiel que vous avez configuré pour que Jenkins soit utilisé. Vous pouvez utiliser le menu déroulant pour obtenir l'URL de clone de chaque protocole pris en charge. Ensuite, n'hésitez pas à le changer pour qu'il corresponde à votre instance de Jenkins. 
  3. C'est tout!

Avec Jenkins et Stash maintenant configurés, si vous validez du code, un déclencheurbuild se déclenche automatiquement. Ce qui se passe, c’est que le hook Post-receive envoie une requête GET à Jenkins, qui lui demande ensuite d’interroger le référentiel (pourquoi l’interrogation doit-elle être activée) . L’interrogation vérifie s’il existe sont en fait des changements. Depuis .__ il y en a, ça déclenche la construction! 

6
Abhijeet Kamble

Installez simplement le plugin bitbucket et suivez les instructions qui se trouvent sur la page des plugins: 

Configurez votre référentiel BitBucket avec un hook POST, en utilisant l'URL JENKINS_URL/bitbucket-hook (pas besoin d'informations d'identification). Sur chaque commit, tous les travaux avec l'option "Construire lorsqu'une modification est transmise à BitBucket" activé sera déclenché.

Voir ici: https://wiki.jenkins-ci.org/display/JENKINS/BitBucket+Plugin

4
jintux

Je me suis longtemps débattu avec ce problème et je ne trouvais pas de solution dans la documentation de Jenkins. J'ai trouvé ici une solution sur le site de support Cloudbees.

Il vous suffit d'ajouter ces câbles Web à votre dépôt bitbucket et tout fonctionne très bien:

https://JENKIN_URL/bitbucket-scmsource-hook/notify
https://JENKIN_URL/bitbucket-hook

Et je travaille pour tous les pipelines, même ceux de MultiBranch.

J'espère que cela aide quelqu'un;) 

ADA

0
abdelhadi danba