jenkins jenkins-pipeline

¿Cómo manipular el resultado de la compilación de un trabajo de canalización de Jenkins?



jenkins-pipeline (3)

Tengo algunos problemas para manipular el resultado de compilación de una tubería de Jenkins. Lo he reducido al siguiente problema: ¿alguien sabe por qué la siguiente tubería de Jenkins no hace que el resultado de la construcción sea un ÉXITO? En cambio, la compilación falla.

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


¡Eso funciona y se puede ejecutar desde otro trabajo!

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'') build.@result = hudson.model.Result.SUCCESS // build.@result = hudson.model.Result.NOT_BUILT // build.@result = hudson.model.Result.UNSTABLE // build.@result = hudson.model.Result.FAILURE // build.@result = hudson.model.Result.ABORTED


Para una respuesta más simple, solo obtenga una compilación en bruto y configure el campo directamente:

currentBuild.rawBuild.@result = hudson.model.Result.SUCCESS


Supongo que esto es por diseño, "el resultado solo puede empeorar" en 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); }

Eso es un fastidio