【发布时间】:2017-08-31 14:36:00
【问题描述】:
我在 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 管道中的属性?
【问题讨论】:
-
老实说,这是我在网上能找到的唯一参考资料。我知道已经有 2 年了,但我已经筋疲力尽了。你找到答案了吗?
-
检查我的答案:)
标签: jenkins jenkins-pipeline jenkins-job-dsl