如何在Jenkins中安排工作?
我在jenkins增加了一个新的工作,我想定期安排工作。
从configuration作业中,我正在检查“定期生成”checkbox,并在“计划” – 文本字段中添加了expression式
15 13 * * *
但它不会在预定的时间运行。
安排工作是否正确?
工作应该在凌晨4:20运行,但没有运行。
通过将时间表设置为15 13 * * *
您可以告诉jenkins在每天的第13个小时的第15分钟每一天的每一天的每一天安排时间。
Jenkins使用的是cronexpression式 ,不同的领域是:
- MINUTES一小时内分钟(0-59)
- HOURS一天中的时间(0-23)
- DAYMONTH一个月的日子(1-31)
- 每月月(1-12)
- 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"));