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

标签 jenkins jenkins-pipeline jenkins-groovy

背景

我有复杂的构建系统,该系统正在运行并使用共享库。管道代码与共享库存储在同一 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/

相关文章:

jenkins-pipeline - 在声明式管道中散列字符串

bash - 如何使用 ssh 直接连接到远程 docker 容器

java - Jenkins Ant 构建上的自定义 PMD 规则集文件不起作用

mysql - Jenkins 显示 "java.lang.ClassNotFoundException: com.mysql.jdbc.Driver"

jenkins-pipeline - Jenkins 管道 : Enable timestamps in build log console

jenkins - 使用声明性语法跨不同节点运行 Jenkins 并行阶段

Jenkins 共享库无法找到 SQL 驱动程序

jenkins - 如何向 Jenkins 添加用户名和密码?

ubuntu jenkins 安装失败 ~ jenkins 停止/预启动,进程 22907 ... nada

github - 如何使用 Jenkinsfile 设置 github 提交状态而不使用拉取请求构建器