检查Jenkins Groovy脚本中是否存在Git分支
有没有办法检查Jenkins控制台Groovy脚本中是否存在Git分支?我现在得到的是:检查Jenkins Groovy脚本中是否存在Git分支,git,groovy,jenkins,Git,Groovy,Jenkins,有没有办法检查Jenkins控制台Groovy脚本中是否存在Git分支?我现在得到的是: import hudson.model.* // For each project for(item in Hudson.instance.items) { // check that job is not building if(!item.isBuilding()) { if (item.scm instanceof hudson.plugins.git.GitSCM) {
import hudson.model.*
// For each project
for(item in Hudson.instance.items) {
// check that job is not building
if(!item.isBuilding()) {
if (item.scm instanceof hudson.plugins.git.GitSCM) {
println("Item name: " + item.name);
item.scm.repositories.each {
println("Repo " + it.name);
it.URIs.each {uri ->
println("URI: " + uri.toString());
}
}
item.scm.branches.each {
println("Branch " + it.name);
}
}
}
else {
println("Skipping job "+item.name+", currently building")
}
}
这会打印Jenkins作业名称、存储库和分支,但是否可以运行测试拉取以验证分支的存在
目前我无法安装Git提交钩子来记录已删除的分支名称,因此必须使用脚本进行预定分支存在性验证
谢谢 此脚本可以工作:
import hudson.model.*
def jobsToDelete = []
// For each project
for(item in Hudson.instance.items) {
// check that job is not building
if(!item.isBuilding()) {
if (item.scm instanceof hudson.plugins.git.GitSCM) {
println("Item name: " + item.name);
item.scm.repositories.each {
println("Repo " + it.name);
it.URIs.each {uri ->
println("URI: " + uri.toString());
item.scm.branches.each {
println("Branch " + it.name);
// Skip empty/regex branch definitions
if (it.name.length() != 0 && it.name.indexOf("*") > -1) {
// Use git ls-remote to verify branch existence
def command = "git ls-remote --heads " + uri + " " + it.name
def sout = new StringBuffer(), serr = new StringBuffer()
Process proc = command.execute()
proc.consumeProcessOutput(sout, serr)
proc.waitFor()
println("SOUT: " + sout)
if (sout.size() == 0) {
println("Branch does not exist")
jobsToDelete << item
}
}
}
}
}
}
}
else {
println("Skipping job "+item.name+", currently building")
}
}
jobsToDelete.each {
println("Job to delete: " + it.name)
it.delete()
}
导入hudson.model*
def jobsToDelete=[]
//对于每个项目
for(Hudson.instance.items中的项){
//检查作业是否未生成
如果(!item.isBuilding()){
if(hudson.plugins.git.GitSCM的item.scm实例){
println(“项目名称:”+项目名称);
item.scm.repositories.each{
println(“回购协议”+信息技术名称);
it.URIs.each{uri->
println(“URI:+URI.toString());
item.scm.branchs.each{
println(“分支机构”+it.name);
//跳过空/正则表达式分支定义
if(it.name.length()!=0&&it.name.indexOf(“*”>-1){
//使用git ls remote验证分支是否存在
def command=“git ls remote--heads”+uri+“”+it.name
def sout=new StringBuffer(),serr=new StringBuffer()
Process proc=command.execute()
进程ConsumerProcessOutput(sout,serr)
waitFor()程序
println(“SOUT:+SOUT)
如果(sout.size()==0){
println(“分支不存在”)
作业删除