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

如何在Jenkins不同代理节点上统一代码检出并支持清理构建?

解决Jenkins多节点一致检出+清理构建的方案

你当前的问题是手动触发checkout scm可能导致不同节点因执行时间差拉取到不同版本,同时需要保留通过CLEAN参数控制的工作区清理功能。解决方案是先在第一个节点捕获流水线对应的固定代码版本,后续所有节点都基于该版本检出,具体实现如下:

pipeline {
    options {
        skipDefaultCheckout(true)
    }
    agent {
        label "agent1"
    }
    
    parameters {
        booleanParam defaultValue: false, description: '执行清理构建', name: 'CLEAN'
    }
    
    def scmCommitId // 存储统一的代码版本标识
    
    stages {
        stage("Checkout") {
            steps {
                script{
                    if (params.CLEAN){
                        cleanWs()
                    }
                    // 检出代码并捕获版本信息
                    def checkoutResult = checkout scm
                    // Git场景下提取commit ID,其他SCM需替换对应字段(如SVN的SVN_REVISION)
                    scmCommitId = checkoutResult.GIT_COMMIT
                }
            }
        }
        stage("Debian build") {
            agent {
                label "debian"
            }
            steps {
                script {
                    if (params.CLEAN){
                        cleanWs()
                    }
                    // 使用统一的commit ID检出代码
                    checkout(
                        changelog: false,
                        scm: [
                            $class: 'GitSCM',
                            userRemoteConfigs: scm.userRemoteConfigs,
                            branches: [[name: scmCommitId]] // 固定检出指定版本
                        ]
                    )
                }        
            }
        }
    }
}

关键改动说明

  • 全局变量scmCommitId:用于存储流水线启动时对应的代码版本标识,确保所有节点共用同一版本。
  • 首个阶段捕获版本:checkout scm的返回结果包含SCM元数据,Git环境下GIT_COMMIT对应流水线触发时的commit ID(和Jenkins默认自动检出的版本完全一致)。
  • 后续节点固定版本检出:不再直接使用scm参数,而是基于原仓库配置,指定固定的branches为scmCommitId,彻底避免版本不一致问题。
  • 保留清理逻辑:params.CLEAN控制cleanWs()的逻辑完全保留,不影响清理构建功能。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 23:35:17