栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

如何通过groovy脚本获取正在运行的jenkins构建的列表?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

如何通过groovy脚本获取正在运行的jenkins构建的列表?

我发现了几种不使用REST API或解析XML的方法:

runningBuilds = Jenkins.instance.getView('All').getBuilds().findAll() { it.getResult().equals(null) }

假设您尚未删除或修改Jenkins中的默认“全部”视图。当然,如果您确切知道构建将位于哪个视图中,则可以用其他视图名称代替。或者您可以尝试以下方法:

runningBuilds = Jenkins.instance.getItems().collect { job->  job.builds.findAll { it.getResult().equals(null) }}.flatten()

尽管此方法不需要视图名称,但它也有局限性。它不会下降到文件夹或多分支管道或类似的东西中。您需要手动下移到文件夹中,或者使用某种方法自动完成。例如,以下是适用于多分支管道的版本:

Jenkins.instance.getItemByFullName(multibranchPipelineProjectName).getItems().each { repository->  repository.getItems().each { branch->    branch.builds.each { build->      if (build.getResult().equals(null)) {        // do stuff here ...      }    }  }}

我认为可能有一种比

build.getResult().equals(null)
确定构建是否正在运行更准确的方法,但是我很难找到好的API文档,因此我不确定。这只是我发现使用对象自省的第一种方法。

再次由于缺少API文档,我不确定在

Jenkins.instance.getItems()
此使用的内容与
Jenkins.instance.getAllItems()
在此答案中使用的内容之间是否存在显着差异。

最后,请注意,这些都是效率相对较低的方法。它们会遍历每个作业的每个版本,因此,如果您保存很长的版本历史记录(默认设置是每个作业仅保存10个版本历史记录)或具有数千个作业,则可能需要一段时间才能运行。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/383980.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号