【问题标题】:Execute Jenkins Pipeline step only when available on Jenkins instance仅在 Jenkins 实例上可用时执行 Jenkins 流水线步骤
【发布时间】:2018-02-14 15:01:00
【问题描述】:

我们正在使用 Jenkins Multibranch 项目构建我们的产品,该项目定义了一个 Jenkinsfile 用于构建指令。

部分步骤是支持使用 Jenkins 插件调用外部服务。此类调用的示例是 slackSend 通过 slack 通知开发人员完成/失败的作业或 step([$class: 'StashNotifier']) 通知 Stash/Bitbucket reg。构建结果。

同一个项目现在应该作为分支在另一个团队/Jenkins 实例上运行,可能没有提到的 Slack/Stash 或其他集成。

由于缺少上面提到的插件,我如何才能避免 Jenkins 工作失败?

  1. 是否有可能从Jenkinsfile 中查看给定步骤是否可用?
  2. 寻找将属性设置为多分支管道配置本身的一部分的可能性,不幸的是,我没有找到任何东西。如果可能,在哪里设置多分支管道范围的环境变量?
  3. 是否可以自定义内置条件,例如现有分支when { branch 'master' } (https://jenkins.io/doc/book/pipeline/syntax/#when)

感谢您的支持,欢迎提出任何建议。

【问题讨论】:

    标签: jenkins-plugins jenkins-pipeline


    【解决方案1】:

    用 catchError 包围它:

    catchError {
      slackSend ...
    }
    

    顺便说一句,如果您使用Bitbucket Branch Source Plugin,则根本不需要处理存储通知器。这将使您的构建状态毫不费力地出现在 Bitbucket 中。

    【讨论】:

    • 您好 Hendrik,感谢您的快速响应和推动正确方向的努力。我现在在有问题的调用周围使用try { ... } catch (err) { },因为catchError 也会将构建设置为失败。不像希望的那样具有声明性,但应该没问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-09-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多