【问题标题】:Combining multiple jenkins shared libraries组合多个jenkins共享库
【发布时间】:2018-09-24 11:46:54
【问题描述】:

是否可以合并多个共享的 Jenkins 库?

例如我有一个公共共享库:my-shared-library(带有 maven 项目的 git 存储库)在包含一些作业的 jenkins 文件夹上定义。每个 在该文件夹内运行的作业可以使用 Jenkinsfile 中的共享库:

@Library("my-shared-library") _
import com.pipelines.Pipeline
new Pipeline().build()

现在我想创建另一个共享库:my-specialized-shared-library,其中包含一些专用管道(在另一个 git 存储库中也作为 maven 项目)。 my-specialized-shared-library 中的管道(groovy 类、脚本等)应该能够从以下位置使用/导入类、管道等: my-shared-library 有可能吗?如果有,推荐的方法是什么?

【问题讨论】:

  • 您能详细说明一下吗?此外,如果您发布完整的代码也会很有帮助。谢谢。
  • 以上为完整代码。 Jenkinsfile 仅包含这 3 行。目的是我想将我的共享库“组件化”到单独的 git 存储库/maven 项目中,然后使一个依赖于另一个。
  • 以什么方式以及为什么?

标签: jenkins


【解决方案1】:

在管理 Jenkins > 配置系统中,我从不同的 URL 定义了 2 个不同的全局管道库。

  • GlobalLibrary-1
  • GlobalLibrary-2

.jenkins 文件:

@Library('GlobalLibrary-1@some_branch') l1 //you can write here _ (underscore) or any other string.
@Library('GlobalLibrary-2@any_branch') l2
import com.lib1.Class1;  // import from GlobalLibrary-1 (Jenkins automatically finds com.lib.Class1 inside GlobalLibrary-1)
import com.prodcode.Class2;  // import from GlobalLibrary-2 (Jenkins automatically finds com.prodcode.Class2 inside GlobalLibrary-2)

node {
    new Class1();
    new Class2();
}

我什至可以在 Class2.groovy 中使用导入来从 GlobalLibrary-1 获取类。

【讨论】:

  • Extending with Shared Libraries 找到这个:/* Accessing multiple libraries with one statement */ @Library(['my-shared-library', 'otherlib@abc1234']) _
  • 当两个或多个库位于不同的存储库(以及不同的项目(bitbucket)或组织(github)中时,这是否有效?如果是,如何定义?
  • 是的@JohnZaj,它适用于不同的存储库。在配置系统中定义全局管道库时,系统会要求您提供 URL。每个库都有自己的 URL,不计其数,它是 github、bitbucket 或本地驱动器上的路径。
猜你喜欢
  • 2010-10-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-09-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多