sonarQube+sonarScan+Jenkins部署全流程(docker+centos7版)

前期准备
1、centos7安装完成;
2、jdk8安装完成;
3、mysql安装完成;
4、docker安装完成;
5、docker-compose安装完成。

一、安装sonarQube
1)检查自己安装的docker和docker-compose版本是否配套,这个可以在网上自行查询docker版本对应的docker-compose版本,如下图:
sonarQube+sonarScan+Jenkins部署全流程(docker+centos7版)_第1张图片
若版本不一致,会导致编排器拉不起来容器问题。

2)拉取sonarQube的docker 镜像(拉取的一般都是最新的)

命令:docker pull sonarqube

3)sonarQube数据库配置

使用命令:mysql -uroot -p

再输入root(mysql管理员账户)登录密码,登入mysql,如下图所示:
sonarQube+sonarScan+Jenkins部署全流程(docker+centos7版)_第2张图片
执行以下sql文(创建sonarQube数据库及用户授权等)

  1. CREATE DATABASE sonar CHARACTER SET utf8 COLLATE utf8_general_ci;
  2. CREATE USER ‘sonar’ IDENTIFIED BY ‘sonar’;
  3. GRANT ALL ON sonar.* TO ‘sonar’@’%’ IDENTIFIED BY ‘sonar’;
  4. GRANT ALL ON sonar.* TO ‘sonar’@‘localhost’ IDENTIFIED BY ‘sonar’;
  5. FLUSH PRIVILEGES;

4)编写docker-compose编排器
在sonarQube启动目录vim docker-compose.yml 文件,编辑内容如下:
sonarQube+sonarScan+Jenkins部署全流程(docker+centos7版)_第3张图片

配置完成后,可以执行命令:docker-compose -f docker-compose.yml up -d

通过编排器创建sonarQube的docker容器,如下图所示:
在这里插入图片描述
此时,可以访问sonarQube了,如下图:
sonarQube+sonarScan+Jenkins部署全流程(docker+centos7版)_第4张图片

二、安装Jenkins(若Jenkins已安装且版本为2.89.4+本步可跳过)
1)拉取Jenkins的docker 镜像(拉取的一般都是最新的)

docker pull jenkins

2)编写docker-compose编排器
在Jenkins启动目录vim docker-compose.yml 文件,编辑内容如下:
sonarQube+sonarScan+Jenkins部署全流程(docker+centos7版)_第5张图片

三、Jenkins相关配置(包含sonarScan安装)
Jenkins页面上初始化配置,不在此赘述,网上文章很多,这里就从构建sonar检查项目开始。
1)需要下载的插件:
sonar相关插件:
sonarQube+sonarScan+Jenkins部署全流程(docker+centos7版)_第6张图片
解决多分支代码拉取问题的插件:
在这里插入图片描述

2)Jenkins系统设置
在Jenkins系统设置中添加sonarQube servers,填写sonarQube服务地址、以及认证token
sonarQube+sonarScan+Jenkins部署全流程(docker+centos7版)_第7张图片
sonarQube认证token获取方式如下:
登录sonarQube后,点击右上角我的账号>>安全中获取 token,再将获取到的token填写到Jenkins系统设置中
sonarQube+sonarScan+Jenkins部署全流程(docker+centos7版)_第8张图片

3)Jenkins全局工具配置
SonarQube Scanner 安装配置,配置图如下:
sonarQube+sonarScan+Jenkins部署全流程(docker+centos7版)_第9张图片

Gradle 安装配置,配置图如下:
sonarQube+sonarScan+Jenkins部署全流程(docker+centos7版)_第10张图片

四、Jenkins构建sonar项目
1)使用Multiple SCMs插件进行代码拉取配置
从代码拉取开始,在实际项目中,通过git拉取的分支一般会是多个git分支,在不想创建多个Jenkins任务的情况时,我们就用到了之前下载的Multiple SCMs插件,通过此插件可以解决一个Jenkins任务拉取多个git分支代码,配置如下图:
sonarQube+sonarScan+Jenkins部署全流程(docker+centos7版)_第11张图片
其中Additional Behaviours 配置中需选择 Check out to a sub-directory ,配置代码存放的路径。

2)定时任务配置
在此不做赘述,详情如下图:
sonarQube+sonarScan+Jenkins部署全流程(docker+centos7版)_第12张图片

3)Build-编译
添加 Invoke Gradle script 代码编译步骤,如下图所示:
sonarQube+sonarScan+Jenkins部署全流程(docker+centos7版)_第13张图片

a、 Gradle Version:选择GRADLE_HOME;
b、Tasks:在Tasks中填写clean build -x test(为了先clean后build);
c、Root Build script:需要与拉取代码存放的路径一一对应。

4)Build-Execute SonarQube Scanner
在buid中添加Execute SonarQube Scanner,Execute SonarQube Scanner配置如下:
sonarQube+sonarScan+Jenkins部署全流程(docker+centos7版)_第14张图片
Analysis properties 是作为sonarScan客户端传递给sonarQube服务端传递构建项目检查的一组键值对,其中

sonar.projectKey=sonarTest(项目键值)
sonar.projectName=sonarTest(项目名称)
sonar.projectVersion=1.0(项目版本)
sonar.sourceEncoding=UTF-8(字符集编码)
sonar.language=java(代码语言)
sonar.sources=$WORKSPACE/XXX(指定sonar检查代码的地址多分支逗号分隔)
sonar.java.binaries=$WORKSPACE/XXX(二进制文件路径,此路径与sources一致即可)

4)Build-Execute shell script on remote host using ssh(非必选)
在sonar检查完之后可以对目录进行清理,可添加一段shell,如下图所示:
sonarQube+sonarScan+Jenkins部署全流程(docker+centos7版)_第15张图片

以上,是全部路程,构建后发送邮件就不在此赘述,后面有空会专门针对Jenkins发送邮件写一篇博客

下面我们来看下sonar分析代码的结果,如下图:
sonarQube+sonarScan+Jenkins部署全流程(docker+centos7版)_第16张图片

结束语:在配置好上述sonar+Jenkins外加邮件之后,每天定时可以检查代码,并发送邮件通知,并且做到持续集成,这样大大的提升工作效率,只要开发关注每天的邮件就可以了,当然sonar里面的规则是可配置的,sonar规则里面内容也不少,还可以结合阿里的p3c规范来做检查,需要学习的内容还很多,共勉之吧。

你可能感兴趣的:(代码静态检查)