詹金斯 + 声纳 + github 集成

jenkins + sonar + github integration

问题: 我正在设置 jenkins + sonar + github 通过 sonar 进行自动 pullrequest 静态代码检查的集成。

我的配置:

  1. 安装声纳 github

  2. 已安装 jenkins

  3. 在 jenkins post-build 操作中我有以下属性

-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. 令牌是从我的 github 帐户生成的。

在这个 link 中,我读到在 运行 sonarqube 时我必须提供以下属性:

我添加了除 sonar.github.pullRequest 以外的所有属性。 我不知道如何动态获取这个 属性 值。 似乎必须有以上四个属性才能正常工作。

编辑: 我找到了添加 属性 -Dsonar.github.pullRequest=pullrequestNo

的方法

好消息是它现在使用硬编码拉取请求 no 可以正常工作。但我需要动态方式来获取拉取请求编号。

有谁知道如何获得拉取请求号。动态地在詹金斯里面。?

我发现 pull request builder 可以工作,但我没有运气。我无法在声纳属性中使用拉取请求生成器环境变量。

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

评论太长了所以我不得不写在这里。

在网络上进行一些研究后,我发现在尝试设置类似系统的过程中,有人比您先一步提出了关于 SO 的问题,here。他们正试图让这一切与 Maven 一起工作,我不确定你是否也是,但无论哪种方式,你都可以看到他们一直用来帮助他们编写脚本的 link:

https://github.com/SonarSource/sonarqube/blob/master/travis.sh

这表明他们需要编写一个脚本来为他们​​动态检索拉号。我认为您可能需要遵循类似的方法并编写一个脚本来为您检索号码,我相信 github conf 文件之一会出于自己的跟踪目的跟踪当前的拉取请求号码。

答案并不像您一直希望的那样直截了当,但希望这是可以帮助您实现目标的新信息。

终于解决了这个问题。详情如下:

  1. 使用 GitHub 插件安装 Sonar。
  2. 使用以下插件安装 Jenkins

    • GitHub 拉取请求生成器
    • SonarQube 插件
    • GIT插件
    • Git集线器插件

按照此 link 设置拉取请求生成器插件:https://wiki.jenkins-ci.org/display/JENKINS/GitHub+pull+request+builder+plugin#GitHubpullrequestbuilderplugin-EnvironmentVariables

    1. 全局 Jenkins 系统设置:
  • 转到管理 Jenkins -> 配置系统
  • 配置jdk
  • 安装sonarQube Runner
  • 配置声纳
  • Git WebHook 设置
  • PullRequest 构建器设置

    1. 创建 Free Style Jenkins 作业
  • 将 github url 添加到 GitHub 项目部分

  • 设置源代码管理部分

  • 设置生成触发器

  • 为 post 构建操作设置 Sonar

  • 在附加属性部分提供以下声纳属性

-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} 将 return 空白。如果您 运行 手动作业,这将不起作用,因为您必须将此 ${ghprbPullId} 属性 作为构建参数传递。如果您想检查可用的环境参数,请遵循此 Git environment variables for use in executing Jenkins shell scripts

希望对您有所帮助。

查看我的项目实施 Jenkins + SONAR + Github 代码在 https://github.com/lqtruong/ci