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

Jenkins问题:已删除的旧构建总是被重新触发构建

问题分析与解决

问题背景

配置了用于GitHub企业版的Jenkins自由风格任务,设置了PR相关的refspec和分支指定符,删除部分旧构建后,点击「立即构建」会重新执行已删除的旧构建,而非新PR的任务。

原因

  1. 构建号重置的影响:删除构建后调用了job.updateNextBuildNumber(from),会让Jenkins认为构建号from到原最新构建号之间的任务都未完成,触发构建时会重新尝试填补这些缺失的构建号对应的任务,而这些任务关联的是旧PR。
  2. SCM状态缓存未更新:Jenkins会缓存每个PR分支的最后构建状态,删除构建后缓存记录未同步清除,触发构建时,Jenkins检测到旧PR的构建记录缺失,就会重新触发构建。
  3. 自由风格任务对PR的原生支持不足:通过refspec匹配PR的自由风格任务,没有像Multibranch Pipeline或专门PR插件那样精细化管理PR构建生命周期,无法自动识别已废弃的PR构建。

解决步骤

  • 停止重置构建号:删除构建时不要执行job.updateNextBuildNumber(from),保留原有构建号序列,避免Jenkins判定存在未完成任务。
  • 清理SCM缓存:
    1. 进入Jenkins任务配置页面,找到「源码管理」模块。
    2. 点击「高级」按钮,执行「清除SCM缓存」操作,让Jenkins重新扫描PR状态。
  • 改用PR原生支持的任务类型:
    替换为Jenkins的Multibranch Pipeline任务,或安装GitHub Pull Request Builder插件,这类工具会自动关联PR与构建,删除旧构建后不会重新触发,仅在PR有新提交或状态变更时触发新构建。
  • 调整构建触发逻辑:
    关闭手动触发的「立即构建」,依赖Poll SCM或GitHub Webhook触发构建,确保只有新的PR提交或更新才会触发构建,避免手动触发时扫描所有旧PR分支。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 15:35:26