2016-08-08 47 views

Antwort

0

Hier ist die Lösung, die für mich gearbeitet:

  1. installiert Scriptler Plugin für Jenkins und rettete die Groovy-Skript, dass. Jetzt ist das Skript im Verzeichnis JENKINS_HOME/scriptler/scripts verfügbar. Auf diese Weise können Sie den manuellen Schritt des Kopierens von Dateien in Jenkins-Master vermeiden.
  2. die groovy Datei in Post build benutzt:

def env = manager.build.getEnvironment(manager.listener) evaluate(new File(env['JENKINS_HOME'] + "\\scriptler\\scripts\\GroovyForPostBuild.groovy"))

+0

Danke @Daniel Omoto – rkkreddy

1

Sie können jede groovy Datei, die auf dem Jenkins Master lebt, in den groovigen Postbuild laden und ausführen. Beispielsweise könnten Sie auf dem Laufwerk c ein spezielles Verzeichnis haben, in dem alle gängigen Skripts gespeichert sind. Ich werde meine Antwort später mit einigen Code aktualisieren, die zeigt, wie Sie in das Skript laden

aktualisieren

Vorausgesetzt Sie haben eine test.groovy Datei auf Ihrem C:. Laufwerk, sollte es so einfach sein wie folgt in Groovy Postbuild:

evaluate(new File("C:\\test.groovy")) 

Bitte lesen Sie den Kommentarbereich des Groovy Postbuild für weitere Beispiele und möglicherweise auch andere Wege.

+0

als Sie. Diese Lösung half mir auf halbem Wege. Hier ist das, was ich getan habe, um es zu einer vollständigen Lösung zu machen: – rkkreddy

+0

Ich denke, dass Ihr Kommentar abgeschnitten wurde, da ich die Lösung nicht sehe. Wenn Sie möchten, können Sie Ihre Lösung als eine andere Antwort hinzufügen und dann als endgültige Lösung akzeptieren zu deinem Problem .. Es würde wahrscheinlich anderen helfen. Wenn meine Antwort hilfreich für Sie war, können Sie sie abstimmen. :) –

0

Dies ist eine Kopie von my answer to this similar question on StackOverflow:

Wenn Sie den Groovy-Skript in Ihrer Code-Repository und auf die geladen haben wollen Build/Test Slave im Arbeitsbereich, dann müssen Sie beachten, dass Groovy Postbuild auf dem Master ausgeführt wird.

Für uns ist der Master ein Unix-Server, während die Build/Test-Slaves Windows-PCs im lokalen Netzwerk sind. Daher müssen wir vor der Verwendung des Skripts einen Kanal vom Master zum Slave öffnen und einen FilePath für die Datei verwenden.

Die folgende war für uns:

// Get an Instance of the Build object, and from there 
// the channel from the Master to the Workspace 
build = Thread.currentThread().executable 
channel = build.workspace.channel; 

// Open a FilePath to the script 
fp = new FilePath(channel, build.workspace.toString() + "<relative path to the script in Unix notation>") 

// Some have suggested that the "Not NULL" check is redundant 
// I've kept it for completeness 
if(fp != null) 
{ 
    // 'Evaluate' requires a string, so read the file contents to a String 
    script = fp.readToString(); 
    // Execute the script 
    evaluate(script); 
}