我在job-dsl.groovy中定义的工作参数被管道中定义的参数覆盖。
我正在使用job-dsl-plugin和Jenkins管道为每个git分支生成Jenkins作业。正弦我的代码存储在gitLab中,它们需要gitLab集成。我提供使用gitlab-plugin。问题在于'gitLabConnection'看起来只能从Jenkins管道内部应用。
因此,如果在job-dsl中,我会这样做:
branches.each { branch ->
String safeBranchName = branch.name.replaceAll('/', '-')
if (safeBranchName ==~ "^release.*")
{
return
}
def branch_folder = "${basePath}/${safeBranchName}"
folder branch_folder
pipelineJob("$branch_folder/build") {
logRotator {
numToKeep 20
}
parameters {
stringParam("BRANCH_NAME", "${safeBranchName}", "")
stringParam("PROJECT_NAME", "${basePath}", "")
{
}
然后在我的Jenkins管道中,添加“gitLabConnection”
node('node_A') {
properties([
gitLabConnection('gitlab.internal')
])
stage('clean up') {
deleteDir()
}
///(...)
我必须这样做:
node('node_A') {
properties([
gitLabConnection('gitlab.internal'),
parameters([
string(name: 'BRANCH_NAME', defaultValue: BRANCH_NAME, description: ''),
string(name: 'PROJECT_NAME', defaultValue: PROJECT_NAME, description: '')
])
])
stage('clean up') {
deleteDir()
}
///(...)
这样我的BRANCH_NAME和PROJECT_NAME不会被覆盖。
还有另一种解决方法吗?
是否可以将'gitLabConnection('gitlab.internal')'附加到Jenkins管道中的属性?
最佳答案
不幸的是,似乎还没有一种方法可以做到这一点。在https://issues.jenkins-ci.org/browse/JENKINS-43758上对此进行了一些讨论,我可能最终会打开一个功能请求,以允许人们“附加到属性”
关于jenkins - 附加到作业属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45984104/