Jenkins使用DSL将git子模块添加到multibranchPipelineJob

Mor*_*ajb 0 jenkins jenkins-job-dsl

我有一个DSL脚本来创建我的Jenkins管道作业。

String[] repos =
    ['xxx']    

for (int i = 0; i < repos.length; i++) {
    repoName = repos[i];    
    multibranchPipelineJob('PIPELINE-'+repoName) {
        branchSources {
            git {
                remote('git@github.com:yyy/'+repoName+'.git')
                credentialsId('112233445566')
            }
        }
        description ("""<p> <b>generate by DSL - DO NOT CHANGE Manually </b> <p>""")
        triggers {
            periodic(2)
        }
        orphanedItemStrategy {
            discardOldItems {
                numToKeep(0)
                daysToKeep(0)
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

我要添加其他行为 -高级子模块行为在此处输入图片说明

das*_*ker 6

内置DSL不支持“其他行为”,但是自动生成的DSL支持

multibranchPipelineJob('example-mbp2') {
  branchSources {
    branchSource {
      source {
        git {
          id('bbedfd29-5bb0-4c13-b040-0dbd0d19345b')
          remote('https://github.com/jenkinsci/job-dsl-plugin.git')
          traits {
            submoduleOptionTrait {
              extension {
                disableSubmodules(false)
                recursiveSubmodules(true)
                trackingSubmodules(false)
                reference(null)
                timeout(null)
                parentCredentials(true)
              }
            }
          }
        }
      }
    } 
  }
}
Run Code Online (Sandbox Code Playgroud)