Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Date Jenkins-在每个月底前2天运行作业_Date_Jenkins_Scheduled Tasks - Fatal编程技术网

Date Jenkins-在每个月底前2天运行作业

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行:预期

你好

我需要在月底前两天在詹金斯月刊上运行作业

该问题类似于问题:,但在我的情况下,接受的回答是不可接受的。(因为修改生产代码超出了范围,人们仍然希望在规定的时间之外执行。)

我在通用crontab环境中发现了类似的问题和潜在的解决方案:

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 *