You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Jenkins中按不同触发频率配置构建队列并避免冲突?

Jenkins多任务触发配置:避免每日/每周任务冲突

1. 先把定时触发规则配置准确

给三个任务设置符合频率要求的定时触发,这是基础:

  • A、B:用H 2 * * *(每天凌晨2点左右随机触发,比固定时间0 2 * * *更能避免服务器资源扎堆)
  • C:用H 3 * * 1(每周一凌晨3点左右触发,最后一位数字可按需修改:1=周一,0/7=周日)

小提示:定时语法里的H是哈希值,Jenkins会给每个任务分配随机偏移时间,防止多个任务同时启动打满服务器资源。

2. 解决C触发日的冲突:让任务按队列依次执行

要实现C触发当天,A、B、C不同时运行,有两种可靠方案:

方案一:并发限制+队列优先级

  • 给A、B、C都开启**「限制项目的并发构建」**(在任务配置中找到该选项,勾选后将同时运行的构建数设为1)
  • 给C设置更高的队列优先级(任务配置→高级项目选项→队列优先级,数值越大优先级越高,比如C设为100,A、B设为50)
    这样C触发当天,三个任务同时进入队列时,C会优先执行,A、B等C完成后再依次启动;平时A、B触发时,各自按队列顺序执行,不会触发C。

方案二:下游触发加条件判断(解决你之前的顾虑)

你之前设置B构建后触发C导致担心C每日跑,核心是没加条件限制。可以这么调整:

  • 保留A、B的每日定时触发,C的每周定时触发也保留
  • 在B的「构建后操作」中添加「触发下游项目」,但增加条件判断:只有当天是C的触发日才触发
    借助「Conditional BuildStep」插件,添加执行shell的步骤,判断当前日期:
    # Linux/macOS环境下判断是否为周一
    [ $(date +%u) -eq 1 ] && exit 0 || exit 1
    
    只有脚本返回0(即当天是C的触发日)时,才会触发C。平时B完成后不会触发C,同时C的每周定时触发作为兜底,双重保障C每周仅运行一次。

3. 验证配置是否生效

  • 手动触发一次C,确认A、B不会被连带触发
  • 到C的触发日,观察任务队列顺序,确认三个任务是依次执行而非同时启动
  • 查看C的构建历史,确保只有每周一次的触发记录,没有额外的每日触发

内容的提问来源于stack exchange,提问作者Faisal Shaikh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.19 04:57:13