2017-06-01 5 views
1

Ich konvertiere meine bestehenden Build-Jobs von Jenkins Job DSL generiert werden.Jenkins Job DSL zurück Skript Ergebnisse

Die Jobs sind in erster Linie auf Maven basiert und rufen Sonar auf. Die vorhandenen Jobs führen einige Shell-Befehle aus, die einen Aufruf an den Sonar-Server senden, um zu testen, ob der Sonar-Lauf ein Sonar Quality Gate passiert hat. Wenn es das Quality Gate passiert, wird der Job fortgesetzt, andernfalls schlägt es fehl. Der Codeblock dafür ist:

Ich versuche, diese Funktionalität in Jenkins Job DSL zu replizieren. Um dies zu tun, muss ich die Maven Group & Artefakt-ID-Informationen erhalten, den Befehl zum Abfragen des Sonar-Servers erstellen und dann das Ergebnis der Abfrage zurückgeben.

Ich sehe in der Job-DSL-Dokumentation keine Informationen darüber, wie der Status eines Shell-Schritts zurückgegeben wird. Bisher ist der einzige Weg, ich sehe es zu tun, ist 1 oder mehr DSL-Shell-Schritt ausführen, um die Group + Artifact ID Informationen zu erhalten, formulieren Sie die Ergebnisse als Jenkins Umgebungsvariablen & schreiben Sie sie in eine temporäre Datei; Ich injiziere dann diese Variablen in den Build-Job; Sobald dies erledigt ist, mache ich dann den Anruf zum Sonar-Server und schreibe das Ergebnis in eine andere temporäre Datei und untersuche das. Offensichtlich ist das ziemlich kludgy.

Gibt es einen besseren Weg, es zu tun, ohne unbedingt den Shell-Schritt zu benutzen? Vielen Dank im Voraus.

Antwort

0

Ich würde in Betracht ziehen, diesen Teil Ihres Builds erneut zu implementieren und die Verwendung eines Shell-Schritts zu vermeiden.

Wenn Sie auf die (sehr zufrieden) gehen Job-dsl api-Dokumentation können Sie sehen, dass es Sonar dsl bereit ist, und wartet auf Sie verwendet werden ...

https://jenkinsci.github.io/job-dsl-plugin/#method/javaposse.jobdsl.dsl.helpers.publisher.MavenPublisherContext.sonar

Meiner Meinung nach ist es wäre besser Nutzung des Job DSL zu machen, die es mit Sonar beschäftigt, anstatt Ihre Sonar-Tests über ein Shell-Skript

läuft

Ihr Code weniger Sprachen haben zu kämpfen, sauberer, einfacher zu warten und zu verstehen.

+1

Vielen Dank Rob, ich habe mir die Sonar-DSL-Methode angeschaut. In meinem Szenario habe ich die Sonar-Analyse bereits mit einem früheren Maven-Aufruf ausgeführt (der für die Nutzung des Job-DSLs verwendet werden könnte. Was ich jetzt tun möchte, ist im Grunde ein Pass/Fail zum Jenkins-Job basierend auf der bereits fertiggestellte Sonar-Lauf, ich konnte nicht sehen, wie die DSL-Methode das erreichen würde. – DaveR

Verwandte Themen