问题:我正在设置jenkins + sonar + github集成,以便通过sonar自动检查pullrequest静态代码。
我的配置:
通过 github 安装 Sonar
已安装 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
- token 是从我的 github 帐户生成的。
在此link我读到,运行 sonarqube 时必须提供以下属性:
我添加了除 sonar.github.pullRequest 属性之外的所有属性。 我不知道如何动态获取这个属性值。似乎以上四个属性必须正常工作。
编辑:我找到了添加属性的方法 -Dsonar.github.pullRequest=pullrequestNo
好消息是它现在工作得很好,硬编码的拉取请求号。但我需要动态方式来获取拉取请求编号。
有谁知道如何获取拉取请求编号。在 Jenkins 内部动态。?
我发现拉取请求构建器可以工作,但我最终没有运气。我无法在 Sonar 属性内使用拉取请求构建器环境变量。
最佳答案
终于可以解决这个问题了。详细内容如下:
- 使用 GitHub 插件安装 Sonar。
使用以下插件安装 Jenkins
- GitHub 拉取请求生成器
- SonarQube 插件
- GIT 插件
- GitHub 插件
点击此链接设置拉取请求构建器插件:https://wiki.jenkins-ci.org/display/JENKINS/GitHub+pull+request+builder+plugin#GitHubpullrequestbuilderplugin-EnvironmentVariables
- 全局 Jenkins 系统设置:
- 转到管理 Jenkins -> 配置系统
- 配置jdk
- 安装 sonarQube Runner
- 配置 Sonar
- Git WebHook 设置
在附加属性部分中提供以下 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}: this will be provided via github pullrequest builder plugin
注意: 该作业应通过 pullrequest 构建器插件触发,否则 ${ghprbPullId} 将返回空白。如果您手动运行作业,这将不起作用,您必须将此 ${ghprbPullId} 属性作为构建参数传递。如果您想检查可用的环境参数,请按照此 Git environment variables for use in executing Jenkins shell scripts 操作。
我希望这有帮助。
关于jenkins + Sonar + github 集成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32047585/