基于 OpenClaw + Claude Code 的端到端研发自动化系统
| 组件 | 版本 | 用途 | 端口 |
|---|---|---|---|
| OpenClaw | v2.0+ | 工作流编排引擎 | 8080 |
| Claude Code API | Latest | AI 编程服务 | 443 |
| Jenkins | v2.400+ | CI/CD 流水线 | 8081 |
| Kubernetes | v1.28+ | 容器编排 | 6443 |
| KubeSphere | v3.4+ | K8s 管理平台 | 30880 |
| Prometheus | v2.45+ | 指标监控 | 9090 |
| Grafana | v10.0+ | 可视化面板 | 3000 |
提供多种访问方式:Web Portal、CLI Tool、API Gateway、IDE Plugin
多角色 AI Agent 协同工作
OpenClaw 工作流引擎负责任务调度和流程编排
自动化构建、测试、部署流水线
基于 K8s 的容器编排和管理
底层基础设施支撑
| 数据类型 | 存储方案 | 保留策略 |
|---|---|---|
| PRD 文档 | MongoDB / MinIO | 永久 |
| 技术设计 | MongoDB / MinIO | 永久 |
| 源代码 | Git Repository | 永久 |
| 构建产物 | Nexus / Artifactory | 180 天 |
| Docker 镜像 | Harbor / Docker Registry | 90 天 |
| 测试报告 | Elasticsearch | 365 天 |
| 日志 | ELK Stack | 30 天 |
| 监控指标 | Prometheus | 15 天 |
| 组件 | CPU | 内存 | 存储 | 节点数 |
|---|---|---|---|---|
| K8s Master | 8 核 | 16GB | 200GB | 3 (HA) |
| K8s Worker | 16 核 | 32GB | 500GB | 5+ |
| Jenkins | 8 核 | 16GB | 200GB | 2 (HA) |
| Harbor | 8 核 | 16GB | 2TB | 2 (HA) |
# Master 节点初始化 kubeadm init \ --pod-network-cidr=10.244.0.0/16 \ --service-cidr=10.96.0.0/12 \ --apiserver-advertise-address=192.168.1.10 # 配置 kubectl mkdir -p $HOME/.kube cp -i /etc/kubernetes/admin.conf $HOME/.kube/config chown $(id -u):$(id -g) $HOME/.kube/config # Worker 节点加入 kubeadm join 192.168.1.10:6443 \ --token <token> \ --discovery-token-ca-cert-hash sha256:<hash>
# 添加 Jenkins Helm 仓库 helm repo add jenkins https://charts.jenkins.io helm repo update # 创建命名空间 kubectl create namespace jenkins # 安装 Jenkins helm install jenkins jenkins/jenkins \ -n jenkins \ -f jenkins-values.yaml
# 下载 Harbor 安装包 wget https://github.com/goharbor/harbor/releases/download/v2.9.0/harbor-offline-installer-v2.9.0.tgz tar xvf harbor-offline-installer-v2.9.0.tgz cd harbor # 编辑 harbor.yml 并安装 ./install.sh
pipeline {
agent any
environment {
REGISTRY = 'harbor.auto-research.example.com'
IMAGE_NAME = 'auto-research/myapp'
}
stages {
stage('Checkout') {
steps {
checkout scm
}
}
stage('Code Analysis') {
steps {
withSonarQubeEnv('SonarQube') {
sh 'mvn clean sonar:sonar'
}
}
}
stage('Unit Test') {
steps {
sh 'mvn test'
}
post {
always {
junit '**/target/surefire-reports/*.xml'
}
}
}
stage('Build Docker Image') {
steps {
script {
docker.build("${REGISTRY}/${IMAGE_NAME}:${BUILD_ID}")
}
}
}
stage('Push Image') {
steps {
script {
docker.withRegistry("https://${REGISTRY}", 'credentials-id') {
docker.image("${REGISTRY}/${IMAGE_NAME}:${BUILD_ID}").push()
}
}
}
}
stage('Deploy to K8S') {
steps {
sh 'kubectl apply -f k8s/deployment.yaml'
sh 'kubectl rollout status deployment/myapp'
}
}
}
}
# Build stage FROM maven:3.9-eclipse-temurin-17 AS builder WORKDIR /build COPY pom.xml . RUN mvn dependency:go-offline -B COPY src ./src RUN mvn clean package -DskipTests -B # Runtime stage FROM eclipse-temurin:17-jre-alpine RUN addgroup -S appgroup && adduser -S appuser -G appgroup WORKDIR /app COPY --from=builder /build/target/*.jar app.jar USER appuser HEALTHCHECK --interval=30s --timeout=3s \ CMD curl -f http://localhost:8080/health || exit 1 ENTRYPOINT ["java", "-jar", "app.jar"]
apiVersion: apps/v1
kind: Deployment
metadata:
name: myapp
namespace: auto-research-prod
spec:
replicas: 3
selector:
matchLabels:
app: myapp
template:
metadata:
labels:
app: myapp
spec:
containers:
- name: myapp
image: harbor.auto-research.example.com/auto-research/myapp:latest
ports:
- containerPort: 8080
resources:
requests:
cpu: "500m"
memory: "512Mi"
limits:
cpu: "2000m"
memory: "2Gi"
livenessProbe:
httpGet:
path: /health/live
port: 8080
initialDelaySeconds: 60
periodSeconds: 10
| 策略 | 描述 | 适用场景 | 风险 |
|---|---|---|---|
| 滚动更新 | 逐步替换旧版本 Pod | 常规发布 | 低 |
| 蓝绿部署 | 同时运行两个版本,切换流量 | 重大版本更新 | 极低 |
| 金丝雀发布 | 先发布少量实例,逐步扩大 | 高风险变更 | 低 |
# 启动顺序 kubectl apply -f /opt/auto-research/core-services/ kubectl get pods -n auto-research-system kubectl apply -f /opt/auto-research/applications/ # 停止顺序 kubectl delete -f /opt/auto-research/applications/ kubectl delete -f /opt/auto-research/core-services/
# 更新镜像版本 kubectl set image deployment/myapp \ myapp=harbor.example.com/myapp:v1.2.0 \ -n auto-research-prod # 查看部署状态 kubectl rollout status deployment/myapp -n auto-research-prod # 回滚 kubectl rollout undo deployment/myapp -n auto-research-prod # 查看历史 kubectl rollout history deployment/myapp -n auto-research-prod
# 查看 Pod 日志 kubectl logs myapp-5d8c9f7b6-x2k4m -n auto-research-prod # 实时跟踪日志 kubectl logs -f myapp-5d8c9f7b6-x2k4m -n auto-research-prod # 搜索错误日志 kubectl logs myapp-pod -n auto-research-prod | grep "ERROR"
# 手动扩缩容 kubectl scale deployment myapp --replicas=10 -n auto-research-prod # 查看 HPA 状态 kubectl get hpa -n auto-research-prod # 编辑 HPA kubectl edit hpa myapp-hpa -n auto-research-prod
| 指标类别 | 指标名称 | 告警阈值 | 优先级 |
|---|---|---|---|
| 节点资源 | CPU 使用率 | > 80% | 警告 |
| 内存使用率 | > 85% | 警告 | |
| 磁盘使用率 | > 80% | 严重 | |
| 应用指标 | HTTP 错误率 | > 5% | 严重 |
| P99 延迟 | > 2s | 警告 | |
| K8s 指标 | Pod 重启次数 | > 5 次/15min | 严重 |
| CI/CD 指标 | 构建失败率 | > 10% | 警告 |
groups:
- name: auto-research-alerts
rules:
- alert: HighCPUUsage
expr: 100 - (avg by(instance) (irate(node_cpu_seconds_total{mode="idle"}[5m])) * 100) > 80
for: 5m
labels:
severity: warning
annotations:
summary: "节点 {{ $labels.instance }} CPU 使用率过高"
description: "CPU 使用率:{{ $value }}%"
- alert: PodCrashLooping
expr: rate(kube_pod_container_status_restarts_total[15m]) * 60 * 5 > 0
for: 15m
labels:
severity: critical
annotations:
summary: "Pod {{ $labels.namespace }}/{{ $labels.pod }} 频繁重启"
dev-team@example.com
oncall@example.com
#ci-cd-notifications
#critical-alerts
On-call 轮值
紧急告警
# 1. 查看 Pod 状态 kubectl get pod <pod-name> -n <namespace> # 2. 查看详情 kubectl describe pod <pod-name> -n <namespace> # 3. 查看日志 kubectl logs <pod-name> -n <namespace> # 4. 进入容器调试 kubectl exec -it <pod-name> -n <namespace> -- /bin/sh
# 检查 Service 和 Endpoints kubectl get svc <service-name> -n <namespace> kubectl get endpoints <service-name> -n <namespace> # 检查 Pod 标签匹配 kubectl get pods -n <namespace> --show-labels # 测试连通性 kubectl run -it --rm debug --image=busybox --restart=Never -n <namespace> -- \ nslookup <service-name>.<namespace>.svc.cluster.local
负责需求分析和 PRD 生成
负责技术方案设计
负责前后端开发
负责测试用例生成
负责部署和运维
负责 UI 自动化验收