Optimization Jenkins脚本控制台的多分支管道Groovy代码段可以优化吗?

Optimization Jenkins脚本控制台的多分支管道Groovy代码段可以优化吗?,optimization,jenkins,groovy,Optimization,Jenkins,Groovy,我需要一个小的groovy代码段,在Jenkins 2.*脚本控制台中生成一个多分支管道项目。在互联网上找不到,所以我自己做的。最后,我把不同的代码粘在一起,使它工作起来。 我想知道一位groovy大师是否能帮我优化它,让它更漂亮 我的进一步计划是:如果我不必手动输入git回购,那就太好了。扫描git组织中的所有回购协议会很好 import jenkins.model.Jenkins import jenkins.plugins.git.* import hudson.triggers.* im

我需要一个小的groovy代码段,在Jenkins 2.*脚本控制台中生成一个多分支管道项目。在互联网上找不到,所以我自己做的。最后,我把不同的代码粘在一起,使它工作起来。 我想知道一位groovy大师是否能帮我优化它,让它更漂亮

我的进一步计划是:如果我不必手动输入git回购,那就太好了。扫描git组织中的所有回购协议会很好

import jenkins.model.Jenkins
import jenkins.plugins.git.*
import hudson.triggers.*
import com.cloudbees.hudson.plugins.folder.Folder
import org.jenkinsci.plugins.workflow.multibranch.WorkflowMultiBranchProject
import jenkins.branch.BranchProperty
import jenkins.branch.BranchSource
import jenkins.branch.DefaultBranchPropertyStrategy
import org.jenkinsci.plugins.workflow.libs.*

def parent = Jenkins.instance
println "parent: $parent"

// create folder
Folder folder = Jenkins.instance.getItemByFullName('poc')
if (folder == null) {
  folder = parent.createProject(Folder.class, "poc")
  folder.displayName = "P.O.C Jobs"
  folder.getProperties().add(
    new FolderLibraries(
      Collections.singletonList(
        new LibraryConfiguration(
          "pipelinejunit", 
          new SCMSourceRetriever(
            new GitSCMSource(
              null, 
              "ssh://git@servix/extra/git/poc_junit.git", 
              "local_git", 
              "*", 
              "", 
              true)
          )
        )
      )
    )
  )
}
println "folder: $folder"

WorkflowMultiBranchProject mbp = Jenkins.instance.getItemByFullName('p_junit-lib_mb')
if (mbp != null) {
  mbp.delete()
}
mbp = folder.createProject(WorkflowMultiBranchProject.class, "p_junit-lib_mb")
mbp.displayName = "Junit Library [build/test *]"
mbp.getSourcesList().add(new BranchSource(new GitSCMSource(null, "ssh://git@servix/extra/git/poc_junit.git", "local_git", "*", "", false), new DefaultBranchPropertyStrategy(new BranchProperty[0])));
mbp.scheduleBuild2(0).getFuture().get()
println "mbp: $mbp"

def job
while (/* do */ {
  Thread.sleep(10)
  job = mbp.getItem('master')
  (job == null)
}());

println "job master: $job"
job.displayName = "Branch: master"
job = mbp.getItem('development')
println "job development: $job"
job.displayName = "Branch: development"

// reload jobs
parent.reload()
我的进一步计划:如果我不必手动输入 吉特回购。扫描git组织中的所有回购协议会很好

import jenkins.model.Jenkins
import jenkins.plugins.git.*
import hudson.triggers.*
import com.cloudbees.hudson.plugins.folder.Folder
import org.jenkinsci.plugins.workflow.multibranch.WorkflowMultiBranchProject
import jenkins.branch.BranchProperty
import jenkins.branch.BranchSource
import jenkins.branch.DefaultBranchPropertyStrategy
import org.jenkinsci.plugins.workflow.libs.*

def parent = Jenkins.instance
println "parent: $parent"

// create folder
Folder folder = Jenkins.instance.getItemByFullName('poc')
if (folder == null) {
  folder = parent.createProject(Folder.class, "poc")
  folder.displayName = "P.O.C Jobs"
  folder.getProperties().add(
    new FolderLibraries(
      Collections.singletonList(
        new LibraryConfiguration(
          "pipelinejunit", 
          new SCMSourceRetriever(
            new GitSCMSource(
              null, 
              "ssh://git@servix/extra/git/poc_junit.git", 
              "local_git", 
              "*", 
              "", 
              true)
          )
        )
      )
    )
  )
}
println "folder: $folder"

WorkflowMultiBranchProject mbp = Jenkins.instance.getItemByFullName('p_junit-lib_mb')
if (mbp != null) {
  mbp.delete()
}
mbp = folder.createProject(WorkflowMultiBranchProject.class, "p_junit-lib_mb")
mbp.displayName = "Junit Library [build/test *]"
mbp.getSourcesList().add(new BranchSource(new GitSCMSource(null, "ssh://git@servix/extra/git/poc_junit.git", "local_git", "*", "", false), new DefaultBranchPropertyStrategy(new BranchProperty[0])));
mbp.scheduleBuild2(0).getFuture().get()
println "mbp: $mbp"

def job
while (/* do */ {
  Thread.sleep(10)
  job = mbp.getItem('master')
  (job == null)
}());

println "job master: $job"
job.displayName = "Branch: master"
job = mbp.getItem('development')
println "job development: $job"
job.displayName = "Branch: development"

// reload jobs
parent.reload()

我想你想要的已经被非常流行的。来自:GitHub分支源插件允许您基于一个或多个GitHub用户或组织的存储库结构创建新项目。您可以:1将所有存储库或存储库子集作为作业从GitHub用户或组织导入工作区,或2将单个存储库的分支作为作业从GitHub用户或组织导入。如果您不使用github或bitbucket,您将无法使用这些很棒的插件,但希望您能够:

好的,谢谢,我明白了,因为我使用的是我的本地家庭服务器和裸体ssh git设置,所以我必须使用我的原始想法和某种ssh shell/groovy魔术为repo执行远程ls,在repo中查找Jenkinsfile,然后使用我的代码生成项目。嗯,不太好,但是我想要一个简单的内部设置,所以这就是我要做的。。。无论如何,谢谢你的帮助和提示,我肯定会在我们使用github的地方使用它。。。