前言

一直想学习自动化测试,但是都没行动,业余时间学习零零碎碎并记录20210424。

11、持续集成和交付

  • Jenkins环境搭建
  • 项目环境配置
  • 邮件通知
  • Jenkins配置定时项目执行

Jenkins配置定时项目执行:实现真正的自动化

jenkins 内存泄漏 jenkins schedule_jenkins 内存泄漏

实操

1、修改时区

System.setProperty('org.apache.commons.jelly.tags.fmt.timeZone','Asia/Shanghai')

jenkins 内存泄漏 jenkins schedule_字段_02

点击运行

jenkins 内存泄漏 jenkins schedule_jenkins 内存泄漏_03

2、构建触发器

jenkins 内存泄漏 jenkins schedule_jenkins 内存泄漏_04

以上配置,类似cron表达式。

试跑下,可以观察到,2分钟自动执行一次

jenkins 内存泄漏 jenkins schedule_Jenkins_05

这就完成定时项目执行啦~

另:定时构建配置语法

MINUTE  HOUR  DOM  MONTH  DOW

如上,每行由5个被TAB或空格分割的字段组成。

jenkins 内存泄漏 jenkins schedule_字段_06

其中每个字段除了可以使用取值范围内的值外,还能使用一些特殊的字符。

  • *     匹配范围内所有值
  • M-N   匹配M~N范围内所有值
  • M-N/X 或者 */X   在指定M~N范围内或整个有效区间内每隔X构建一次 
  • A,B,...,Z        匹配多个值

符号"H"的使用

  1. 为了在系统中生成定时任务,符号H(代表“Hash”,后面用“散列”代替)应该用在可能用到的地方,例如:为十几个日常任务配置0 0 * * *将会在午夜产生较大峰值。相比之下,配置H H * * * 仍将每天一次执行每个任务,不是都在同一时刻,可以更好的使用有限资源。
  2. 符号H可用于范围,例如,H H(0-7) * * * 代表凌晨0:00到 上午7:59一段时间。你还可以用H代表有或无范围的区间。
  3. 符号H 在一定范围内可被认为是一个随机值,但实际上它是任务名称的一个散列而不是随机函数。
  4. 需要注意的是,月份中的某天-DOM字段,类似于*/3 或者 H/3 的短周期由于月份的天数不固定,在大多数月尾总不会工作。例如,*/3 将会在一个月里面的第一天、第四天。。。第31天执行,下个月的那天继续重复执行。散列一般被选择在1-28天内,所以H/3将会在跑到月底的3-6天内导致空白。(长时间循环将会导致长度不一,但是这种影响也是不明显的。)
  5. 空行和以#开头的行将会被认为是注释。
  6. 另外,@yearly, @annually, @monthly, @weekly, @daily, @midnight, 和 @hourly也支持别名。这些使用散列系统自动匹配,例如:@hourly 和 H * * * * 一样代表一个小时内的任何时刻。@midnight实际上代表凌晨0:00到凌晨2:59之间的一段时间。

例如:

  • # 每隔15分钟。(或许:07, :22, :37, :52)
  • H/15 * * * *
  • # 每前半小时中每隔10分钟。 (3次, 或许:04, :14, :24)
  • H(0-29)/10 * * * *
  • # 每个工作日从早上9点45分开始到下午3点45分结束这段时间内每间隔2小时的45分钟那一刻。
  • 45 9-16/2 * * 1-5
  • #每个工作日从早上9点到下午5点这段时间内每间隔2小时之间的某刻。(或许在上午10:38, 下午12:38, 下午2:38 , 下午4:38)
  • H H(9-16)/2 * * 1-5
  • #每月(除了12月)从1号到15号这段时间内某刻。
  • H H 1,15 1-11 *