基于这个建议: 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)
我无法弄清楚我在这里缺少什么来完成这项工作。提前谢谢!
答案 0 :(得分:1)
没有使用hudson.FilePath作为参数的java.io.file的构造函数。
请参阅以下链接中的java doc:https://docs.oracle.com/javase/7/docs/api/java/io/File.html