Jenkins流水线报错‘Avoid second fetch’的解决方案咨询
解决Jenkins流水线"Avoid second fetch"错误的方案
针对同一仓库下共享库与Jenkinsfile共存导致的"Avoid second fetch"错误,以下是可行的解决办法:
1. 调整共享库加载参数,禁止二次拉取
修改共享库的加载指令,添加changelog: false参数关闭变更日志拉取,同时明确指定分支,避免重复触发仓库克隆:
@Library('my-lib@branch', changelog: false) _ PipelineCustom{ branch = "branch" mailer = "abc@xyz.com" }
如果上述参数不生效,可以进一步指定SCM拉取器,复用流水线已有的克隆配置:
library( identifier: 'my-lib@branch', retriever: modernSCM( [$class: 'GitSCMSource', remote: '你的仓库URL', credentialsId: '对应凭证ID', shallowClone: true, ignoreOnPushNotifications: true] ), changelog: false ) _ PipelineCustom{ branch = "branch" mailer = "abc@xyz.com" }
2. 修改Jenkins流水线的SCM克隆行为
在流水线的SCM配置中,进入「高级克隆行为」,补充以下设置:
- 勾选
Honor refspec on initial clone,并设置refspec为仅拉取当前分支(例如+refs/heads/branch:refs/remotes/origin/branch) - 添加
Skip tag fetch行为,彻底禁用标签拉取(与你已尝试的「不获取标签」配合强化效果)
3. 调整全局共享库配置
在Jenkins系统配置的「全局共享库」中,找到你的共享库配置:
- 将「检索方法」设为「从SCM」,在高级选项中勾选「忽略推送通知」
- 启用「浅克隆」和「不获取标签」,与流水线的SCM配置保持一致
4. 最终方案:将共享库迁移至单独仓库
如果上述所有配置调整都无法解决冲突,将共享库移到独立仓库是最彻底的解决方式。分开后,Jenkins会分别拉取流水线仓库和共享库仓库,不会触发同一仓库的二次拉取检测,从根源避免该错误。
内容的提问来源于stack exchange,提问作者user1323a
相关产品推荐
相关产品推荐

