Date Jenkins-在每个月底前2天运行作业
你好 我需要在月底前两天在詹金斯月刊上运行作业 该问题类似于问题:,但在我的情况下,接受的回答是不可接受的。(因为修改生产代码超出了范围,人们仍然希望在规定的时间之外执行。) 我在通用crontab环境中发现了类似的问题和潜在的解决方案:Date Jenkins-在每个月底前2天运行作业,date,jenkins,scheduled-tasks,Date,Jenkins,Scheduled Tasks,你好 我需要在月底前两天在詹金斯月刊上运行作业 该问题类似于问题:,但在我的情况下,接受的回答是不可接受的。(因为修改生产代码超出了范围,人们仍然希望在规定的时间之外执行。) 我在通用crontab环境中发现了类似的问题和潜在的解决方案: 0 23 27-30 * * [ $(date +\%d -d "2 days") == 01 ] 但是Jenkins不支持这种语法,这给了我错误信息: 无效输入:“0 23 27-30**[$(日期+\%d-d“2天”)==01]”:第1行:第15行:预期
0 23 27-30 * * [ $(date +\%d -d "2 days") == 01 ]
但是Jenkins不支持这种语法,这给了我错误信息:
无效输入:“0 23 27-30**[$(日期+\%d-d“2天”)==01]”:第1行:第15行:预期EOF,找到“”
有没有詹金斯大师给我指点
编辑:
在下面答案的帮助下,我想出了以下解决方案:
- 添加字符串参数自动运行
- 将Crontab设置为
h4 26-30**
- 修改的执行脚本:
不幸的是,Jenkins构建触发器不支持在其内部编写bash脚本。不过,根据您对“月底前2天”的要求有多严格,仍然有一些选择 选项1: 每月仅运行一次我的作业:
@monthly
选项2:
在每个月的第二天到最后一天运行作业:
0 23 27-30**
选项3:
将其作为3个单独的作业运行,如中所示
这将要求您在作业的脚本部分开始时添加日期检查,如果不是该月的第二天到最后一天,则退出
有关更多信息,您可以“配置”作业,然后单击蓝色问号符号,该符号显示了jenkins如何解释cron语法的大量信息。无需设置三个作业。在Jenkins中,一个作业可以有多个cron表达式: 底部的线条显示,这应该可以按需要工作 因此,您可以使用以下内容:
0 23 30 1,3,5,7,8,10,12 *
0 23 29 4,6,9,11 *
0 23 27-28 2 *
这仍然有一个缺点,二月份它会在闰年运行两次,这是很难避免的。如果这是一个问题,但在闰年提前一天运行不是问题,那么您可以使用
27
而不是27-28
您运行的是哪种jenkins作业。它是通过UI还是jenkins管道配置的?如果管道是声明性的还是脚本化的?您可以在这里了解一些信息选项2听起来很有希望。。。我正在考虑将执行脚本修改为if([$(date+\%d-d“2天”)==01]);然后DoStuff else echo“虚拟运行,仅在月底前2天自动运行。”退出1 fi
是的,这听起来很合理-或者如果您很高兴有3个作业要管理,那么第三个选项也可以
0 23 30 1,3,5,7,8,10,12 *
0 23 29 4,6,9,11 *
0 23 27-28 2 *