【发布时间】:2016-08-23 22:38:59
【问题描述】:
我想在我的管道中使用 Slack 通知插件,这非常简单:
slackSend color: 'danger', message: 'Everything broke'
但是,如果 slackSend 不存在,我不希望构建中断。有没有办法先检查一下?
【问题讨论】:
标签: jenkins groovy jenkins-plugins jenkins-pipeline
我想在我的管道中使用 Slack 通知插件,这非常简单:
slackSend color: 'danger', message: 'Everything broke'
但是,如果 slackSend 不存在,我不希望构建中断。有没有办法先检查一下?
【问题讨论】:
标签: jenkins groovy jenkins-plugins jenkins-pipeline
您也许可以将其包装在条件中,但我不确定 Jenkins 如何将内容添加到脚本中...
if(this.respondsTo('slackSend')) {
slackSend color: 'danger', message: 'Everything broke'
}
【讨论】:
Scripts not permitted to use staticMethod org.codehaus.groovy.runtime.DefaultGroovyMethods respondsTo java.lang.Object java.lang.String。我看到这种“不允许使用的脚本”有很多其他人似乎可以使用的东西,包括其他人使用的 currentBuild.rawBuild,所以我不知道我的管道是否配置正确。跨度>
this 对象,你应该检查那个 respondsTo
您始终可以使用旧的 try/catch 来确保您的构建不会在此步骤中失败:
def resultBefore = currentBuild.result
try {
slackSend color: 'danger', message: 'Everything broke'
} catch(err) {
currentBuild.result = resultBefore
}
但是,我真的不明白为什么slackSend 命令不存在?它可能会失败(例如,如果您的 Slack 服务器已关闭),但只要您安装了 Slack Notification Plugin,它就应该存在!
【讨论】:
No such DSL method 'thisFunctionNoExists' found among steps。