相关疑难解决方法(0)

如何让詹金斯/哈德森的工作监视其他一些工作,并决定是否建立?

问题

鉴于所有工作都有字符串LEVEL_X在其工作名称中,其中X是一个数字> 1.我希望每个工作用X = n监视每个工作X = n-1,并开始构建,如果每个工作都成功完成.我希望这项工作以X = n1分钟的间隔监视其他工作.

首先,我有兴趣知道最好的方法是什么,其次我想要解决方案,如果一个可以通过一个小脚本实现,也许是一个可以system groovy script使用GROOVY PLUGIN 运行的groovy脚本.

groovy hudson hudson-plugins jenkins jenkins-plugins

10
推荐指数
1
解决办法
3万
查看次数

如何使用Groovy有效地列出**Jenkins当前正在运行的所有**作业

我一直在尝试在Groovy脚本程序脚本中找到一个轻量级方法,以列出所有当前正在运行的任何类型的作业.我发现唯一可靠的方法是:

start = System.currentTimeMillis()  
def jobsFound = []
def buildingJobs = Jenkins.instance.getAllItems(Job.class).findAll {
            it.isBuilding()
    }
buildingJobs.each { job->
    allRuns = job._getRuns()
    allRuns.each {  item->
        if (!item.isBuilding()) {  return  } // This job is not building
    jobsFound.push(item.getUrl())
    }
}

timespent = (System.currentTimeMillis() - start ) / 1000
println "Time: ${timespent} seconds"
println "{jobsFound.size} jobs"

// RESULTS:
//   Time: 2.015 seconds. 15 jobs
Run Code Online (Sandbox Code Playgroud)

问题是上面列举了所有当前正在运行的作业 - 我们有数千个! - 然后枚举每个正在运行的作业的所有构建(一些作业有多达300个构建).以上内容可能需要五分钟才能完成,具体取决于当前正在构建的作业数量.

一种更有效的方法是枚举活动执行程序,但是此方法忽略了在主服务器上运行的管道(也就是工作流程)作业:

start = System.currentTimeMillis()  

def busyExecutors = Jenkins.instance.computers.collect { 
   c -> c.executors.findAll …
Run Code Online (Sandbox Code Playgroud)

groovy jenkins

6
推荐指数
1
解决办法
3287
查看次数