【问题标题】:Jenkins pipeline shared library vs pluginJenkins 管道共享库 vs 插件
【发布时间】:2017-03-31 22:25:53
【问题描述】:

我正在为两个项目开发 Jenkins 管道。我通过 slack 和电子邮件构建了一些自定义的配置警报消息。我们希望我的代码可以用于我的项目以及其他几个项目。所以我想把它变成一个小库,这样其他人就不需要在每次加入 Jenkins 流水线作业时都问我。我正在考虑使用@Library() 的共享库供其他人使用,如the docs 中所述。

但是,由于我的 lib 依赖于 slack 和 emails 插件的存在,所以如果没有安装这些插件,它将无法使用。

我的问题是:有没有办法在管道共享库中声明依赖关系,或者我必须制作 jenkins 插件来解决这个问题?

【问题讨论】:

    标签: jenkins plugins shared-libraries jenkins-pipeline


    【解决方案1】:

    据我所知,目前无法声明对插件(或 Jenkins 版本)的依赖关系。相反,您可以做的是添加插件检查并向您的库用户提供适当的错误:

    if (Jenkins.getInstance().getPluginManager().getPlugin("Slack+Plugin") == null) {
      error "This shared library function requires "Slack plugin!"
    }
    

    将其放在共享库脚本的开头,在使用插件之前。但是请注意,如果您需要从插件导入类,这会变得很棘手(因为导入首先在 groovy 文件中进行)。在这种情况下你要做的是制作两个脚本,第一个脚本有检查并且是用户调用的脚本,第二个包含所有逻辑和导入,一旦检查通过,第一个脚本就会调用。

    【讨论】:

    • 是的,我想到目前为止我会采用这种有限的共享库方法。这很容易开始,我可能需要与其他詹金斯打交道,但从现在开始还需要很长时间。谢谢。
    • 这个答案应该被批准
    猜你喜欢
    • 2023-04-05
    • 2022-01-14
    • 1970-01-01
    • 2020-07-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多