【发布时间】:2017-07-23 14:17:27
【问题描述】:
我需要一个在 Jenkins 2.* 脚本控制台中生成 MultiBranch Pipeline 项目的 groovy 代码 sn-p。在InterWeb上没有找到,所以我自己做的。最终,我通过将不同的代码片段粘合在一起来实现它。 我想知道一个 groovy 大师是否可以帮助我优化它并使它更漂亮? :-)
我的进一步计划:如果我不必手动输入 git repo 就好了。扫描一个 git 组织中的所有 repos 会很好。
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()
【问题讨论】:
标签: optimization jenkins groovy