从与当前管道源相同分支加载Jenkins共享库

zazmityj  于 2022-12-03  发布在  Jenkins
关注(0)|答案(2)|浏览(135)

背景
我有一个复杂的构建系统,它正在运行并使用共享库。管道代码存储在共享库所在的git仓库中。两个源代码都在master分支上。

问题

现在我做了更大的重构来改进构建和测试过程。所以我在feature分支上工作,我配置了相应的Jenkins作业来测试它。
由于我也对共享库进行了修改,因此有一件事很烦人:要导入库,我必须按以下方式导入此库:

@Library('my_library@feature') _

因此,为了将这些更改合并到master,我必须更新代码。
有没有办法访问当前管道代码 checkout 的分支(或其他类型的引用)?因此,当我合并分支时,共享库会在不更改代码的情况下继续。
我在想这样的事情:

@Library("my_library@${PIPELINE_SOURCE_REF}") _

我搜索了文档和互联网,没有发现任何类似的东西。
还是有其他的解决方案?

hsvhsicv

hsvhsicv1#

如果对库分支使用一个参数就足够了,可以这样做,请查看共享库文档
您需要更改:

@Library('my_library@feature') _

library("my_library@${params['BRANCH']}")

这将加载全局变量。
如果需要示例化某个类,可以执行以下操作:

def someClass = library("my_library@${params['BRANCH']}").com.mypackage.SomeClass.new(this)

它有一些文档中提到的限制,这取决于您的库的外观

iyr7buue

iyr7buue2#

在某个非公共存储库中,我在管道前面发现了类似的东西。

def pipelineBranch = scm.branches[0].name
library("someLibrary@${pipelineBranch}")

尚未测试,但似乎合理。scm.branches[0].name应包含用于检查管道代码的分支名称。

相关问题