一、sonar简介
1、概述
Sonar (SonarQube)是一个开源平台,用于持续检查代码质量,不只是一个质量数据报告工具,更是代码质量管理平台。 支持Java, C#, C/C++, PL/SQL, Cobol, JavaScrip, Groovy 等等二十几种编程语言的代码质量管理与检测。
2、实例组件
SonarQube 实例包含三个组件: 1、SonarQube server运行以下进程: 为 SonarQube 用户界面提供服务的 Web Server。 基于 Elasticsearch 的Search Server。 负责处理代码分析报告并将其保存在 SonarQube 数据库中的compute engine(计算引擎)。 2、存储以下内容的数据库: 代码扫描期间生成的代码质量和安全性指标和问题。 SonarQube 实例配置。 3、在您的构建或持续集成服务器上运行的一个或多个Scanner(扫描器)来分析项目。
3、搭建前准备
服务器要求:由于sonar使用嵌入式elasticsearch,主机要符合es生产模式要求和文件描述符配置。需要以root身份运行一下参数: sysctl -w vm.max_map_count=262144 sysctl -w fs.file-max=65536 ulimit -n 65536 ulimit -u 4096 sonarqube需要数据库的支持: 微软 SqlServer Oracle PostgreSQL MySQL(sonarqube7.9以上已不再支持mysql数据库)
服务版本
sonarqube:8.9.1-community (192.168.1.20)
postgresql:latest (192.168.1.20)
二、Docker搭建PostgreSQL数据库
mkdir -p /server/docker/postgresql/data
docker run --name postgresql -p 5432:5432 \ -e POSTGRES_PASSWORD=123456 \ -e PGDATA=/var/lib/postgresql/data/pgdata \ -v /etc/localtime:/etc/localtime:or \ -v /server/docker/postgresql/data:/var/lib/postgresql/data \ -itd postgres
创建sonar数据库及用户名密码:
登录数据库:psql psql -d [databasename] #登录其他数据库 创建用户:create user sonar password 'sonar'; 参照template0(模板数据库)创建用户数据库: create database sonar template template0 owner sonar; 将sonar数据库的所有权限都赋予sonar用户: grant all privileges on database sonar to sonar;
三、Docker搭建SonarQube
1、搭建sonarqube
启动测试sonar,并复制文件到宿主机,做目录映射:
docker run -d --name sonar -p 9000:9000 sonarqube:8.9.1-community
mkdir -p /server/docker/sonarqube
docker cp sonar:/opt/sonarqube/conf /server/docker/sonarqube
docker cp sonar:/opt/sonarqube/data /server/docker/sonarqube
docker cp sonar:/opt/sonarqube/logs /server/docker/sonarqube
docker cp sonar:/opt/sonarqube/extensions /server/docker/sonarqube
docker rm -f sonar #删除测试sonarqube
启动正式sonar:
docker run -d --name sonar -p 9000:9000 \ -e SONARQUBE_JDBC_URL=jdbc:postgresql://192.168.1.20:5432/sonar \ -e SONARQUBE_JDBC_USERNAME=sonar \ -e SONARQUBE_JDBC_PASSWORD=sonar \ -v /etc/localtime:/etc/localtime:or \ -v /server/docker/sonarqube/conf:/opt/sonarqube/conf \ -v /server/docker/sonarqube/data:/opt/sonarqube/data \ -v /server/docker/sonarqube/logs:/opt/sonarqube/log \ -v /server/docker/sonarqube/extensions:/opt/sonarqube/extensions \ -itd sonarqube:8.9.1-community
SONARQUBE_JDBC_URL=jdbc:postgresql://192.168.1.20:5432/sonar #postgresql的ip、端口、数据库名 SONARQUBE_JDBC_USERNAME=sonar #postgresql的用户名 SONARQUBE_JDBC_PASSWORD=sonar #postgresql的密码 -v /etc/localtime:/etc/localtime:or #容器跟宿主机时间同步
访问sonar:192.168.1.20:9000 默认账户名密码:admin/admin
2、sonar页面汉化
administrator——marketplace——plugins搜索Chinese——Chinese pack,install——restart server重启
汉化完成:
四、Jenkins页面配置持续审查项目代码
登录Jenkins管理页面,插件管理——安装插件“sonarqube scanner”
1、配置连接sonarqube服务器
Jenkins系统管理——系统设置——SonarQube servers——add sonarqube
Server authentication token是sonarqube服务的登录凭证,登录到sonarqube页面,创建用户token,然后填到此处即可:
2、安装sonarqube工具
系统管理——全局工具配置——SonarQube Scanner——选择自动安装
3、项目中配置sonarqube
进入项目配置中,构建——增加构建步骤——选择“Execute SonarQube Scanner”
然后配置 Execute SonarQube Scanner分析源码:
Analysis properties 填写配置:
sonar.projectKey= sonar.projectName= #这个可自定义,报告发送到sonarqube后,sonarqube将创建以此命名的project
sonar.projectVersion=1.0 #项目版本号
sonar.language=java #表示分析java源代码
sonar.java.source=11 #表示jdk版本
sonar.java.binaries=gateway-service #jenkins项目中有多个项目名,就写需要构建jar包的那个项目名;只有一个项目就写“.”。
sonar.sources=gateway-service/src #表示源代码目录
sonar.sourceEncoding=UTF-8
sonar.scm.disabled=true
4、查看分析结果
选择分支构建jenkins 项目后,分析结果将发送到sonarqube:
点击SonarQube将进入sonar 分析结果页面:
jenkins+sonar审查源码完成。
五、jenkins+sonarqube搭建过程遇到的报错
持续更新中......