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

能否查询Octopus Deployment单个部署步骤数据并生成耗时聚合报表?

解决方案:获取Octopus Deploy单个部署步骤耗时并生成聚合报表

1. 通过REST API提取步骤数据

Octopus的REST API包含你需要的步骤级数据,可能是之前的路径没找对:

  • 获取指定项目的所有部署:调用 GET /api/projects/{ProjectId}/deployments,返回的每个部署对象里的Links.Task字段,指向该部署对应的任务详情接口
  • 获取任务详情(含步骤耗时):调用 GET /api/tasks/{TaskId},在返回数据的ActivityLogs节点下,筛选Category为DeploymentStep的记录,通过StartTime和CompletedTime可计算出单个步骤的耗时,同时能获取步骤名称、执行状态等信息

示例PowerShell脚本:

# 替换为你的Octopus实例地址、API密钥和项目ID
$octopusUrl = "https://your-octopus-instance.com"
$apiKey = "API-YOURKEY"
$projectId = "Projects-123"

# 获取项目下的批量部署记录
$deployments = Invoke-RestMethod -Uri "$octopusUrl/api/projects/$projectId/deployments?take=1000" -Headers @{"X-Octopus-ApiKey" = $apiKey}

# 遍历部署提取步骤数据
foreach ($deployment in $deployments.Items) {
    $task = Invoke-RestMethod -Uri "$octopusUrl$($deployment.Links.Task)" -Headers @{"X-Octopus-ApiKey" = $apiKey}
    $steps = $task.ActivityLogs | Where-Object { $_.Category -eq "DeploymentStep" }
    foreach ($step in $steps) {
        $duration = (Get-Date $step.CompletedTime) - (Get-Date $step.StartTime)
        [PSCustomObject]@{
            部署ID = $deployment.Id
            部署名称 = $deployment.Name
            步骤名称 = $step.Name
            开始时间 = $step.StartTime
            完成时间 = $step.CompletedTime
            耗时(秒) = $duration.TotalSeconds
            执行状态 = $step.Status
        }
    }
}

2. 直接查询Octopus数据库(需权限)

如果API拉取数据效率不足,可直接查询数据库的核心表:

  • Deployment:存储部署基础信息,通过TaskId关联任务表
  • Task:任务主表,记录任务整体的起止时间
  • TaskActivity:存储任务的步骤详情,Category为DeploymentStep的记录即为部署步骤,StartTime和CompletedTime是步骤的起止时间

示例SQL查询:

SELECT
    d.Id AS 部署ID,
    d.Name AS 部署名称,
    ta.Name AS 步骤名称,
    ta.StartTime AS 开始时间,
    ta.CompletedTime AS 完成时间,
    DATEDIFF(SECOND, ta.StartTime, ta.CompletedTime) AS 耗时(秒),
    ta.Status AS 执行状态
FROM Deployment d
JOIN Task t ON d.TaskId = t.Id
JOIN TaskActivity ta ON t.Id = ta.TaskId
WHERE 
    d.ProjectId = 'Projects-123' -- 替换为你的项目ID
    AND ta.Category = 'DeploymentStep'
ORDER BY d.Created DESC

3. 生成聚合报表

拿到步骤耗时数据后,可通过以下工具完成聚合分析:

  • Excel:用数据透视表按步骤名称分组,计算平均耗时、执行次数、最大/最小耗时
  • Power BI:导入数据后制作可视化报表,展示各步骤耗时趋势、异常失败步骤的耗时分布
  • Python脚本:用Pandas库做数据分组统计,生成自定义格式的聚合报表

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 12:10:45