1、Jenkins 简介
Jenkins是一个开源软件项目,是基于Java开发的一种持续集成工具,用于监控持续重复的工作,提供一个开放易用的软件平台,对软件进行持续集成。广泛用于项目开发,具有自动化构建、测试和部署等功能。
2、部署环境
测试服务器: 192.168.xxx.1
服务器系统: CentOS Linux release 7.2.1511 (Core)
相关软件: jdk1.7.0_181 + tomcat + Jenkins
3、使用环境
操作系统: windows 7
Jenkins版本: Jenkins 2.176
Jenkins登录地址:http://192.168.xxx.1:8080/jenkins
浏览器:Chrome 66.0.3359.139
4、Jenkins全局设置
Jenkins(系统管理 -> 系统设置)
Jenkins URL: 指定安装Jenkins的HTTP地址
SMTP server:邮件服务器
Default user E-mail suffix:邮箱后缀
Use SMTP Authentication:使用 SMTP 用户认证
User Name:发件人用户名
Password:开通 IMAP/SMTP服务后的授权码
Use SSL:使用 SSL 协议
SMTP port:邮箱服务器端口号
Charset:编码格式
1、Additional accounts:附加的账号
2、Default Content Type:邮件内容格式
3、Use List-ID Email Header:在所有邮件上设置List-ID的邮件信头,可以阻止大多数自动回复邮件
4、Add 'Precedence: bulk' Email Header:设置优先级, 可以阻止大多数自动回复邮件
5、Default Recipients: 默认接收人邮箱
Reply To List:回复邮箱列表(多个回复邮箱,用逗号隔开)
6、Emergency reroute:如果这个字段不是空的,所有的电子邮件将被单独发送到这个地址
7、Excluded Recipients:过滤接收人邮箱
8、Default Subject:默认的邮件标题
Maximum Attachment Size:最大附件数量
9、Default Content:默认邮件内容
全局设置了之后,在构建任务时,直接使用默认的邮件参数
<!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">最后一次成功构建后的修改记录:</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>
</td>
</tr>
<tr>
<td><b><font color="#0B610B">构建日志 (最后 100行):</font></b>
<hr size="2" width="100%" align="center" /></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>
5、构建任务
5.1 创建构建项目
5.2 General 设置
5.3 设置构建参数
Repository URL: 获取svn 源码的二级目录
支付网关:svn://192.168.xxx.1/repos/CCPS/release/PaymentGateway
管理后台:svn://192.168.xxx.1/repos/CCPS/release/AdminSystem
对账后台:svn://192.168.xxx.1/repos/CCPS/release/AutoCheckInterface
账户后台:svn://192.168.xxx.1/repos/CCPS/release/New
Credentials: 用户&密码
Maximum tags to display:下拉框显示的数量
Sort newest first:排序,显示最新的名称
// Default Groovy Script:
// 默认 Groovy 脚本,获取当前日期(格式为:20180101)
import java.util.Date
import java.text.DateFormat
import java.text.SimpleDateFormat
SimpleDateFormat sdf=new SimpleDateFormat("yyyyMMdd");
String strCurrentTime= sdf.format( new Date());
return strCurrentTime;
5.4 设置工作空间
目录:svn拉取代码放置的路径
支付网关:/home/weblogic/AutoBuild/UpdateDir/PaymentGateway
管理后台:/home/weblogic/AutoBuild/UpdateDir/AdminSystem
对账后台:/home/weblogic/AutoBuild/UpdateDir/AutoCheckInterface
账户后台:/home/weblogic/AutoBuild/UpdateDir/NewMerchantSystem
5.5 设置源码管理
Repository URL: svn 拉取源码路径
支付网关:
svn://192.168.xxx.1/repos/CCPS/release/PaymentGateway/$Year/$Date@HEAD
管理后台:
svn://192.168.xxx.1/repos/CCPS/release/AdminSystem/$Year/$Date@HEAD
对账后台:
svn://192.168.xxx.1/repos/CCPS/release/AutoCheckInterface/$Year/$Date@HEAD
账户后台:
svn://192.168.xxx.1/repos/CCPS/release/New/$Year/$Date@HEAD
黄色警告提示是由于url中存在参数,不会检查url是否有效,直接忽略,不影响拉取svn的代码
5.6 执行构建脚本
jenkins 中通过 execute shell 启动 tomcat 无法启动
(需要添加 BUILD_ID=DONTKILLME )
原因是:在 jenkins 中配置自动更新部署项目时,如果采取用 execute shell 启动/关闭 tomcat,会发现可以进行关闭 tomcat,但是无法启动 tomcat,虽然构建会显示执行成功,但是查看进程,tomcat是没有启动的。这是因为 Jenkins 默认会在 Build 结束后 Kill 掉所有的衍生进程
// 参数1 :PaymentGateway.zip (更新包)
// 参数2 :PaymentGateway (拉取svn源码的文件夹名称)
// 参数3 : /home/weblogic/tomcat-PG/webapps (更新的路径)
python /home/weblogic/AutoBuild/PyScript/update_pack.py 参数1 参数2 参数3 (支付网关)
// jenkins 中通过 execute shell 启动 tomcat 无法启动
BUILD_ID=DONTKILLME
// 重启 tomcat
// 参数1:tomcat-PG (系统中存在的tomcat名称)
python /home/weblogic/AutoBuild/PyScript/start_tomcat.py 参数1
5.7 Python 脚本
Shell 可以使用单引号强制转义字符串中的特殊字符,但字符串中不能出现单引号
update_pack.py 文件
start_tomcat.py 文件
5.8 构建错误日志
没有 tomcat 进程导致报错
Execute Shell 命令错误
// 管理后台:
python /home/weblogic/AutoBuild/PyScript/update_pack.py AdminSystem.zip AdminSystem /home/weblogic/tomcat-AS/webapps
BUILD_ID=DONTKILLME
python /home/weblogic/AutoBuild/PyScript/start_tomcat.py tomcat-AS
// 对账后台:
python /home/weblogic/AutoBuild/PyScript/update_pack.py AutoCheckInterface.zip AutoCheckInterface /home/weblogic/tomcat-AC/webapps
BUILD_ID=DONTKILLME
python /home/weblogic/AutoBuild/PyScript/start_tomcat.py tomcat-AC
// 账户后台:
python /home/weblogic/AutoBuild/PyScript/update_pack.py New.zip NewMerchantSystem /home/weblogic/tomcat-NMS/webapps
BUILD_ID=DONTKILLME
python /home/weblogic/AutoBuild/PyScript/start_tomcat.py tomcat-NMS
5.9 设置发送邮件内容
Project Recipient List:收件人邮箱列表(多个收件人,换行填写)
Project Reply-To List:回复邮箱(一般此类邮件都不回复,默认为空)
Content Type:邮件内容类型
Default Subject:默认邮件标题
Default Content:默认邮件的内容
Attachments:附件(路径是基于当前任务的工作路径(自定义的工作空间), 多个附件用逗号隔开)
Attach Build Log:附带构建日志(默认是不附带)
5.10 设置触发邮件条件
Triggers:触发邮件发送的条件
- Success:构建成功后发送
- Failure-Any:构建失败后发送
5.11 手动执行构建
5.12 构建后发送结果邮件
6、项目定时备份
6.1 General 设置
6.2 设置构建参数
Choice:参数下拉框
- All: 备份下面所有项目
- PaymentGateway:支付网关
- AutoCheckInterface:对账平台
- AdminSystem:管理后台
- NewMerchantsystem:账户后台
6.3 设置定时构建
构建触发器:
Build periodically:定时构建
6.4 执行构建脚本
构建:
// 每日备份项目脚本
python /home/weblogic/AutoBuild/PyScript/daily_backup.py $Program
6.5 设置发送邮件内容
<!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>触发原因: ${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">最后一次成功构建后的修改记录:</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>
</td>
</tr>
<tr>
<td><b><font color="#0B610B">构建日志 (最后 100行):</font></b>
<hr size="2" width="100%" align="center" /></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>
6.6 手动执行构建
6.7 构建后发送结果邮件
网友评论