美文网首页
Jenkins Svn 项目构建

Jenkins Svn 项目构建

作者: Canon_2020 | 来源:发表于2019-06-29 11:16 被阅读0次
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>项目名称&nbsp;:&nbsp;${PROJECT_NAME}</li>
                    <li>构建编号&nbsp;:&nbsp;第${BUILD_NUMBER}次构建</li>
                    <li>SVN&nbsp;版本:&nbsp;${SVN_REVISION}</li>
                    <li>触发原因:&nbsp;${CAUSE}</li>
                    <li>构建日志:&nbsp;<a href="${BUILD_URL}console">${BUILD_URL}console</a></li>
                    <li>构建&nbsp;&nbsp;Url&nbsp;:&nbsp;<a href="${BUILD_URL}">${BUILD_URL}</a></li>
                    <li>工作目录&nbsp;:&nbsp;<a href="${PROJECT_URL}ws">${PROJECT_URL}ws</a></li>
                    <li>项目&nbsp;&nbsp;Url&nbsp;:&nbsp;<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:触发邮件发送的条件

  1. Success:构建成功后发送
  2. Failure-Any:构建失败后发送

5.11 手动执行构建



5.12 构建后发送结果邮件

6、项目定时备份

6.1 General 设置

6.2 设置构建参数

Choice:参数下拉框

  1. All: 备份下面所有项目
  2. PaymentGateway:支付网关
  3. AutoCheckInterface:对账平台
  4. AdminSystem:管理后台
  5. 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>项目名称&nbsp;:&nbsp;${PROJECT_NAME}</li>
                    <li>构建编号&nbsp;:&nbsp;第${BUILD_NUMBER}次构建</li>
                    <li>触发原因:&nbsp;${CAUSE}</li>
                    <li>构建日志:&nbsp;<a href="${BUILD_URL}console">${BUILD_URL}console</a></li>
                    <li>构建&nbsp;&nbsp;Url&nbsp;:&nbsp;<a href="${BUILD_URL}">${BUILD_URL}</a></li>
                    <li>工作目录&nbsp;:&nbsp;<a href="${PROJECT_URL}ws">${PROJECT_URL}ws</a></li>
                    <li>项目&nbsp;&nbsp;Url&nbsp;:&nbsp;<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 构建后发送结果邮件

相关文章

网友评论

      本文标题:Jenkins Svn 项目构建

      本文链接:https://www.haomeiwen.com/subject/osiucctx.html