Jenkins Pipeline-Groovy遍历pwd()会导致java.io.FileNotFoundException

Jenkins Pipeline-Groovy遍历pwd()会导致java.io.FileNotFoundException,jenkins,groovy,continuous-integration,jenkins-pipeline,Jenkins,Groovy,Continuous Integration,Jenkins Pipeline,我正试图使用一些groovy代码遍历工作区目录,但由于java.io.FileNotFoundException:/home/user/JENKINS2\u STATE/workspace,作业失败/job@2即使目录存在 管道: import groovy.io.FileType import com.cloudbees.groovy.cps.NonCPS @NonCPS def traverseHelper() { new File(pwd()).traverse(type: Fi

我正试图使用一些groovy代码遍历工作区目录,但由于
java.io.FileNotFoundException:/home/user/JENKINS2\u STATE/workspace,作业失败/job@2
即使目录存在

管道:

import groovy.io.FileType
import com.cloudbees.groovy.cps.NonCPS

@NonCPS
def traverseHelper() {
    new File(pwd()).traverse(type: FileType.FILES) {
        println it.path
    }
}

pipeline {
    agent any
    stages {
        stage('Build') {
            steps {
                parallel(
                    "Linux": {
                        node(label: 'lnx') {
                            script {
                                //checking out from git here
                                traverseHelper()
                            }
                        }
                    },
                    "Windows": {
                        node(label: 'win') {
                            script {
                                //do Windows stuff here
                            }
                        }
                    }
                )
            }
        }
        //other stages here
    }
}

groovy代码在本地工作(没有
@NonCPS
并且用
System.getProperty(“user.dir”)
替换
pwd()
)。

问题在于groovy脚本在主节点上执行,因此当您执行
新建文件(…)
时,您在主节点上创建一个文件指针,而不是从节点/代理。相反,请使用。

中提供的方法。问题是groovy脚本在主机上执行,因此当您执行
新建文件(…)
时,将在主机上而不是从/节点/代理上创建文件指针。相反,请使用中提供的