2016-08-23 7 views
3

Я хочу использовать слабину Notification Plugin в моих трубопроводов, что очень легко:Проверьте плагин существует в Дженкинс трубопровода (Groovy)

slackSend color: 'danger', message: 'Everything broke' 

Однако, я не хочу, чтобы построить, чтобы сломаться, если slackSend не существует. Есть ли способ проверить это первым?

ответ

1

Вы можете быть в состоянии обернуть его в условном, хотя я не уверен, как Дженкинс добавляет материал к сценариям ...

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

К сожалению, Jenkins ему не нравится 'Scripts не разрешено использовать staticMethod org.codehaus.groovy.runtime.DefaultGroovyMethods отвечает на java.lang.Object java.lang.String'. Я вижу, что подобные «сценарии не разрешены» с множеством вещей, которые, как представляется, могут использовать другие люди, включая 'currentBuild.rawBuild', которые используют другие люди, поэтому я не знаю, правильно ли настроены мои конвейеры. – DanielM

+0

Интересно, действительно ли это объект 'this', который вы должны проверить на' responsesTo' на –

1

Вы всегда можете использовать старую TRY/поймать, чтобы убедиться, ваша сборка не терпит неудачу на этом этапе:

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

Однако, я действительно не понимаю, почему slackSend команда не будет существовать? Он может выйти из строя (например, если ваш Slack-сервер выключен), но если у вас установлен Slack Notification Plugin, он должен существовать!

+1

. Это больше о переносимости. Это на машине Дженкинса, которую я настраивал сам, но если она переместится на главную инженерную, я не хочу, чтобы им приходилось беспокоиться, если она там или нет (у них своя собственная вещь продолжается). Я пробовал этот подход, но он, похоже, не работает. Кроме того, если я сообщаю о сломанной сборке, я бы не хотел менять статус сборки. :) – DanielM

+0

Я попытался записать результат сборки, прежде чем использовать функцию, которую я знал, не существовал, а затем снова установил ее в catch. К сожалению, это все еще не работает 'Нет такого метода DSL 'thisFunctionNoExists', который был найден среди шагов. – DanielM

+0

Просто протестирован над кодом в простом конвейере, и он отлично работает! Вы правы, вам нужно отменить предыдущий результат сборки, я отредактировал свой пост соответственно – Pom12

Смежные вопросы