Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

jenkins + sonar + github integration

Tags:

Problem: I am setting up jenkins + sonar + github integration for automatic pullrequest static code check through sonar.

My Configuration:

  1. Installed Sonar with github

  2. Installed jenkins

  3. In jenkins post-build action I have the following properties

-Dsonar.github.login=bhuwang    -Dsonar.github.repository=company/repo   -Dsonar.verbose=true  -Dsonar.analysis.mode=preview  -Dsonar.issuesReport.console.enable=true  -Dsonar.forceUpdate=true  -Dsonar.github.login=gitusername  -Dsonar.github.oauth=token 
  1. Token was generated from my github account.

In this link I have read that I have to provide the following properties while running sonarqube: enter image description here

I have added all except sonar.github.pullRequest properties. I don't know how do I get this property value dynamically. Seems like above four properties are must to work properly.

Edit: I have found the way to add property -Dsonar.github.pullRequest=pullrequestNo

And the good news is it is working perfectly fine now with hardcoded pull request no. but I need the dynamic way to get the pull request no.

Does anyone know how to get the pull request no. dynamically inside jenkins.?

I have found that pull request builder will work but no luck at my end. I am not able to use pull request builder environment variables inside sonar properties.

https://issues.jenkins-ci.org/browse/JENKINS-24590

like image 943
Bhuwan Gautam Avatar asked Aug 17 '15 10:08

Bhuwan Gautam


People also ask

Can we integrate Jenkins with GitHub?

Jenkins, itself located on GitHub, has a number of plugins for integrating into GitHub. The primary avenues for integrating your Jenkins instance with GitHub are: "build integration" - using GitHub to trigger builds.


1 Answers

Finally I am able to solve this issue. Here is the detail:

  1. Install Sonar with GitHub plugin.
  2. Install Jenkins with the following plugins

    • GitHub Pull Request Builder
    • SonarQube Plugin
    • GIT plugin
    • GitHub plugin

Follow this link to setup pull request builder plugin: https://wiki.jenkins-ci.org/display/JENKINS/GitHub+pull+request+builder+plugin#GitHubpullrequestbuilderplugin-EnvironmentVariables

    1. Global Jenkins System Setup:
  • Goto Manage Jenkins -> Configure System
  • Configure jdk enter image description here
  • Install sonarQube Runner enter image description here
  • Configure Sonar enter image description here
  • Git WebHook Setup enter image description here
  • PullRequest Builder Setup enter image description here

    1. Create Free Style Jenkins job enter image description here
  • add github url to GitHub Project section enter image description here

  • Setup Source Code Management Section enter image description here

  • Setup Build Trigger enter image description here

  • Setup Sonar for post build actions enter image description here

  • In the additional properties section provide the following sonar properties

-Dsonar.sourceEncoding=UTF-8  -Dsonar.analysis.mode=preview  -Dsonar.github.repository=company/repo -Dsonar.github.login=gitusername  -Dsonar.github.oauth=oauthtoken -Dsonar.host.url=sonarhostedurl -Dsonar.login=admin  -Dsonar.password=pass -Dsonar.github.pullRequest=${ghprbPullId} ${ghprbPullId}: this will be provided via github pullrequest builder plugin 

Note: The job should be triggered through pullrequest builder plugin otherwise ${ghprbPullId} will return blank. If you run the job manually this will not work for that you have to pass this ${ghprbPullId} property as a build parameter. If you want to check the environment parameter available follow this Git environment variables for use in executing Jenkins shell scripts

I hope this helps.

like image 107
Bhuwan Gautam Avatar answered Sep 19 '22 16:09

Bhuwan Gautam