Могу ли я передать список элементов из WORKSPACE в сценарий Groovy?

Что я имею в виду, у меня есть файл в рабочем пространстве Jenkins с элементами

"element1", "element2", "element3", "element4"

Я хочу передать этот файл как список скрипту Groovy.

List components = ["element1", "element2", "element3", "element4"]

Я пытался использовать

List componentsList = []

env.Components = sh(script: "cat $WORKSPACE/File", returnStdout: true).trim().componentsList.addAll()

Но это не работает (сообщение об ошибке от Дженкинса)

groovy.lang.MissingPropertyException: No such field found: field java.lang.String componentsList

P.S. Мне нужен этот список для создания карты из 2 списков в будущем

Кстати, я думаю, что могу избежать использования sh для получения содержимого из файла. Возможно, для этого лучше использовать инструменты Groovy?

1
macder 16 Мар 2023 в 21:44

1 ответ

Я бы не пытался использовать sh(), так как все, что он делает, это читает файл. Я бы сделал что-то вроде этого, чтобы прочитать файл:

env.Components = readFile("File").trim().split(",") as List

Вы можете пропустить определение списка и вообще пропустить sh. Использование readFile будет считывать файл в строку из текущего рабочего каталога, который, скорее всего, является корнем рабочей области.

Одна вещь, которую следует учитывать, это то, что если бы эти компоненты были на отдельных строках, вы могли бы сделать это:

env.Components = new File("File").collect { it.trim() }
1
chubbsondubs 16 Мар 2023 в 22:07