引言:最近在 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 需要的各种工具。


↙↙↙阅读原文可查看相关链接,并与作者交流