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?
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 * * * *
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:
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 /
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.
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.
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.
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 .
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.
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:
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!
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
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