Конвейер сценариев Jenkins - sh возвращает ненулевой код завершения, но на этапе УСПЕШНО - PullRequest
1 голос
/ 24 января 2020

В моем скрипте Jenkins у меня есть этап сборки со следующей командой sh:

def buildcmd = "./scriptname.sh"+ <paramters>
def status = sh returnStatus: true, script:"""cd /to/some/dir
eval ${buildcmd}
"""
if(status != 0)
{
   error("Failure")
}

После выполнения scriptname выходит со статусом 2, а переменная status также содержит 2 и работа терпит неудачу. Но, однако, результат этапа показан как SUCCESS. Я ожидал, что и результат этапа, и результат сборки будут FAILURE.

Может кто-нибудь уточнить это.

1 Ответ

0 голосов
/ 24 января 2020

returnStatus (необязательно)

Обычно сценарий, который завершается с ненулевым кодом состояния, вызывает ошибку шага с исключением. Если этот флажок установлен, возвращаемое значение шага вместо этого будет кодом состояния. Затем вы можете сравнить его с нулем, например.

Источник

Если ваша цель состоит в том, чтобы просто позволить стадии провалиться, используйте returnStatus: false. К сожалению, я не могу сказать вам разницу между status code и exit code (как упомянуто выше). Документация только говорит о том, что если вы установите returnStatus: true, конвейер не будет работать с кодом выхода, равным 0.

Вы можете установить результат конвейера самостоятельно ( Source ):

if(status != 0)
{
   currentBuild.result = 'FAILURE'
}
...