MCP代理:基于AI的GitHub操作构建失败分析
使用AI(Claude通过AWS Bedrock)自动分析GitHub Actions工作流故障,并行MCP代理从GitHub、Kubernetes和JFrog Artifactory收集数据。
建筑
GitHub Actions Runner
|
v
TypeScript Action (src/index.ts) GitHub API (runs, jobs, commits, PRs)
+-- Kubernetes Agent (parallel) --> K8s API (pods, events, nodes)
+-- JFrog Agent (parallel) --> Artifactory API (health, storage)
|
v
Cross-Correlation Engine --> deterministic priority-based analysis
|
v
Claude AI (AWS Bedrock) --> structured root cause analysis
|
v
Outputs: GitHub Issue, PR Comment, Jira Ticket, Email, HTML Report快速开始
name: Build Failure Analysis
on:
workflow_run:
workflows: ["CI"]
types: [completed]
jobs:
analyze:
runs-on: ubuntu-latest
if: ${{ github.event.workflow_run.conclusion == 'failure' }}
steps:
- uses: actions/checkout@v4
- uses: PrabhaharanNM/github-actions-mcp-agent@v1
with:
github-token: ${{ secrets.GITHUB_TOKEN }}
aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }}
aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
create-issue: true
comment-on-pr: true输入
| 输入 | 必填 | 默认 | 说明 |
|---|---|---|---|
github-token | 没有 | ${{ github.token }} | API访问的GitHub令牌 |
aws-access-key-id | 是 | Bedrock的AWS访问密钥 | |
aws-secret-access-key | 是 | Bedrock的AWS密钥 | |
aws-region | 没有 | us-west-2 | AWS区域 |
aws-model-id | 没有 | anthropic.claude-3-5-sonnet-20241022-v2:0 | 克劳德型号ID |
k8s-api-url | 否 | Kubernetes API URL | |
k8s-token | 否 | Kubernetes身份验证令牌 | |
jfrog-url | 否 | JFrog人工制品URL | |
jfrog-api-key | 否 | JFrog API密钥 | |
jira-url | 没有用于创建票证的Jira URL | ||
jira-api-token | 否 | Jira API令牌 | |
jira-project | 没有 | E3 | Jira项目密钥 |
create-issue | 没有 | true | 创建GitHub问题 |
comment-on-pr | 没有 | true | PR评论 |
create-jira-ticket | 没有 | false | 创建Jira票证 |
send-email | 没有 | false | 发送电子邮件通知 |
team-mappings | 没有 | {} | JSON团队到经理的映射 |
输出
| 输出 | 描述 |
|---|---|
analysis-id | 唯一分析标识符 |
category | 故障类别(代码更改、基础设施、依赖性问题等) |
root-cause-summary | 一行根本原因总结 |
responsible-team | 分配的团队名称 |
jira-ticket-key | 已创建Jira票证密钥 |
github-issue-url | 已创建GitHub问题URL |
html-report-path | HTML报告工件的路径 |
从源头构建
# Build Go binary
cd go-binary
go mod tidy
bash build.sh
# Build TypeScript action
npm install
npm run build运作原理
- 触发:当受监视的工作流失败时运行
- 日志提取:从GitHub API下载工作流运行日志
- 解析:从日志中提取失败的步骤、错误消息、测试失败
- MCP代理 (平行):
- GitHub代理:获取作业、提交、代码所有者、PR详细信息 - Kubernetes代理:检查吊舱状态、OOM终止、节点压力 - JFrog代理人:验证工件可用性、依赖关系解决
- 互相关:确定性5优先级决策树确定根本原因类别
- 克劳德·艾:通过AWS Bedrock进行深入分析,以获得详细解释和下一步行动
- 团队分配:通过JSON配置将故障映射到责任团队
- 集成:创建问题、发布公关评论、Jira门票、发送电子邮件
