#groovy #hashmap #jenkins-pipeline
Вопрос:
Я запускаю следующий фрагмент заводного кода для чтения key:value
из входного файла Input.txt
def var1 = 123;
def aVer = sh(returnStdout: true, script: "cat Input.txt | grep A_${var1} | cut -f2 -d':'").trim()
def bVer = sh(returnStdout: true, script: "cat Input.txt | grep B_${var1} | cut -f2 -d':'").trim()
def lVer = sh(returnStdout: true, script: "cat Input.txt | grep L_${var1} | cut -f2 -d':'").trim()
println ("a is ${aVer}, b is ${bVer}, l is ${lVer} n");
INPUT_FILE
gt; cat Input.txt
A_123:0.1
B_123:0.2
L_123:0.3
ВЫВОД ВЫБОРКИa is 0.1, b is 0.2, l is 0.3
Это всего лишь фрагмент. В среде разработки я выполняю приведенный выше код в цикле for для разных значений
var1
.Проблема здесь в том, что приведенный выше код отлично работает на
rhel60
машине, но наcentos
машине я получаю следующую ошибку:
script returned exit code 127
Может ли кто-нибудь помочь мне понять причину вышеуказанной ошибки на
centos
машине?Я также готов изменить это на чистый заводной код только вместо использования команд оболочки, как показано выше.
Комментарии:
1.
("input.txt" as File).readLines().collectEntries{ it.split(":", 2) }
просто прочитал бы весь файл в одну карту, а затем вы могли бы выбрать оттуда свои значения.2. @cfrick, Это похоже на ответ для меня, если файл хранится локально на главном, а не на сервере сборки.
3. @cfrick, @Matt, файл
input.txt
хранится на сервере сборки, а не на Jenkins master. Будет ли предложенный вами код не работать, если файл не находится на master?