我正在尝试在Freestyle
下面单独打印/列出我们所有的詹金斯(Pipeline
和groovy
)作业以及SCM详细信息,例如(Git URL和Branch详细信息)。我能够分别列出我们的自由式和脚本化管道作业名称。
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 :(得分:0)
如果我在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)
}
}