Jenkins构建细节

Jenkins构建细节

一、常用的构建触发器介绍

Jenkins内置4种构建触发器:

  • 触发远程构建
  • 其他工程构建后触发(Build after other projects are build)
  • 定时构建(Build periodically)
  • 轮询SCM(Poll SCM)

二、构建触发器使用

在这里插入图片描述

1.触发远程构建

1.1设置token,最好加密

在这里插入图片描述

1.2访问URL触发构建

触发构建url

http:/jenkins地址/job/test03_pipeline01/build?token=66666

触发构建页面不会显示任何信息
在这里插入图片描述

1.3构建成功!

这时查看 就会发现已经产生构建行为!
在这里插入图片描述

2.其他工程构建后触发

意思就是当有其他工程构建后,会直接触发这个工程构建

2.1创建pre_job流水线工程

什么工程都可以,我们这里选择的是自由工程
在这里插入图片描述
在这里插入图片描述

2.2配置需要触发的工程

这里填写我们刚刚创建工程,点击保存
在这里插入图片描述

2.3测试时候构建成功

构建pre_job项目,测试是否会触发test03_pipeline01项目的构建
在这里插入图片描述
这时候我们看到pre_job构建成功后,test03_pipeline01项目也随之触发
在这里插入图片描述

2.4测试成功

在这里插入图片描述

3.定时构建

在这里插入图片描述
定时字符串从左往右分别为: 分 时 日 月 周
一些定时表达式的例子:

每30分钟构建一次:H代表形参 H/30 * * * * 10:02 10:32
每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

3.1设置定时表达式

H/2 * * * *

在这里插入图片描述

3.2等待两分钟后构建成功

在这里插入图片描述

4.轮询SCM

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

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

4.1选择构建触发器

在这里插入图片描述

4.2 配置触发表达式

在这里插入图片描述

4.3测试是否生效

测试结果,等待了两分钟,依然没有触发构建项目
原因:仓库的项目没有发生变化,就不会构建。

4.3.1提交新的代码

在这里插入图片描述

4.3.2代码发生变化后等待两分钟看结果

成功!
在这里插入图片描述

三、Git hook自动触发构建

刚才我们看到在Jenkins的内置构建触发器中,轮询SCM可以实现Gitlab代码更新,项目自动构建,但是该方案的性能不佳。那有没有更好的方案呢?
有的。就是利用Gitlab的webhook实现代码push到仓库,立即触发项目自动构建。
在这里插入图片描述

1.安装Gitlab Hook插件

需要安装两个插件:
Gitlab Hook和GitLab
在这里插入图片描述
在这里插入图片描述

2.Jenkins设置自动构建

2.1项目开启触发器构建

在这里插入图片描述

2.2Gitlab配置webhook

2.2.1开启webhook功能

使用root账户登录到后台,点击Admin Area -> Settings -> Network
勾选"Allow requests to the local network from web hooks and services"
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2.2.2开启指定的项目

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
放入到这里点击add webhook
在这里插入图片描述

在这里插入图片描述
选择触发事件为:push events
在这里插入图片描述
提示403,没有权限
在这里插入图片描述

2.2.3设置Jenkins的hook信息
2.2.3.1点击系统配置

在这里插入图片描述

2.2.3.2关闭Jenkins的hook的验证

在这里插入图片描述

2.2.4在gitLab重新验证

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

四、Jenkins的参数化构建

如果没有请下载插件 git-parameter
有时在项目构建的过程中,我们需要根据用户的输入动态传入一些参数,从而影响整个构建结果,这时我们可以使用参数化构建。
Jenkins支持非常丰富的参数类型
在这里插入图片描述

1.通过通过输入gitlab项目的分支名称来部署不同分支项目

1.1项目创建分支,并推送到Gitlab上

在这里插入图片描述

1.1.1新建分支

在这里插入图片描述
在这里插入图片描述

1.1.2修改一下描述

在这里插入图片描述

1.1.3Push到v1分支上

在这里插入图片描述

1.1.4检查gitlab的项目已经新建一个分支了

在这里插入图片描述

1.2 在Jenkins添加字符串类型参数

在这里插入图片描述

1.3改动pipeline流水线代码

1.3.1改为动态取值

在这里插入图片描述

1.3.2提交修改后的构建文件

在这里插入图片描述

1.3.3变成参数构建了

在这里插入图片描述
在这里插入图片描述

1.4测试

1.4.1设置构建构建分支

在这里插入图片描述

1.4.2 构建成功

在这里插入图片描述

五、配置邮箱服务器发送构建结果

1.安装Email Extension Template插件

在这里插入图片描述
在这里插入图片描述

2.Jenkins设置邮箱相关参数

2.1开启邮箱对应的smtp功能

在这里插入图片描述

2.2设置邮件参数

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

2.3准备邮件内容

2.3.1在项目下编写模板

在这里插入图片描述

<!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, sansserif">
    <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>

2.3.2上传到gitlab

在这里插入图片描述

2.3.3关于模板的全局变量

在这里插入图片描述
在这里插入图片描述

2.4编写Jenkinsfile添加构建后发送邮件

2.4.1设置邮箱发送

post:是构建后操作
always:是指构建行为以外的
post 写在stages之外

post {
         always {
                emailext(
                     subject: '构建通知:${PROJECT_NAME} - Build # ${BUILD_NUMBER} - ${BUILD_STATUS}!',
                     body: '${FILE,path="email.html"}',
                     to: 'xxx@qq.com'
                    )
              }
         }

在这里插入图片描述
上传到服务器

在这里插入图片描述

2.4.2邮箱发送代码可参考

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3.测试结果

3.1构建项目

在这里插入图片描述

3.2发送邮件成功

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值