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

Windows11 WSL环境下Jenkins Docker插件报错修复求助

问题解决:Jenkins Pipeline结合Docker(替代已停止维护的Docker插件)

问题背景

在Windows 11的WSL环境中使用Docker,学习Jenkins CI/CD时,因依赖的Jenkins Docker插件已停止维护,运行原Pipeline脚本时出现路径识别错误,需修改为直接使用Docker命令完成流程。

原脚本运行错误

java.io.IOException: Failed to run image 'opstreedevops/maven:java8'. Error: docker: Error response from daemon: the working directory 'C:/Users/name/AppData/Local/Jenkins/.jenkins/workspace/CI/Spring3HibernateDocker@2/' is invalid, it needs to be an absolute path.

修改后的Pipeline脚本

pipeline {
    agent any
    environment {
        // 转换Jenkins工作区的Windows路径为WSL兼容的Linux路径
        WORKSPACE_WSL = bat(script: 'wslpath -u "%WORKSPACE%"', returnStdout: true).trim()
        // 转换本地Maven仓库路径为WSL格式(可根据实际路径调整)
        LOCAL_M2_WSL = bat(script: 'wslpath -u "%USERPROFILE%/.m2"', returnStdout: true).trim()
    }
    stages {
        stage("Code Checkout") {
            steps {
                git branch: 'main', url: 'C:\\Users\\path\\own\\CI-CD-Pipeline-with-Docker-and-Jenkins-main'
            }
        }
        stage("Code Stability | Build Image") {
            steps {
                script {
                    // 直接调用docker build命令,指定WSL格式的工作区作为构建上下文
                    bat "docker build -t name_of_docker_image/spring3hibernate:${env.BUILD_ID} ${WORKSPACE_WSL}"
                }
            }
        }
        stage("Code Quality | Checkstyle | Hadolint") {
            parallel {
                stage("Checkstyle") {
                    steps {
                        // 用docker run替代Docker插件的agent配置,手动挂载目录并指定工作路径
                        bat """
                            docker run --rm \
                                -v ${WORKSPACE_WSL}:/workspace \
                                -v ${LOCAL_M2_WSL}:/root/.m2 \
                                -w /workspace \
                                opstreedevops/maven:java8 \
                                mvn checkstyle:checkstyle
                        """
                        recordIssues sourceCodeRetention: 'LAST_BUILD', tools: [checkStyle(pattern: '**/checkstyle-result.xml')]
                    }
                }
                stage("Hadolint") {
                    steps {
                        // 使用官方Hadolint容器执行检查,避免依赖本地环境
                        bat """
                            docker run --rm \
                                -v ${WORKSPACE_WSL}:/workspace \
                                -w /workspace \
                                hadolint/hadolint:latest \
                                hadolint Dockerfile --no-fail -f json > hadolint.json
                            type hadolint.json
                        """
                        recordIssues sourceCodeRetention: 'LAST_BUILD', tools: [hadoLint(pattern: 'hadolint.json')]
                    }
                }
            }
        }
    }
}

关键修改说明

  • 路径转换:通过wslpath命令将Windows风格路径转为WSL兼容的Linux路径,解决Docker daemon无法识别Windows路径的核心问题
  • 替换插件调用:
    • 移除docker.build,改用原生docker build命令指定构建上下文
    • 删除原Docker Agent配置,用docker run手动挂载工作区和Maven仓库,明确容器内工作目录
  • 优化流程:删除Checkstyle阶段重复的代码拉取操作,复用初始阶段已拉取的代码
  • 环境一致性:Hadolint改用官方镜像运行,无需在Jenkins Agent上手动安装工具

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.17 09:51:24