J'ai réussi à configurer un déclencheur Webhook dans bitbucket pour un projet de Jenkins Freestyle, à des fins de test.
Malheureusement, mon projet Jenkins utilise le format Pipeline et je ne parviens pas à faire en sorte que Bitbucket déclenche ce type de projet. le problème semble être qu’aucun projet Jenkins n’a été enregistré pour extraire du référentiel d’où provient le Webhook de Bitbucket, et Jenkins répond avec:
Error: Jenkins response: No git jobs using repository: ssh://git@myhost:7999/xxx/testing-jenkins.git and branches: master No Git consumers using SCM API plugin for: ssh://git@myhost:7999/xxx/testing-jenkins.git
Le projet de pipeline est configuré de manière à ce que la variable Jenkinsfile
se trouve dans le référentiel donné (ssh://git@myhost:7999/xxx/testing-jenkins.git
), à l'aide de l'option "Script de pipeline de GDS".
Il y a donc en fait une sorte de "consommateur git" pour le pipeline, mais cela ne semble pas être pris en compte par Jenkins, probablement parce qu'il ne s'agit pas d'une source réelle de projet, mais d'une source de pipeline.
Existe-t-il des exemples d'intégration des projets Bitbucket et Jenkins Pipeline? J'ai été incapable d'en trouver.
Si vous recherchez un pipeline Bitbucket et Jenkins complet, je vous recommande vivement d’utiliser le plugin Bitbucket Branch Source . Le plugin va découvrir toutes les branches et demandes de pull et construire tous ceux qui ont un JenkinsFile à la racine du repo.
Vous pouvez également utiliser créer un projet en tant qu'équipe Bitbucket, qui analysera tous les dépôts de votre organisation:
Voir le fonctionnaire doc de CloudBees
Je me débattais avec le même problème. Voici les points clés que j'ai suivis.
Dans le travail de pipeline Jenkins,
Dans le référentiel BitBucket,
Allez dans Paramètres> Services
Sélectionnez "Jenkins" dans le menu déroulant et "Ajouter un service".
Cochez 'Csrf Enabled'
Endpoint: http: // nom d'utilisateur: [email protected]/
Vous pouvez trouver le nom d'utilisateur et apitoken à la page d'accueil Jenkins> Personnes Sélectionnez l'utilisateur et cliquez sur Configurer. Sous "Jeton API", cliquez sur le bouton "Afficher le jeton API" et vous verrez le nom d'utilisateur et apitoken.
Nom du module: Ceci est facultatif. Il peut s'agir d'un fichier ou d'un dossier particulier à surveiller.
Nom du projet: nom du projet dans Jenkins.
Si le travail est dans une structure de dossier, dites que j'ai 'MyTestFolder/MyTestPipelineJob', le nom du projet à mentionner est 'MyTestFolder/job/MyTestPipelineJob'
Token: "Jeton d'authentification" créé dans le travail Jenkins.
Vous êtes prêt à partir!!
J'ai mentionné http://felixleong.com/blog/2012/02/hooking-bitbucket-up-with-jenkins/ et certains de mes instincts. :)
J'ai le même problème. Ma solution de contournement consistait simplement à créer un projet de style libre qui soit peut déclenché par le WebHook et dont le pipeline était déclenché à la fin du projet.
En attendant, voici le bogue Jenkins que vous pouvez surveiller: https://issues.jenkins-ci.org/browse/JENKINS-38447
Passez des heures à comprendre comment faire cela en 2017.10
après ces 3 étapes, je fais enfin exécuter les travaux de pipeline après un nouveau commit dans bitbucket
J'ai eu exactement le même problème ...
La cause utilisait */master
pour le spécificateur de branche. J'avais besoin de l'épeler: Origin/master
(pas de caractère générique).
Cela fonctionne bien maintenant.
Une solution simple consiste à utiliser Générique Webhook Trigger Plugin in Jenkins.
Vous auriez besoin de
JENKINS_URL/generic-webhook-trigger/invoke?token=whatever_you_picked
Le plugin vous donnera des informations claires quand il sera appelé, ce qui facilitera le dépannage.
C'est à vous de choisir les valeurs dont vous avez besoin dans le Webhook afin de cloner le bon référentiel ou ce que vous voulez faire lors de l'appel.
J'ai finalement réussi à faire fonctionner cela avec Jenkinsfile dans Multi Branch Pipeline:
Dans Bitbucket, j'ai créé un Webhook avec mon URL Jenkins, mon URL de clone et dans le Webhook, j'ai mis l'URL suivante (l'adresse exacte dans le projet de Jenkins):
http://<jenkins>/git/notifyCommit?url=http://<user>@<bitbucket>/scm/<project>/<repo>.git
Lorsque je teste le déclencheur, le résultat est le suivant:
No git jobs using repository: http://<user>@<bitbucket>/scm/<project>/<repo>.git and branches:
Scheduled indexing of <repo>
Donc, cela n'a déclenché aucune tâche, mais cela a déclenché l'analyse multi-branches, ainsi mes branches modifiées sont construites.