用 AI Agent 全自动部署:从 Git Push 到生产环境零手工
适用场景
- 个人项目 / 小团队,不想手动部署
- 想让 AI 做部署决策(是否回滚、是否发公告)
- 需要部署后自动验证的
架构
git push main
→ GitHub Actions 触发
→ Step 1: 跑测试(pnpm test)
→ Step 2: Claude Code 审查改动
→ Step 3: 构建(pnpm build)
→ Step 4: 部署到 Vercel
→ Step 5: Claude Code 验证生产环境
→ Step 6: 失败则自动回滚 + 通知
第一步:基础 CI
.github/workflows/deploy.yml:
name: Deploy
on:
push:
branches: [main]
jobs:
deploy:
runs-on: ubuntu-latest
permissions:
contents: write
deployments: write
steps:
- uses: actions/checkout@v4
- uses: pnpm/action-setup@v2
with: { version: 9 }
- uses: actions/setup-node@v4
with: { node-version: 22, cache: pnpm }
- name: Install
run: pnpm install --frozen-lockfile
- name: Test
run: pnpm test
- name: Build
run: pnpm build
env:
VERCEL_TOKEN: ${{ secrets.VERCEL_TOKEN }}
第二步:AI 审查改动
在 build 前加 Claude Code 审查:
- name: AI Review Changes
uses: anthropics/claude-code-action@v1
with:
anthropic_api_key: ${{ secrets.ANTHROPIC_API_KEY }}
prompt: |
检查这次改动是否有部署风险:
1. 是否修改了环境变量配置
2. 是否修改了数据库 schema
3. 是否有 breaking change
4. 是否需要发迁移公告
如果有风险,输出 "BLOCK_DEPLOY: <原因>"
如果没风险,输出 "DEPLOY_OK"
第三步:AI 部署
- name: Deploy with Claude
if: success()
uses: anthropics/claude-code-action@v1
with:
anthropic_api_key: ${{ secrets.ANTHROPIC_API_KEY }}
prompt: |
执行部署:
1. 运行 vercel --prod --yes
2. 等待部署完成,获取 URL
3. curl 测试首页是否 200
4. curl 测试 /api/health 是否返回 ok
5. 如果验证失败,运行 vercel rollback
6. 输出部署结果
allowed_tools: "Bash"
第四步:自动回滚
- name: Rollback on failure
if: failure()
run: |
# 获取上一个稳定部署
PREV=$(vercel ls --yes | head -5 | tail -1 | awk '{print $1}')
echo "Rolling back to $PREV"
vercel promote $PREV --yes
- name: Notify
if: always()
uses: slackapi/slack-github-action@v1
with:
slack-message: |
${{ job.status == 'success' && '✅' || '❌' }} 部署 ${{ job.status }}
仓库: ${{ github.repository }}
提交: ${{ github.event.head_commit.message }}
安全边界
| 操作 | AI 可执行 | 需人工确认 |
|---|---|---|
| 跑测试 | ✅ | |
| 构建项目 | ✅ | |
| 部署到 preview | ✅ | |
| 部署到 production | ✅ | |
| 回滚 | ✅ | |
| 修改环境变量 | ✅ | |
| 数据库迁移 | ✅ | |
| 删除资源 | ✅ |
效果
上线 1 个月后:
| 指标 | 之前(手动) | 之后(AI 自动) |
|---|---|---|
| 部署频率 | 2 次/周 | 5 次/天 |
| 部署耗时 | 15 分钟 | 3 分钟 |
| 部署失败率 | 10% | 3%(自动回滚) |
| 人工介入 | 每次 | 5% 的部署 |
踩坑记录
- Claude Code Action 的
allowed_tools——只给Bash,别给文件编辑权限,否则 AI 可能改代码。 - Vercel rollback 需要 production deployment 历史——首次部署没有回滚目标,先手动部署一次。
- Claude API 成本——每次部署约 $0.2-0.5(审查 + 部署 + 验证),月费 $30-50。
- preview 环境先验证——加一步部署到 preview 验证通过再 promote 到 production。
- GitHub Actions 超时——Claude Code 调用有时慢,设置
timeout-minutes: 15。