Jenkins - Groovy管道 - 使用FilePath给出找不到匹配的构造函数

时间:2017-12-04 18:11:33

标签: jenkins groovy

基于这个建议: Using FilePath to access workspace on slave in Jenkins pipeline我试图通过git获取放入工作区的文件,并通过传入调整后的文件夹,使用eachFileRecurse迭代这些文件。但是,当调用FilePath时,我会收到错误。

    import groovy.io.FileType
    import java.io.File
    import java.lang.Object
    import hudson.FilePath
    import jenkins.model.Jenkins

    def createFilePath(path) {
    return new FilePath(Jenkins.getInstance().getComputer(env['NODE_NAME']).getChannel(), path);
    }

@NonCPS // has to be NonCPS or the build breaks on the call to .each
def getFiles(dirLoc) {
    def dir = new File (dirLoc)
    def list = []
    dir.eachFileRecurse (FileType.FILES)
            {file -> if (file.name.endsWith('.txt')) {list << file}}
    return list
}

我收到此错误

groovy.lang.GroovyRuntimeException: Could not find matching constructor for: java.io.File(hudson.FilePath)
at groovy.lang.MetaClassImpl.invokeConstructor(MetaClassImpl.java:1737)
at groovy.lang.MetaClassImpl.invokeConstructor(MetaClassImpl.java:1537)

我无法弄清楚我在这里缺少什么来完成这项工作。提前谢谢!

1 个答案:

答案 0 :(得分:1)

没有使用hudson.FilePath作为参数的java.io.file的构造函数。

请参阅以下链接中的java doc:https://docs.oracle.com/javase/7/docs/api/java/io/File.html