MonkeyCode DevOps 实践:CI/CD流水线与自动化部署全流程

MonkeyCode DevOps 实践:CI/CD流水线与自动化部署全流程

MonkeyCode 作为一个开源项目,自身的CI/CD流水线也是开源的。从代码提交到生产部署,全流程自动化。本文分享我们的DevOps实践,这些配置你也可以直接用在项目中。

整体流水线

复制代码
代码提交 → 自动化流程:\n\n1. Lint + 格式化检查 (2分钟)\n2. 单元测试 (5分钟)\n3. 集成测试 (10分钟)\n4. 安全扫描 (3分钟)\n5. Docker镜像构建 (5分钟)\n6. 部署到Staging (3分钟)\n7. E2E测试 (10分钟)\n8. 人工确认 → 部署到Production\n\n总耗时: 约40分钟(不含人工确认)

GitHub Actions配置

PR检查流水线

复制代码
# .github/workflows/pr-check.yml\nname: PR Check\n\non:\n  pull_request:\n    branches: [main]\n\njobs:\n  lint:\n    runs-on: ubuntu-latest\n    steps:\n      - uses: actions/checkout@v4\n      - uses: actions/setup-go@v5\n        with: { go-version: "1.22" }\n      - run: go vet ./...\n      - run: golint ./...\n\n  test:\n    needs: lint\n    runs-on: ubuntu-latest\n    steps:\n      - uses: actions/checkout@v4\n      - run: go test -race -coverprofile=coverage.out ./...\n      - uses: codecov/codecov-action@v3\n        with:\n          file: coverage.out\n          fail_ci_if_error: true\n\n  security:\n    needs: lint\n    runs-on: ubuntu-latest\n    steps:\n      - uses: actions/checkout@v4\n      - uses: aquasecurity/trivy-action@master\n        with:\n          scan-type: fs\n          severity: CRITICAL,HIGH\n          exit-code: 1\n\n  frontend:\n    runs-on: ubuntu-latest\n    steps:\n      - uses: actions/checkout@v4\n      - uses: actions/setup-node@v4\n        with: { node-version: "20" }\n      - run: cd frontend && npm ci\n      - run: cd frontend && npm run lint\n      - run: cd frontend && npm run test\n      - run: cd frontend && npm run build

发布流水线

复制代码
# .github/workflows/release.yml\nname: Release\n\non:\n  push:\n    tags: ["v*"]\n\njobs:\n  build:\n    strategy:\n      matrix:\n        include:\n          - os: linux, arch: amd64\n          - os: linux, arch: arm64\n          - os: darwin, arch: amd64\n          - os: darwin, arch: arm64\n          - os: windows, arch: amd64\n    steps:\n      - uses: actions/checkout@v4\n      - run: CGO_ENABLED=0 GOOS=${{ matrix.os }} GOARCH=${{ matrix.arch }} go build -o monkeycode\n      - uses: actions/upload-artifact@v4\n        with:\n          name: monkeycode-${{ matrix.os }}-${{ matrix.arch }}\n          path: monkeycode\n\n  docker:\n    needs: build\n    runs-on: ubuntu-latest\n    steps:\n      - uses: docker/setup-buildx-action@v3\n      - uses: docker/login-action@v3\n        with:\n          registry: ghcr.io\n          username: ${{ github.actor }}\n          password: ${{ secrets.GITHUB_TOKEN }}\n      - uses: docker/build-push-action@v5\n        with:\n          push: true\n          tags: |\n            ghcr.io/chaitin/monkeycode:latest\n            ghcr.io/chaitin/monkeycode:${{ github.ref_name }}\n          cache-from: type=gha\n          cache-to: type=gha,mode=max\n\n  deploy-staging:\n    needs: docker\n    runs-on: ubuntu-latest\n    steps:\n      - run: kubectl set image deployment/monkeycode monkeycode=ghcr.io/chaitin/monkeycode:${{ github.ref_name }} --namespace staging\n      - run: kubectl rollout status deployment/monkeycode --namespace staging --timeout=300s\n\n  e2e-test:\n    needs: deploy-staging\n    runs-on: ubuntu-latest\n    steps:\n      - uses: actions/checkout@v4\n      - run: cd e2e && npm ci && npm run test:staging

Docker配置

多阶段构建

复制代码
# Dockerfile\n\n# 阶段1: 构建\nFROM golang:1.22-alpine AS builder\nWORKDIR /app\nCOPY go.mod go.sum ./\nRUN go mod download\nCOPY . .\nRUN CGO_ENABLED=0 GOOS=linux go build -ldflags="-s -w" -o monkeycode-server ./cmd/server\n\n# 阶段2: 运行\nFROM alpine:3.19\nRUN apk --no-cache add ca-certificates git\nCOPY --from=builder /app/monkeycode-server /usr/local/bin/\nCOPY --from=builder /app/configs /etc/monkeycode/configs\nEXPOSE 8080\nENTRYPOINT ["monkeycode-server"]

docker-compose一键部署

复制代码
# docker-compose.yml (开源版)\nversion: "3.8"\nservices:\n  monkeycode:\n    image: ghcr.io/chaitin/monkeycode:latest\n    ports: ["8080:8080"]\n    depends_on: [postgres, redis]\n    environment:\n      DATABASE_URL: postgres://monkeycode:password@postgres:5432/monkeycode\n      REDIS_URL: redis://redis:6379\n      JWT_SECRET: ${JWT_SECRET}\n\n  postgres:\n    image: postgres:16-alpine\n    volumes: [pgdata:/var/lib/postgresql/data]\n    environment:\n      POSTGRES_DB: monkeycode\n      POSTGRES_PASSWORD: password\n\n  redis:\n    image: redis:7-alpine\n    volumes: [redisdata:/data]\n\nvolumes:\n  pgdata:\n  redisdata:

Kubernetes部署

复制代码
# 部署配置\napiVersion: apps/v1\nkind: Deployment\nmetadata:\n  name: monkeycode\nspec:\n  replicas: 3\n  strategy:\n    rollingUpdate:\n      maxSurge: 1\n      maxUnavailable: 0\n  template:\n    spec:\n      containers:\n      - name: monkeycode\n        image: ghcr.io/chaitin/monkeycode:latest\n        resources:\n          requests: { cpu: 500m, memory: 512Mi }\n          limits: { cpu: 2000m, memory: 2Gi }\n        readinessProbe:\n          httpGet: { path: /health, port: 8080 }\n          initialDelaySeconds: 5\n          periodSeconds: 10\n        livenessProbe:\n          httpGet: { path: /health, port: 8080 }\n          initialDelaySeconds: 15\n          periodSeconds: 20\n\n---\napiVersion: autoscaling/v2\nkind: HorizontalPodAutoscaler\nmetadata:\n  name: monkeycode\nspec:\n  minReplicas: 3\n  maxReplicas: 20\n  metrics:\n  - type: Resource\n    resource:\n      name: cpu\n      target: { type: Utilization, averageUtilization: 60 }

监控与告警

复制代码
监控栈:\n\nPrometheus --- 指标采集\n  - API响应时间\n  - AI模型调用延迟\n  - 容器资源使用\n  - 任务成功率\n\nGrafana --- 可视化看板\n  - 服务健康概览\n  - AI使用量统计\n  - 成本分析\n\nAlertManager --- 告警\n  - 服务宕机 → 立即通知\n  - 错误率 > 5% → 5分钟通知\n  - AI调用超时 > 10% → 10分钟通知\n  - 磁盘使用 > 80% → 1小时通知

总结

MonkeyCode的DevOps实践全部开源------从GitHub Actions流水线到Docker配置到Kubernetes部署。你可以直接复用这些配置来搭建自己的CI/CD。开源不仅是分享代码,也是分享工程实践。

CI/CD配置:github.com/chaitin/MonkeyCode/tree/main/.github/workflows

部署文档:github.com/chaitin/MonkeyCode/blob/main/docs/deployment.md

相关推荐
DianSan_ERP1 小时前
架构师视角:电商大促高并发下的订单API限流与防漏单架构演进
java·运维·网络·安全·微服务·架构·自动化
腾讯蓝鲸智云1 小时前
【运维自动化-监控平台】初识蓝鲸监控
运维·自动化·云计算·sass·paas
_codemonster2 小时前
传统模式 vs DevOps 模式
运维·devops
Maydaycxc2 小时前
Python 实现 RPA + AI 自动化:大模型 OCR + 网页操作完整源码实战
人工智能·python·opencv·selenium·自动化·ocr·rpa
志栋智能2 小时前
超自动化安全的实施路径:从单点场景到体系化建设
运维·网络·安全·自动化
实在智能RPA2 小时前
机组排班RPA自动化采集:2026年AI Agent驱动下的跨系统协同与高精度落地实践
人工智能·ai·自动化·rpa
zandy10113 小时前
体验家 XMPlus 改善工单全链路自动化:从“发现问题“到“验证解决“的工程化闭环设计
运维·自动化
ai_coder_ai3 小时前
如何使用adb实现自动化脚本?
运维·adb·自动化
Splashtop高性能远程控制软件3 小时前
微软2026年6月补丁星期二技术分析:206个漏洞、3个已公开零日的分级修复方案
运维·安全·自动化·远程桌面·splashtop