我目前有一个Jenkins示例,包含大约800个作业。目录结构中有一些嵌套的文件夹,每个层次都包含作业。虽然我认为这不是设置Jenkins的最佳方式,但我无法控制。我目前正在使用Jenkins API通过 NodeJS 环境从这些作业中获取信息。
我尝试了两种方法(这两种方法都有效,但它们会导致一些问题):
- 从根目录递归调用目录结构,检查是否获得了一个带有_class 'workflowjob'的作业,并使用tree=jobs[*]获取apiURL和文件夹中的作业。
- 我尝试过将depth = N赋给一个足够大的N,并在一个json对象中获取所有信息。
如果Jenkins示例比较小,那么第一种方法是很好的,但是太多的调用会导致问题并使其下降。
虽然第二种方法也很好,但是目录结构将来可能会改变,硬编码N值不是最理想的,而且返回的对象对于解析也不是最理想的。
我也尝试过用tree=jobs[*]{n,n-1}来限制作业的数量,但这并不理想,因为我想保留所有的作业。
我也尝试过Groovy脚本,但不确定它是否能很好地与我的节点环境集成。
有没有更好/替代的方法来使用REST API解决这个问题?
1条答案
按热度按时间sr4lhrrt1#
我不会有一个非常 * 高兴 * 和满意的答案给你,因为没有API来支持“获取所有工作”-所以没有什么更好的API(甚至已经有一个开放的门票要求从2016年开始此功能):https://issues.jenkins.io/browse/JENKINS-39774
但可能的方法为:
或
关于这个主题的历史讨论(但提及或多或少相同):