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

升级Jenkins与Blue Ocean后Steps SCM插件默认行为问题咨询

解决Jenkins Steps SCM自动Checkout的Git Clean问题

刚升级Jenkins到2.89.3、Blue Ocean到1.4.0就碰到Steps SCM的这个激进Git Clean问题,确实挺闹心的。我给你整理了几个直接有效的配置方案,帮你搞定这个困扰:

1. 在Jenkinsfile里显式定义带clean: false的Checkout步骤

如果你想完全掌控Checkout的行为,可以在流水线开头先自定义Checkout步骤,这样Steps SCM就不会自动注入默认的Checkout逻辑了:

pipeline {
    agent any
    stages {
        stage('初始化代码') {
            steps {
                checkout([
                    $class: 'GitSCM',
                    // 沿用你原本配置的分支和远程仓库信息
                    branches: scm.branches,
                    userRemoteConfigs: scm.userRemoteConfigs,
                    // 保留原SCM的其他扩展,仅把Clean操作设为false
                    extensions: scm.extensions + [[$class: 'CleanCheckout', clean: false]]
                ])
            }
        }
        stage('构建') {
            steps {
                sh './build.sh'
            }
        }
        // 后续步骤都会用已经检出的仓库,不会再触发自动clean
    }
}

2. 简化写法:直接给默认scm加clean参数

要是你的流水线已经绑定了SCM(也就是scm变量能直接用),可以用更简洁的方式修改clean选项:

checkout scm, clean: false

这个写法会保留原SCM的所有配置,只把clean操作关掉,适合快速调整。

3. 全局修改Git插件默认行为(可选)

如果想让所有流水线都默认禁用这个激进clean,可以去Jenkins全局配置里改:

  • 进入「Manage Jenkins」→「Configure System」→「Git」
  • 找到「Additional Behaviours」,添加「Clean before checkout」行为,然后取消勾选相关的清理选项,或者直接移除这个行为
  • 注意:这个是全局设置,会影响所有用Git SCM的流水线,得跟团队确认好再改

补充说明

Steps SCM本来是为了保证每个步骤启动时仓库状态一致,但这次升级后默认的clean逻辑确实太激进了——会删掉未跟踪文件、重置工作区,很容易搞丢临时生成的文件或者本地配置。用上面的方法关掉clean后,Checkout只会拉最新代码、切分支,不会动你工作区里的未跟踪内容,应该就能解决你的问题了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 04:18:07