Jenkins管道共享库vs插件

时间:2017-03-31 22:25:53

标签: jenkins plugins shared-libraries jenkins-pipeline

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

但是,由于我的lib依赖于slack和emails插件的存在,因此在未安装这些插件时它将无法使用。

我的问题是:是否有办法在管道共享库中声明依赖项,或者我必须制作jenkins插件才能解决此问题?

1 个答案:

答案 0 :(得分:4)

据我所知,目前无法向插件声明依赖项(或Jenkins的版本)。相反,你可以做的是添加一个插件检查,并给你的库用户一个正确的错误:

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

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