如何在Jenkins中安排工作?

我在jenkins增加了一个新的工作,我想定期安排工作。

从configuration作业中,我正在检查“定期生成”checkbox,并在“计划” – 文本字段中添加了expression式

15 13 * * *

但它不会在预定的时间运行。

安排工作是否正确?

在这里输入图像说明

工作应该在凌晨4:20运行,但没有运行。

通过将时间表设置为15 13 * * *您可以告诉jenkins在每天的第13个小时的第15分钟每一天的每一天的每一天安排时间。

Jenkins使用的是cronexpression式 ,不同的领域是:

  1. MINUTES一小时内分钟(0-59)
  2. HOURS一天中的时间(0-23)
  3. DAYMONTH一个月的日子(1-31)
  4. 每月月(1-12)
  5. DAYWEEK星期几(0-7)0和7是星期天

如果你想每5分钟安排一次你的构build,这将会完成这个工作: */5 * * * *

如果你想每天8点的时间安排你的构build,这将会完成这个工作: 0 8 * * *

从2014年6月开始编辑:由于几个版本,Jenkins添加了一个新的参数H :(从jenkins代码文档中提取)

为了允许定期安排的任务在系统上产生负载,应尽可能使用符号H (对于“散列”)。

例如,对于十几个日常工作使用0 0 * * *会在午夜时间造成大量的高峰。 相比之下,使用HH * * *仍然会每天执行一个工作,但不是同时执行,更好地使用有限的资源。

还要注意的是:

H符号可以被认为是一个范围内的随机值,但它实际上是作业名称的散列,而不是随机函数,因此对于任何给定的项目,该值都保持稳定。

更多使用“H”的例子

*/5 * * * *表示每隔5分钟

5 * * * *表示每小时的第5分钟

jenkins让你设置多次,用换行符分隔。

如果你需要它每天上午7点build立,每个星期天下午4点,下面的工作很好

 H 7 * * * H 16 * * 0 

要每5分钟计划一个cron作业,您需要定义cron设置,如下所示: */5 * * * *

尝试使用0 8 * * *。 它应该工作

对于任何不希望等待整整一个小时的人来查看特定的构build是否触发。

为了得到散列。 你可以在这里下载哈希器https://github.com/jenkinsci/jenkins/blob/master/core/src/main/java/hudson/scheduler/Hash.java 。 在分支页面上input完整的项目名称,然后像这样打印:

 System.out.println(Hash.from("sub/microservices/master"));