Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Bitbucket webhook to trigger Jenkins job

I'm having trouble getting my webhook in bitbucket server to start a Jenkins job. I've read through the other answered questions on here and can't get it going.

Bitbucket setup:

  • No special plugins installed
  • In repository settings I have a webhook set up
  • URL: http://[my jenkins url]/bitbucket-hook/ (yes I have the trailing slash)
  • Repo Push event selected

Jenkins setup:

  • Bitbucket plugin installed
  • Created new job
  • Set SCM to Git and added repo details
  • Set branches to build to either ** or refs/heads/rob-jenkins (a branch in git)
  • Build when a change is pushed to bitbucket selected

What I do: I make a change to a file in rob-jenkins branch, push and the job is not started in Jenkins.

What I see: In bitbucket, repo settings, webhooks I can see the webhook fired as soon as the commit is pushed. It has a 200 http status code, response body is empty.

In Jenkins I've set up a logger for

com.cloudbees.jenkins.plugins.BitbucketHookReceiver
com.cloudbees.jenkins.plugins.BitbucketJobProbe
com.cloudbees.jenkins.plugins.BitbucketPayloadProcessor
com.cloudbees.jenkins.plugins.BitBucketTrigger

And when I look at those logs I can see only 1 entry from com.cloudbees.jenkins.plugins.BitbucketHookReceiver

Received commit hook notification : {"eventKey":"repo:refs_changed","date":"2018-05-22T12:18:11+1000","actor":{"name":"xxxxxx","emailAddress":"[email protected]","id":53,"displayName":"xxxxxx","active":true,"slug":"xxxxxxx","type":"NORMAL"},"repository":{"slug":"xxxxx","id":1,"name":"xxxxx","scmId":"git","state":"AVAILABLE","statusMessage":"Available","forkable":true,"project":{"key":"SS","id":2,"name":"xxxxx","description":"xxxxxx","public":false,"type":"NORMAL"},"public":false},"changes":[{"ref":{"id":"refs/heads/rob-jenkins","displayId":"rob-jenkins","type":"BRANCH"},"refId":"refs/heads/rob-jenkins","fromHash":"1d9ad42fa404c893853094b0072e5b839f787589","toHash":"9bf7dc873f355259e4338ee80afbd246ecbb48a9","type":"UPDATE"}]}

There are no other entries in the log.

In the job itself, the BitBucket Hook Log screen just says "Polling has not run yet."

No idea why it isn't triggering the Jenkins job... what am I missing?

  • I've tried setting the Poll SCM manually and that didn't make a difference.
  • I've done a manual build and it works fine
like image 846
Rob Ormond Avatar asked May 22 '18 02:05

Rob Ormond


2 Answers

as commented by @tomas-bjerre the resolution was to use a different plugin

I would recommend using thie plugin instead: github.com/jenkinsci/generic-webhook-trigger-plugin – Tomas Bjerre yesterday

like image 167
Rob Ormond Avatar answered Oct 22 '22 12:10

Rob Ormond


No plugin needed. Just add a post-recieve hook under your repo in Bitbucket. On Jenkins, under Build Triggers, Trigger builds remotely (e.g., from scripts) Trigger builds remotely (e.g., from scripts) and specify an Authentication Token. A bash or python script can be used for the hook. Anytime a git push is run (not just a commit), you trigger a build!

like image 39
venky Avatar answered Oct 22 '22 10:10

venky