我有一个带有 groovy 文件
vars/basicPipeline.groovy
的存储库,其中包含单个函数 call
。该存储库用作 Jenkins 的共享库。
提到的文件看起来像这样:
def call(Map config, Closure body) {
node(config.nodeLabel) {
body()
}
}
然后像这样使用这个库:
basicPipeline nodeLabel: 'node' {
echo 'Hello, World!'
}
我想通过运行一些演示管道来使用 Jenkins 本身测试对该库的更改,以显示所提供的
basicPipeline
正在工作。
但是我很难创建管道,它将使用自己版本的库而不是 Jenkins 中配置的 master。
我已经尝试过:
@Library("myrepo@${BRANCH_NAME}") _
但它不适用于变量。library "my-shared-library@$BRANCH_NAME"
说 Only using first definition of library
,并使用 master。basicPipeline.call
仍然会调用从master加载的库版本。如何使我的管道使用文件的本地版本,或从同一分支加载版本?
library "your-library-name@${branch}"
这应该有效 如果您在 jenkins 配置中禁用库的全局注入(隐式加载) 如果管道开头没有
@Library("myrepo@${BRANCH_NAME}") _
Jenkins文件完整内容
library "your-library-name@${env.BRANCH_NAME}"
basicPipeline nodeLabel: 'node' {
echo 'Hello, World!'
}
库应该添加到全局库中