765DevOps

Thinking is the problem, Doing is the answer !

0%

代码扫描(三)-Sonar+Jenkins+Gitlab集成

目前我们使用CI工具主要是Jenkins,所以此相互选择了jenkins进行集成。根据实际情况,也可选择GitlabCI等工具。

实施代码检测,Gitlab 代码变更(Push/Merge),触发Jenkins Job执行SonarScanner扫描代码,SonarServer通过Gitlab插件,将代码扫描完的结果回写至Gitlab,GitLab即可查看到对应Sonar检测的结果代码注释,方便开发人员代码排查

实现目的

  • 1、研发过程,Jenkins在构建过程,加入SonarQube的代码质量门,检测本次构建增量代码质量
  • 2、定期的全量代码质量扫描,在每周定期对公司所有代码进行全量扫描,产出代码质量报告

集成插件配置

1、Jenkins插件&配置

插件:

  • SonarQubeScannerForJenkins

配置:

  • SonarServer配置:Manage Jenkins – > Configure System – > SonarQube servers
    需要SonarQube基于高权限账号生成的 授权token (SonarQube:Administration – > Security – > Users)
  • SonarScanner配置:Manage Jenkins – > Global Tool Configuration – > SonarQube Scanner
    备注:这里安装多个SonarQube Scanner,为多项目并行代码扫描做准备

2、SonarQube配置

插件:

实现gitlab打通,同时实现gitlab auth授权登陆

**Sonar Serverbase Url设置:**Administration > Configuration > General> Server base URL

Webhook配置:(实操,不配置,JEnkins在获取质量门结果时会无限等待)

Administration > Configuration > Webhooks. The URL should point to your Jenkins server: http://{JENKINS_HOST}/sonarqube-webhook/

具体说明:参考Jenkins官方文档说明(Configure a webhook in your SonarQube server pointing … )

Gitlab授权登陆:

Administration > Configuration > GitLab > Authentication :设置对应的 Application ID + Secret

(设置参数说明,参考对应的插件说明:sonar-auth-gitlab-plugin)

Gitlab Reporting配置:

  • 作用:可以将检测结果报告已comment的形式回写至Gitlab的Commit中(注:目前版本不支持inline comment in commit,现在只有global comment,具体看附属问题记录说明)

  • 配置:Administration > Configuration > GitLab > Reporting

  • 参数:扫描时需要配置参数:sonar.gitlab.project_id

说明:这个可以根据实际需求配置说明,此处可根据需求配置将检测的结果是否以comment回写。此处暂时不配置。

3、Gitlab配置

授权登陆设置:
Admin Settings -> Application:设置对应的回调:https:///oauth2/callback/gitlab (备注:sonar的domain不可为IP+Port形式,经测试http目前也是支持)

问题记录

参考资料