Я пытаюсь перечислить файлы в рабочей области в Jenkins Pipeline, так что я могу использовать их для создания соответствующих параллельных задач.
Пока я мог просто использовать sh ls > files
и читать это, мне нужны объекты File
, которые я могу фильтровать дальше с более сложной логикой. Фактически, Files.listFiles(FileFilter)
было бы идеальным.
Однако я не могу получить список файлов вообще. Во-первых, мне пришлось прибегнуть к некоторым странным вещам, чтобы просто узнать текущий каталог работы для сборки:
sh 'pwd > workspace'
workspace = readFile('workspace').trim()
Теперь я вызываю это, чтобы получить список файлов:
@NonCPS
def getFiles(String baseDir) {
Arrays.asList(new File(baseDir).listFiles())
}
И получить NPE на asList
, что означает, что, прочитав javadoc, что new File(baseDir)
не существует (или не является каталогом).
Я отмечаю его @NonCPS
, потому что он необходим для закрытия groovy на конвейере, который я бы предпочел использовать над полным синтаксисом java < 1.8.