Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
576 views
in Technique[技术] by (71.8m points)

jenkins + sonar + github integration

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

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Answer

0 votes
by (71.8m points)

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.


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...