Как получить внутреннее сообщение об ошибке при запуске другой работы в jenkins - PullRequest
0 голосов
/ 08 февраля 2019

Итак, у меня есть конвейер, который порождает другие задания (заключенные в попытку / перехват), например:

script {
    try {
        new_job = build job: 'SomeJob'
    } catch (err) {
        err_msg = err.getMessage()
        error(err_msg)
    }
}

, и он завершается ошибкой, когда порождаемое задание не выполняется, как и предполагалось.Но порожденное задание, если оно терпит неудачу, завершится ошибкой с сообщением об ошибке, потому что я использовал что-то вроде:

if (badCondition) {
    error("BUILD FAILED BECAUSE OF INVALID CONDITION")
}

Но в журнале задания верхнего уровня оно говорит что-то вроде этого:

SomeJob #11 completed with status FAILURE (propagate: false to ignore)

Я бы хотел как-то получить внутреннее сообщение об ошибке, чтобы я мог использовать его для анализа ошибки, не заходя во внутренний журнал.Я открыт для других подходов, таких как установка / возврат некоторой переменной env.Но я не уверен, что это самый простой способ добиться этого.Спасибо.

1 Ответ

0 голосов
/ 08 февраля 2019

Итак, я разобрался с простым обходным путем.

Во внутренней работе.Установите сообщение об ошибке как переменную среды:

if (badCondition) {
    error_msg = "BUILD FAILED BECAUSE OF INVALID CONDITION"
    env.BUILD_FAILED_MESSAGE = error_msg
    error(error_msg)
}

Во внешнем задании порождают задание, игнорируя распространение (так что задание alls "проходит")

script {
    new_job = build job: 'SomeJob', propagate: false
    if (new_job.getResult() == "FAILURE") {
        error(new_job.getBuildVariables().get("BUILD_FAILED_MESSAGE"))
    }
}

Поэтому убедитесь, что всеусловия отказа, установленные env, BUILD_FAILED_MESSAGE, это то, как его можно получить во внешнем задании.Надеюсь, что это поможет другим с тем же условием использования.

...