Как манипулировать результатом сборки задания конвейера Jenkins?

У меня возникли проблемы с манипулированием результатом сборки трубопровода Дженкинса. Я сузил это до следующей проблемы: кто-нибудь знает, почему следующий конвейер Jenkins не дает результат сборки SUCCESS? Вместо этого сборка не удалась.

print "Setting result to FAILURE"
currentBuild.result = 'FAILURE'

print "Setting result to SUCCESS"
currentBuild.result = 'SUCCESS'
 janDro18 июн. 2018 г., 19:17
почему бы вам не сохранить его в переменной, а затем установить его, как только вы будете готовы?
 Joost12 июл. 2016 г., 07:38
Только что попробовал, но такое же поведение.
 Krzysztof Krasoń08 июл. 2016 г., 20:34
Вы пытались сделать весь сценарий внутри одногоnode?

Ответы на вопрос(3)

Для более простого ответа просто получите необработанную сборку и установите поле напрямую:

[email protected] = hudson.model.Result.SUCCESS

Я предполагаю, что это по замыслу, «результат может только ухудшиться» вsetResult ():

// result can only get worse
if (result==null || r.isWorseThan(result)) {
    result = r;
    LOGGER.log(FINE, this + " in " + getRootDir() + ": result is set to " + r, LOGGER.isLoggable(Level.FINER) ? new Exception() : null);
}

Облом

 Daniel C. Sobral31 июл. 2016 г., 10:53
Это глупо. :(
 MarcusUA21 окт. 2016 г., 13:21
Идея состоит в том, чтобы игнорировать результаты заданий внутри конвейера, установив для Propagate значение false
 Vadim Kotov23 июн. 2017 г., 14:26
@MarcusUA, как я могу игнорировать результат фазы, а не внешнюю работу?
 MarcusUA27 июн. 2017 г., 14:15
@VadimKotov игнорировать результаты для каждой работы внутри фазы.

Это работы и могут быть выполнены с другой работы!

import com.cloudbees.groovy.cps.NonCPS
import jenkins.model.*
import hudson.model.Result

@NonCPS
def getProject(projectName) {
    // CloudBees folder plugin is supported, you can use natural paths:
    // in a postbuild action use `manager.hudson`
    // in the script web console use `Jenkins.instance`
    def project = jenkins.model.Jenkins.instance.getItemByFullName(projectName)
    if (!project) {error("Project not found: $projectName")}
    return project
}

project = getProject('foo/bar')
build = project.getBuildByNumber(2443)
// build = project.getBuild(project, '2443')

[email protected] = hudson.model.Result.SUCCESS
// [email protected] = hudson.model.Result.NOT_BUILT
// [email protected] = hudson.model.Result.UNSTABLE
// [email protected] = hudson.model.Result.FAILURE
// [email protected] = hudson.model.Result.ABORTED

Ваш ответ на вопрос