GitLab管道监控器Skill monitor-pipeline

这个技能用于实时监控GitLab CI/CD管道或作业状态,自动报告进度变化和失败信息,提供详细日志和故障诊断,适用于DevOps团队提高部署效率。关键词:GitLab, 管道监控, CI/CD, 实时报告, DevOps, 自动化。

DevOps 0 次安装 0 次浏览 更新于 3/25/2026

名称: 监控管道 描述: 监控一个 GitLab 管道或作业直到完成,实时报告状态更改和失败

监控 GitLab 管道

名称

gitlab:monitor-pipeline - 监控管道或作业直到完成,带实时状态更新

概要

/monitor-pipeline <项目-id> <管道-id> [--job <作业-id>] [--interval <秒>]

描述

持续监控一个 GitLab CI/CD 管道或特定作业,直到达到终端状态(成功、失败或取消)。实时报告状态更改,并在任何失败时立即通知用户,提供详细错误信息。

实现

此技能使用轮询方法监控管道和作业状态:

  1. 初始状态检查:获取当前管道/作业状态
  2. 轮询循环:定期检查状态(默认:15 秒)
  3. 更改检测:比较当前状态与先前状态
  4. 实时报告:输出作业状态转换时的更新
  5. 失败通知:立即报告失败并提供作业日志
  6. 完成:当管道达到终端状态时退出

监控算法

WHILE pipeline.status IN [pending, running, waiting_for_resource, preparing]
  WAIT interval seconds
  FETCH current pipeline status
  FETCH all job statuses

  FOR each job:
    IF job.status changed:
      REPORT status change
      IF job.status == "failed":
        FETCH job logs
        REPORT failure details immediately

  REPORT overall progress summary

REPORT final pipeline result

用法

监控一个管道

/monitor-pipeline 456 1234

监控特定作业

/monitor-pipeline 456 1234 --job 5678

自定义轮询间隔

/monitor-pipeline 456 1234 --interval 30

此技能的功能

  1. 使用 GitLab API 获取初始管道状态
  2. 跟踪作业从待定 -> 运行 -> 成功/失败的转换
  3. 任何作业失败时立即报告
  4. 自动获取失败作业的日志
  5. 提供进度更新,显示已完成与剩余作业
  6. 管道完成或取消时干净退出

先决条件

  • 必须配置 GitLab MCP 服务器
  • 访问目标项目
  • 有效管道 ID(可从 MR 或项目管道列表获取)

示例交互

成功管道监控

用户: /monitor-pipeline 456 1234

Claude: 开始监控项目 456 中的管道 #1234...

## 管道监控已启动

**管道**: #1234
**分支**: feature/add-authentication
**开始时间**: 2025-01-15 10:30:22
**状态**: 运行中

我将监控此管道并实时报告状态更改。

---

### 更新 [10:31:45]

**阶段: 构建**
- ✓ `compile` 成功完成 (1m 18s)

进度: 1/6 作业完成

---

### 更新 [10:32:30]

**阶段: 构建**
- ✓ `bundle-assets` 成功完成 (42s)

进度: 2/6 作业完成

---

### 更新 [10:34:15]

**阶段: 测试**
- ✓ `unit-tests` 成功完成 (1m 45s)

进度: 3/6 作业完成

---

### 更新 [10:36:00]

**阶段: 测试**
- ✓ `integration-tests` 成功完成 (1m 45s)

进度: 4/6 作业完成

---

### 更新 [10:37:30]

**阶段: 代码检查**
- ✓ `eslint-check` 成功完成 (1m 30s)
- ✓ `type-check` 成功完成 (1m 28s)

进度: 6/6 作业完成

---

## 管道完成

**状态**: ✓ 成功
**总时长**: 7m 08s
**所有 6 个作业通过**

管道成功完成。您的更改已准备好合并。

带失败的管道

用户: /monitor-pipeline 456 1234

Claude: 开始监控管道 #1234...

## 管道监控已启动

**管道**: #1234
**分支**: feature/database-migration
**状态**: 运行中

---

### 更新 [10:31:45]

**阶段: 构建**
- ✓ `compile` 成功完成 (1m 18s)

进度: 1/6 作业完成

---

### 失败警报 [10:33:20]

**作业失败**: `integration-tests` 在阶段 `test`

**时长**: 1m 35s
**退出代码**: 1

**错误日志**:

FAILED tests/integration/auth.test.ts

● Authentication API › POST /login › should validate credentials

ConnectionError: Connection to database refused
at PostgresClient.connect (src/db/client.ts:45:12)
at setupTestDB (tests/setup.ts:23:8)

1 test failed, 12 passed


**可能原因**:
1. CI 环境中数据库服务不可用
2. 缺少 DATABASE_URL 环境变量
3. 测试容器中的网络连接问题

---

## 管道失败

**状态**: ✗ 失败
**时长**: 3m 35s
**失败作业**: 1 (integration-tests)
**通过作业**: 2
**取消作业**: 3

管道因测试失败而失败。请查看以上错误并推送修复。

您需要我帮助调试数据库连接问题吗?

监控特定作业

用户: /monitor-pipeline 456 1234 --job 5678

Claude: 开始监控作业 #5678 (deploy-production)...

## 作业监控已启动

**作业**: deploy-production (#5678)
**阶段**: 部署
**状态**: 运行中
**开始时间**: 2025-01-15 14:30:00

---

### 进度 [14:31:00]

正在部署到生产集群…

  • 拉取最新镜像… 完成
  • 运行数据库迁移… 完成
  • 启动新容器…

---

### 进度 [14:32:30]

  • 健康检查通过 (3/3 副本)
  • 排空旧实例…
  • 部署完成!

---

## 作业完成

**状态**: ✓ 成功
**时长**: 2m 45s

生产部署成功!

参数

参数 必需 描述
project-id 数字项目 ID 或 URL 编码路径
pipeline-id 要监控的管道 ID
--job 要监控的特定作业 ID,而不是整个管道
--interval 轮询间隔,以秒为单位(默认: 15,最小: 5,最大: 300)

终端状态

监控在管道/作业达到以下状态之一时退出:

状态 描述
success 所有作业成功完成
failed 一个或多个作业失败
canceled 管道被手动取消
skipped 管道被跳过(规则未满足)

状态指示器

图标 含义
成功/通过
失败
运行中
⏸️ 待定/等待
⏭️ 跳过
取消

提示

  • 对于快速管道,使用较短间隔(5-10 秒)
  • 对于长时间运行的部署,使用较长间隔(30-60 秒)
  • 当您只关心一个阶段时,监控特定作业
  • 技能自动获取失败作业的日志
  • 如果需要,使用 Ctrl+C 取消监控

错误处理

  • API 错误: 使用指数退避重试
  • 网络问题: 报告连接问题,继续监控
  • 无效 ID: 立即退出并显示有帮助的错误消息
  • 权限拒绝: 报告访问问题,建议检查权限

相关命令

  • /view-pipeline: 管道状态的一次性快照
  • /create-mr: 创建触发管道的 MR
  • /review-mr: 审查 MR,包括管道状态