Groovy用于从SCM(Git)的管道脚本中列出适当的存储库URL

kknvjkwl  于 2022-11-01  发布在  Git
关注(0)|答案(2)|浏览(195)

我有一些管道作业定义为SCM中的管道脚本,其中选择了Git。例如:Pipeline script from SCM image
我尝试在脚本控制台中运行Groovy脚本,以报告GUI中配置的所有作业和Repository URL,但我找到的解决方案(如getUserRemoteConfigs()[0].getUrl())均未返回正确的Repository URL。
我不知道它是从哪里获取值的,但是getUrl()只是返回一些其他的值,这些值与管道定义的GUI部分中显示的值不匹配。
有人知道什么样的代码可以工作吗?

zte4gxcn

zte4gxcn1#

您可以使用下面的Groovy脚本来获取Git URL。

Jenkins.instance.getAllItems(Job.class).each { jobitem ->
      if(jobitem instanceof org.jenkinsci.plugins.workflow.job.WorkflowJob) {
        if(jobitem.definition instanceof org.jenkinsci.plugins.workflow.cps.CpsScmFlowDefinition) {
          jobitem.definition.getScm().getRepositories().each { repo ->
                println("Job Name: " + jobitem.getName() + " URLs: " + repo.getURIs())

            } 
        }       
    }     
}
8ljdwjyq

8ljdwjyq2#

我想明白了。我真的在任何地方都找不到这个解决方案。我不得不查看作业的config.xml并研究模型,以得出以下代码来返回正确的存储库URL、Filepath和分支:

import org.jenkinsci.plugins.workflow.job.WorkflowJob;

Jenkins.instance.getAllItems(Job.class).each {
  project = it.getFullName()
  if (it instanceof WorkflowJob) {
      myDef = it.getDefinition()
      try {
            myDef1 = myDef.getScm()
            myDef1.each {
                  println(project+"\t"+it.getUserRemoteConfigs()[0].getUrl()+"\t"+myDef.getScriptPath()+"\t"+it.branches[0]);
            }
      }
      catch(Exception e) {
            //println (project+"\t[Script]")
     }
  }

};

相关问题