SonarQube 集成 gitlab/jenkins
一 概述
对于项目代码质量管理,在目前的微服务/模块化/快迭代敏捷开发中如果仅依赖IDE简单检查和人为的codereview对于大量代码很不适合,不仅仅依靠开发人员的编码规范编码及注意程序健壮性,同时需要一些工具来帮助我们提前预防和强制检测规范。
Sonarqube 是一款代码分析检测工具,将其与devops结合,例如集成到gitlab ci/cd或jenkins中实现部署自动代码检查,及时发现并处理bug,最大限度的将bug和不规范扼杀在编码阶段,其内部集成很多分析工具,比如pmd-cpd、checkstyle、findbugs、Jenkins,从七个方面帮我们来源码质量管理。此文章安装最新版SonarQube-7.9.1,此版本不支持自定义数据库MySQL,jdk需要安装高版本11。
1.1 特点
检查代码是否遵循编程标准:如命名规范,编写的规范等。
检查设计存在的潜在缺陷:SonarQube 通过插件 Findbugs、Checkstyle 等工具检测代码存在的缺陷。
检测代码的重复代码量:SonarQube 可以展示项目中存在大量复制粘贴的代码。
检测代码中注释的程度:源码注释过多或者太少都不好,影响程序的可读可理解性。
检测代码中包、类之间的关系:分析类之间的关系是否合理,复杂度情况。
1.2 组件
SonarQube Server:sonarqube服务端,接受客户端扫描报告
SonarQube Database:ES/及数据库引擎oracle,postgresql,mssql
SonarQube Plugins:可以后期在sonarqube服务端安装插件
SonarQube Scanner:安装在客户端扫描工具
1.3 架构图
开发人员把代码push到SCM(如gitlab)->jenkins构建定义好的job,然后通过jenkins 插件(sonar scanner)分析源码->jenkins/gitlab-ci 中的scanner客户端把分析报告发到sonarqube server
二 安装部署
2.1 SonarQube Server安装
2.1.1 宿主机测试环境简单部署
2.1.2 宿主机生产环境部署
2.1.3 docker方式部署
2.2 Gitlab集成
2.2.1 sonar-scanner安装
由于gitlab项目较多,共用了gitlab-runner,因此在gitlab-runner安装sonner-scanner即可,可通用对构建的项目进行扫描
2.2.2 sonarqube web配置项目
Create new project->Provide a token->
2.2.3 配置gitlab-ci
提交代码测试:
查看运行job
查看sonarqube项目
查看详情
2.3 jenkins集成
可以利用插件集成,也可以将sonar-scanner 安装在jenkins服务区上面,每次进行工具扫描。
2.3.1 sonar-scanner安装
sonar-scanner安装和gitlab-runner上安装一样,详见:2.2.1 sonar-scanner安装
可以两种方式集成:直接在构建的时候执行扫描命令分析报告,插件形式集成。
2.3.2 集成job
2.3.2.1 脚本构建集成
在构建的时候利用安装好的sonar-scanner命令集成
运行项目查看
查看sonarqube项目
2.3.2.2 插件形式集成
jenkins服务器scanner配置
jenkins服务器安装scanner
工具中配置scanner
sonarqube server生产token
需要在sonarqube server配置jenkins的api token,用来jenkins将报告发送给sonarqube server
全局工具配置中添加SonarQube servers
jenkins利用sonarqube的token创建凭据
构建项目配置
根据扫描的程序语言填写对应的analysis properties,在此填写项目相关信息。
如果使用pipeline,可以参考声明式示例
查看扫描结果
在jenkins上面配置了projectname,在sonarqube上就不用配置项目
三 思考
集成场景由于项目后端为python,在此没有编译,java项目需要安装对应mvn或其他编译工具,
测试环境之间为gitlab ci/cd,正式环境利用jenkins发布
对比jenkins脚本集成和插件方式集成,可以发现脚本方式需要在两边都配置,而且针对不同的项目,每次都需要申请token和关联项目笔记比较麻烦,插件形式一次配置好,就不用在去sonarqube上去配置,之后配置jenkins的job只需要配置简单的projectname即可,比较方便。
四 错误处理
Gitlab-runner输出限制,gitlab界面显示不全
ob's log exceeded limit of 4194304 bytes.
```shell
```
五 参考链接:
版权声明: 本文为 InfoQ 作者【雪雷】的原创文章。
原文链接:【http://xie.infoq.cn/article/b39ea78f907f1f55968dfadd7】。文章转载请联系作者。
评论