GitHub Actions构建失败分析工具

利用AI技术分析GitHub Actions工作流失败原因,自动生成报告并提供解决方案。

  • by PrabhaharanNM
  • Go
  • 本地部署
  • 更新于
在 GitHub 查看 PrabhaharanNM/github-actions-mcp-agent

使用说明

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

运作原理

  1. 触发:当受监视的工作流失败时运行
  2. 日志提取:从GitHub API下载工作流运行日志
  3. 解析:从日志中提取失败的步骤、错误消息、测试失败
  4. MCP代理 (平行):
    • GitHub代理:获取作业、提交、代码所有者、PR详细信息
    • Kubernetes代理:检查吊舱状态、OOM终止、节点压力
    • JFrog代理人:验证工件可用性、依赖关系解决
  5. 互相关:确定性5优先级决策树确定根本原因类别
  6. 克劳德·艾:通过AWS Bedrock进行深入分析,以获得详细解释和下一步行动
  7. 团队分配:通过JSON配置将故障映射到责任团队
  8. 集成:创建问题、发布公关评论、Jira门票、发送电子邮件