2016-08-23 6 views

Antwort

1

Möglicherweise können sie in einem bedingten wickeln, obwohl ich nicht sicher bin, wie Jenkins Zeug zu den Skripten ergänzt ...

if(this.respondsTo('slackSend')) { 
    slackSend color: 'danger', message: 'Everything broke' 
} 
+0

Leider Jenkins mag es nicht 'Scripts nicht erlaubt, staticMethod zu verwenden org.codehouse.groovy.runtime.DefaultGroovyMethods reagiert auf java.lang.Object java.lang.String'. Ich sehe diese Art von "Scripts, die nicht erlaubt sind" mit vielen Dingen, die andere Leute zu benutzen scheinen, einschließlich 'currentBuild.rawBuild', die andere Leute benutzen, so dass ich nicht weiß, ob meine Pipelines richtig konfiguriert sind. – DanielM

+0

Ich frage mich, ob es wirklich das "This" -Objekt ist, das Sie überprüfen sollten, dass "Antworten" auf –

1

Man konnte immer die alte try/catch verwenden, um sicherzustellen, Ihre bauen auf dieser Schritt nicht fehlschlagen:

def resultBefore = currentBuild.result 
try { 
    slackSend color: 'danger', message: 'Everything broke' 
} catch(err) { 
    currentBuild.result = resultBefore 
} 

Allerdings sehe ich nicht wirklich, warum slackSend Befehl nicht existieren würde? Es kann fehlschlagen (z. B. wenn Ihr Slack-Server ausgefallen ist), aber solange Sie Slack Notification Plugin installiert haben, sollte es existieren!

+1

Es ist mehr über Portabilität. Es ist auf der Jenkins-Maschine, die ich selbst aufgebaut habe, aber wenn es zu der Hauptmaschine bewegt wird, will ich nicht, dass sie sich Sorgen machen müssen, ob es da ist oder nicht (sie haben ihr eigenes Ding vor sich). Ich habe diesen Ansatz versucht, aber es scheint nicht zu funktionieren. Wenn ich über einen fehlerhaften Build berichte, möchte ich den Build-Status nicht ändern. :) – DanielM

+0

Ich habe versucht, das Build-Ergebnis vor der Verwendung einer Funktion, die ich wusste, nicht existierte und dann setzen es zurück in den Fang. Leider funktioniert das immer noch nicht 'Keine solche DSL-Methode 'thisFunctionNoExists' gefunden unter den Schritten '. – DanielM

+0

Gerade über Code in einer einfachen Pipeline getestet und es funktioniert perfekt! Du hast recht, du musst das vorhergehende Build-Ergebnis zurückstellen, ich habe meinen Beitrag dementsprechend bearbeitet – Pom12

Verwandte Themen