web-dev-qa-db-fra.com

Comment déclencher un pipeline jenkins à partir d'un référentiel de bitbucket

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.

24
dangonfast

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:  enter image description here

Voir le fonctionnaire doc de CloudBees

15
JPLemelin

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,

  1. Sous Build Triggers, cochez la case "Trigger builds à distance (à partir de scripts, par exemple)" et renseignez le "Jeton d'authentification" avec un jeton unique et aléatoire.

Dans le référentiel BitBucket,

  1. Allez dans Paramètres> Services

  2. 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. :)

8
Litty Philip

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

3
Chris Hill

Passez des heures à comprendre comment faire cela en 2017.10

  1. Comme @JPLemelin l'a décrit, un nouvel élément Jenkins utilisant une équipe/un projet Bitbucket
  2. référez-vous à la doc: https://support.cloudbees.com/hc/en-us/articles/115000051132-How-to-Trigger-Multibranch-Jobs-from-BitBucket-Cloud- , installez le plugin: Le plugin BitBucket Branch Source.
  3. accédez à bitbucket et ajoutez webhook: $ {votre-jenkins-url}/bitbucket-scmsource-hook/notify

après ces 3 étapes, je fais enfin exécuter les travaux de pipeline après un nouveau commit dans bitbucket 

1
DiveInto

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.

0
pipelines-galour

Une solution simple consiste à utiliser Générique Webhook Trigger Plugin in Jenkins.

Vous auriez besoin de

  • Activez-le dans un style libre ou un travail en pipeline.
  • Configurer une chaîne de jeton
  • Construisez JSONPath: s pour rassembler tout ce dont vous avez besoin à partir de Bitbucket Webhook.
  • Ajoutez le noeud final du plugin dans Bitbucket. 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.

0
Tomas Bjerre

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.

0
Prikkeldraad