You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Jenkins流水线各步骤运行时间及参数收集的高效API或插件方案咨询

Jenkins流水线各步骤运行时间及参数收集的高效API或插件方案咨询

嗨,我刚好也碰到过类似的需求,咱们来聊聊可行的解决方案:

一、原生API的优化调用思路

遗憾的是Jenkins原生并没有提供能一次性拉取所有流水线、所有运行实例、阶段耗时+参数的一站式API,但我们可以通过优化调用逻辑来减少请求次数和复杂度:

  • 第一步先用 /api/json?tree=jobs[name,url] 获取所有流水线的名称和URL,避免后续手动拼接路径出错
  • 对每个流水线,调用 /job/<job_name>/wfapi/runs 接口,这个接口会返回该流水线的所有运行实例,已经包含了运行参数和阶段的基础信息(名称、状态);如果需要阶段的精确耗时,再针对每个运行实例调用 /job/<job_name>/<run_number>/api/json?tree=actions[parameters],stages[name,durationMillis],通过tree参数过滤掉不需要的字段,大大减少返回的数据量
  • 小技巧:可以用脚本实现异步批量请求(比如Python的aiohttp、Node.js的axios并发请求),把多层循环的等待时间压缩下来

二、推荐的插件方案(减少自定义开发)

如果不想自己写太多API调用逻辑,这些插件能帮你直接搞定数据收集,还支持导出结构化数据:

  • Pipeline Analytics Plugin:专门针对流水线性能分析的插件,会自动收集每个阶段的耗时、运行参数,还能生成可视化报表。它提供的REST API可以直接导出包含所有你需要字段的结构化数据,而且支持自定义添加额外元数据,之后你直接把数据同步到数据库就行
  • Jenkins Metrics Plugin:这款插件会收集Jenkins全量运行指标,包括流水线各阶段的耗时数据。你可以通过它的API获取单条运行的详细数据或者聚合后的统计结果,还能配置自定义标签来补充你需要的额外信息
  • Blue Ocean REST API:你提到了Blue Ocean,其实它的API数据结构更规整——比如 /blue/rest/organizations/jenkins/pipelines/<job_name>/runs/ 接口,返回的每个运行实例里直接包含stages数组(带精确耗时)和parameters参数列表,比原生API少一次跳转请求,更适合批量处理

三、自定义流水线埋点(最灵活的方案)

如果上面的方案都不能完全匹配你的需求,直接在流水线里埋点是最可控的方式:

  • 写一个通用的共享库函数,比如recordStageMetrics(),在每个阶段的前后记录时间戳,同时获取当前运行的参数(用Jenkins内置的params全局变量)
  • 在函数里把流水线名、阶段名、耗时、运行参数,以及你想添加的额外数据(比如环境标识、自定义标签)一起发送到你的数据库或者中间件(比如Kafka)
  • 这种方式完全不需要依赖Jenkins的API,数据实时生成,而且你可以根据需求随时调整收集的字段,适合长期维护的场景

备注:内容来源于stack exchange,提问作者Alessandro Valentini

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.21 08:00:30