詹金斯 + 声纳 + github 集成
jenkins + sonar + github integration
问题: 我正在设置 jenkins + sonar + github 通过 sonar 进行自动 pullrequest 静态代码检查的集成。
我的配置:
安装声纳 github
已安装 jenkins
在 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
- 令牌是从我的 github 帐户生成的。
在这个 link 中,我读到在 运行 sonarqube 时我必须提供以下属性:
我添加了除 sonar.github.pullRequest 以外的所有属性。 我不知道如何动态获取这个 属性 值。 似乎必须有以上四个属性才能正常工作。
编辑: 我找到了添加 属性 -Dsonar.github.pullRequest=pullrequestNo
的方法
好消息是它现在使用硬编码拉取请求 no 可以正常工作。但我需要动态方式来获取拉取请求编号。
有谁知道如何获得拉取请求号。动态地在詹金斯里面。?
我发现 pull request builder 可以工作,但我没有运气。我无法在声纳属性中使用拉取请求生成器环境变量。
评论太长了所以我不得不写在这里。
在网络上进行一些研究后,我发现在尝试设置类似系统的过程中,有人比您先一步提出了关于 SO 的问题,here。他们正试图让这一切与 Maven 一起工作,我不确定你是否也是,但无论哪种方式,你都可以看到他们一直用来帮助他们编写脚本的 link:
https://github.com/SonarSource/sonarqube/blob/master/travis.sh
这表明他们需要编写一个脚本来为他们动态检索拉号。我认为您可能需要遵循类似的方法并编写一个脚本来为您检索号码,我相信 github conf 文件之一会出于自己的跟踪目的跟踪当前的拉取请求号码。
答案并不像您一直希望的那样直截了当,但希望这是可以帮助您实现目标的新信息。
终于解决了这个问题。详情如下:
- 使用 GitHub 插件安装 Sonar。
使用以下插件安装 Jenkins
- GitHub 拉取请求生成器
- SonarQube 插件
- GIT插件
- Git集线器插件
按照此 link 设置拉取请求生成器插件:https://wiki.jenkins-ci.org/display/JENKINS/GitHub+pull+request+builder+plugin#GitHubpullrequestbuilderplugin-EnvironmentVariables
- 全局 Jenkins 系统设置:
- 转到管理 Jenkins -> 配置系统
- 配置jdk
- 安装sonarQube Runner
- 配置声纳
- Git WebHook 设置
PullRequest 构建器设置
- 创建 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
问题: 我正在设置 jenkins + sonar + github 通过 sonar 进行自动 pullrequest 静态代码检查的集成。
我的配置:
安装声纳 github
已安装 jenkins
在 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
- 令牌是从我的 github 帐户生成的。
在这个 link 中,我读到在 运行 sonarqube 时我必须提供以下属性:
我添加了除 sonar.github.pullRequest 以外的所有属性。 我不知道如何动态获取这个 属性 值。 似乎必须有以上四个属性才能正常工作。
编辑: 我找到了添加 属性 -Dsonar.github.pullRequest=pullrequestNo
的方法好消息是它现在使用硬编码拉取请求 no 可以正常工作。但我需要动态方式来获取拉取请求编号。
有谁知道如何获得拉取请求号。动态地在詹金斯里面。?
我发现 pull request builder 可以工作,但我没有运气。我无法在声纳属性中使用拉取请求生成器环境变量。
评论太长了所以我不得不写在这里。
在网络上进行一些研究后,我发现在尝试设置类似系统的过程中,有人比您先一步提出了关于 SO 的问题,here。他们正试图让这一切与 Maven 一起工作,我不确定你是否也是,但无论哪种方式,你都可以看到他们一直用来帮助他们编写脚本的 link:
https://github.com/SonarSource/sonarqube/blob/master/travis.sh
这表明他们需要编写一个脚本来为他们动态检索拉号。我认为您可能需要遵循类似的方法并编写一个脚本来为您检索号码,我相信 github conf 文件之一会出于自己的跟踪目的跟踪当前的拉取请求号码。
答案并不像您一直希望的那样直截了当,但希望这是可以帮助您实现目标的新信息。
终于解决了这个问题。详情如下:
- 使用 GitHub 插件安装 Sonar。
使用以下插件安装 Jenkins
- GitHub 拉取请求生成器
- SonarQube 插件
- GIT插件
- Git集线器插件
按照此 link 设置拉取请求生成器插件:https://wiki.jenkins-ci.org/display/JENKINS/GitHub+pull+request+builder+plugin#GitHubpullrequestbuilderplugin-EnvironmentVariables
- 全局 Jenkins 系统设置:
- 转到管理 Jenkins -> 配置系统
- 配置jdk
- 安装sonarQube Runner
- 配置声纳
- Git WebHook 设置
PullRequest 构建器设置
- 创建 Free Style Jenkins 作业
- 创建 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