Comment déclencher un pipeline jenkins à partir d'un dépôt bitbucket

j'ai mis en place avec succès un webhook trigger à bitbucket pour un projet de freestyle Jenkins, à des fins de test.

malheureusement mon projet Jenkins utilise le format Pipeline, et je ne suis pas en mesure D'obtenir Bitbucket pour déclencher ce genre de projet; le problème semble être qu'il n'y a pas de projet Jenkins enregistré pour tirer de la pension que le Bitbucket webhook vient de, 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 pipelinier est mis en place de manière à ce que Jenkinsfile se trouve dans le référentiel (ssh://git@myhost:7999/xxx/testing-jenkins.git), en utilisant l'option "Pipeline script from SCM".

Donc il y a 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 du projet, mais d'une source du pipeline.

<!-Y a-t-il des exemples d'intégration des projets Bitbucket et Jenkins Pipeline? J'ai été incapable d'en trouver.

19
demandé sur dangonfast 2016-09-29 14:23:34

7 réponses

si vous cherchez un Bitbucket complet et un Pipeline Jenkins, je vous recommande fortement d'utiliser le Bitbucket Direction De La Source Du Plugin. Le plugin va découvrir toutes les Branches et tirer les requêtes et construire tous ceux qui ont un JenkinsFile dans la racine de repo.

vous pouvez également utiliser créer un projet en tant Qu'équipe Bitbucket, qui va scanner tous les repo de votre organisation: enter image description here

Voir la officiel doc de nuageux

14
répondu JPLemelin 2017-03-06 16:59:35

j'étais aux prises avec le même problème. Voici les points clés que j'ai suivis.

Dans Jenkins pipeline de travail,

  1. sous la fonction Build Triggers, cochez ' Trigger builds Remote (e.g., from scripts) 'et remplissez' Authentication Token ' avec un token aléatoire et unique.

Dans BitBucket référentiel,

  1. Allez à Paramètres > Services

  2. sélectionnez "Jenkins" à partir de la liste déroulante et "Ajouter". de service".

    • Cocher 'Csrf Activé'

    • point de Terminaison : http://username:apitoken@yourjenkinsurl.com/

      Vous pouvez trouvez le nom d'utilisateur et apitoken à Jenkins accueil > les Gens Sélectionnez l'utilisateur et cliquez sur configurer. Sous' API Token 'cliquez sur le bouton' Show API Token ' et vous voyez le nom d'utilisateur et apitoken

    • nom du Module: c'est facultatif. Il peut être tout fichier ou dossier particulier qui doit être regardé.

    • nom du Projet: nom du projet à 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'

    • Jeton : 'Jeton d'Authentification" créé dans Jenkins travail.

Vous êtes prêt à allez!!

je visées http://felixleong.com/blog/2012/02/hooking-bitbucket-up-with-jenkins/ et certains de mes instincts. :)

7
répondu Litty Philip 2016-11-09 11:48:45

j'ai ce même problème. Mon contournement était juste pour créer un projet de freestyle qui être déclenché par le WebHook, et avoir le Pipeline déclenché par l'achèvement de ce projet.

en attendant, voici le bogue de Jenkins que vous pouvez surveiller pour une correction: https://issues.jenkins-ci.org/browse/JENKINS-38447

2
répondu Chris Hill 2017-07-26 10:53:46

passez des heures à comprendre comment faire cela en 2017.10

  1. comme @JPLemelin décrit, nouveau un élément Jenkins en utilisant une équipe Bitbucket / projet
  2. ref de la doc: https://support.cloudbees.com/hc/en-us/articles/115000051132-How-to-Trigger-Multibranch-Jobs-from-BitBucket-Cloud- , installez le plugin: Le BitBucket Direction de la Source du plugin.
  3. aller à bitbucket, et ajouter webhook: ${votre-jenkins-url}/bitbucket-scmsource-crochet/notify

après ces 3 étapes, je fais enfin les travaux de pipeline courir après nouveau s'engager dans bitbucket

1
répondu DiveInto 2017-10-08 10:09:04

j'ai eu exactement le même problème...

La cause est à l'aide de */master pour la branche spécificateur. J'avais besoin de le préciser: origin/master (sans les jokers).

Cela fonctionne bien maintenant.

0
répondu pipelines-galour 2018-05-16 17:48:35

j'ai finalement réussi à faire ce travail avec Jenkinsfile dans multi Branch Pipeline:

dans Bitbucket j'ai créé un webhook avec mon Jenkins-URL, mon clone-URL et dans le webhook j'ai mis L'URL suivante (exacte l'url dans le projet de Jenkins):

http://<jenkins>/git/notifyCommit?url=http://<user>@<bitbucket>/scm/<project>/<repo>.git

Quand je test sur 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 il n'a pas déclenché de travaux, mais il a déclenché le balayage multi-branches, donc mes branches modifiées sont construites.

0
répondu Prikkeldraad 2018-09-03 11:41:46

Une solution simple est d'utiliser Générique Webhook Déclencher Plugin dans Jenkins.

Vous devez

  • L'activer dans un style libre ou un travail de pipeline.
  • Configurer une chaîne de jeton
  • construire JSONPath: s pour rassembler tout ce dont vous avez besoin à partir du Bitbucket Webhook.
  • ajouter le point final du plugin dans Bitbucket. JENKINS_URL/generic-webhook-trigger/invoke?token=whatever_you_picked

le plugin vous donnera un feedback clair quand il est invoqué de sorte que le dépannage se fait facilement.

c'est à vous de choisir les valeurs dont vous avez besoin dans le webhook afin de cloner le bon dépôt ou ce que vous voulez faire quand il est invoqué.

0
répondu Tomas Bjerre 2018-09-04 09:17:51