Jenkins+SonarQube项目构建前代码审查

一、sonar简介
1、概述
Sonar (SonarQube)是一个开源平台,用于持续检查代码质量,不只是一个质量数据报告工具,更是代码质量管理平台。
支持Java, C#, C/C++, PL/SQL, Cobol, JavaScrip, Groovy 等等二十几种编程语言的代码质量管理与检测。
2、实例组件

B59D529E-9353-9EA6-E299-46C156346E3C.png

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)jenkins+gogs搭建代码自动化运维部署平台
 二、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/sonarqubedocker cp sonar:/opt/sonarqube/conf /server/docker/sonarqubedocker cp sonar:/opt/sonarqube/data /server/docker/sonarqubedocker cp sonar:/opt/sonarqube/logs /server/docker/sonarqubedocker cp sonar:/opt/sonarqube/extensions /server/docker/sonarqubedocker 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

A9FA00DF-9C68-F727-2030-0D720D02BD00.png

2、sonar页面汉化

administrator——marketplace——plugins搜索Chinese——Chinese pack,install——restart server重启9E51B7BE-396A-BAC9-4D28-C2C0FA0EE0AD.pngB4BA8F5A-CFA5-CC3A-A3EB-7DA0E904D44D.png

汉化完成:

9492D367-E2E5-1C86-83D6-0C551C051344.png

四、Jenkins页面配置持续审查项目代码

登录Jenkins管理页面,插件管理——安装插件“sonarqube scanner”

6C906FF4-1C3E-DD5B-3771-A4A0086436CD.png

1、配置连接sonarqube服务器

Jenkins系统管理——系统设置——SonarQube servers——add sonarqube

10F82BCD-A7F1-180E-0C37-8209346C103A.png

Server authentication token是sonarqube服务的登录凭证,登录到sonarqube页面,创建用户token,然后填到此处即可:

93E259F6-268E-8A08-1865-54F5763D3B00.png39E25B9B-B016-7F62-7591-E503EC910292.png

2、安装sonarqube工具

系统管理——全局工具配置——SonarQube Scanner——选择自动安装6EED8C24-6D18-8920-6897-2622A13B2A2D.png

 3、项目中配置sonarqube

进入项目配置中,构建——增加构建步骤——选择“Execute SonarQube Scanner”

A782EB23-A24F-850C-D9A9-E4F4EFAE65F2.png

然后配置 Execute SonarQube Scanner分析源码:

33481FCC-69E9-1032-2764-CF0049AC2658.png

Analysis properties 填写配置:

sonar.projectKey=          
sonar.projectName=          #这个可自定义,报告发送到sonarqube后,sonarqube将创建以此命名的projectsonar.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-8sonar.scm.disabled=true
4、查看分析结果

选择分支构建jenkins 项目后,分析结果将发送到sonarqube:

74FA5CA9-39A0-AB0C-E52E-2110A3222708.png

点击SonarQube将进入sonar 分析结果页面:

97E33C3F-24C9-D57B-743A-41CEF9C22069.png

jenkins+sonar审查源码完成。

五、jenkins+sonarqube搭建过程遇到的报错

解决Jenkins集成SonarQube遇到的报错问题

收藏 (0)
评论列表
正在载入评论列表...
我是有底线的