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

Jenkins迭代stash/unstash文件触发AccessDeniedException的解决办法

问题解决:Jenkins Stash/Unstash 触发 AccessDeniedException

错误核心原因

报错java.nio.file.AccessDeniedException: /home/test/version1/abc.war明确说明:Jenkins在testNode上运行的用户(通常是jenkins用户)没有目标目录的读写权限,无法创建或写入war文件。

修复方案

方案1:直接修复testNode的目录权限

登录到testNode服务器,调整/home/test/目录的权限,让Jenkins用户拥有读写权限:

# 方式1:将目录所有者改为Jenkins用户
sudo chown -R jenkins:jenkins /home/test/

# 方式2:如果需要保留原所有者,开放目录组权限
sudo chmod -R 775 /home/test/
sudo usermod -aG $(stat -c "%G" /home/test/) jenkins

注意:优先选择最小权限原则,避免使用777权限。

方案2:调整Pipeline代码,确保目录存在且权限可控

你的原有代码存在一个小错误:versionList()是错误调用(versionList是数组,不是方法),应改为versionList.each。同时在unstash前先创建目标目录,避免因目录不存在导致的权限问题:

def versionList = ["1", "2", "3"]

node(buildNode){
    versionList.each {
        stage("Build version ${it}") {
            def pwDir = "${outputDir}/version${it}"
            dir(pwDir){
                stash includes: "*.war", name: "warFile${it}"
            }
        }
    }
}
node("testNode"){
    def warBasePath = "/home/test/"
    versionList.each {
        def targetDir = "${warBasePath}version${it}"
        // 先创建目标目录,确保路径存在
        sh "mkdir -p ${targetDir}"
        // 可选:临时调整目录权限(如果需要)
        // sh "chown jenkins:jenkins ${targetDir}"
        dir(targetDir){
            unstash "warFile${it}"
        }
    }
}

方案3:替代方案——用SCP/RSync直接传输文件

Stash/Unstash更适合小文件场景,多版本二进制文件传输可以用SCP或RSync,效率更高且避免Stash的权限问题(需要提前配置buildNode到testNode的SSH免密登录):

def versionList = ["1", "2", "3"]
def testNodeUser = "testuser" // testNode上的登录用户
def testNodeAddr = "192.168.1.100" // testNode的IP或主机名

node(buildNode){
    versionList.each {
        stage("Deploy version ${it}") {
            def warFile = "${outputDir}/version${it}/*.war"
            def targetDir = "/home/test/version${it}/"
            // 创建目标目录
            sh "ssh ${testNodeUser}@${testNodeAddr} 'mkdir -p ${targetDir}'"
            // SCP传输文件
            sh "scp ${warFile} ${testNodeUser}@${testNodeAddr}:${targetDir}"
        }
    }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 12:00:51