2017-02-16 2 views
0

Ich verwende das Jenkins Pipeline-Plugin, um mein Projekt zu testen. Ich habe ein starkes Skript der folgenden Form:Führen Sie die Aufgaben in einem Knoten zweimal aus

node { 

    stage("checkout") { 
    //some other code 
    } 

    stage("build") { 
    //some other code 
    } 

    stage("SonarQube Analysis") { 
    //some other code 
    } 

} 

Wenn ich einen Funktionszweig, die ich in master zusammenführen möchten, würde Ich mag zunächst auf master diesen Prozess tun, dann auf die Funktion und sehen, ob die Die SonarQube-Analyse ist bei der Funktion schlechter.

würde ich etwas von dieser Art mag:

def codeCoverageMaster = node("master") 
def codeCoverageFeature = node("feature/someFeature") 
if(codeCoverageFeature < codeCoverageMaster) { 
    currentBuild.result = "ERROR" 
} 

Ist so etwas möglich?

Antwort

1

Sie es tun, indem eine Funktion definiert, die das Skript enthalten und senden Sie das Sonarqube Ergebnis, dann rufen Sie die Funktion zweimal und vergleichen Sie das Ergebnis:

def runBranch(String path) { 
    def sonarQubeRes 
    node { 

    stage("checkout") { 
     //some other code 
     // Use path supplied to this function 
    } 

    stage("build") { 
     //some other code 
    } 

    stage("SonarQube Analysis") { 
     //some other code 
    } 

    } 
    return sonarQubeRes 
} 

def codeCoverageMaster = runBranch("master") 
def codeCoverageFeature = runBranch("feature/someFeature") 
if(codeCoverageFeature < codeCoverageMaster) { 
    currentBuild.result = "ERROR" 
} 
Verwandte Themen