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

Docker容器中Jenkins执行gradlew时出现Permission denied问题

解决Docker中Jenkins通过Jenkinsfile执行gradlew权限拒绝的问题

以下是几个针对性的解决方案,按优先级尝试:

1. 确保git跟踪gradlew的可执行权限

本地能正常执行但Jenkins拉取后没有权限,大概率是git没把gradlew的+x权限提交到仓库。执行以下命令提交权限变更:

git update-index --chmod=+x gradlew
git commit -m "Add execute permission to gradlew"
git push

之后Jenkins重新拉取代码,gradlew就会自带可执行权限,无需额外操作。

2. 在Jenkinsfile中手动添加执行权限

如果不想修改仓库配置,直接在执行gradlew前加权限修改步骤:

pipeline {
    agent any
    stages {
        stage('Build') {
            steps {
                sh 'chmod +x ./gradlew'
                sh './gradlew clean build'
            }
        }
    }
}

这个方案直接在Jenkins工作区临时修复权限,不需要改动仓库。

3. 调整Jenkins容器的工作区权限

如果是Docker挂载主机目录导致的权限不匹配:

  • 若允许用root运行Jenkins容器,启动时添加参数:
    docker run -d -p 8080:8080 -p 50000:50000 -v /your/local/workspace:/var/jenkins_home/workspace --user root jenkins/jenkins:lts
    
  • 更安全的做法是调整主机工作区目录的权限,匹配Jenkins容器默认用户的UID(通常是1000):
    chown -R 1000:1000 /your/local/workspace
    

4. 改用Jenkins全局配置的Gradle(可选)

如果不需要依赖项目中的gradlew,可在Jenkins全局工具配置中安装Gradle,然后在Jenkinsfile中直接调用gradle命令:

pipeline {
    agent any
    tools {
        gradle 'Gradle-7.6' // 对应全局配置的Gradle名称
    }
    stages {
        stage('Build') {
            steps {
                sh 'gradle clean build'
            }
        }
    }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.29 08:02:39