项目介绍
使用AI和MCP自动生成安全的CI/CD流水线
文件结构的一般计划:
mcp-ci-cd-builder/
├── client/ # 使用React + Tailwind + Zustand的前端(维多利亚)
│ ├── src/
│ ├── public/
│ └── package.json
├── server/ # MCP编排器 + 适配器(洛伦茨)
│ ├── src/
│ ├── package.json
│ └── mcp.config.json
├── infra/ # AWS OIDC + GitHub Actions工作流(亚历克斯)
│ ├── workflows/
│ └── terraform/ 或 aws-oidc.yml
├── tests/ # 共享测试工具(Python)
│ ├── integration/
│ └── unit/
├── .github/
│ └── workflows/
│ └── ci.yml
├── README.md
└── .env.example
由洛伦茨添加 - 后端文件结构及当前后端流程:
序列图
前端 ->> 后端: GET /auth/github/start
后端 ->> GitHub: 将用户重定向到OAuth同意页面
GitHub ->> 后端: 带有code和state的回调
后端 ->> GitHub: POST /login/oauth/access_token
GitHub ->> 后端: 返回access_token
后端 ->> GitHub: GET /user, GET /user/emails
后端 ->> Supabase: 更新用户 + 连接
后端 ->> 前端: 重定向 / JSON成功
AutoDeploy/
│
├── server/ # 主要后端服务
└── lib/
└── github-oauth.js # GitHub API辅助函数
├── state.js # CSRF状态存储(内存中)
├── routes/
└── auth.github.js # 所有GitHub OAuth + /me路由
└── deployments.js
└── usersRoutes
├── server.js # Express初始化及路由挂载
├── db.js # pg连接池 + 查询() + 健康检查()
├── .env # 环境变量(GitHub, 数据库)
├── package.json / lock.json
├── .gitignore
└── (可选) client/ # 前端或测试脚本
包括:
• 通过状态(内存存储)进行CSRF保护。
• 使用实时GitHub API调用进行令牌交换和用户获取。
• 对用户和连接进行更新逻辑(幂等)。
• 在使用任何存储的令牌之前进行完整性检查。
功能性状态:
+-------------------+------------+-------------------------------------------------------------+
| 组件 | 状态 | 备注 |
+-------------------+------------+-------------------------------------------------------------+
| Express应用 | ✅ 工作中 | 清洁中间件(CORS, Helmet, JSON, 日志记录) |
| 数据库连接 | ✅ 工作中 | 通过Supabase连接字符串连接Postgres |
| /health | ✅ 工作中 | 返回运行时间 |
| /db/ping | ✅ 工作中 | 验证数据库连接 |
| /users (POST/GET) | ✅ 工作中 | 基本用户CRUD |
| /auth/github/* | ✅ 工作中 | 完整的OAuth流程 |
| /auth/github/me | ✅ 工作中 | 令牌完整性检查 + GitHub用户信息 |
+-------------------+------------+-------------------------------------------------------------+
部署日志API
概述:
此部署日志API提供了一种轻量级、灵活的方式来记录、更新和检索来自GitHub Actions或其他CI/CD提供商的部署活动。
它旨在为MCP CI/CD构建器的部署跟踪和报告系统提供动力。
模式涵盖:
-状态跟踪(排队、运行、成功、失败、取消)
-基本上下文(提供商、repo_full_name、环境、分支)
-时间数据(创建时间、完成时间、持续时间ms)
-灵活的元数据以适应特定提供商的详细信息(GitHub运行ID、AWS区域)
API端点
POST
/deployments
创建一个新的部署记录(状态 = 排队)。
PATCH
/deployments/:id/status
更新部署状态并合并元数据。
GET
/deployments
列出部署(按仓库、环境或状态筛选)。
GET
/deployments/:id
通过ID检索单个部署记录。
----------------------------------------------------------------------------------------------------
🔁 部署重试与回滚
🧩 概述
重试与回滚系统通过增加以下功能来扩展现有的部署日志API:
• 🔁 使用相同的提交(commit_sha)重试失败或不稳定部署。
• ⏮️ 回滚到一个已知良好的先前提交。
• 🧠 自动在deployment_logs表中跟踪这些事件,并带有清晰的动作类型:deploy, retry 和 rollback。
每个新动作都会创建自己的不可变记录,保留完整的部署历史和谱系。
端点
POST
/deployments/:id/retry
通过ID重试之前的部署。使用相同的提交、仓库和环境创建一个新的排队记录。
POST
/deployments/rollback
手动回滚到特定提交(commit_sha)。
POST
/deployments/rollback/last-success
自动回滚到同一仓库和环境下的最后一个成功提交。
---------------------------------------------------------------------------------------------------
数据库变更
ALTER TABLE public.deployment_logs
ADD COLUMN IF NOT EXISTS action TEXT NOT NULL DEFAULT 'deploy', -- deploy | retry | rollback
ADD COLUMN IF NOT EXISTS parent_id UUID REFERENCES public.deployment_logs(id);
---------------------------------------------------------------------------------------------------
🧠 工作原理
• 每次重试或回滚都会在deployment_logs中创建一行新的记录。
• parent_id字段链接回原始部署以实现可追溯性。
• action字段表示意图:
• deploy → 新部署
• retry → 相同提交的新尝试
• rollback → 回滚到之前的提交
• 状态从排队开始,可以使用/deployments/:id/status端点过渡到运行、成功或失败。
┌───────────────────────────────┐
│ 用户 / API调用 │
└──────────────┬────────────────┘
│
▼
┌──────────────────────────────────┐
│ Express后端(API) │
│ /deployments /rollback /retry │
└──────────────┬───────────────────┘
│
┌─────────────────────────┼─────────────────────────┐
│ │ │
▼ ▼ ▼
┌────────────────┐ ┌──────────────────┐ ┌────────────────┐
│ 部署(新) │ │ 重试(相同) │ │ 回滚(旧) │
│ action=deploy │ │ action=retry │ │ action=rollback│
└────────────────┘ └──────────────────┘ └────────────────┘
│ │ │
└──────────────┬──────────┴──────────┬──────────────┘
▼ ▼
┌─────────────────────────────────────┐
│ Supabase deployment_logs │
│ - repo_full_name, 环境 │
│ - 分支, commit_sha │
│ - 状态, 动作, parent_id │
│ - 元数据(额外信息) │
└─────────────────────────────────────┘
│
▼
┌────────────────────────────┐
│ GitHub Actions API │
│ (workflow_dispatch 调用) │
└──────────────┬─────────────┘
│
▼
┌──────────────────────────┐
│ 部署工作流运行 │
│ (构建, 测试, 发布) │
└──────────────────────────┘
测试