持续集成 Jenkins 与 SonarQube 6.7 “代码质量管理平台” 的集成 (linux)

· December 22, 2017 · Last by mark replied at April 06, 2018 · 2716 hits

引言:最近在linux环境下搞了搞Jenkins和SonarQube的集成,也遇到了些问题,写点东西,简单的介绍下!

一、环境准备

1、Linux环境。我这里是:CentOS 7 64位。(前提:可以连接互联网,方便安装各种软件等。)
2、JDK1.8。下载64位的包,文件名为“.tar.gz”结尾。到官网下载http://www.oracle.com/technetwork/cn/java/javase/downloads/jdk8-downloads-2133151-zhs.html
3、Tomcat 8.5.23。“Core:”类别下,文件名为“.tar.gz”结尾。到官网下载http://tomcat.apache.org/
4、Jenkins包。到官网下载最新包即可:https://jenkins.io/
5、安装GIT。在linux服务器上安装,后面会讲。
6、安装MySQL数据库。在linux服务器上安装,后面会讲。
7、SonarQube 6.7包。到官网下载即可:https://www.sonarqube.org/
ps:官网都是英文网站,可以用谷歌浏览器打开,用谷歌浏览器自带的翻译功能,方便查找;linux基本的操作如解压、vi/vim后修改配置文件等不做介绍。

二、操作步骤

1、准备linux环境
2、安装JDK1.8
3、安装tomcat(不一定是Tomcat 8.5.23,Tomcat 8.5左右即可)
4、启动jenkins
5、安装GIT
6、安装MySQL数据库
7、启动SonarQube 6.7
8、jenkins和SonarQube的配置

三、具体操作及讲解

1、准备linux环境
(1)准备一个linux环境,可以连接互联网,操作系统是:CentOS 7 64位。
ps:如果公司有测试环境资源,可以用VMware Workstation工具自己搞个linux环境玩玩;如果没有条件,也可以用自己电脑搭个虚拟机玩玩。具体操作请自己百度!

2、安装JDK1.8
(1)解压到任意方便查找的目录,我放在home目录下。
(2)配置环境变量
进入/etc目录,配置“profile”文件。命令:vim profile
在配置文件最下方添加如下内容:
export JAVA_HOME=/home/jdk1.8.0_151
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib:$CLASSPATH
export JAVA_PATH=${JAVA_HOME}/bin:${JRE_HOME}/bin
export PATH=$PATH:${JAVA_PATH}
注意:JAVA_HOME配置JDK解压后根目录的路径;配置完成后,保存后退出,并将配置文件生效,命令:source profile
可以用命令:java -version和javac查看JDK是否成功安装

3、安装Tomcat 8
(1)直接解压安装包
(2)修改配置文件
进入tomcat根目录下,进入/conf目录,配置“server.xml”文件。命令:vim server.xml

<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />

增加字符编码:URIEncoding="UTF-8",然后保存并退出;还可以修改端口号,如修改为“80”,就可以只通过IP地址+项目名来访问应用程序。
ps:增加UTF-8是因为tomcat中文可能会有乱码的情况,不管三七二十一,配上就行;server.xml文件修改后,需要重启tomcat服务,才能生效。

4、启动jenkins
(1)把jenkins.war包放在tomcat的/webapps目录下。
(2)在tomat的/bin目录下,用命令“./startup.sh”启动tomcat服务。
(3)打开浏览器,就可以通过“http://服务器IP地址/jenkins”访问jenkins应用了。
(4)jenkins首次登陆需要验证一个加密的初始密码,通过:cat /root/.jenkins/secrets/initialAdminPassword命令获取。然后复制、粘贴到登录栏就可以了。
如图:

(5)这样jenkins就起来了,配置好用户名和密码后,先不管jenkins,继续后面的操作。

5、安装GIT
(1)安装git是为了和jenkins做集成,从git服务器上down代码;可以试试手动在服务器安装git;jenkins也可以配置自动安装git,但jenkins的自动安装git的功能可能不好使,反正我用了不行,也不知道是不是网路的问题,所以我都是手动安装的。
(2)参考链接:http://blog.csdn.net/winsonyuan/article/details/60779476
ps:CentOS 7和CentOS 6.6操作一样,安装完GIT就可以了,后面的设置不用看啦。
(3)重点说一下GIT的配置,和JDK一样,需要在/etc目录,配置“profile”文件。在配置文件最下方添加git的路劲。我安装在/home目录下,所以配置的是:
export PATH=/home/git/bin:$PATH
(4)配置完成后,保存后退出,并将配置文件生效,命令:source profile
git --version命令可以查看git版本
如图:

6、安装MySQL数据库
(1)安装mysql数据库是为了给SonarQube平台用,也就是需要配置SonarQube的配置文件,下面会讲。我这里装的是MySQL 5.7。
(2)参考链接:http://blog.csdn.net/qq_24172609/article/details/78755149
(3)安装完成后,这里重点说一下MySQL的使用:默认只允许root帐户在本地登录,如果要在其它机器上连接mysql,必须修改root允许远程连接,或者添加一个允许远程连接的帐户,为了安全起见,我添加一个新的帐户:用户名为“sonar”,这里我们顺便建一个DATABASE,名为“sonar”,给SonarQube平台准备。
命令如下:
进入MySQL数据库:mysql -u root -p
建一个数据库并设定字符编码:CREATE DATABASE sonar CHARACTER SET utf8 COLLATE utf8_general_ci;
建一个数据库用户并设定密码:CREATE USER 'sonar' IDENTIFIED BY 'Test123!';
指定“sonar”用户的数据库使用权限,以下三个语句分开执行:
GRANT ALL ON sonar.* TO 'sonar'@'%' IDENTIFIED BY 'Test123!';
GRANT ALL ON sonar.* TO 'sonar'@'localhost' IDENTIFIED BY 'Test123!';
flush privileges;
说明:“flush privileges;”命令,MySQL用户数据和权限有修改后,希望在"不重启MySQL服务"的情况下直接生效,那么就需要执行这个命令。
关于linux下mysql的操作,大家可以自己上网查查。
(4)配置用户后,就可以通过本地访问数据库了,如果访问不了,可能是服务器防火墙没有关闭,需要关闭下。
CentOS 7关闭防火墙:
systemctl stop firewalld.service #停止firewall
systemctl disable firewalld.service #禁止firewall开机启动
参考链接:https://www.cnblogs.com/shizhijie/p/8005727.html
(5)我这里用的是navicat工具连接的mysql数据库:

7、启动SonarQube 6.7
(1)解压SonarQube 6.7,下载下来的文件名是:sonarqube-6.7.zip,用unzip sonarqube-6.7.zip命令解压。
(2)不管三七二十一,先修改配置文件,把sonar和mysql数据库的配置信息加上去先。操作如下:
#进入/conf目录,修改配置文件:sonar.properties,命令:vim sonar.properties
#在指定位置添加如下信息:
sonar.jdbc.username=sonar,用户名(见上文)
sonar.jdbc.password=Test123!,密码(见上文)
sonar.sorceEncoding=UTF-8,编码用“UTF-8”
sonar.jdbc.url=jdbc:mysql://localhost:3306/sonar?useUnicode=true&characterEncoding=utf8&rewriteBatchedStatements=true&useConfigs=maxPerformance&useSSL=false
如图:
说明:主要是把和数据库相关的配置信息配置上去,这样启动SonarQube的时候就会自动连接数据库。
(3)启动SonarQube 6.7,说一下这里的坑:从SonarQube 6.6开始,升级到了Elasticsearch 5,禁止了root权限,也就是通过root启动SonarQube 6.7的服务被禁止了。因此,需要新建一个linux用户,并赋权,再通过该用户启动soanr服务,就可以解决该问题。
如图官方说明:
操作如下:
#新建一个linux用户:useradd test
#指定密码:passwd Test123!
#新建一个用户组,名为“et”:groupadd et
#在SonarQube 6.7根目录下执行:chown -R test.et *,给test用户赋权文件夹下的操作权限。
#在root角色界面切换到test用户进行操作:su test
如图:
#进入/sonarqube-6.7/bin/linux-x86-64目录,因为要从linux-64位启动,执行命令:
./sonar.sh start #启动sonar服务
./sonar.sh start #停止sonar服务
./sonar.sh restart #重启sonar服务
参考链接:http://www.sojson.com/blog/81.html
(4)登录sonarQube平台。
如图:端口号是“9000”
(5)首次登录sonar需要输入随机字符串生成口令牌,这个是口令牌可以用于和jenkins做集成。需要记下来。
我输入的是:admin,生成:fba6d82449ea060c1d5ce0ae73114ac73819a630
默认的用户名是:admin,密码也是:admin
(6)登录后,可以在应用市场安装下中文版插件包。如图

到这里,SonarQube就正式启动了,嘿嘿!

8、jenkins和SonarQube的配置
jenkins和SonarQube都起来了,下面就讲讲两者集成的相关配置吧,先从jenkins开始:
(1)先看看“全局工具配置”:
因为我们已经在服务器装好JDK和GIT,需要这这里配置下:
图8.1:
图8.2:
这里和上文中环境变量的配置是一样的,就是把linux路径加进来就行了。另外都支持自动安装,因为我都是手动安装的,所以不考虑,大家也可以试试自动安装。
(2)再看看jenkins需要装哪些插件,需要安装的有:
SonarQube Scanner for Jenkins:这个插件可以让您在Jenkins全局配置中集中SonarQube服务器连接详细信息的配置。
Git plugin:这个插件允许使用Git作为构建SCM,包括用于多个提供者的存储库浏览器。
Email Extension Plugin:电子邮件扩展插件,功能强大,装上。
具体插件是干什么用的,可以通过谷歌浏览器打开链接后,翻译查看,这里不多讲。
因为我已经装好了,直接上截图:
图8.3:
图8.4:
(3)安装好插件后,就可以进行系统设置了:
第一步:先看看Jenkins Location,需要把jenkins的地址加上去。

第二步:找到“SonarQube servers”,配置soanr服务的相关信息。主要说下这个Server authentication token,Server version是5.3及以上的话,可以通过7.(5)中提到的口令牌直接访问sonar,复制、粘贴进去即可。
图8.5:
图8.6:
第三步:找到“Email Extension Plugin”,配置邮件服务的相关信息。
图8.7:
图8.8:
这里配置邮件设置后,建jenkins工程project的时候就可以针对每一个项目做单独的设置了
对每一个项目单独配置邮件接收的时候,会有一个坑,导致收不到邮件,这里说一下,原来是最下面有个高级设置,得把“接收人列表”加上去才行。
如图:


邮箱的配置参考链接:http://blog.csdn.net/u013066244/article/details/78665075
(4)到这里就可以新建jenkins工程了:
第一步:创建工程,并配置git


第二步:SonarQube Scanner配置。(很重要)

Analysis properties:分析属性设置需要设置sonar扫描的一些信息:

参考链接:http://blog.csdn.net/qq_36871364/article/details/77770112
第三步:构建工程

查看控制台输出:

构建成功:

(5)登录SonarQube查看是否有项目生成:

再说说SonarQube的配置,主要是需要配置下代码规则,在质量配置里实现:

由于我们的项目都是java语言开发的,所以筛选了80多条主要的质量规则,作为判断标准。

小结:
1.jenkins做持续集成,功能还是十分强大的,因为我们是用GIT进行代码管理的,换成SVN原理应该一样,关键是要弄清jenkins是怎么配置的。只要把这一整套环境搭好了,再有新项目,直接通过约定好的规则往jenkins上建项目就可以了。为什么要用SonarQube进行代码质量管理呢?因为好,所以用,就这么简单!
2.如果是纯净版的CentOS操作系统,操作过程中,可能很多命令用不了。如:unzip,vim等,或许还要更新yum源等,所以最好是能有一个联网环境的linux系统,这样可以直接安装linux需要的各种工具。

共收到 1 条回复 时间 点赞

Email Extension Plugin 配置完后, 每次扫描完会自动发Email报告吗

需要 Sign In 后方可回复, 如果你还没有账号请点击这里 Sign Up