Jenkins流水线共享库与插件的区别

4
我正在为两个项目的Jenkins pipeline工作。我通过Slack和电子邮件构建了一些定制的配置警报消息。我们希望我的代码可以用于我的项目以及其他几个项目。因此,我考虑将其制作成一个小库,以便其他人不需要每次上任Jenkins pipeline任务时都要问我。我想使用共享库和@Library(),供其他人使用,如文档中所述(链接)
然而,由于我的库依赖于Slack和电子邮件插件的存在,当这些插件未安装时,它将无法使用。
我的问题是:Jenkins共享库中是否有声明依赖项的方法,或者我必须编写Jenkins插件来解决此问题?
1个回答

9
据我所知,目前无法声明插件的依赖关系(或Jenkins的版本)。相反,您可以添加插件检查并向您库的用户提供适当的错误提示。
if (Jenkins.getInstance().getPluginManager().getPlugin("Slack+Plugin") == null) {
  error "This shared library function requires "Slack plugin!"
}

在任何插件使用之前,将以下内容放置于您的共享库脚本开头。但需要注意的是,如果您需要从插件中导入类(因为导入在groovy文件中排在最前面),这会变得棘手。在这种情况下,您需要制作两个脚本,第一个脚本包含检查并由用户调用,第二个脚本包含所有逻辑和导入,并在第一个脚本通过检查后被调用。


是的,我想到目前为止我会采用这种有限的共享库方法。它很容易上手,而且我可能需要处理其他的Jenkins,但那将是很长一段时间之后的事了。谢谢。 - weifeng zhang
2
这个答案应该被批准。 - Patrice M.

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接