如何创建展示GitHub Actions最新作业状态(PASS/FAIL)的Datadog组件
在Datadog中实现GitHub Action作业状态的持久化可视化
核心思路
你的需求核心是无视仪表盘时间范围,始终展示目标作业的最新状态,所以需要用last()函数抓取历史最新的状态值,再通过状态映射实现红绿配色的二元状态展示。
步骤1:配置Status Widget(推荐方案)
这是最适配二元状态展示的组件:
- 进入目标仪表盘,点击右上角Edit Dashboard
- 点击Add Widget,选择Status类型
- 在查询框输入:
(last(ci.job.status{@ci.job.name:testing-123})ci.job.status是Datadog CI Visibility内置字段,成功返回1,失败返回0) - 打开Advanced面板,勾选Show last value even if outside time window——这一步是关键,确保仪表盘设为5分钟时,仍能拉取到历史最新的作业状态
- 配置状态映射:
- 点击Status Mappings > Add Rule
- 第一条规则:值等于
1,状态选Success,颜色设为绿色,显示文本填PASS - 第二条规则:值等于
0,状态选Error,颜色设为红色,显示文本填FAILED
- 给组件设置标题(比如
testing-123 作业状态),保存配置即可
步骤2:验证查询有效性
如果组件没显示数据,先在Metrics Explorer中测试查询:
- 输入
last(ci.job.status{@ci.job.name:testing-123}),时间范围选All Time - 确认能返回
0或1的数值,说明数据已被正确采集
替代方案:用Event Stream展示最新事件
如果需要同时看到状态和作业详情,可以用这个方案:
- 添加Event Stream组件
- 过滤条件设为:
sources:github-action @ci.job.name:testing-123 - 在组件设置里勾选Show only the most recent event
- 打开Event Formatting,设置:
- 当事件包含
status:success时,文本颜色设为绿色 - 当事件包含
status:failure时,文本颜色设为红色
- 当事件包含
常见坑点
- 忘记勾选"Show last value even if outside time window":导致5分钟内无作业时组件为空
- 状态映射值错误:比如把成功值写成
success而非1,要以ci.job.status的实际数值为准 - 筛选器写错:确认
@ci.job.name的取值和作业名称完全匹配,区分大小写
内容的提问来源于stack exchange,提问作者PloniStacker
相关产品推荐
相关产品推荐

