持续集成平台搭建:Jenkins,SonarQube

首先介绍一下技术:java

持续集成工具:Jenkinsmysql

代码托管:svn或者Gitlinux

构建工具:Maven或者Gradlegit

审查工具:SonarQubegithub

发布容器:Tomcat或者Dockerweb

其次是系统配置信息以及一些额外要求:sql

(1)OS内核须要高于linux5.3,shell

(2)推荐运行内存为8G左右,至少须要大于4G数据库

(3)须要分配额外的用户和用户组来运行代码审查工具vim

(4)若需持久化代码审查记录,须要提供一个数据库(mysql,H2,postgresql等),数据库的安装过程在此跳过

 

(一)下载配置Jenkins

Jenkins的安装方式有许多种,本文主要以war包方式启动,其余方式请参考https://jenkins.io/download/

将下载好的war包直接放入tomcat的webapp目录下,启动tomcat便可,tomcat的安装方法再也不详述

此时查看tomcat的catalina日志,注意留意Jenkins的初始密码会在此输出。

启动完成后访问网址http://localhost:8080/jenkins,这时会进行初始化jenkins的一些配置,建议选择自动安装系统推荐的插件包。

建立用户时,须要提供jenkins的初始密码,在tomcat的启动日志中能够找到。

最后配置完成后,你应该能看到这个画面

 

 

(二)SonarQube的下载和安装

(1)首先去SonarQube的官网下载SonarQube包,目前最新版本为7.0,而咱们则选择较稳定的LTS版本6.7.2

下载完成后,unzip解压,个人解压路径为/web/sonarqube-6.7.2,同时新增一个用户和用户组(SonarQube不能以ROOT用户运行):

#建立一个名为sonarqube的用户组和一个用户名为sonarqube密码为sonarqube的用户

groupadd sonarqube

useradd sonarqube -g sonarqube -p sonarqube

#为该用户分配文件夹权限

chown -R sonarqube:sonarqube /web/sonarqube-6.7.2

(2)以后,编辑sonar.properties文档,修改一些属性

vim /web/sonarqube-6.7.2/conf/sonar.properties

#设置jvm使用的内存大小,Xms最小使用内存,Xmx最大使用内存,能够根据实际状况自行设置,我目前的系统运行内存为8G

sonar.web.javaOpts=-server -Xms1G -Xmx1G -XX:+HeapDumpOnOutOfMemoryError

#配置持久化数据库的帐户密码

sonar.jdbc.username=sonar

sonar.jdbc.password=Sonar6.2

#配置url,我此处使用的mysql

sonar.jdbc.url=jdbc:mysql://localhost:3306/sonar?useUnicode=true&characterEncoding=utf8&rewriteBatchedStatements=true&useConfigs=maxPerformance&useSSL=false

 

#下面设定访问网址为 http://centos:9000/sonar
sonar.web.host=0.0.0.0
sonar.web.port=9000

 

sonar.web.context=/sonar

(3)配置启动参数

vim /web/sonarqube-6.7.2/bin/linux-86-64(此处根据系统内存自行选择)/sonar.sh

修改RUN_AS_USER=sonarqube

即咱们以前建立的用户

(4)启动sonarqube

#先切换到sonarqube用户

su sonarqube

#执行启动命令

cd /web/sonarqube-6.7.2/bin/linux-86-64/

sh sonar.sh start

附sonar启动命令:

sh sonar.sh start #启动sonar

sh sonar.sh stop #安全中止sonar

sh sonar.sh console #控制台启动sonar

#查看日志

cd ../../logs

日志分为sonar.log,es.log,web.log,若不明缘由启动失败,可依次查看这几个日志。

启动后,若日志文件均无报错,便可访问http://localhost:9000/sonar,若顺利,则会出现以下界面

点击login in,输入初始帐户密码admin/admin便可。

若始终没法访问,建议检查防火墙设置

 

(三)Jenkins集成Sonar

(1)在Jenkins中下载sonar插件,目前插件为 SonarQube Scanner for Jenkins

安装完成后,在 系统管理->系统设置中,找到SonarQube servers模块,填写服务器信息:

 

其中认证token须要登录sonar后,点击Administrator->security->user,点击token按钮,输入key后再点击generate进行生成

(2)在jenkins中新建一个自由风格项目

源码管理这里再也不详述,选择svn或者git均可以,不过git要记得在github上设置好webhook

触发器也再也不此详述,git的话,勾选GitHub hook trigger for GITScm polling选项,则每次有push操做,都将触发构建。

构建环境,建议勾选Delete workspace before build starts选项

<1>构建,若是使用gradle进行构建,须要先在 系统管理->全局工具配置中,配置好gradle的安装位置,若系统中没有安装,建议勾选自动安装,name随意输入,maven构建同理。

gradle构建,选择invoke gradle,同时在高级选项中,输入task命令clean build -x test

maven构建,在Goals and options处输入命令clean compile package -Dmaven.test.skip=true,

<2>执行代码分析,新增一个构建步骤,选择Execute SonarQube Scanner,选择你的jdk版本,若没有,请在全局工具配置中配置好jdk位置。再选择好sonarqube scanner的版本。

以后,在Analysis properties处,输入sonar的检查参数,

#项目key (随意输入,必填项)
sonar.projectKey=2017-12-19-job

#项目名称和版本(必填项)
sonar.projectName=cuimi-job
sonar.projectVersion=1.0

#源码位置(必填项,相对于jenkins的workspace路径,例如,我此时的绝对路径为~/.jenkins/workspace/Test/test-webapp/src/main/java)
sonar.sources=test-webapp/src/main/java

#编译后的class位置(必填项,旧版本此项可不填,建议仍是填入,相对路径同上)

sonar.java.binaries=test-webapp/target/classes

 

后面jvm的启动参数项,能够参考GC优化策略。新手略过

(3)配置容器并发布项目

这里有两种方案

<1>经过ssh将构建完成后的Artifacts 发送至目标服务器上,交由其余运维人员处理。

<2>经过tomcat的remote deploy功能远程发布项目

方案一:安装jenkins插件publish over ssh。安装完成后在"系统管理"->"系统设置"中,配置Publish over ssh的相关信息,

注意:插件默认使用22端口进行链接,请确保目标服务器22端口的畅通性。

配置完成后,点击Test Configuration,测试链接是否成功。

以后,在项目设置中,新增构建后操做,如图所示

配置完成后,直接保存修改便可。

注意,这里的source files和exec command是二选一的,便可以传文件,或者在目标服务器上执行shell脚本。可是不能同时二者都执行。

 

配置完成后,点击构建。构建成功后便可在sonar地址中登录访问进行查看代码扫描状况