Jenkins 附加到作业属性

Jenkins 附加到作业属性,jenkins,jenkins-pipeline,jenkins-job-dsl,Jenkins,Jenkins Pipeline,Jenkins Job Dsl,job-dsl.groovy中定义的我的作业参数被管道中定义的参数覆盖 我正在使用和Jenkins管道为每个git分支生成Jenkins作业。因为我的代码存储在gitLab中,所以它们需要gitLab集成。我提供的是使用。问题在于“gitLabConnection”,它看起来只能从Jenkins管道内部应用 因此,如果在工作dsl中,我会: branches.each { branch -> String safeBranchName = branch.name.replaceAll('/

job-dsl.groovy中定义的我的作业参数被管道中定义的参数覆盖

我正在使用和Jenkins管道为每个git分支生成Jenkins作业。因为我的代码存储在gitLab中,所以它们需要gitLab集成。我提供的是使用。问题在于“gitLabConnection”,它看起来只能从Jenkins管道内部应用

因此,如果在工作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()
}
///(...)
这样我的分支机构名称和项目名称就不会被覆盖。 还有别的办法解决这个问题吗?
是否可以将“gitlab连接('gitlab.internal')”附加到Jenkins管道中的属性中?

有两种方法可以解决此问题。第一个只使用Jenkins管道代码,但如果选择此路径,则初始作业运行很可能会失败。这种初始失败将会发生,因为在第一次作业运行时,管道会创建Jenkins作业参数。一旦参数被创建,作业将工作

  • 选项“1”-仅使用Jenkins管道。
    检查中:
    “此项目已参数化”。
    添加所需的参数,并点击“生成管道脚本”。就我而言,我得到:

    性质([ gitLabConnection(gitLabConnection:'my_gitlab_connection',jobCredentialId:'',useAlternativeCredential:false), [$class:'JobRestrictionProperty'], 参数([ 字符串(defaultValue:'test',description:'test',name:'test',trim:false) ]), throttleJobProperty(类别:[],limitOneJobWithMatchingParams:false,maxConcurrentPerNode:0,maxConcurrentTotal:0,paramsToUseForLimit:“”,throttleEnabled:false,throttleOption:'project') ])

  • 选项“2”-它更复杂,但也更强大。由于上述问题,我最终选择了它。
    使用Jenkins job DSL插件- Gitlab插件可以很好地使用它


  • 不幸的是,似乎还没有办法做到这一点。在上有一些关于这方面的讨论,我可能会打开一个功能请求,允许人们“附加到属性”

    老实说,这是我能在网上找到的唯一参考资料。我知道已经2年了,但我已经不知所措了。你找到答案了吗?请检查我的答案:)问题是如何在Jenkins文件中定义“属性”,以便它们不会覆盖JobDSL已在作业上设置的属性。是@BrandonSquizzato,这将是选项1。