jenkins + sonar + github集成 [英] jenkins + sonar + github integration
问题描述
问题:我正在设置 jenkins + sonar + github 集成,以通过声纳自动pullrequest静态代码检查。
我的设定: 安装jenkins 在jenkins后期构建操作中,我有以下属性
-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
< blockquote>
- 令牌是从我的github帐户生成的。
在此
我添加了除sonar.github.pullRequest属性之外的所有属性。 我不知道如何动态获取此属性值。看起来像上面的四个属性必须正常工作。
编辑:我找到了添加属性的方法-Dsonar.github.pullRequest = pullrequestNo
好消息是,现在使用硬编码拉请求号。但我需要动态的方式来获取pull请求号。
有谁知道如何获取拉取请求没有。动态内部jenkins。
我发现pull请求生成器将工作,但没有运气在我的结束。我无法在声纳属性中使用pull请求生成器环境变量。
安装sonarQube Runner
配置Sonar
Git WebHook设置
PullRequest Builder安装程序
< a href =https://i.stack.imgur.com/BlHVd.png =nofollow noreferrer>
- 创建自由风格的Jenkins作业
将github网址添加到GitHub项目部分
设置源代码管理部分
设置建立触发器
设置Sonar进行后期构建操作
在附加属性部分提供以下内容声纳属性 p>
-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}:这将通过github pullrequest builder插件提供
注意:作业应该通过pullrequest构建器插件触发,否则$ {ghprbPullId}将返回空白。如果你手动运行这个工作不工作,你必须传递这个$ {ghprbPullId}属性作为构建参数。如果您要检查可用的环境参数,请点击此 Git用于执行Jenkins shell脚本的环境变量
我希望这有助于。
Problem: I am setting up jenkins + sonar + github integration for automatic pullrequest static code check through sonar.
My Configuration:
Installed Sonar with github
Installed jenkins
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
- Token was generated from my github account.
In this link I have read that I have to provide the following properties while running sonarqube:
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
解决方案Finally I am able to solve this issue. Here is the detail:
- Install Sonar with GitHub plugin.
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
- Global Jenkins System Setup:
- Goto Manage Jenkins -> Configure System
- Configure jdk
- Install sonarQube Runner
- Configure Sonar
- Git WebHook Setup
PullRequest Builder Setup
- Create Free Style Jenkins job
add github url to GitHub Project section
Setup Source Code Management Section
Setup Build Trigger
Setup Sonar for post build actions
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.
这篇关于jenkins + sonar + github集成的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!