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

使用JDK 11 Docker镜像运行SonarQube阶段遇执行停滞问题求助

解决Jenkins SonarQube阶段Docker代理下Shell进程无法启动的问题

问题定位

你的Jenkins Sonar阶段构建停滞,报错process apparently never started,核心原因是Docker代理配置的-itd参数与Jenkins持久化任务机制冲突:

  • -it会分配交互式终端,但Jenkins需要非交互式的前台进程连接;
  • -d让容器后台运行,导致Jenkins无法捕获进程输出和状态,误以为进程未启动。

解决方案

1. 移除Docker args中的-itd参数

这是最直接的修复方式,修改后的代理配置如下:

stage('Sonar') {
    environment {
        SCANNER_HOME= tool 'sonarscanner'
    }
    agent {
        docker {
            label 'sonar'
            image "artifact.me.com/docker/jdk/jdk-11:latest"
            args "-v ${SCANNER_HOME}:/var/sonarScanner --privileged=true"
        }
    }
    steps {
        withSonarQubeEnv('SonarQube') {
            withVault([configuration: configuration, vaultSecrets: secrets]) {
                sh "/var/sonarScanner/bin/sonar-scanner -D ..."
            }
        }
    }
}

2. 确保Sonar Scanner有执行权限

挂载的Sonar Scanner目录可能在容器内丢失可执行权限,可在执行扫描命令前添加权限修复:

sh "chmod +x /var/sonarScanner/bin/sonar-scanner && /var/sonarScanner/bin/sonar-scanner -D ..."

3. 指定容器工作目录匹配Jenkins Workspace

若容器默认工作目录与Jenkins workspace不一致,可能导致路径问题,可通过-w参数指定:

agent {
    docker {
        label 'sonar'
        image "artifact.me.com/docker/jdk/jdk-11:latest"
        args "-v ${SCANNER_HOME}:/var/sonarScanner --privileged=true -w ${WORKSPACE}"
    }
}

4. 启用诊断日志排查深层问题

临时添加JVM参数到Jenkins启动配置,重启后可查看更详细的进程启动日志:

-Dorg.jenkinsci.plugins.durabletask.BourneShellScript.LAUNCH_DIAGNOSTICS=true

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.06 01:45:01