个人亲自录制全套DevOps系列实战教程 :
手把手教你玩转DevOps全栈技术

质量安全审计:Sonarqube
Sonarqube(声呐)大家应该不陌生,通过扫描代码分析代码质量与代码安全,方便我们快速定位代码缺陷、潜在风险。
个人建议: 作为项目质量智能分析工具,他是个双刃剑,在公司规模足够大并且足够重视代码质量时,sonar会有一个不错的位置;当如果公司规模小型,并且公司不足以把重点放在代码质量上,那么sonar可能会成为拖后腿的工具,一句话就是是否有必要上sonar完全看公司的需求以及成本。
作用阶段: 我们讨论下sonar应该在什么阶段起作用
- 代码开发阶段实时检测【sonarlint插件,为sonar 8.5版本后提供,需要集成到开发工具如Idea,配置时需要sonarqube服务支持,分析结果会提示在控制台,类似前端eslint作用】
- 代码提交前进行sonar扫描【需集成到本地开发工具,如Idea或Eclipse】
- 提交代码时进行sonar扫描【需集成到gitlab,如sonar-gitlab-plugin,也可结合Gitlab CI进行提交流程控制】
构建代码时进行sonar扫描【需集成到jenkins,如SonarQube Scanner插件】- 由sonar定期自主扫描代码生成报告【可以用jenkins的定时job】
具体应该部署哪种方案,也需要大家根据自身情况适当选择,没有完美的方案,选择最适合自己的方案即可。
此处我们集成到jenkins做演示。其他方式大家有兴趣可以找我咨询。
Docker容器部署
官网:https://docs.sonarqube.org/latest/setup/install-server/
根据官方文档可知,sonar是支持docker部署的,并且非常简单,sonar默认使用H2数据库,我们也可以指定自己的mysql等数据库。
选用版本:8.9 该版本为LTS长期支持版本,从7.9版本开始sonar必须有jdk11支持并且不再支持Mysql数据库。sonar默认采用H2数据库。
官方推荐配置:SonarQube扫描器需要版本8或11的JVM,SonarQube服务器需要版本11和最少2G内存,具体大家可以官网看。
Sonar的社区版免费

Sonar包括3个组件: Scanner负责扫描代码并分析生成报告->报告交给Sonar服务进行计算->最终结果存入数据库。下边我们通过docker-compose方式启动sonar容器。
注意:sonar不能以root身份运行在基于Unix系统上,我们这里使用的是基于Debian内核,所以没问题。
# vi /docker/sonarqube/docker-compose.yml
# 此处我们使用默认的H2数据库,如果外接数据库,可参考官网docker-compose.yml文件
version: "3"
services:
sonarqube:
# 使用一下私服拉取
image: 10.10.1.199:9083/sonarqube:8.9-community
restart: always
container_name: 'sonarqube'
hostname: 'sonarqube'
networks:
- 'exist-net-bloom'
volumes:
# 配置文件
- '/docker/sonarqube/conf:/opt/sonarqube/conf'
# 保存H2数据和ES索引文件
- '/docker/sonarqube/data:/opt/sonarqube/data'
# 保存第三方插件
- '/docker/sonarqube/extensions:/opt/sonarqube/extensions'
# 日志
- '/docker/sonarqube/logs:/opt/sonarqube/logs'
ports:
- "9097:9000"
networks:
exist-net-bloom:
external:
name: devops
# 如果需要自行修改配置,比如使用其他数据库等,可以在conf目录增加sonar.properties配置文件,具体可到官方获取
# 官方下载地址:https://www.sonarqube.org/downloads/
访问:10.10.1.199:9097,注意以上docker-compose.yml并未指定上下文,默认为/,可以自行指定。
SonarQube实战

本文介绍如何使用SonarQube进行代码质量和安全审计,涵盖SonarQube的部署、中文插件安装、与Maven及Jenkins的集成,并探讨不同场景下的最佳实践。
最低0.47元/天 解锁文章
1412

被折叠的 条评论
为什么被折叠?



