Jenkins and github integration using webhooks

Reading Time: 2 minutes

TL;DR

As github has deprecated service integration feature, I had to reconfigure jenkins integration using webhooks. As this is not straightforward to do, this blog post will help you to save some time if you are using github/jenkins integration.

Precondition

Jenkins github plugin.

Github Personal Access Token.

Lets go down the rabbit hole. You first need to create github personal access token for user that has access to github repository. In my case, that was my github account.

  1. Click on your github avatar
  2. Select Settings
  3. Select Developer Settings
  4. Select Personal Access Token
  5. Enter your github password

Hmmm, possible github UX issue, this is 4th level depth to get to this feature. Step 5 shows that github knows web security.

  1. Click generate new token
  2. Enter meaningful name
  3. Select permissions: admin:repo_hook, repo
  4. Generate token
  5. Copy token. Be careful, this is your only chance to copy it.

Again, proof that github understands web security.

Jenkins Global credentials

Using github token, you will create jenkins global credential.

  1. In jenkins, click credentials
  2. Click global (any of provided links)

My note on jenkins UX. Its free, and I understand that team do not have much resources. But credentials UX is really messed up.

  1. On left, click Add credentials
  2. For kind select secret text
  3. For scope leave Global option
  4. In secret, paste github token.
  5. Enter meaningful description. Trust me, this is very important, otherwise you will not be able to select this credentials.

Jenkins Github settings

  1. Manage Jenkins
  2. Configure System
  3. Scroll down to Github settings
  4. Add github server
  5. Set meaningful name
  6. Leave default API url
  7. Select credentials created in previous step.
  8. Click apply
  9. Click test connection. Following message should appear: Credentials verified for user xxx, rate limit: 4998

Note rate limit. You have 5000 requests per hour for all github integrations, not just Jenkins.

Github repository webhook

  1. Go to github repository that you are integrating with Jenkins. You need to have admin rights for that repo.
  2. Click Settings
  3. Select webhooks
  4. Add webhook
  5. Payload url is jenkins_url_with_http_or_https/github-webhook/
  6. Content type: application/json
  7. Just push event if you only want to trigger jenkins jobs by branch pushes.
  8. Check Active
  9. Click update
  10. Recent deliveries should have green check icon.

If that is not the case, click on latest delivery that will contain HTTP request/response.

Jenkins job build trigger.

  1. Go to your jenkins job
  2. In Build Triggers section, check out: GitHub hook trigger for GITScm polling

Check

  1. Commit something to your repo in branch for which job is configured.
  2. Job should start executing.

Resources

I used those two in order to decript all steps in proper order:

  1. Cloud Bees webhooks
  2. Cloud Bees webhook for non multi branch jobs

by


Originally published at blog.tentamen.eu on June 23, 2018.

Like what you read? Give Karlo Smid a round of applause.

From a quick cheer to a standing ovation, clap to show how much you enjoyed this story.