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

如何让Jenkins流水线单个阶段的部分代码在Docker容器外执行

问题原因

你当前在pipeline全局配置了docker类型的agent,所有步骤默认都会继承这个配置:哪怕手动切换到master节点,Jenkins仍然会尝试在master节点上启动你指定的Docker容器来运行代码,所以会出现两个问题:

  • Windows master未安装Docker时,直接报找不到docker程序的错误
  • 安装Docker后卡住,大概率是你指定的是Linux容器镜像,Windows Docker环境无法正常启动该容器,导致流程阻塞。
实现方案

方案1:全局不指定默认agent,按需给不同执行块指定运行环境(推荐)

这种方式优先级最高,不会出现配置继承的问题,示例配置如下:

pipeline {
    agent none // 全局不指定默认执行环境
    stages {
        stage('Testing') {
            steps {
                script {
                    // 先在指定Docker容器内执行代码
                    docker.image('<docker-image-path>').withRun('') { // 可按需补充容器启动参数
                        println "以下代码在容器内执行"
                        sh '''pwd
                            hostname -i     
                        '''
                    }

                    // 再切换到Windows master节点原生执行
                    node('master') {
                        println "以下代码在Windows master节点原生执行"
                        bat 'dir'
                    }
                }
            }
        }
    }
}

方案2:保留全局Docker agent,切节点时明确指定不需要容器

如果你必须保留全局的Docker agent配置,可以在切换到master执行的块中,显式声明使用原生节点执行,不继承全局Docker配置:

pipeline {
    agent {
        docker {
            label "<node-name>"
            image "<docker-image-path>"
        }
    }
    stages {
        stage('Testing') {
            steps {
                script {
                    // 容器内执行的代码保持不变
                    println "以下代码在容器内执行"
                    sh '''pwd
                        hostname -i     
                    '''

                    // 切换到master原生执行
                    node('master') {
                        println "以下代码在Windows master节点原生执行"
                        // 直接执行bat命令即可,无需额外启动容器
                        bat 'dir'
                    }
                }
            }
        }
    }
}
注意事项
  • 如果你需要在不同节点/容器间共享文件,需要使用Jenkins的stash/unstash命令传递文件,或者配置共享存储同步工作区
  • Windows节点执行bat命令时,注意路径分隔符需要用反斜杠,特殊场景要做转义处理

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 10:48:01