Как манипулировать результатом сборки работы трубопровода Дженкинса?

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

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

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

Ответ 1

Я думаю, это по дизайну, "результат может только ухудшиться" в 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);
}

Что обломка

Ответ 2

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

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

Ответ 3

Это работает и может быть выполнено из другого задания!

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

Ответ 4

Добавляя к ответу @metajiji, вам нужно будет утвердить команды для hudson.model.result и project.getBuildByNumber в основной конфигурации jenkins.