2016-07-06 7 views
7

Ich habe einige Probleme, das Build-Ergebnis einer Jenkins-Pipeline zu manipulieren. Ich habe es auf das folgende Problem eingegrenzt: Wer weiß, warum die folgende Jenkins-Pipeline das Build-Ergebnis nicht ERFOLGREICH macht? Stattdessen schlägt der Build fehl.Wie manipuliert man das Build-Ergebnis eines Jenkins-Pipeline-Jobs?

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

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

Haben Sie versucht, das ganze Skript innerhalb einzelner 'Node' zu ​​tun? –

+0

Ich habe das gerade versucht, aber das gleiche Verhalten. – Joost

Antwort

11

ich das denke, ist von Entwurf, in setResult() „Ergebnis nur noch schlimmer kann“:

// 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); 
} 

Die

Werke
+1

Das ist dumm. :( –

+3

Die Idee ist, Ergebnisse von Jobs in der Pipeline zu ignorieren, indem Sie Propagate auf false setzen – MarcusUA

+0

@MarcusUA Wie kann ich das Ergebnis einer Phase, nicht externen Job ignorieren? –

0

Das ist ein doofes ist und von einem anderen Job ausgeführt werden!

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