Jenkins+Gitlab+SonarQube 代码质量管理集成

Jenkins+Gitlab+SonarQube 代码质量管理集成

一、环境准备

1.1、JDK11环境安装

Linux系统下JDK11安装与配置

1.2、Docker环境下搭建SonarQube所需的PostgreSQL数据库

由于本次将安装的SonarQube为最新的7.9版本,所以这里简单实用Docker搭建一个PostgreSQL。

1.2.1、Docker的安装

# 校验Linux的内核是否为3.10及以上
uname -r
# 安装docker
yum install docker
# 配置163镜像
vim /etc/docker/daemon.json
{
	"registry-mirrors": ["http://hub-mirror.c.163.com"]
}

常用docker命令

1.2.2、Docker下的PostgreSQL安装

1.2.2.1、下载PostgreSQL镜像

# 拉取最新的postgres镜像
docker pull postgres:10.10

在这里插入图片描述

1.2.2.2、数据持久化

Docker Volume简介

# 创建PostgreSQL的数据持久化
docker volume create pgdata
# 查看创建的数据持久化仓库
docker volume ls

在这里插入图片描述

1.2.2.3、启动容器

docker run -d -it --rm -v pgdata:/var/lib/postgresql/data -p 5432:5432 docker.io/postgres:10.10
# -it:
# --rm:指定容器停止后自动删除容器(不支持以docker run -d启动的容器)
# -v:给容器挂载存储卷,挂载到容器的某个目录
# -p: 指定端口号
# -d:后台运行

查看容器运行状态
在这里插入图片描述

1.2.2.4、登录PostgreSQL

# 进入到PostgreSQL容器中
docker exec -it e20da0174db8 bash
# 切换到postgres系统用户
su postgres
# 创建一个给SonarQube使用的超级用户(-s 是指成为超级用户,-P(大定)是指定密码)
createuser -P -s -e sonar

在这里插入图片描述

1.2.2.5、创建snor数据库

# 连接数据库
psql
# 创建sonar数据库
create database sonar owner=sonar;

给sonar数据库创建一个schema

扫描二维码关注公众号,回复: 10046115 查看本文章
# 切换到sonar数据库
\c sonar
# 创建schema指定owner
create schema my_schema authorization sonar;

在这里插入图片描述

二、SonarQube安装

参考链接

2.1、下载SonarQube

SonarQube下载链接
点击链接,进入到官网,选择7.9版本进行下载

# 下载SonarQube
wget https://binaries.sonarsource.com/Distribution/sonarqube/sonarqube-7.9.1.zip

这里在Linux主机中使用wget下载应用比较慢,也可以直接在windows平台下下载完成后,使用rz命令上传到Linux主机中。
在这里插入图片描述
这里如果执行rz出现下面的命令没有找到的,那就安装一下
在这里插入图片描述
上传SonarQube压缩包
在这里插入图片描述

2.2、解压SonarQube的zip文件

使用unzip工具解压zip文件

# 解压zip文件
unzip sonarqube-7.9.1.zip
# 安装unzip
yum install -y unzip zip

在这里插入图片描述
解压后文件
在这里插入图片描述

2.3、创建SonarQube的用户sonar

# 创建sonar用户
useradd sonar
# 修改/opt/sonarqube-7.9.1文件夹的所属用户组和用户都为sonar
chown -R sonar.sonar /opt/sonarqube-7.9.1

在这里插入图片描述

2.4、优化系统的参数

这里的优化参数,配置后可能还是会有问题,具体可以从log日志中去查看报错的问题原因,然后对应修改!!!
在这里插入图片描述

sysctl -w  vm.max_map_count=262144
sysctl -w fs.file-max=65536
ulimit -u 4096 sonar
ulimit -n 65536 sonar

2.5、更改配置文件

# 修改配置文件
vim ./conf/sonar.properties

2.5.1、配置数据库登录用户和密码

sonar.jdbc.username=sonar
sonar.jdbc.password=123456

在这里插入图片描述

2.5.2、配置数据库链接池相关属性

sonar.jdbc.maxActive=60
sonar.jdbc.maxIdle=5
sonar.jdbc.minIdle=2
sonar.jdbc.maxWait=5000
sonar.jdbc.minEvictableIdleTimeMillis=600000
sonar.jdbc.timeBetweenEvictionRunsMillis=30000

在这里插入图片描述

2.5.3、配置web访问相关

sonar.web.host=0.0.0.0
sonar.web.port=9000

在这里插入图片描述

2.6、启动SonarQube(需要2G内存)

./bin/linux-x86-64/sonar.sh start

启动成功后可以看到在之前的schema中创建了很多表。
在这里插入图片描述
登录SonarQubehttp://192.168.2.200:9000
在这里插入图片描述
点击login后输入账号:admin;密码:admin登录管理平台。

2.7、SonarQube汉化插件的安装

在这里插入图片描述
在这里插入图片描述
等待服务重启后,刷新页面即可如下汉化版本
在这里插入图片描述

2.8、sonar-scanner插件的安装(这个插件按的安装和下面的在Jenkins部分配置的插件可能相同,这部分没有做再次测试)

标题处的描述,主要是由于此处是在200主机(sonar安装的主机)上安装一个sonar-scanner,下面再Jenkins的sonar-scanner服务的配置的时候,又选择了自动安装。理论上这里安装的应该是同一个东西,但是笔者在测试的时候,发现自己安装的虽然在填写sonar-scanner的home目录填写没有问题,但是Jenkins的job构建的时候还是出现了错误。

2.8.1、sonar-scanner的下载与解压

sonar-scanner插件下载传送门
在这里插入图片描述

# 进入software文件夹(该文件夹为自己创建用来存放软件的zip安装包)
cd ./software
# 下载sonar-scanner插件zip包
wget https://binaries.sonarsource.com/Distribution/sonar-scanner-cli/sonar-scanner-cli-4.0.0.1744-linux.zip
# 将该zip文件解压到opt文件夹下
unzip sonar-scanner-cli-4.0.0.1744-linux.zip -d /opt
# 进入到opt文件夹,然后修改解压后的文件夹名称为sonar-scanner
mv sonar-scanner-4.0.0.1744-linux sonar-scanner

2.8.2、sonar-scanner的环境变量配置

# 配置环境变量
vim /etc/profile
export SONAR_SCANNER_HOME=/opt/sonar-scanner
export PATH=$PATH:${SONAR_SCANNER_HOME}/bin

在这里插入图片描述
保存后执行下面的命令,使配置生效!

# 使配置生效
source /etc/profile

2.8.3、配置sonar-scanner

vim /opt/sonar-scanner/conf/sonar-scanner.properties 

在这里插入图片描述

2.8.4、验证sonar-scanner

sonar-scanner -h

执行后看到下图,说明配置成功了。
在这里插入图片描述

三、GitLab的安装

【Jenkins+Ansible+Gitlab 自动化部署三剑客】学习笔记-第二章 2-1~2-3 GitLab介绍与安装配置管理

四、Jenkins的安装

【Jenkins+Ansible+Gitlab 自动化部署三剑客】学习笔记-第四章 4-1~4-3 Jenkins介绍

五、Jenkins集成SonarQube

5.1、安装SonarQube Scanner插件

在这里插入图片描述
静静等待插件的安装。
在这里插入图片描述

5.2、jenkins配置sonar服务信息

登录到sonar的管理平台,如下图所示操作
在这里插入图片描述
获取创建的用户的token值。
在这里插入图片描述
token:903d9f33ac6c1f3d6dd9e1bb23ebcb968fd6510b
接着登录到Jenkins的管理平台,在系统管理中的系统设置下找到如下图所示的部分,然后点击圆圈中的按钮。
在这里插入图片描述
配置名称和sonar主机的访问IP地址。
在这里插入图片描述
在这里插入图片描述

5.3、Jenkins配置SonarQube Scanner服务信息

5.3.1、自己安装的SonarQube Scanner的配置

这里需要注意的是,当前我的sonar是安装在192.168.2.200的主机上,而Jenkins是在192.168.2.203。这里添加了SONAR_RUNNER_HOME,也会报黄色警告,说明不在当前的主机中,没关系。(此处的配置即上面红色文字处描述的问题内容)
在这里插入图片描述

5.3.2、使用Jenkins自动安装SonarQube Scanner的配置

登录到Jenkins的管理平台,然后再如下图配置。
在这里插入图片描述

5.4、Maven集成SonarQube

登录到Jenkins的主机203,然后找到该主机下的maven

# 进入到maven的安装目录
cd /opt/apache-maven-3.6.2/

5.4.1、设置插件前缀

vim conf/settings.xml
<settings>
    <pluginGroups>
        <pluginGroup>org.sonarsource.scanner.maven</pluginGroup>
    </pluginGroups>
</settings>

在这里插入图片描述

5.4.2、配置sonar的服务器URL

<settings>   
    <profiles>
        <profile>
            <id>sonar</id>
            <activation>
                <activeByDefault>true</activeByDefault>
            </activation>
            <properties>
                <!-- Optional URL to server. Default value is http://localhost:9000 -->
                <sonar.host.url>
                  http://192.168.2.200:9000
                </sonar.host.url>
            </properties>
        </profile>
     </profiles>
</settings>

在这里插入图片描述

。。。。。。。。。。。。。。。。。未完待续。。。。。。。。。。

六、直接在IDEA中执行构建并生成代码检测报告

6.1、登录到sonarqube管理平台,新建一个项目

具体操作如下图所示。
在这里插入图片描述
在这里插入图片描述

6.2、拷贝上面的maven执行命令到IDEA的测试项目中执行

# 直接黏贴到idea的maven插件中执行
mvn sonar:sonar \
  -Dsonar.projectKey=test01 \
  -Dsonar.host.url=http://192.168.2.200:9000 \
  -Dsonar.login=9dd99f1c2a31899a6cda897d65e403e89ff41b40

在这里插入图片描述
在这里插入图片描述
稍等之后就出现了分析图(内容省略~~~)
在这里插入图片描述

七、使用Jenkins的Job来构建代码扫描任务

7.1、构建maven项目

在这里插入图片描述
如果构建的是一个maven项目需要在配置中添加pom.xml文件的路径

7.2、构建一个自由风格的软件项目

7.2.1、创建一个项目

在这里插入图片描述
在这里插入图片描述

7.2.2、点击构建

如下为日志输出部分
在这里插入图片描述
切回到sonarqube的管理界面
在这里插入图片描述

7.3、为构建的Job添加GitLab提交触发的配置

前面的7.1和7.2中已经完成了手动执行jenkins执行sonar任务完成构建部署任务,下面说明如何在代码提交后让gitlab自动触发jenkins执行sonar任务。

7.3.1、Jenkins中安装GitLab插件

在这里插入图片描述
在这里插入图片描述

7.3.2、在GitLab中创建访问token

在这里插入图片描述
在这里插入图片描述

7.3.3、在Jenkins中配置GitLab插件

在jenkins中,进入“系统管理”-“系统设置”-“Gitlab”配置。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
添加完成后即可在当前选项中,选择刚添加的gitlab的凭证了,选择后点击右侧的“Test Connection”测试是否可以连接成功。
在这里插入图片描述

7.3.4、配置Jenkins任务,启用触发器

进入jenkins的任务设置界面,在“构建触发器”中,勾上“Build when a change pushed to Gitlab.Gitlab webhook URL …”(这里的webhook URL在后面配置gitlab时需要),根据自己的需要设置其它的选项。点击“高级”按钮,然后点击“Generate”按钮生成Secret token(这里的token后面配置gitlab时需要)。
在这里插入图片描述

7.3.5、在GitLab中配置webhook

在这里插入图片描述

7.3.6、webhook测试

在这里插入图片描述
点击后可以看到在Jenkins的控制台中有了一个构建任务
在这里插入图片描述
参考文档

发布了76 篇原创文章 · 获赞 16 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/weixin_38657051/article/details/102519042