资源描述
自动化构建布署
安装手册
07月
目录
1. 编写目标 4
2. 版本要求 4
3. 准备工作 4
4. 安装布署 4
4.1. 安装JDK 4
4.1.1. 版本说明 4
4.1.2. 安装步骤 4
4.1.3. 环境配置 5
4.1.4. 测试JDK 5
4.2. 安装maven 5
4.3. 安装tomcat 6
4.3.1. 版本说明 6
4.3.2. 安装步骤 6
4.3.3. 测试tomcat 6
4.3.4. 开启和停止 7
4.3.5. 环境配置 7
4.3.6. 设置随机开启 8
4.4. 安装jenkens 9
4.4.1. 版本说明 9
4.4.2. 下载安装包并布署 9
4.4.3. 配置jenkins环境变量 9
4.4.4. 获取管理员密码 10
4.4.5. 配置管理员信息 12
4.4.6. 安装插件 12
4.4.7. 全局设置 13
4.4.8. 系统设置 14
4.4.9. 邮箱通知配置 15
4.4.10. 用户权限配置 24
4.5. 安装sonarQube 25
4.5.1. 版本说明 25
4.5.2. 下载安装包 25
4.5.3. 安装汉字包 26
4.5.4. 创建数据库 26
4.5.5. 修改配置文件 26
4.5.6. 服务开启停止 26
4.5.7. 测试 27
4.6. 安装SonarQube Scanner 27
4.6.1. 版本说明 27
4.6.2. 下载安装包 27
4.6.3. 配置scanner 27
4.6.4. Jenkins配置Scanner 27
4.6.5. 安装sonarQube插件 28
5. 创建项目 30
5.1. 项目基础情况 30
5.2. 源码管理 30
5.3. 构建触发器 31
5.4. 构建环境配置 32
5.5. 配置sonarQube 33
5.6. 编译环境配置 35
5.7. 指定打包类型 35
5.8. 容器远程布署 36
5.9. SSH远程布署 37
1. 编写目标
实现项目代码自动化构建、打包、公布、测试、布署。
2. 版本要求
软件
版本
说明
jenkins
2.6
2.6以上版本必需jdk1.8及以上
jdk
1.8
tomcat
8.0
maven
3.3.9
sonarQube
6.4
SonarQube Scanner
3.0.3
centos
7.2
3. 准备工作
服务器硬件要求:
cpu 4关键,内存16g,硬盘40g,centos7
4. 安装布署
4.1. 安装JDK
4.1.1. 版本说明
jjdk-7u80-linux-x64.tar.gz。
4.1.2. 安装步骤
1、登录服务器。
2、新建/usr/java文件夹,将jdk-8u112-linux-x64.tar.gz上传放到该文件夹中,并将工作目录切换到/usr/java目录下。
#cd /usr
#mkdir java
3、解压JDK,在/usr/java多了一个jdk1.8.0_112文件夹。
#tar -zxvf jdk-8u112-linux-x64.tar.gz
4.1.3. 环境配置
#vi /etc/profile
在profile底部添加以下内容
#jdk环境变量配置
export JAVA_HOME=/usr/java/jdk1.8.0_112
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.
实施以下命令使环境变量配置生效。
#source /etc/profile
4.1.4. 测试JDK
1、使用javac和java命令,不会出现command not found错误。
2、使用java -version,出现版本为java version "1.8.0_112"。
3、echo $JAVA_HOME, echo $CLASSPATH, echo $PATH,看看自己配置是否全部正确。
至此jdk安装配置已经完成。
4.2. 安装maven
1、下载maven布署包
将maven上传到/opt下并解压
2、配置环境变量
#vi /etc/profile 添加以下
export MAVEN_HOME=/opt/maven3.5
export PATH=$MAVEN_HOME/bin:$PATH
保留后,实施
#source /etc/profile
3、测试是否成功
mvn -v 或echo $MAVEN_HOME
4、配置当地仓库
修改conf下面settting.xml文件
4.3. 安装tomcat
4.3.1. 版本说明
apache-tomcat-8.5.9.tar.gz
4.3.2. 安装步骤
1、登录服务器。
2、将apache-tomcat-8.5.9.tar.gz上传放到/usr/local目录下。
3、解压tomcat。
#tar -zxvf apache-tomcat-8.5.9.tar.gz
修改文件夹名称为tomcat。
#mv apache-tomcat-8.5.9 tomcat8
4.3.3. 测试tomcat
1、开启服务
#/usr/local/tomcat8/bin/startup.sh
2、 浏览器访问 :8080/,如::8080/
注意:假如访问不成功可能是预防墙没相关闭。
① 查看防火墙状态
#firewall-cmd --state
② 关闭防火墙
#systemctl stop firewalld
③ 严禁开机开启
#systemctl disable firewalld
3、查看tomcat进程
#ps -ef |grep java
#ps -ef |grep tomcat
4.3.4. 开启和停止
1、开启服务
#/usr/local/tomcat8/bin/startup.sh
2、停止服务
#/usr/local/tomcat8/bin/shutdown.sh
4.3.5. 环境配置
1、配置JVM
修改tomcat下bin目录下catalina.bat文件
1、linux配置,第二行添加。注意:具体参数依据环境配置,示例内存8g。
JAVA_OPTS="-server -Xms4096m -Xmx4096m -XX:PermSize=128M -XX:MaxPermSize=256m"
2、windows配置,第一行添加
set JAVA_OPTS=-server -Xms4096m -Xmx4096m -XX:PermSize=128M -XX:MaxPermSize=256m
4.3.6. 设置随机开启
1、创建开启用户
#useradd tomcat
2、添加开启脚本
#vi /etc/rc.d/init.d/tomcat
添加以下内容并保留,设置开启权限为tomcat。
#!/bin/bash
#
# starguo liny tomcat开启脚本
# /etc/rc.d/init.d/tomcat8
# init script for tomcat precesses
#
# processname: tomcat
# description: tomcat is a j2se server
# chkconfig: 2345 86 16
# description: Start up the Tomcat servlet engine.
if [ -f /etc/init.d/functions ]; then
. /etc/init.d/functions
elif [ -f /etc/rc.d/init.d/functions ]; then
. /etc/rc.d/init.d/functions
else
echo -e "\atomcat: unable to locate functions lib. Cannot continue."
exit -1
fi
RETVAL=$?
CATALINA_HOME="/usr/local/tomcat8"
case "$1" in
start)
if [ -f $CATALINA_HOME/bin/startup.sh ];
then
echo $"Starting Tomcat"
su -c $CATALINA_HOME/bin/startup.sh tomcat
fi
;;
stop)
if [ -f $CATALINA_HOME/bin/shutdown.sh ];
then
echo $"Stopping Tomcat"
su -c $CATALINA_HOME/bin/shutdown.sh tomcat
fi
;;
*)
echo $"Usage: $0 {start|stop}"
exit 1
;;
esac
exit $RETVAL
注意:只需要修改CATALINA_HOME="/usr/local/tomcat8",指tomcat安装路径。
2、添加权限
#chmod 755 /etc/rc.d/init.d/tomcat
#chkconfig --add tomcat
#chkconfig --level 2345 tomcat on
3、重启电脑测试是否生效
浏览器访问 :8080/,如::8080/
4.4. 安装jenkens
4.4.1. 版本说明
Jenkins 2.6
4.4.2. 下载安装包并布署
#cd /usr/local/tomcat8/webapps
#wget
4.4.3. 配置jenkins环境变量
设置jenkins数据(下载代码、插件等)保留路径
#cd /opt
#mkdir jenkins
#vi /etc/profile
添加以下内容
JENKINS_HOME=/opt/jenkins
#source /etc/profile
验证是否配置环境变量成功
#echo $JENKINS_HOME
4.4.4. 获取管理员密码
开启tomcat后, 访问http://IP:8080/jenkins
按提醒/jenkins/secrets/initialAdminPassword获取管理员密码
#cat /jenkins/secrets/initialAdminPassword 复制密码到提醒框点击
默认安装插件
选择第一个安装,耐心等候。
4.4.5. 配置管理员信息
设置管理员账号密码等信息,点击
点击能够进入jenkins进行配置。
4.4.6. 安装插件
1、Maven插件 Maven Integration plugin
2、公布插件 Deploy to container Plugin 支持将代码布署到tomcat容器
3、git插件 Git plugin
4、svn插件 Subversion Plug-in和SVN Publisher plugin
5、发送邮件插件
Email Extension Plugin
4.4.7. 全局设置
系统管理--Global Tool Configuration --配置JDK、Maven、git
1、 配置maven
2、 配置jdk
配置项目编译时需要jdk版本。
注意:现在我们项目全部jdk1.7编译,所以需要在系统安装一个jdk1.7,官网下载一个tar包解压即可,不用配置环境变量。
3、 配置maven
4.4.8. 系统设置
-Xms256m -Xmx512m -Dfile.encoding=UTF-8(注意:具体参数依据环境配置)
4.4.9. 邮箱通知配置
jenkins 内置邮件功效
使用email-ext插件扩展邮件功效
1、系统管理-系统设置,先设置发件人邮件
在"Jenkins Location"设置系统管理员地址(必需设置)
2、系统管理-系统设置,再设置全局设置:
在"邮件通知"部分配置发送邮件用户名、密码(注意这里密码使用是163邮箱设置"用户端授权码",不是登陆密码,提议不用QQ邮箱,会轻易造成发送失败)
3、勾选"经过发送测试邮件测试配置",填入测试收件人,点击"Test Configuration"
4、 到qq邮箱里check新邮件
5、 email-ext插件配置
Jenkins默认提供了一个邮件通知,能在构建失败、构建不稳定等状态后发送邮件。不过它本身有很多不足,比如它邮件通知无法提供具体邮件内容、无法定义发送邮件格式、无法定义灵活邮件接收配置等等。在这么情况下,我们找到了Jenkins Email Extension Plugin。该插件能许可你自定义邮件通知方方面面,比如在发送邮件时你能够自定义发送给谁,发送具体什么内容等等。
email-ext插件可依据构建结果,发送构建汇报,给目前committer (用git做代码管理)
1) 该插件支持jenkins 1.5以上版本,插件安装此处略 ,若您可选插件页卡列表是空,先去高级页面检验更新下。
2)插件用于job配置页面,添加构建后步骤“Editable Email Notification”
1、系统管理-系统设置,先设置全局:
具体参数说明以下:
1. Override Global Settings:假如不选,该插件将使用默认E-mail Notification通知选项。反之,您能够经过指定不一样于( 默认选项)设置来进行覆盖。
2. Default Content Type:指定构建后发送邮件内容类型,有Text和HTML两种.
3. Use List-ID Email Header:为全部邮件设置一个List-ID邮件信头,这么你就能够在邮件用户端使用过滤。它也能阻止邮件发件人大部分自动回复(诸如离创办公室、休假等等)。你能够使用你习惯任何名称或ID号,不过她们必需符合以下其中一个格式(真实ID必需要包含在<和>标识里):<ci-pany.org>
Build Notifications <ci-pany.org>
“Build Notifications” <ci-pany.org>
4. Add 'Precedence: bulk' Email Header:设置优先级,
5. Default Recipients:自定义默认电子邮件收件人列表。假如没有被项目配置覆盖,该插件会使用这个列表。您能够在项目配置使用$ DEFAULT_RECIPIENTS参数包含此默认列表,和添加新地址在项目等级。添加抄送:cc:电子邮件地址比如,CC:
6. Reply To List:回复列表, A comma separated list of e-mail addresses to use in the Reply-To header of the email. This value will be available as $DEFAULT_REPLYTO in the project configuration.
7. Emergency reroute:假如这个字段不为空,全部电子邮件将被单独发送到该地址(或地址列表)。
8. Excluded Committers:预防邮件被邮件系统认为是垃圾邮件,邮件列表应该没有扩展账户名(如:@),而且使用逗号分隔
9. Default Subject:自定义邮件通知默认专题名称。该选项能在邮件专题字段中替换部分参数,这么你就能够在构建中包含指定输出信息。
10. Maximum Attachment Size:邮件最大附件大小。
11. Default Content:自定义邮件通知默认内容主体。该选项能在邮件内容中替换部分参数,这么你就能够在构建中包含指定输出信息。
12. Default Pre-send Script:默认发送前实施脚本(注:grooy脚本,这是我在某篇文章上看到,不一定正确)。
13. Enable Debug Mode:启用插件调试模式。这将增加额外日志输出,构建日志和Jenkins日志。在调试时是有用,但不能用于生产。
14. Enable Security:启用时,会禁用发送脚本能力,直接进入Jenkins实例。假如用户试图访问Jenkins管理对象实例,将抛出一个安全异常。
15. Content Token Reference:邮件中能够使用变量,全部变量全部是可选。
2、项目配置
1)要想在一个项目中使用email-ext插件,你首先必需在项目配置页激活它。在构建后操作——”Add Post-build Actions”选项中勾选”Editable Email Notification”标签。以下图:
项目基础配置参数说明:
当插件激活后你就能编辑以下字段(只列出常见字段):
Project Recipient List:这是一个以逗号(或空格)分隔收件人邮件邮箱地址列表。许可您为每封邮件指定单独列表。Ps:假如你想在默认收件人基础上添加收件人:$DEFAULT_RECIPIENTS,<新收件人>
Default Subject:许可你配置此项目邮件专题。
Default Content:跟Default Subject作用一样,不过是替换邮件内容。
Attach Build Log:附件构建日志。
Compress Build Log before sending:发送前压缩生成日志(zip格式)。
2)点击高级,设置触发器:(注意:全部触发器全部只能配置一次)
触发器参数说明:
Failure:即时发送构建失败邮件。假如”Still Failing”触发器已配置,而上一次构建状态是”Failure”,那么”Still Failing”触发器将发送一封邮件来替换(它)。
Unstable:即时发送构建不稳固邮件。假如”Still Unstable”触发器已配置,而上一次构建状态是”Unstable”,那么”Still Unstable”触发器将发送一封邮件来替换(它)。
Still Failing:假如两次或两次以上连续构建状态为”Failure”,发送该邮件。
Success:假如构建状态为”Successful”发送邮件。假如”Fixed”已配置,而上次构建状态为“Failure”或“Unstable”,那么”Fixed”触发器将发送一封邮件来替换(它)。
Fixed:当构建状态从“Failure”或“Unstable”变为”Successful”时发送邮件。
Still Unstable:假如两次或两次以上连续构建状态为” Unstable “,发送该邮件。
Before Build:当构建开始时发送邮件。
对于内容,你可能注意到了 这里调用了个 ‘html.jelly’ 模板,这是插件内置,直接用即可。
当然也能够自己写 jelly文件, 确保放置 jenkins/home/email-template下 以供jenkins调用。
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>${ENV, var="JOB_NAME"}-第${BUILD_NUMBER}次构建日志</title>
</head>
<body leftmargin="8" marginwidth="0" topmargin="8" marginheight="4"
offset="0">
<table width="95%" cellpadding="0" cellspacing="0"
style="font-size: 11pt; font-family: Tahoma, Arial, Helvetica, sans-serif">
<tr>
<td>(本邮件是程序自动下发,请勿回复!)</td>
</tr>
<tr>
<td><h2>
<font color="#0000FF">构建结果 - ${BUILD_STATUS}</font>
</h2></td>
</tr>
<tr>
<td><br />
<b><font color="#0B610B">构建信息</font></b>
<hr size="2" width="100%" align="center" /></td>
</tr>
<tr>
<td>
<ul>
<li>项目名称 : ${PROJECT_NAME}</li>
<li>构建编号 : 第${BUILD_NUMBER}次构建</li>
<li>SVN 版本: ${SVN_REVISION}</li>
<li>触发原因: ${CAUSE}</li>
<li>构建日志: <a href="${BUILD_URL}console">${BUILD_URL}console</a></li>
<li>构建 Url : <a href="${BUILD_URL}">${BUILD_URL}</a></li>
<li>工作目录 : <a href="${PROJECT_URL}ws">${PROJECT_URL}ws</a></li>
<li>项目 Url : <a href="${PROJECT_URL}">${PROJECT_URL}</a></li>
</ul>
</td>
</tr>
<tr>
<td><b><font color="#0B610B">Changes Since Last
Successful Build:</font></b>
<hr size="2" width="100%" align="center" /></td>
</tr>
<tr>
<td>
<ul>
<li>历史变更统计 : <a href="${PROJECT_URL}changes">${PROJECT_URL}changes</a></li>
</ul> ${CHANGES_SINCE_LAST_SUCCESS,reverse=true, format="Changes for Build #%n:<br />%c<br />",showPaths=true,changesFormat="<pre>[%a]<br />%m</pre>",pathFormat=" %p"}
</td>
</tr>
<tr>
<td><b>Failed Test Results</b>
<hr size="2" width="100%" align="center" /></td>
</tr>
<tr>
<td><pre
style="font-size: 11pt; font-family: Tahoma, Arial, Helvetica, sans-serif">$FAILED_TESTS</pre>
<br /></td>
</tr>
<tr>
<td><b><font color="#0B610B">构建日志 (最终 100行):</font></b>
<hr size="2" width="100%" align="center" /></td>
</tr>
<!-- <tr>
<td>Test Logs (if test has ran): <a
href="${PROJECT_URL}ws/TestResult/archive_logs/Log-Build-${BUILD_NUMBER}.zip">${PROJECT_URL}/ws/TestResult/archive_logs/Log-Build-${BUILD_NUMBER}.zip</a>
<br />
<br />
</td>
</tr> -->
<tr>
<td><textarea cols="80" rows="30" readonly="readonly"
style="font-family: Courier New">${BUILD_LOG, maxLines=100}</textarea>
</td>
</tr>
</table>
</body>
</html>
4.4.10. 用户权限配置
1、安装用户管理插件Role-based Authorization Strategy
2、配置用户登录才能够操作
系统管理--Configure Global Security
2、项目矩阵授权策略
4.5. 安装sonarQube
4.5.1. 版本说明
目前最新版本6.4
4.5.2. 下载安装包
,目前版本是6.4。
解压后上传到服务器对应位置,如:/opt/目录下
4.5.3. 安装汉字包
下载对应版本汉字包,
本例子使用sonar-l10n-zh-plugin-1.16版本,将语言包放在/extensions/plugins/下,重启即可。
4.5.4. 创建数据库
create database sonar character set utf8 collate utf8_general_ci;
create user sonar identified by 'sonar';
grant all on sonar .* to sonar ;
flush privileges;
4.5.5. 修改配置文件
修改config下sonar.conf文件,数据库连接信息、https设置等
1、数据库连接mysql
sonar.jdbc.username=sonar
sonar.jdbc.password=sonar
sonar.jdbc.url=jdbc:mysql://localhost:3306/sonar?useUnicode=true&characterEncoding=utf8&rewriteBatchedStatements=true&useConfigs=maxPerformance&useSSL=false
2、端口
sonar.web.port=9000
3、设置登录账号密码
sonar.web.port=9000
4、配置环境变量
#vi /etc/profile 添加
export SONAR_HOME=/opt/sonarqube-6.4
#source /etc/profile
4.5.6. 服务开启停止
1、进入sonar bin目录如bin/linux-x86-64,运行以下命令:
./sonar.sh restart 重启服务
2、其它常见命令以下:
./sonar.sh stop 停止服务
./sonar.sh start 开启服务
3、设置随机开启。
4.5.7. 测试
第一次开启会比较慢,需要初始化数据库数据
http://IP:9000
admin/admin
4.6. 安装SonarQube Scanner
4.6.1. 版本说明
sonar-scanner-cli-3.0.3.778-linux.zip
4.6.2. 下载安装包
解压后上传到/opt目录下。
4.6.3. 配置scanner
见conf目录下sonar-scanner.properties文件。默认是连接当地sonar服务。
4.6.4. Jenkins配置Scanner
1)系统管理--Global Tool Configuration--SonarQube Scanner
4.6.5. 安装sonarQube插件
1、 在Jenkins插件管理中添加SonarQube Scanner for Jenkins,点击安装即可。
2、 配置sonarQube
1)系统管理--系统设置
分别输入sonarQube名称、服务器URL、服务器认证令牌(见下面生成令牌方法)。
获取令牌方法
登录sonarQube,菜单–》配置–》权限–》用户–》TOKENS–》Generate 生成token,将 生成token添加到此处,完成添加
5. 创建项目
5.1. 项目基础情况
5.2. 源码管理
在Credentials点击Add,创建SVN连接账号
5.3. 构建触发器
触发器
说明
备注
构建一个SNAPSHOT依靠关系构建
当job依靠快照版本被build时,实施本job
触发远程结构
Build after other projects are built
当本job依靠job被build时,实施本job
Build periodically
隔一段时间build一次,不管版本库代码是否发生改变,通常不会采取此种方法。
比如:示例:H 8 * * 1-5
星期一到星期五8点定时实施构建。
第一个参数代表是分钟 minute,取值 0~59;
第二个参数代表是小时 hour,取值 0~23;
第三个参数代表是天 day,取值 1~31;
第四个参数代表是月 month,取值 1~12;
最终一个参数代表是星期 week,取值 0~7,0 和 7 全部是表示星期天。
所以 0 * * * * 表示就是每个小时第 0 分钟实施一次构建。
Poll SCM
依据SCM软件版本号,定时检验源码变更。假如有更新,则checkout最新code,然后实施构建动作。不然,不进行build,通常采取这种方法
示例:H/5 * * * *
每五分钟去检验一下远程仓库,看代码是否发生改变。
5.4. 构建环境配置
5.5. 配置sonarQube
1、构建环境配置
2、配置sonar
Analysis properties
# Root project information
#每一个项目key必需不相同
sonar.projectKey=console
#显示在sonar上名字
sonar.projectName=console
#项目标版本
sonar.projectVersion=1.0
sonar.sourceEncoding=UTF-8
sonar.language=java
# Some properties that will be inherited by the modules
#sonar.sources=src
sonar.sources=.
#----- Default directory layout
sonar.java.source=1.8
sonar.java.target=1.
展开阅读全文