2012-10-09 15 views
6

Ich entwickle derzeit ein einfaches Plugin, das Ergebnisse von einem Jenkins-Build abruft. Ich erweitere Notifier und verwende build.getResults(), um die Informationen zu erhalten. Wenn ich jedoch mein Plugin hochlade, kann ich es nicht als Post-Build-Aktion festlegen.
Wenn ich meine Builds starte, brechen sie auf build.getResults(), da ich versuche, die Ergebnisse zu erhalten, während der Build noch läuft.

Was kann ich tun, um das Build-Ergebnis richtig zu erhalten?
Entwickeln Jenkins Post-Build-Plugin

Antwort

1

Da dies so einfach klingt, sind Sie sicher, dass Sie ein Plugin benötigen? Schauen Sie sich stattdessen Groovy Postbuild step an. Sie sind viel einfacher zu schreiben. Es gibt einige gute Verwendungsbeispiele in dem Link. Wenn Sie sich entscheiden, dass Sie wirklich ein Plugin benötigen, schauen Sie, ob Sie ein existierendes erweitern können, anstatt selbst zu schreiben; Es ist ein einfacher Weg, um das Jenskins-Plugin-Schreiben zu verstehen.

+0

Ich habe das Groovy Postbuild-Plugin verwendet, um einen sicheren Web-Service aufzurufen (durch Coverity Connect 6.5.3) und hatte Probleme mit der Jenkins-JVM, die nicht in PermGen läuft (JDK 1.7 Update 15). Bis jetzt hat das Plugin Groovy Postbuild funktioniert, um die REST-Dienste eines SonarQube aufzurufen. Zusammenfassend ist zu beachten, dass das Groovy Postbuild-Plugin Grenzen haben kann. – buzz3791

+0

Diese Antwort sollte Beispiele dafür bieten, bevor Sie die Verwendung eines vorhandenen Plugins vorschlagen. –

+0

@JohnZeller gibt es viele Verwendungsbeispiele in dem Link, den ich zur Verfügung gestellt habe, aber ich habe die Antwort bearbeitet, um das klarer zu machen. –

2

Die beste Sache ist, sich existing plugins which use Notifier extension point anzuschauen (klicke, um Implementierung Plugins Liste zu erweitern).

Überprüfen Sie, ob Sie die Klasse Descriptor implementation (inner) sowie config.jelly haben. Überprüfen Sie auch jenkins.out und jenkins.err Logs für alle Ausnahmen (wie zum Beispiel fehlerhafte config.jelly).

Edit: Eigentlich Notifier Unterklasse dieses Plugins sieht wirklich einfach wie Notifier gehen: https://wiki.jenkins-ci.org/display/JENKINS/The+Continuous+Integration+Game+plugin, sehen vor allem seine GamePublisher.java und entsprechenden config.jelly, und es ist GameDescriptor.java, die eine vollständige äußere Klasse gemacht worden ist (oft Descriptor innere Klasse). Auch wenn Sie Optionen in Jenkins Globale Konfiguration wünschen, benötigen Sie eine global.jelly, aber wenn Sie solche Optionen nicht haben, können Sie das einfach weglassen (im Gegensatz zu config.jelly, das Sie für Notifier haben müssen, auch wenn es das ist leer, wie hier).

Als allgemeine Anmerkung, kann es wirklich ärgerlich sein, wenn die Dinge nicht funktionieren, und Sie erhalten keine Fehler, einfach Ihre Sachen durch Jenkins einfach nicht angezeigt ... Wenn Sie wollen einfach nur die Dinge, für die Arbeit Sie können den Groovy-Build-Schritt einfacher verwenden, aber wenn Sie die Dinge für andere nutzen wollen, reduziert das Ausführen eines anständigen vollständigen Plugins die Support-Anfragen.