2016-07-06 78 views
7

Ho qualche problema a manipolare il risultato di costruzione di una pipeline Jenkins. L'ho ristretto al seguente problema: qualcuno sa perché il seguente gasdotto Jenkins non rende SUCCESS il risultato della costruzione? Invece la build fallisce.Come manipolare il risultato di costruzione di un lavoro di pipeline di Jenkins?

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

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

Hai provato a eseguire l'intero script all'interno di un singolo 'nodo'? –

+0

Ho appena provato, ma lo stesso comportamento. – Joost

risposta

11

Credo che questo è di progettazione, "risultato non può che peggiorare" in 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); 
} 

Questa è una rottura

+1

È stupido. :( –

+3

L'idea è di ignorare i risultati dei lavori all'interno della pipeline impostando Propagate su false – MarcusUA

+0

@MarcusUA come posso ignorare il risultato di una fase, non il lavoro esterno? –

0

di che funziona e può essere eseguito da un altro lavoro!

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