我可以每个月的第一个星期每天运行一次Jenkins触发器吗?

时间:2015-07-01 16:42:42

标签: jenkins triggers cron

我的目标是在每个月的第一个工作日上午7点(7/1 / 15,8 / 3 / 15,9 / 1/15等)触发报告。

我使用以下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(表示“哈希”)。

4 个答案:

答案 0 :(得分:3)

本月第一个工作日规则:

  • 如果今天是星期一,那么如果今天也是当月的第1天,第2天或第3天,应该开始工作
  • 如果今天是星期二,星期三,星期四或星期五,那么如果今天也是这个月的第一天,应该开始工作

以下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天运行两次!

但我无法重现它。

答案 1 :(得分:1)

这应该很好:

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

所引用的答案所涉及的文章是关于crontab表达式的。 Jenkins cron表达式实际上对 DOM DOW 使用 AND (否则接受答案的解决方案也不起作用)

答案 2 :(得分:0)

绝对奇怪,特别是因为当你将表达式改为

H 7 1-3/3 8 1-5

它承认八月。得到某种bug。也许这是闰秒问题?

答案 3 :(得分:0)

以下是您的问题的答案,似乎可以正常工作

http://www.switchplane.com/blog/how-to-run-a-cron-job-on-the-first-weekday-of-the-month/

一切顺利