写点什么

DevOps 进阶 (四):Jenkins 实战之构建定时项目与远程触发器

  • 2022 年 2 月 16 日
  • 本文字数:1574 字

    阅读完需:约 5 分钟

DevOps进阶(四):Jenkins 实战之构建定时项目与远程触发器

一、前言

在执行Jenkins的项目构建的时候,一般都是通过 web 管理界面中的”构建”来执行项目构建操作,但是除此之外我们还可以通过项目配置中的”构建触发器”来触发构建操作,其中”构建触发器”有一种方式是通过配置令牌远程触发项目构建。

二、构建 Jenkins 构建触发器(定时构建项目)

一、在任务设置-构建触发器模块,选中“Build periodically



二、然后在日程表里输入你的定时构建时间,输入的时间语法参考如下:


  1. 时间字段遵循cron的语法,每行由 TAB 或空格分隔的 5 个字段组成:MINUTE HOUR DOM MONOW DOW


  • 分钟:小时内的分钟数(0-59)

  • 小时 :一天中的小时(0-23)

  • DOM:月份的日子(1-31)

  • 月 :月份(1-12)

  • DOW:星期几(0-7),其中 0 和 7 是星期天。


  1. 要为一个字段指定多个值,可以使用以下运算符。按照优先顺序,


  • * 指定所有有效的值

  • M-N 指定一个值的范围;

  • M-N/X或者*/X通过指定范围或整个有效范围的 X 的间隔步进;

  • A,B,…,Z 枚举多个值;


为了允许定期安排的任务在系统上产生负载,H 应尽可能使用符号(对于“散列”)。例如,0 0 * * 十几个日常工作会在午夜时间造成大量的高峰。相比之下,使用H H * *仍然会每天执行一次,但不是同时执行,能够更好地使用有限的资源。


H符号可以与范围一起使用。例如,H H(0-7) * * * 意味着从凌晨 12:00 到凌晨 7:59 之间的某个时间。也可以使用 H 带或不带范围的步长间隔。


该 H 符号可以被认为是一个范围内的随机值,但它实际上是作业名称的散列,而不是随机函数,因此对于任何给定的项目,该值都保持稳定。


请注意,对于月份的日期,由于月份长度可变,因此在大多数月份结束时,短周期(例如/3H/3不会一致)都会一直工作。例如,/3将在一个月的第 1,4,… 31 天运行,然后再在下个月的第二天运行。哈希总是选在 1-28 范围内,所以H/3在一个月的月底之间会产生 3 到 6 天的间隔。(更长的周期也会有不一致的长度,但效果可能相对不那么明显)。


以空格开头的空 #行将被忽略为注释。


  1. 此外,@yearly,@annually,@monthly, @weekly,@daily,@midnight,并且@hourly也支持方便的别名。这些使用哈希系统进行自动平衡。例如,在一小时内的任何时间@hourly都是一样的H * * * *@midnight实际上是指从 12:00 2:59 AM 之间的一段时间。


另外,Poll SCM:定时行的执行,源码有变化才会执行 比如配置:*/10 * * * * 这样配置就会 10 分钟去检查 svn 是否有新源码,有就 checkout,构建,没有就继续去潇洒,10 分钟后再回来检查。4. 例子:


a. 每十五分钟(也许在:07,:22,:37,:52)


H / 15 * * * *
复制代码


b、每小时上半场每十分钟一班(三次,也许是:04,:14,:24)


H(0-29)/ 10 * * * *
复制代码


c、从上午 9:45 开始每小时 45 分钟,每个工作日下午 3:45 结束,每两小时一次。


45 9-16 / 2 * * 1-5
复制代码


d、每个工作日上午 9 点到下午 5 点之间,每两小时一次(也许在上午 10:38,下午 12:38,下午 2:38,下午 4:38)


HH(9-16)/ 2 * * 1-5
复制代码


e、12 月份以外的每月 1 日和 15 日每天一次


HH 1,15 1-11 *
复制代码


f、每 10 分钟构建一次:H/10 * * * **/10 * * * *g、每天 8 点构建一次:0 8 * * *h、每天 8 点~17 点,两小时构建一次:0 8-17/2 * * *i、周一到周五,8 点~17 点,两小时构建一次:0 8-17/2 * * 1-5j、1-6 月中每月 1 号、30 号各构建一次:H H 1,30 1-6 *k、每周 7 天从 9:10 点到 20:10 每隔一小时构建一次:10 9-20 * * 1-7

三、构建远程触发器

要启用Token(令牌)远程触发项目构建首先要保证Jenkins服务安装了build-token-root 插件,并且配置了Jenkins的身份验证(不是必须)。


打开项目的配置,设置令牌:



在浏览器中输入:


http://IP:8080/jenkins/job/项目名/build?token=123456;就可以出发自动构建了。


另外,我们也可以使用curl命令进行触发:


首先,在全局安全配置关掉一个安全设置。


然后用 curl 访问进行触发:‘


curl -s -u admin:password -X POST http://IP:port/jenkins/job/项目名/build?token=123456
复制代码


四、拓展阅读


发布于: 刚刚阅读数: 3
用户头像

No Silver Bullet 2021.07.09 加入

岂曰无衣 与子同袍

评论

发布
暂无评论
DevOps进阶(四):Jenkins 实战之构建定时项目与远程触发器