如何从指定日期开始每90天运行Jenkins Pipeline Cron触发任务?
Jenkins PipelineTrigger 90天间隔触发配置问题
你的当前配置pipelineTriggers([cron('0 1 01 */3 *')])无法实现从指定日期(2022年11月20日)开始每90天运行一次的需求,原因如下:
- 这个cron表达式的逻辑是每个季度的1号凌晨1点触发(
*/3代表每3个月),但月份天数存在差异,实际间隔并非严格的90天(比如11月到次年2月间隔约90天,但2月到5月可能是90或91天)。 - 触发起始时间是每个季度的第一天,和你要求的2022年11月20日完全不符。
可行解决方案
方案1:使用TimerTrigger插件(推荐)
Jenkins的TimerTrigger插件支持按固定天数间隔触发,并且可以指定起始日期,完美匹配你的需求。
配置示例:
pipelineTriggers([ timerTrigger('H 1 */90 * *', startDate: '2022-11-20') ])
H:Jenkins的哈希值,用于避免大量任务同时触发导致负载过高,也可替换为固定数字(比如1)。1:触发的小时数(凌晨1点)。*/90:每90天触发一次。startDate: '2022-11-20':指定首次触发的起始日期。
方案2:手动编写多组cron表达式(无插件)
如果不想安装插件,可以手动计算出所有符合90天间隔的日期,将每个日期对应的cron表达式添加到触发器中。
比如2022-11-20、2023-02-18、2023-05-19、2023-08-17等日期,配置示例:
pipelineTriggers([ cron('0 1 20 11 *'), cron('0 1 18 2 *'), cron('0 1 19 5 *'), cron('0 1 17 8 *') // 后续日期可继续添加 ])
缺点是需要定期更新cron表达式,长期维护较为麻烦。
内容的提问来源于stack exchange,提问作者ChrisH
相关产品推荐
相关产品推荐

