Ich habe einige groovy Code, den ich in Jenkins Groovy Post Build-Plugin von mehreren Jobs wiederverwenden will. Wie kann ich das erreichen? Gibt es einen Ort, an dem ich das Skript in einer globalen Variable speichern kann und das in den Jobs aufrufen kann, wo immer ich es brauche?Wie man groovy Skript in Jenkins Groovy Post Build-Plugin wiederverwenden?
Antwort
Hier ist die Lösung, die für mich gearbeitet:
- 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. - die groovy Datei in Post build benutzt:
def env = manager.build.getEnvironment(manager.listener) evaluate(new File(env['JENKINS_HOME'] + "\\scriptler\\scripts\\GroovyForPostBuild.groovy"))
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.
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
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. :) –
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);
}
Danke @Daniel Omoto – rkkreddy