Jenkins 管道共享库与插件

标签 jenkins plugins shared-libraries jenkins-pipeline

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

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

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

最佳答案

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

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

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

关于Jenkins 管道共享库与插件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43150550/

相关文章:

jenkins - 导出和导入 Jenkins Pipeline 脚本批准

java - 如何处理开源项目中的凭据

jenkins - 如何避免 Jenkins 多分支管道作业触发自身

c# - Unity 的 Android 插件给出错误

arrays - 在不同的数据源(插件数组)上烘烤蛋糕控制台

c# - wordpress 最好的 C# 代码高亮插件是什么?

macos - 在 Mac 上从 Fortran 编译 'static' 二进制文件

Android NDK,两个静态库和链接

c++ - Android NDK - 共享库的链接器错误。

jenkins - 无法将GCS存储桶用于 Helm /基于Kubernetes的服务器