我可以得到一个Jenkins触发器运行每个月的第一个工作日?

laik7k3q  于 2022-11-02  发布在  Jenkins
关注(0)|答案(3)|浏览(213)

我的目标是在每月第一个工作日的上午7点(2015年7月1日、2015年8月3日、2015年9月1日等)触发报告。
我使用了以下cron表达式:H 7 1-3/3 * 1-5
它在7月1日运行,但下一个运行日期不是8月3日,而是9月1日。我如何才能让它在每个月的第一个工作日运行?
我正在使用以下帮助指南:

MINUTE小时内的分钟数(0-59)
HOUR一天中的小时(0-23)
DOM一个月中的第几天(1-31)
月份(1-12)
DOW一周中的第几天(0-7),其中0和7是星期日。

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

    • 指定所有有效值
  • M-N指定值的范围
  • M-N/X或 */X在指定范围或整个有效范围内以X为间隔步进
  • A,B,...,Z枚举多个值

为了使周期性调度的任务在系统上产生均匀的负载,应尽可能使用符号H(表示“散列”)。

30byixjq

30byixjq1#

每月第一个工作日规则:

  • 如果今天是星期一,并且今天也是该月的1号、2号或3号,则应运行作业
  • 如果今天是星期二、星期三、星期四或星期五,并且今天也是该月的1号,则应运行作业

下面的cron表达式应该可以完成这项工作:

H 7 1-3 * 1
H 7 1 * 2
H 7 1 * 3
H 7 1 * 4
H 7 1 * 5

# Would last have run at Wednesday, July 1, 2015 7:00:02 AM EEST; would next run at Monday, August 3, 2015 7:00:02 AM EEST.

请注意,由于this文章的缘故,您不能只用途:

H 7 1-3 * 1
H 7 1 * 2-5

上面的方法不起作用!相反,作业在每个工作日运行,每月1号运行两次,可能在每月2号和3号运行两次!
但我无法复制它。

cngwdvgl

cngwdvgl2#

这应该可以正常工作:

H 7 1-3 * 1
H 7 1 * 2-5

Jenkins cron表达式实际上使用AND来表示 DOMDOW(否则从这个被接受的答案得到的解也不会起作用)

相关问题