我们的软件开发团队在每个月的第一个星期五应用补丁。我们已经编写了一些在应用补丁后的星期天运行的测试。因此,为了在Jenkins上自动化相同的测试,我们需要一个在每个月的第一个星期五之后的第一个星期天运行的cron。现在,我们只是更新我们的Jenkins每月考虑日期,但我们可以自动化这一点?谢谢
5ktev3wc1#
天真地,人们会假设0 3 1-7 * fri是“每个月第一周内福尔斯星期五的凌晨3点”,然后我们可以使用类似的逻辑来构造0 3 3-9 * sun,用于这样的星期五之后两天的星期日。不幸的是,这不起作用,因为星期几和星期几被cron规范视为disjunction;这意味着上述事件将不是在一个月中第一个星期五之后的星期日触发,而是在 * 每个 * 星期日 * 以及从3号到9号的每天 * 触发。由于cron规范中的这种扭曲,您所要求的内容不可能由cron单独实现。解决这一问题的最简单方法是将两个需求分开,让cron跟踪其中一个,然后手动测试另一个:使用0 3 3-9 * *,然后在脚本中手动测试该日期是否为星期日,如果不是,则退出而不执行任务;或者使用0 3 * * sun,手动确保日期介于3日和9日之间。
0 3 1-7 * fri
0 3 3-9 * sun
0 3 3-9 * *
0 3 * * sun
1条答案
按热度按时间5ktev3wc1#
天真地,人们会假设
0 3 1-7 * fri
是“每个月第一周内福尔斯星期五的凌晨3点”,然后我们可以使用类似的逻辑来构造0 3 3-9 * sun
,用于这样的星期五之后两天的星期日。不幸的是,这不起作用,因为星期几和星期几被cron规范视为disjunction;这意味着上述事件将不是在一个月中第一个星期五之后的星期日触发,而是在 * 每个 * 星期日 * 以及从3号到9号的每天 * 触发。
由于cron规范中的这种扭曲,您所要求的内容不可能由cron单独实现。解决这一问题的最简单方法是将两个需求分开,让cron跟踪其中一个,然后手动测试另一个:使用
0 3 3-9 * *
,然后在脚本中手动测试该日期是否为星期日,如果不是,则退出而不执行任务;或者使用0 3 * * sun
,手动确保日期介于3日和9日之间。