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

Jenkins Pipeline执行:sonarqube任务失败,无法创建Sonar缓存临时文件

解决Jenkins Pipeline中Gradle :sonarqube任务的NoSuchFileException问题

问题分析

执行:sonarqube任务时触发org.gradle.api.tasks.TaskExecutionException,根源是java.nio.file.NoSuchFileException——无法在~/.sonar/cache/_tmp创建临时文件,核心原因通常是目录缺失、权限不足或路径解析异常。

解决方案

1. 修复缓存目录权限与存在性

Jenkins执行任务的用户(一般为jenkins)可能无目标目录的读写权限,甚至目录本身不存在:

  • Linux/macOS环境执行以下命令:
    mkdir -p ~/.sonar/cache/_tmp
    chown -R jenkins:jenkins ~/.sonar
    chmod -R 755 ~/.sonar/cache/_tmp
    
  • Windows环境:在Jenkins服务运行的用户上下文里手动创建C:\Users\[Jenkins用户]\.sonar\cache\_tmp目录,或通过文件管理器给该目录添加读写权限。

2. 显式指定Sonar临时目录

绕开默认的用户家目录路径,将临时文件指定到Jenkins可完全控制的工作空间内:

  • 在build.gradle中添加配置:
    sonarqube {
        properties {
            property "sonar.temp.directory", "${project.buildDir}/sonar-tmp"
        }
    }
    
  • 或在Jenkins Pipeline的Gradle命令中传入参数:
    gradle :sonarqube -Dsonar.temp.directory=${WORKSPACE}/sonar-tmp
    

3. 清理损坏的Sonar缓存

旧缓存可能存在路径异常或损坏,直接清理后让任务重新初始化目录:

rm -rf ~/.sonar/cache

重新执行:sonarqube任务,Sonar会自动重建完整的缓存目录结构。

4. 验证Jenkins代理的用户上下文

如果使用Jenkins Slave节点,需确认Slave上执行任务的用户拥有目录权限,且家目录环境变量正常:
在Pipeline中添加验证步骤:

sh 'echo $HOME'
sh 'whoami'

检查输出的用户家目录是否正确,且对应用户有该目录的读写权限。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 01:46:18