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

如何将Pipeline及内部各Job的运行时长数据导出为CSV文件

Pipeline下所有子Job运行明细导出CSV的实现方案

界面自带的Export CSV按钮仅支持导出Pipeline维度的整体运行统计,默认不会嵌套带出单条Pipeline下各独立Job的运行详情,要导出P_Weekly_RV_Load_1这类子Job的全量运行数据,可以根据你的使用场景选以下方案:

  • 方案1:API拉取自生成CSV(适配全量历史数据导出,最灵活)
    几乎所有主流CI/CD平台(GitLab CI、Jenkins、Azure DevOps等)都开放了Pipeline和Job维度的查询接口,三步就能导出全量数据:
    1. 先调用Pipeline列表接口,筛选出指定时间范围内、已执行完成的定时Pipeline,拿到对应Pipeline的运行ID
    2. 遍历每个Pipeline ID,调用单Pipeline关联的Job列表接口,即可获取每个Job的名称、运行状态、开始/结束时间、运行时长、执行节点、触发人等全量字段
    3. 按需要的字段整理数据后导出为CSV即可,以下是最简Python实现示例,替换配置参数就能直接用:
import csv
import requests

# 替换为你的平台配置信息
API_ROOT = "你的CI平台API根地址"
ACCESS_TOKEN = "你的个人访问令牌"
TARGET_PROJECT_ID = "待统计的项目ID"
TARGET_JOB_GROUP = "P_Weekly_RV_Load_1"

request_headers = {"PRIVATE-TOKEN": ACCESS_TOKEN}
job_data_list = []

# 拉取所有已完成的定时Pipeline记录
pipeline_resp = requests.get(
    f"{API_ROOT}/projects/{TARGET_PROJECT_ID}/pipelines",
    params={"scope": "finished", "source": "schedule"},
    headers=request_headers
)
for pipeline_item in pipeline_resp.json():
    # 拉取单条Pipeline下的所有Job明细
    job_resp = requests.get(
        f"{API_ROOT}/projects/{TARGET_PROJECT_ID}/pipelines/{pipeline_item['id']}/jobs",
        headers=request_headers
    )
    for job_item in job_resp.json():
        # 过滤出目标分组下的Job
        if job_item.get("pipeline_name") == TARGET_JOB_GROUP:
            job_data_list.append({
                "pipeline_run_id": pipeline_item["id"],
                "job_id": job_item["id"],
                "job_name": job_item["name"],
                "run_status": job_item["status"],
                "start_at": job_item["started_at"],
                "end_at": job_item["finished_at"],
                "duration_sec": job_item["duration"],
                "exec_node": job_item.get("runner", {}).get("description", "")
            })

# 写入CSV文件
with open("pipeline_job_runtime_detail.csv", "w", newline="", encoding="utf-8") as f:
    csv_writer = csv.DictWriter(f, fieldnames=job_data_list[0].keys())
    csv_writer.writeheader()
    csv_writer.writerows(job_data_list)
  • 方案2:页面脚本快速导出(适合临时单条Pipeline导出,无需写代码)
    如果只是临时导出某几条Pipeline下的Job数据,不用调API,直接在浏览器控制台抓页面表格数据即可:

    1. 打开目标Pipeline的详情页,等待页面上所有Job列表加载完成
    2. 按F12打开开发者工具,切换到Console标签,运行提前写好的表格抓取脚本,就能自动把当前页的Job数据整理成CSV触发下载,比手动复制效率高很多。
      如果是使用Jenkins,也可以直接安装Pipeline Job Exporter类插件,安装后Job列表页会直接出现导出按钮,点一下就能导出当前页所有Job明细。
  • 方案3:定时自动导出(适合长期统计场景)
    如果需要长期统计Job运行时长,可以把方案1的脚本挂到服务器定时任务里,按天/周自动拉取最新的Job运行数据,增量写入CSV或者同步到内部报表系统,不用每次手动操作。


参考界面截图

  • 已触发的Pipeline作业列表:
    Triggered Pipeline jobs
  • P_Weekly_RV_Load_1下的所有作业列表:
    P_Weekly_RV_Load_1 - All jobs in that

内容的提问来源于stack exchange,提问作者user2703679

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 22:24:24