SuperAPI AI 工具集

circleci-automation

部署与运维

查看项目

更新于 10-15 07:45

技能介绍

CircleCI Automation 通过 Rube MCP(Composio)实现对 CircleCI CI/CD 操作的自动化。该技能提供了一套完整的工具集,用于触发流水线、监控工作流与作业、检索构建产物以及查看测试元数据。

用途

该技能主要用于自动化 CircleCI 的持续集成与持续部署任务。用户可以通过自然语言指令或自动化脚本,完成流水线触发、状态监控、作业详情查询、产物下载和测试结果审查等操作,无需手动登录 CircleCI 界面。

主要能力

  1. 触发流水线:通过 CIRCLECI_TRIGGER_PIPELINE 工具在指定项目上启动新的流水线运行,支持指定分支、标签和流水线参数。
  2. 监控流水线与工作流:通过 CIRCLECI_LIST_PIPELINES_FOR_PROJECT 和 CIRCLECI_LIST_WORKFLOWS_BY_PIPELINE_ID 工具列出项目最近的流水线及其包含的工作流,并可查看流水线配置。
  3. 检查作业详情:通过 CIRCLECI_GET_JOB_DETAILS 工具获取特定作业的详细信息,包括执行器类型、并行度、起止时间和状态。
  4. 检索构建产物:通过 CIRCLECI_GET_JOB_ARTIFACTS 工具列出作业产生的所有构建产物,每个产物包含路径和下载 URL。
  5. 审查测试结果:通过 CIRCLECI_GET_TEST_METADATA 工具获取作业的测试结果和元数据,包括类名、测试名、结果、消息和运行时间等字段。

使用方式

前置条件

  • Rube MCP 必须已连接(RUBE_SEARCH_TOOLS 可用)。
  • 通过 RUBE_MANAGE_CONNECTIONS 激活 CircleCI 连接(toolkit 为 circleci)。
  • 始终先调用 RUBE_SEARCH_TOOLS 获取当前工具架构。

设置步骤

  1. 获取 Rube MCP:在客户端配置中添加 https://rube.app/mcp 作为 MCP 服务器。无需 API 密钥,添加端点即可使用。
  2. 确认 RUBE_SEARCH_TOOLS 有响应,验证 Rube MCP 可用。
  3. 调用 RUBE_MANAGE_CONNECTIONS 并指定 toolkit 为 circleci。
  4. 如果连接状态不是 ACTIVE,按照返回的认证链接完成 CircleCI 认证。
  5. 确认连接状态显示 ACTIVE 后再运行任何工作流。

核心工作流

1. 触发流水线

  • 适用场景:用户希望启动新的 CI/CD 流水线运行。
  • 工具序列:CIRCLECI_TRIGGER_PIPELINE(必需),CIRCLECI_LIST_WORKFLOWS_BY_PIPELINE_ID(可选,用于监控)。
  • 关键参数:project_slug(格式为 gh/org/repo 或 bb/org/repo)、branch(Git 分支)、tag(Git 标签,与 branch 互斥)、parameters(流水线参数键值对)。
  • 注意事项:project_slug 格式为 {vcs}/{org}/{repo};branch 和 tag 互斥,同时提供会报错;流水线参数必须与 .circleci/config.yml 中定义的一致;触发后返回流水线 ID,工作流异步启动。

2. 监控流水线与工作流

  • 适用场景:用户希望检查流水线或工作流的状态。
  • 工具序列:CIRCLECI_LIST_PIPELINES_FOR_PROJECT(必需),CIRCLECI_LIST_WORKFLOWS_BY_PIPELINE_ID(必需),CIRCLECI_GET_PIPELINE_CONFIG(可选)。
  • 关键参数:project_slug、pipeline_id(UUID)、branch(过滤分支)、page_token(分页游标)。
  • 注意事项:流水线 ID 是 UUID 而非数字 ID;工作流继承流水线 ID,一个流水线可包含多个工作流;工作流状态包括 success、running、not_run、failed、error、failing、on_hold、canceled、unauthorized;分页时检查响应中的 page_token,直到不存在为止。

3. 检查作业详情

  • 适用场景:用户希望深入了解特定作业的执行详情。
  • 工具序列:CIRCLECI_LIST_WORKFLOWS_BY_PIPELINE_ID(前置),CIRCLECI_GET_JOB_DETAILS(必需)。
  • 关键参数:project_slug、job_number(数字作业编号,非 UUID)。
  • 注意事项:作业编号是整数,不同于流水线和工作流的 UUID;作业详情包括执行器类型、并行度、起止时间和状态;作业状态包括 success、running、not_run、failed、retried、timedout、infrastructure_fail、canceled。

4. 检索构建产物

  • 适用场景:用户希望下载或列出作业产生的构建产物。
  • 工具序列:CIRCLECI_GET_JOB_DETAILS(前置,确认作业成功完成),CIRCLECI_GET_JOB_ARTIFACTS(必需)。
  • 关键参数:project_slug、job_number。
  • 注意事项:产物仅在作业完成后可用;每个产物包含路径和下载 URL;下载产物 URL 可能需要认证头;大型产物可能有下载大小限制。

5. 审查测试结果

  • 适用场景:用户希望检查特定作业的测试结果。
  • 工具序列:CIRCLECI_GET_JOB_DETAILS(前置,确认作业运行了测试),CIRCLECI_GET_TEST_METADATA(必需)。
  • 关键参数:project_slug、job_number。
  • 注意事项:测试元数据要求作业已上传测试结果(JUnit XML 格式);如果未上传测试结果,响应为空;测试元数据包括 classname、name、result、message 和 run_time 字段;失败的测试会在 message 字段中包含失败信息。

常见模式

项目 Slug 格式

格式:{vcs_type}/{org_name}/{repo_name}

  • GitHub:gh/myorg/myrepo
  • Bitbucket:bb/myorg/myrepo

流水线 -> 工作流 -> 作业层级

  1. 调用 CIRCLECI_LIST_PIPELINES_FOR_PROJECT 获取流水线 ID。
  2. 使用 pipeline_id 调用 CIRCLECI_LIST_WORKFLOWS_BY_PIPELINE_ID。
  3. 从工作流详情中提取作业编号。
  4. 使用 job_number 调用 CIRCLECI_GET_JOB_DETAILS。

分页

  • 检查响应中的 next_page_token 字段。
  • 在下一个请求中作为 page_token 传递。
  • 直到 next_page_token 不存在或为 null 时停止。

已知陷阱

ID 格式

  • 流水线 ID:UUID(如 5034460f-c7c4-4c43-9457-de07e2029e7b)。
  • 工作流 ID:UUID。
  • 作业编号:整数(如 123)。
  • 不要在不同端点之间混用 UUID 和整数。

项目 Slug

  • 必须包含 VCS 前缀:gh/ 表示 GitHub,bb/ 表示 Bitbucket。
  • 组织和仓库名称区分大小写。
  • 错误的 slug 格式会导致 404 错误。

速率限制

  • CircleCI API 有按端点的速率限制。
  • 对 429 响应实施指数退避。
  • 避免快速轮询;使用合理间隔(5-10 秒)。

适用场景

  • 开发团队需要自动化触发和管理 CircleCI 流水线。
  • 运维人员需要监控构建状态并及时获取失败信息。
  • 测试人员需要审查测试结果和下载构建产物。
  • 需要将 CircleCI 操作集成到自动化工作流或聊天机器人中。

限制

  • 需要 Rube MCP 连接和有效的 CircleCI 认证。
  • 部分操作(如产物下载)可能需要额外的认证头。
  • 受 CircleCI API 速率限制约束。
  • 测试元数据仅在上传了 JUnit XML 格式结果时可用。
  • 大型产物可能有下载大小限制。