美好的一天,
我需要在每月结束前两天 Jenkins开始工作。
问题类似于问题:run cron job on end of every month ,但在我的情况下,接受的回复是不可接受的。 (因为修改生产代码超出了范围,人们仍然希望在设定的时间之外执行它。)
我在通用crontab环境中发现了类似的问题和潜在的解决方案:
0 23 27-30 * * [ $(date +\%d -d "2 days") == 01 ]
但Jenkins不支持这种语法,给我错误信息:
输入无效:" 0 23 27-30 * * [$(日期+ \%d -d" 2天")== 01]":第1:15行:期待EOF,发现' '
任何詹金斯大师都能指点一下吗?
修改: 在下面的回答的帮助下,我提出了以下解决方案:
H 4 26-30 * *
_
if (($Autorun == 0)) || (( [ $(date +\%d -d "2 days") == 01 ] && $Autorun == 1 )); then
My_execute stuff
else
echo "Dummy run, autorun only 2 days before end of month."
exit 1
fi
答案 0 :(得分:1)
不幸的是,Jenkins Build触发器不支持在其中编写bash脚本。但仍有一些选择,具体取决于您对“月末前2天”的要求的严格程度。
选项1:
每月只运行一次工作:
@monthly
选项2:
在每个月的倒数第二天运行工作:
0 23 27-30 * *
选项3 :
将其作为this
中的3个单独作业运行这将要求您在作业的脚本部分的开头添加日期检查,如果不是该月的倒数第二天则退出。
有关详细信息,您可以“配置”作业并单击蓝色问号符号,该符号显示有关jenkins如何解释该cron语法的大量信息。
答案 1 :(得分:0)