前期准备
1、centos7安装完成;
2、jdk8安装完成;
3、mysql安装完成;
4、docker安装完成;
5、docker-compose安装完成。
一、安装sonarQube
1)检查自己安装的docker和docker-compose版本是否配套,这个可以在网上自行查询docker版本对应的docker-compose版本,如下图:
若版本不一致,会导致编排器拉不起来容器问题。
2)拉取sonarQube的docker 镜像(拉取的一般都是最新的)
命令:docker pull sonarqube
3)sonarQube数据库配置
使用命令:mysql -uroot -p
再输入root(mysql管理员账户)登录密码,登入mysql,如下图所示:
执行以下sql文(创建sonarQube数据库及用户授权等)
- CREATE DATABASE sonar CHARACTER SET utf8 COLLATE utf8_general_ci;
- CREATE USER ‘sonar’ IDENTIFIED BY ‘sonar’;
- GRANT ALL ON sonar.* TO ‘sonar’@’%’ IDENTIFIED BY ‘sonar’;
- GRANT ALL ON sonar.* TO ‘sonar’@‘localhost’ IDENTIFIED BY ‘sonar’;
- FLUSH PRIVILEGES;
4)编写docker-compose编排器
在sonarQube启动目录vim docker-compose.yml 文件,编辑内容如下:
配置完成后,可以执行命令:docker-compose -f docker-compose.yml up -d
通过编排器创建sonarQube的docker容器,如下图所示:
此时,可以访问sonarQube了,如下图:
二、安装Jenkins(若Jenkins已安装且版本为2.89.4+本步可跳过)
1)拉取Jenkins的docker 镜像(拉取的一般都是最新的)
docker pull jenkins
2)编写docker-compose编排器
在Jenkins启动目录vim docker-compose.yml 文件,编辑内容如下:
三、Jenkins相关配置(包含sonarScan安装)
Jenkins页面上初始化配置,不在此赘述,网上文章很多,这里就从构建sonar检查项目开始。
1)需要下载的插件:
sonar相关插件:
解决多分支代码拉取问题的插件:
2)Jenkins系统设置
在Jenkins系统设置中添加sonarQube servers,填写sonarQube服务地址、以及认证token
sonarQube认证token获取方式如下:
登录sonarQube后,点击右上角我的账号>>安全中获取 token,再将获取到的token填写到Jenkins系统设置中
3)Jenkins全局工具配置
SonarQube Scanner 安装配置,配置图如下:
四、Jenkins构建sonar项目
1)使用Multiple SCMs插件进行代码拉取配置
从代码拉取开始,在实际项目中,通过git拉取的分支一般会是多个git分支,在不想创建多个Jenkins任务的情况时,我们就用到了之前下载的Multiple SCMs插件,通过此插件可以解决一个Jenkins任务拉取多个git分支代码,配置如下图:
其中Additional Behaviours 配置中需选择 Check out to a sub-directory ,配置代码存放的路径。
3)Build-编译
添加 Invoke Gradle script 代码编译步骤,如下图所示:
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配置如下:
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,如下图所示:
以上,是全部路程,构建后发送邮件就不在此赘述,后面有空会专门针对Jenkins发送邮件写一篇博客
结束语:在配置好上述sonar+Jenkins外加邮件之后,每天定时可以检查代码,并发送邮件通知,并且做到持续集成,这样大大的提升工作效率,只要开发关注每天的邮件就可以了,当然sonar里面的规则是可配置的,sonar规则里面内容也不少,还可以结合阿里的p3c规范来做检查,需要学习的内容还很多,共勉之吧。