代码之家  ›  专栏  ›  技术社区  ›  user4948798

使用groovy for freestyle&pipeline打印scm详细信息

  •  0
  • user4948798  · 技术社区  · 4 年前

    詹金斯正在打印我们的名单( Freestyle Pipeline )作业与SCM详细信息(例如(Git URL&Branch Details)一起使用下面的 groovy . 我可以单独列出我们的自由式和脚本管道作业名称。

    import jenkins.model.*
    import hudson.model.*
    import hudson.triggers.*
    import org.jenkinsci.plugins.workflow.job.*
    
    println("--- Jenkins Pipeline jobs List ---")
    Jenkins.getInstance().getAllItems(WorkflowJob.class).each() { println(it.fullName) };
    
    println("\n--- Jenkins FreeStyle jobs List ---")
    Jenkins.getInstance().getAllItems(FreeStyleProject.class).each() { println(it.fullName) };
    
    println '\nDone.'
    

    freestyle & pipeline Git url,但它是单独打印的。

    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"
    

    需要帮助列出/打印作业名称和Git URL以及各自的作业。

    0 回复  |  直到 4 年前
        1
  •  0
  •   vasja    4 年前

    如果我在Jenkins脚本控制台中运行此代码,那么在输出DSL脚本管道(Jenkinsfile)作业中也会看到

    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)
        }
    
    }