Ответ 1
Обновление
Начиная с 6/2016 JENKINS-26133 официально отмечен как Решено. Поэтому перед попыткой обходных решений сначала попробуйте поддерживать реализацию для sh
/bat
, что позволяет использовать returnStdout
и returnStatus
параметров.
Обходные
К сожалению, эта функция по-прежнему не поддерживается и отсутствует. Для получения дополнительной информации см. Официальный билет:
JENKINS-26133 Shell script прием/возвращение вывода/статус Состояние: Правопреемник: Приоритет: Разрешение: Открыть Джесси Глик Основные нерешенные
Описание
В настоящее время sh не имеет значимого возвращаемого значения и выдает исключение если статус выхода не равен нулю. Было бы неплохо иметь возможность верните код выхода (ноль или нет) в виде целочисленного значения:
def r = sh script: 'someCommand', returnStatus: true
Текущее обходное решение:
sh 'someCommand; echo $? > status' def r = readFile('status').trim()
Или вернуть его стандартный вывод (похожий на backticks оболочки):
def lines = sh(script: 'dumpStuff.sh', returnStdout: true).split("\r?\n")
Обход проблемы:
sh 'dumpStuff.sh > result' def lines = readFile('result').split("\r?\n")
Или для этого требуется что-то на стандартном вводе:
sh script: 'loadStuff.sh', stdin: someText
Обход проблемы:
writeFile file: 'input', text: someText > sh 'loadStuff.sh < input'
Возможно, потребуются некоторые изменения API в долговременной задаче.