暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Jenkins常用构建触发器的介绍与使用及其参数化构建与邮件通知的配置

风雪留客 2020-09-02
1376

一. 什么是构建触发器

说白了就是在什么时间,什么条件下去触发构建.

二. Jenkins内置的4种构建触发器

  1. 触发远程构建

  2. 其他工程构建后触发(Build after other projects are build)

  3. 定时构建(Build periodically)

  4. 轮询SCM(Poll SCM)

接下来让我们来一一认识与使用:

三. Jenkins四种内置触发器的介绍与使用.

1. 触发远程构建:

⑴. 设置触发远程构建:

⑵. 触发方式:

如何触发呢?其实已经提示给我们了,就在身份验证令牌填写的下面,有几行英文,大致意思就是我们需要访问对应的链接来触发远程构建:

#格式:
JENKINS_URL/job/web-demo-pipeline/build?token=TOKEN_NAME 或者 /buildWithParameters?token=TOKEN_NAME
#例如:
http://192.168.31.100:8888/job/web-demo-pipeline/build?token=1433223
⑶. 访问测试:

让我们在浏览器打开这个链接,然后返回页面查看效果.

成功触发构建:

⑷.总结:

当我们设置触发远程构建之后,Jenkins会生成一个对应的URL,当这个URL被访问的时候,Jenkins会自动触发构建.

1.Build after other projects are built( 其他工程构建后触发):

⑴. 介绍:

就是说我们发布项目的时候,如果本次项目需要在其他工程构建完成之后自动构建,可选择此项.

⑵. 创建前置项目:

⑶. 设置构建脚本:

⑷. 配置其他工程构建后触发:

⑸. 对前置工程进行构建:

⑹. 返回之前的项目查看变化:

已经完成项目的构建.

3. 定时构建

⑴. 介绍:

定时构建就是每隔多长时间构建一次项目,下图定时字符串从左往右分别为:分 时 日 月 周

⑵. 示例:
#-------H代表形参,0代表整点,采用24小时制--------#
#每30分钟构建一次:
H/30 * * * *
#每2个小时构建一次:
H H/2 * * *
#每天的8点,12点,22点,一天构建3次:(多个时间点中间用逗号隔开)
0 8,12,22 * * *
#每天中午12点定时构建一次
H 12 * * *
#每天下午18点定时构建一次
H 18 * * *
#在每个小时的前半个小时内的每10分钟
H(0-29)/10 * * * *
#每两小时一次,每个工作日上午9点到下午5点(也许是上午10:38,下午12:38,下午2:38,下午
4:38)
H H(9-16)/2 * * 1-5
⑶. 配置定时构建:

⑷. 查看效果:

4. 轮询SCM:

⑴. 介绍:

轮询SCM,是指定时扫描本地代码仓库的代码是否有变更,如果代码有变更就触发项目构建。

⑵. 配置:

⑶. 总结:

注意:轮询SCM触发器,Jenkins会定时扫描本地整个项目的代码,增大系统的开销,不建议使用。

四. 其他触发器:

1. hook自动触发构建

刚才我们看到在Jenkins的内置构建触发器中,轮询SCM可以实现代码更新,项目自动构建,但是该方案的性能不佳。那有没有更好的方案呢?有的。就是利用webhook实现代码push到仓库,立即触发项目自动构建。本文便用码云的webhook来实现自动构建.

⑴. 安装gitee插件:

因我们本次项目基于码云进行操作,故需要安装一个gitee插件:

关于此插件之码云官方文档:
https://gitee.com/help/articles/4193#article-header5

⑵. 插件配置:
①. 添加码云链接配置:

前往 Jenkins -> Manage Jenkins -> Configure System -> Gitee Configuration -> Gitee connections:
在 Connection name 中输入 Gitee 或者你想要的名字
Gitee host URL 中输入码云完整 URL地址:https://gitee.com
如下图:

如果Jenkins 中如还未配置码云 APIV5 私人令牌,按照下图进行配置:
如果你没有申请码云私人令牌,可以点击下面地址进行获取:
获取地址:https://gitee.com/profile/personal_access_tokens

②. 配置构建触发器:

③. 生成Gitee WebHook 密码:

④. 在码云中添加WebHook:


⑤. 配置完成码云会发送一条测试请求:

⑥. 查看项目是否完成了构建:

⑶. 测试:
①. 测试更新代码能否完成构建:



五. Jenkins的参数化构建:

⑴. 介绍:

有时在项目构建的过程中,我们需要根据用户的输入动态传入一些参数,从而影响整个构建结果,比如我们需要根据不同的参数来完成对不同分支的构建,这时我们可以使用参数化构建。
Jenkins支持非常丰富的参数类型:

⑵. 创建一个字符串参数:

创建一个字符串参数:String Parameter

⑶. 添加完之后会在菜单中多出 Build with Parameters选项:

⑷. 修改脚本:

K值为你定义的String Parameter名称:

⑸. 创建新分支:
#创建并进入test分支
git checkout -b test
#提交到暂存区
git add .
#提交到本地的版本库
git commit -m '创建测试分支'
#推送代码到test分支:
git push origin test
⑹. 测试:


六. 配置邮箱服务器发送构建结果:

⑴. 安装Email Extension插件:

⑵. 安装Email Extension Template插件:

⑶. Jenkins设置邮箱相关参数

Manage Jenkins->Configure System:

⑷. 设置邮件参数:

⑸. 配置邮件通知:

⑹. 测试:

⑺. 准备邮件内容:

在项目根目录编写email.html,并把文件推送到码云,内容如下:

<!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">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="&nbsp;&nbsp;&nbsp;&nbsp;%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><textarea cols="80" rows="30" readonly="readonly"
style="font-family: Courier New">${BUILD_LOG, maxLines=100}</textarea>
</td>
</tr>
</table>
</body>
</html>
⑻. 查看邮件中变量的对应含义:

⑼. 编写Jenkinsfile添加构建后发送邮件:

下文脚本中post代表构建后所需要操作的脚本,且更够根据stage的构建结果执行不同的脚本,always代表无论成功或者失败,都执行脚本.

pipeline {
agent any




stages {
stage('拉取代码') {
steps {
checkout([$class: 'GitSCM', branches: [[name: '*/${branch}']], doGenerateSubmoduleConfigurations: false, extensions: [], submoduleCfg: [], userRemoteConfigs: [[credentialsId: 'ef0f4ce0-c68a-4607-9e25-21c38c50442f', url: '此处填写你的git地址']]])
echo '拉取代码成功'
}




}
stage('构建项目') {
steps {
sh 'mvn clean package'
echo '构建项目成功'
}




}
stage('项目部署') {
steps {
deploy adapters: [tomcat8(credentialsId: '40de4b9b-71f8-4514-8694-2307daa9963f', path: '', url: 'http://192.168.31.101:8080')], contextPath: null, war: 'target/*.war'
echo '项目部署成功'
}




}
}
post {
//always 无论成功或者失败都执行下面的脚本
always {
emailext(
//subject邮件标题 PROJECT_NAME:项目名 BUILD_NUMBER:构建次数 BUILD_STATUS 构建状态
subject: '构建通知:${PROJECT_NAME} - Build # ${BUILD_NUMBER} - ${BUILD_STATUS}!',
//body内容,可以直接在body写,也可以写成成下面的形式进行读取
body: '${FILE,path="email.html"}',
//to 收件人,多个用逗号隔开
to: '收件人邮箱'
)
}
}
}

如果你想了解可以在代码生成器中了解更多:

⑽. 同步代码到码云,并开始构建:


文章转载自风雪留客,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论