使用 groovy 脚本从多管道作业中获取 git 存储库

get git repository from multi pipelines jobs with groovy script

我有 200-300 个 multibranchPipelineJob 作业,我想用 DSL 创建它们。

我有这个脚本来获取作业名称

    for(job in      Hudson.instance.getAllItems(org.jenkinsci.plugins.workflow.job.WorkflowJob)
     ) { 
      println job.fullName 
    }

它给了我作业名称,但我不知道如何从中获取 git 存储库。 有什么想法吗?

在多分支管道项目中,只有顶级作业包含有关存储库的信息。所以你应该遍历 WorkflowMultiBranchProject 而不是 WorkflowJob

通过这种方式,您可以获得一个存储库 URL 和 ListRefSpec

for(job in Hudson.instance.getAllItems(org.jenkinsci.plugins.workflow.multibranch.WorkflowMultiBranchProject)) { 
      def repositoryUrl = job.SCMSources[0].remote
      def refSpecs = job.SCMSources[0].refSpecs
}

请注意,这仅适用于 GIT 个存储库。对于 SVN,它会略有不同。