MCP代理:基于AI的GitHub操作构建失败分析
使用AI(Claude通过AWS Bedrock)自动分析GitHub Actions工作流故障,并行MCP代理从GitHub、Kubernetes和JFrog Artifactory收集数据。
建筑
GitHub Actions Runner
|
v
TypeScript Action (src/index.ts) <-- thin wrapper
|
v
Go Binary (go-binary/) <-- heavy processing
|
+-- GitHub Agent (parallel) --> 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门票、发送电子邮件