cd ../
👾 DevOps 自动化
Requires OpenClaw v2026.3+|GitHub + ArgoCD

我的 OpenClaw 代理审查每个 PR、运行测试并部署到预发布

作者: u/SoloDevOpsMarch 05, 2026 234 comments

作为维护 12 个微服务的独立开发者,我在每个 PR 的审查-测试-部署周期上花费 2 小时。我构建了一个 OpenClaw 代理,自动化从 PR 创建到预发布部署的整个流程——夺回了我的早晨。

独立开发者的瓶颈

每个 PR 需要:按规范审查代码、运行测试套件、检查覆盖率阈值、构建 Docker 镜像、部署到预发布环境、运行冒烟测试。12 个仓库,整个上午都搭进去了。

12
微服务数
2小时
每PR耗时
15-20
每周PR数
30+小时
每周浪费

架构概览

OpenClaw 运行在 Hetzner CX32(4 vCPU、8GB 内存,€7.50/月)上。GitHub webhook 在 PR 事件时触发代理。代理使用 Ollama 搭配 CodeLlama-13B 进行代码审查,调用 GitHub API 操作 PR,通过 ArgoCD 实现 GitOps 部署。

┌──────────┐  webhook   ┌──────────────┐  API    ┌──────────┐
│  GitHub  │──────────►│  OpenClaw     │───────►│  GitHub  │
│  PR事件  │           │  代理        │        │  API     │
└──────────┘           └───┬──┬───┬───┘        └──────────┘
                           │  │   │
              ┌────────────┘  │   └────────────┐
              ▼               ▼                ▼
        ┌──────────┐   ┌──────────┐     ┌──────────┐
        │  Ollama  │   │  Docker  │     │  ArgoCD  │
        │ CodeLlama│   │  构建    │     │  部署    │
        └──────────┘   └──────────┘     └──────────┘

OpenClaw 配置

IDENTITY.md
# IDENTITY.md — CI/CD 代理

你是一名高级 DevOps 工程师和代码审查员。
你的工作是自动化 PR → 预发布的流水线。

## 代码审查规则
1. 检查:未使用的导入、生产代码中的 console.log、
   硬编码密钥、SQL 注入模式、缺失的错误处理
2. 验证测试覆盖率不低于 80%
3. 标记 package.json / go.mod 中的依赖变更
4. 检查破坏性 API 变更(新增必填字段、删除端点)
5. 严重级别:CRITICAL(阻止合并)、WARNING(请求修改)、INFO(建议)

## 安全规则
- 绝不自动合并 PR。始终等待人工批准。
- 绝不部署到生产环境。仅限预发布。
- 冒烟测试失败时自动回滚并立即告警。
openclaw-trigger.yml
# .github/workflows/openclaw-trigger.yml
name: OpenClaw CI/CD 触发器
on:
  pull_request:
    types: [opened, synchronize, reopened]

jobs:
  notify-openclaw:
    runs-on: ubuntu-latest
    steps:
      - name: 触发 OpenClaw 代理
        run: |
          curl -X POST https://your-openclaw.tail1234.ts.net/webhook/github \
            -H "Authorization: Bearer ${{ secrets.OPENCLAW_TOKEN }}" \
            -d '{"event":"pull_request","pr_number":${{github.event.pull_request.number}}}'

The Pipeline

1. PR 创建 → Webhook

GitHub webhook 在 PR 打开/同步时触发。OpenClaw 接收 payload,浅克隆仓库(仅 diff),排队审查。

$ git clone --depth=1 --branch=feature/auth-refactor \
    https://github.com/solo-dev/user-service.git
$ git diff main...feature/auth-refactor --stat
 src/auth/handler.go     | 47 +++++++++++++--
 src/auth/handler_test.go | 23 +++++++
 3 files changed, 64 insertions(+), 18 deletions(-)

2. 代码审查

CodeLlama-13B 根据 IDENTITY 规则分析 diff。检查安全问题、风格违规和逻辑错误。审查评论直接以行号引用发布到 PR 上。

审查已发布到 PR #847:

⚠️ 警告 [src/auth/handler.go:34]
  缺少 token 验证的错误检查。
  建议: if err != nil { return nil, ErrInvalidToken }

✅ 通过: 未检测到硬编码密钥
📊 覆盖率: 84.2% → 86.1% (+1.9%)

3. CI 流水线

发布审查后,代理监控 GitHub Actions 状态检查。等待所有必要检查通过(lint、test、build)后才继续。

监控 PR #847 的 CI...
  ✅ lint          通过 (12秒)
  ✅ 单元测试      通过 (1分34秒)
  ✅ 集成测试      通过 (2分12秒)
  ✅ 覆盖率        86.1% (阈值: 80%) ✓
  ⏳ 等待人工批准...
  ✅ @solo-dev 于 09:47 UTC 批准

4. Docker 构建 + 推送

批准后,代理构建多阶段 Docker 镜像,以 commit SHA 为标签,推送到 Harbor 仓库。利用构建缓存加速。

$ docker build -t harbor.internal/user-service:a3f7b2c \
    --cache-from harbor.internal/user-service:latest .
成功构建 a3f7b2c

$ docker push harbor.internal/user-service:a3f7b2c
推送完成 8.3秒(层缓存命中: 5/7 层)

5. ArgoCD 部署 + 冒烟测试

代理更新 ArgoCD 应用清单中的镜像标签,同步并等待滚动更新。然后对预发布 URL 运行冒烟测试。

$ argocd app set user-service --helm-set image.tag=a3f7b2c
$ argocd app sync user-service --prune
  ✅ user-service  已同步  健康

冒烟测试 staging.internal/user-service:
  ✅ GET  /health       200 OK (12ms)
  ✅ POST /auth/login    200 OK (45ms)
  4/4 冒烟测试通过

60 天后的成果

流水线已在 12 个微服务上运行 60 天:

指标之前之后变化
PR → 预发布时间2 小时8 分钟↓ 93%
预发布前捕获Bug约3个/周约5个/周↑ 67%
每周 DevOps 工时30+小时3小时↓ 90%
部署失败次数2-3次/月0次↓ 100%
代码覆盖率(平均)72%86%↑ 19%
「我实质上用每月 30 美元的 API 费用雇了一个初级 DevOps 工程师。它从不休假,从不忘记跑 linter。」——独立开发者,12 个微服务

成本分析

项目月费说明
服务器 (Hetzner CX32)€7.504 vCPU, 8GB 内存
Ollama + CodeLlama-13B$0自托管,无 API 费用
Harbor 镜像仓库$0自托管
ArgoCD$0开源,K8s 集群内
GitHub API$0免费层 (5000请求/小时)
合计约 $8/月vs $2,500/月 的 DevOps 外包

年度节省:1,400+ 小时 DevOps 时间重新分配到功能开发。首年 ROI:约 37,000%。

安全护栏

代理绝不自动合并——始终需要人工批准
代理绝不部署到生产环境——仅限预发布
冒烟测试失败触发自动回滚
GitHub token 仅限特定仓库(非整个组织)
所有 webhook payload 通过 HMAC 签名验证
速率限制:最多 5 个并发流水线运行

⚠️ 代理仅有预发布环境的写权限。生产部署需要独立的手动流程和双人审批。

常见问题

Q1. 为什么用自托管 CodeLlama 而非 GPT-4?

两个原因:隐私(代码永不离开服务器)和成本。每周 15-20 个 PR、每个约 500 行,GPT-4 API 费用约 $200-400/月。CodeLlama-13B 本地免费运行,代码审查表现良好。

Q2. 支持 monorepo 吗?

支持,但需要在 IDENTITY.md 中配置基于路径的路由,让代理根据变更文件判断测试/部署哪个服务。代理会自动从 diff 中检测受影响的服务。

Q3. CI 不稳定怎么办?

代理会重试失败的 CI 检查一次。如果两次失败,会发评论标注不稳定测试并 @开发者。同时记录不稳定测试的趋势分析。

Q4. 支持 GitLab 吗?

同样的概念——替换 GitHub webhook 为 GitLab webhook,GitHub API 换为 GitLab API。IDENTITY 规则保持不变。社区成员已在 r/OpenClaw 上分享了 GitLab 配置。

经验教训

CodeLlama 擅长模式匹配

它出奇地擅长捕获 SQL 注入模式、缺失的空值检查和依赖版本冲突。但业务逻辑审查不太行——那仍需人工。

浅克隆节省时间

每次 PR 完整克隆仓库很慢(30秒+)。切换到浅克隆(仅 diff)后,克隆时间降至 2-3 秒。

增量 Docker 构建至关重要

首次构建需 3-4 分钟。配合适当的层缓存,后续构建仅 20-30 秒。仅此一项每天节省 45 分钟。

不要盲目信任代理

第一周它批准了一个包含竞态条件的 PR,因为测试没有覆盖该路径。现在每个关键路径都强制人工审查。