groovy列出Jenkins作业,作业中使用GIT URL

groovy列出Jenkins作业,作业中使用GIT URL,groovy,jenkins-pipeline,jenkins-groovy,Groovy,Jenkins Pipeline,Jenkins Groovy,我们需要打印这些作业中配置的Jenkins作业URL和GIT URL 例如: 假设我的Jenkins URL为:&我的git URL为ssh://git:424 如果我从Jenkins运行groovy代码,它应该返回: |ssh://git:424/repo_name1 (在作业1的SCM部分配置的GIT URL) |ssh://git:424/repo_name2 (在作业2的SCM部分配置的GIT URL) 我有以下列出作业的代码: Jenkins.instance.getAllItems(

我们需要打印这些作业中配置的Jenkins作业URL和GIT URL

例如:

假设我的Jenkins URL为:&我的git URL为ssh://git:424

如果我从Jenkins运行groovy代码,它应该返回:

|ssh://git:424/repo_name1 (在作业1的SCM部分配置的GIT URL)

|ssh://git:424/repo_name2 (在作业2的SCM部分配置的GIT URL)

我有以下列出作业的代码

Jenkins.instance.getAllItems(AbstractProject.class).each {it ->
println it.fullName;
}
和下面列出SCM值的代码

Jenkins.instance.getAllItems(hudson.model.AbstractProject.class).each {it ->
  scm = it.getScm()
  if(scm instanceof hudson.plugins.git.GitSCM)
  {
    println scm.getUserRemoteConfigs()[0].getUrl()
  }
}
println "Done"
上面的代码首先返回Jenkins作业URl,然后返回SCM URl,但我必须手动将其映射为SCM所属的Jenkins作业URl

有没有办法,我可以使用groovy打印Jenkins作业URL及其SCM值


谢谢你的帮助

如果您使用的是
WorkflowJob
,那么下面的代码片段应该适合您

Jenkins.instance.getAllItems(Job.class).each{
scm = it.getTypicalSCM();
project = it.getAbsoluteUrl();
if (scm instanceof hudson.plugins.git.GitSCM) {
scm.getRepositories().each{
    it.getURIs().each{
        println(project.toString() +":"+ it.toString());
    }
  }
 }
}

如果您使用的是
WorkflowJob
,那么下面的代码片段应该适合您

Jenkins.instance.getAllItems(Job.class).each{
scm = it.getTypicalSCM();
project = it.getAbsoluteUrl();
if (scm instanceof hudson.plugins.git.GitSCM) {
scm.getRepositories().each{
    it.getURIs().each{
        println(project.toString() +":"+ it.toString());
    }
  }
 }
}
这对我很有用:

Jenkins.instance.getAllItems(Job.class).each {
  scm = it.getScm();
  project = it.getAbsoluteUrl();

  if (scm instanceof hudson.plugins.git.GitSCM) {
    scm.getRepositories().each {
      it.getURIs().each {
          println(project.toString() +":"+ it.toString());
      }
    }
  }
}
println "done"
这对我很有用:

Jenkins.instance.getAllItems(Job.class).each {
  scm = it.getScm();
  project = it.getAbsoluteUrl();

  if (scm instanceof hudson.plugins.git.GitSCM) {
    scm.getRepositories().each {
      it.getURIs().each {
          println(project.toString() +":"+ it.toString());
      }
    }
  }
}
println "done"

这适用于经典作业和工作流作业:

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

def printScm(project, scm){
    if (scm instanceof hudson.plugins.git.GitSCM) {
        scm.getRepositories().each {
            it.getURIs().each {
                println(project + "\t"+ it.toString());
            }
        }
    }
}

Jenkins.instance.getAllItems(Job.class).each {

    project = it.getFullName()
    if (it instanceof AbstractProject){
        printScm(project, it.getScm())
    } else if (it instanceof WorkflowJob) {
        it.getSCMs().each {
            printScm(project, it)
        }
    } else {
        println("project type unknown: " + it)
    }

}

这适用于经典作业和工作流作业:

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

def printScm(project, scm){
    if (scm instanceof hudson.plugins.git.GitSCM) {
        scm.getRepositories().each {
            it.getURIs().each {
                println(project + "\t"+ it.toString());
            }
        }
    }
}

Jenkins.instance.getAllItems(Job.class).each {

    project = it.getFullName()
    if (it instanceof AbstractProject){
        printScm(project, it.getScm())
    } else if (it instanceof WorkflowJob) {
        it.getSCMs().each {
            printScm(project, it)
        }
    } else {
        println("project type unknown: " + it)
    }

}

谢谢试过了。获取以下错误。任何建议:hudson.remoting.ProxyException:groovy.lang.MissingMethodException:没有方法签名:org.jenkinsci.plugins.workflow.job.WorkflowJob.getScm()适用于参数类型:()值:[]可能的解决方案:getSCMs(),getACL(),getACL(),getACL(),getApi(),getName(),谢谢!试过了。获取以下错误。任何建议:hudson.remoting.ProxyException:groovy.lang.MissingMethodException:没有方法签名:org.jenkinsci.plugins.workflow.job.WorkflowJob.getScm()适用于参数类型:()值:[]可能的解决方案:getSCMs()、getACL()、getACL()、getACL()、getApi()、getName()