背景
我有复杂的构建系统,该系统正在运行并使用共享库。管道代码与共享库存储在同一 git 存储库中。两个源都位于 master
分支上。
问题
现在我进行更大规模的重构来改进构建和测试过程。因此,我正在开发 feature
分支,并配置了相应的 Jenkins 作业来测试它。
由于我也对共享库进行了更改,所以有一件事很烦人:要导入库,我必须以这种方式导入此库:
@Library('my_library@feature') _
因此,要将这些更改合并到 master
,我必须更新代码。
有没有办法访问当前管道代码已 checkout 的分支(或其他类型的引用)? 因此,当我合并分支时,共享库将遵循而不更改代码。
我在想这样的事情:
@Library("my_library@${PIPELINE_SOURCE_REF}") _
我搜索文档和互联网,但没有找到类似的内容。
或者有其他解决方案吗?
最佳答案
如果您对库分支使用参数就足够了,那么可以这样做,请查看 shared libraries documentation
您需要更改:
@Library('my_library@feature') _
至
library("my_library@${params['BRANCH']}")
这应该加载全局变量。
如果您需要实例化某个类,可以执行以下操作:
def someClass = library("my_library@${params['BRANCH']}").com.mypackage.SomeClass.new(this)
它有文档中提到的一些限制,具体取决于您的库的外观
关于jenkins - 从与当前管道源相同的分支加载 Jenkins 共享库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71840276/