jenkins04-构建触发器

麦恒 / 2023-09-10 / 原文

  • Jenkins自动化是指项目按照一定的规则自动执行,这些规则被称为项目触发条件。
  • 对于触发条件,可以从两个维度来区分:时间触发和事件触发。

时间触发是指定义一个时间,时间到了就会触发项目执行。

1、定时执行:cron

  • 定时执行就像cronjob,一到时间点就执行。它的使用场景通常是执行一些周期性的job,如每夜构建。
  • Jenkins trigger cron语法采用的是UNIX cron语法(有些细微的区别)。
    • 一条cron包含5个字段,使用空格或Tab分隔,格式为:MINUTE HOUR DOM MONTH DOW。
    • 每个字段的含义为:
      • MINUTE:每小时的第几分钟,取值范围为0∼59。
      • HOUR:每天的第几小时,取值范围为0∼23。
      • DOM:每月的第几天,取值范围为1∼31。
      • MONTH:月份,取值范围为1∼12。
      • DOW:每周的第几天,取值范围为0∼7。0和7代表星期天。
    • 还可以使用以下特殊字符,一次性指定多个值。
      • *:匹配所有的值
      • M-N:匹配M到N之间的值。
      • M-N/X or */X:匹配指定范围或整个有效范围,并以X为步长的值。
      • A,B,· · ·,Z:使用逗号枚举多个值。
  • 在一些大型组织中,会存在同一时刻执行多个的定时任务的情况,比如每天的零点(0 0 * * *)执行任务,这样会产生负载不均衡。在Jenkins trigger cron语法中使用“H”字符来解决这一问题,H代表hash。(H符号可以被认为是一个范围内的随机值,但它是作业名称的哈希值,而不是一个随机函数,因此该值对于任何给定的项目都保持稳定。)
    • 对于没必要准确到零点执行的任务,cron可以这样写:H 0 * * *,代表在0点0分至0点59分之间任何一个时间点执行
    • 需要注意的是,H应用在DOM(一个月的某一天)字段时会有不准确的情况,因为一个月可能是31天,也可能是28天。
  • Jenkins trigger cron还设计了一些人性化的别名:@yearly、@annually、@monthly、@weekly、@daily、@midnight和@hourly。它们使用哈希值进行自动平衡。
    • @hourly与H * * * *相同,代表一小时内的任何时间;
    • @midnight代表在凌晨00:00到02:59之间的某个时间。
#每隔15分钟(可能在:07、:22、:37、:52)
H/15 * * * *
#在每小时的前半个小时每十分钟(三次,可能在:04、:14、:24)
H(0-29)/10 * * * *
#每周一到周五,从09:45到16:45每两个小时执行一次
45 9-16/2 * * 1-5
#每周一到周五,从08:00到15:00每两个小时执行一次(可能在09:38、11:38、13:38、15:38)
H H(8-15)/2 * * 1-5
#除12月外,每月1日和15日每天一次
H H 1,15 1-11 *

1.1、

1

#                                                                                                                            #