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

本地Jenkins流水线执行SonarQube Scanner提示command not found如何解决

报错原因分析
  • 核心原因是Jenkins执行流水线sh步骤时,未加载系统全局的PATH环境变量,导致sonar-scanner运行脚本依赖的基础系统命令dirname、basename无法被识别调用
  • 由于dirname执行失败,sonar-scanner脚本无法正确获取自身的安装目录,默认将根路径/作为安装路径查找依赖的jar包,最终触发文件不存在的报错,你日志中的File does not exist: //lib/sonar-scanner-cli-4.6.2.2472.jar就是该问题的直接表现。
修复方案

以下3种方案任选其一即可:

方案1:临时在sh步骤中注入PATH环境变量

直接修改SonarQube阶段的sh脚本,先声明系统命令的搜索路径:

stage('Sonarqube') {
      sh '''
        # 注入系统基础命令路径,macOS环境可额外增加:/usr/local/bin
        export PATH=$PATH:/usr/bin:/bin
        /usr/local/bin/sonar-scanner
      '''
}

方案2:全局配置Jenkins的PATH变量(一劳永逸)

  • 打开Jenkins控制台,依次进入「Manage Jenkins」→「Configure System」→「Global properties」
  • 勾选「Environment variables」,新增名为PATH的变量,值填写$PATH:/usr/bin:/bin:/usr/local/bin
  • 保存配置后重启Jenkins即可生效,后续所有任务都不会再出现基础命令找不到的问题

方案3:使用官方SonarQube Scanner插件执行(更推荐)

避免手动调用本地二进制文件的环境问题,操作流程如下:

  1. 先在Jenkins插件市场安装「SonarQube Scanner」插件
  2. 进入「Manage Jenkins」→「Global Tool Configuration」,找到SonarQube Scanner配置项,新增一个扫描仪实例,填写你本地的sonar-scanner安装路径,保存配置
  3. 修改流水线脚本如下:
node {
    // 调用全局配置的sonar-scanner实例,参数为你之前配置的实例名
    def scannerHome = tool '你配置的SonarQube Scanner实例名'
    stage('Preparation') {
        try{
        // 从bitbucket克隆项目
        git url: 'https://test@bitbucket.org/test/test.git'
        }catch(err){
            echo err
        }
    }
    stage('Sonarqube') {
        sh "${scannerHome}/bin/sonar-scanner"
    }
    stage('end') {  
     echo "Success" 
    }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 20:36:01