CircleCI Automation 通过 Rube MCP(Composio)实现对 CircleCI CI/CD 操作的自动化。该技能提供了一套完整的工具集,用于触发流水线、监控工作流与作业、检索构建产物以及查看测试元数据。
用途
该技能主要用于自动化 CircleCI 的持续集成与持续部署任务。用户可以通过自然语言指令或自动化脚本,完成流水线触发、状态监控、作业详情查询、产物下载和测试结果审查等操作,无需手动登录 CircleCI 界面。
主要能力
- 触发流水线:通过 CIRCLECI_TRIGGER_PIPELINE 工具在指定项目上启动新的流水线运行,支持指定分支、标签和流水线参数。
- 监控流水线与工作流:通过 CIRCLECI_LIST_PIPELINES_FOR_PROJECT 和 CIRCLECI_LIST_WORKFLOWS_BY_PIPELINE_ID 工具列出项目最近的流水线及其包含的工作流,并可查看流水线配置。
- 检查作业详情:通过 CIRCLECI_GET_JOB_DETAILS 工具获取特定作业的详细信息,包括执行器类型、并行度、起止时间和状态。
- 检索构建产物:通过 CIRCLECI_GET_JOB_ARTIFACTS 工具列出作业产生的所有构建产物,每个产物包含路径和下载 URL。
- 审查测试结果:通过 CIRCLECI_GET_TEST_METADATA 工具获取作业的测试结果和元数据,包括类名、测试名、结果、消息和运行时间等字段。
使用方式
前置条件
- Rube MCP 必须已连接(RUBE_SEARCH_TOOLS 可用)。
- 通过 RUBE_MANAGE_CONNECTIONS 激活 CircleCI 连接(toolkit 为 circleci)。
- 始终先调用 RUBE_SEARCH_TOOLS 获取当前工具架构。
设置步骤
- 获取 Rube MCP:在客户端配置中添加 https://rube.app/mcp 作为 MCP 服务器。无需 API 密钥,添加端点即可使用。
- 确认 RUBE_SEARCH_TOOLS 有响应,验证 Rube MCP 可用。
- 调用 RUBE_MANAGE_CONNECTIONS 并指定 toolkit 为 circleci。
- 如果连接状态不是 ACTIVE,按照返回的认证链接完成 CircleCI 认证。
- 确认连接状态显示 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
流水线 -> 工作流 -> 作业层级
- 调用 CIRCLECI_LIST_PIPELINES_FOR_PROJECT 获取流水线 ID。
- 使用 pipeline_id 调用 CIRCLECI_LIST_WORKFLOWS_BY_PIPELINE_ID。
- 从工作流详情中提取作业编号。
- 使用 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 格式结果时可用。
- 大型产物可能有下载大小限制。