date - Jenkins - 每个月结束前 2 天运行作业

标签 date jenkins scheduled-tasks

美好的一天,

我需要每月在月底前两天在 Jenkins 中运行作业

该问题类似于问题:run cron job on end of every month ,但就我而言,接受的回应是 Not Acceptable 。 (因为修改生产代码超出了范围,人们仍然希望在规定时间之外执行它。)

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

0 23 27-30 * * [ $(date +\%d -d "2 days") == 01 ]

但是 Jenkins 不支持这种语法,给我错误消息:

Invalid input: "0 23 27-30 * * [ $(date +\%d -d "2 days") == 01 ]": line 1:15: expecting EOF, found ' '

有没有 Jenkins 大师指点一下?

编辑: 在下面答案的帮助下,我想出了以下解决方案:

  • 添加字符串参数自动运行
  • 将 Crontab 设置为 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

最佳答案

没有必要设置三个作业。 Jenkins 中一项作业可以有多个 cron 表达式: enter image description here 底部的线显示这应该按预期工作。

所以你可以使用以下内容:

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

关于date - Jenkins - 每个月结束前 2 天运行作业,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49295240/

相关文章:

php - 如何在mysql中存储用户时区?

php - 当系统时间为 3 月 30 日时,DateTime 转换错误

基于浏览器位置/设置的 Angular 2 Datepipe 格式

javascript - 创建每秒更新一次的日期和时间函数

mysql - 如何在 Windows 中安排每个文件一个表的 MySQL 数据库备份?

docker - jenkins管道中docker gcloud容器中的kubectl问题

linux - Jenkins 到 SCP 从 SVN 到 linux 服务器的几个文件夹和文件?

Jenkins Pipeline 脚本 - 构建步骤的返回值

multithreading - 在Linux内核中,以下方式创建实时kthread是否正确?

playframework - Play Framework : await-like functionality in Jobs