Files
xiaoxia-saas/docs/ci/runner-planning.md
T
Ops Bot f901705050
CI/CD Pipeline / Validate Code Quality And Tests (pull_request) Failing after 17s
CI/CD Pipeline / Unit Tests (pull_request) Failing after 47s
CI/CD Pipeline / Integration Tests (pull_request) Failing after 37s
CI/CD Pipeline / Frontend Lint (pull_request) Successful in 3m5s
CI/CD Pipeline / Build & Push Staging (Watchtower auto-deploy) (pull_request) Has been skipped
CI/CD Pipeline / Build Production Runtime Images (pull_request) Has been skipped
CI/CD Pipeline / Staging E2E Tests (pull_request) Has been skipped
CI/CD Pipeline / Staging API Integration Tests (pull_request) Has been skipped
CI/CD Pipeline / Deploy Production (pull_request) Has been skipped
CI/CD Pipeline / Production Browser E2E (pull_request) Has been skipped
docs: 新增 runner-planning.md
2026-07-13 16:27:17 +08:00

4.5 KiB
Raw Blame History

三台服务器 Runner 分工规划

制定日期: 2026-07-13 状态: 规划中


一、现状总览

当前共 9 个 Gitea Actions Runner,分布在 3 台服务器上:

服务器 IP 配置 Runner 数量 当前状态
构建服务器 114.55.236.178 4核 / 7.1G RAM / 49G NVMe 4个(ID: 8, 42, 46, 47 在线
新CI服务器 116.62.226.203 8核 / 14G RAM 5个(ID: 58-62 在线
业务服务器 47.98.113.167 - 0个(旧3个已下线) ⚠️ 待规划

所有 Runner 共用标签: saas, runtime-builder, host, ubuntu-latest


二、问题分析

2.1 标签无区分

所有 Runner 标签完全一致,CI 任务随机分配到任意 Runner,导致:

  • 构建任务(Build)可能跑到配置低的机器上,构建慢
  • 代码检查任务占着构建服务器,影响构建速度
  • 业务服务器跑 CI 影响线上服务稳定性

2.2 资源浪费

  • 新服务器 8核14G 跑 validate/lint 有点大材小用
  • 构建服务器 4核7G 跑 Docker 构建偏紧张

三、规划方案

3.1 分工原则

服务器 角色 主要任务类型 标签策略
构建服务器 (114.55.236.178) 构建专机 Build Staging / Build Production / Docker 镜像构建 保留 saas + host,新增 build-only
新CI服务器 (116.62.226.203) 代码检查专机 Validate / Unit Tests / Integration Tests / Frontend Lint 保留 saas + host,新增 ci-check
业务服务器 (47.98.113.167) 部署专机 Deploy Staging / Deploy Production / E2E Tests 保留 saas + host,新增 deploy-only

3.2 具体配置

构建服务器(4个 Runner

  • 数量: 3个(从4个缩减,释放资源给构建缓存)
  • 标签: saas, host, build-only, ubuntu-latest
  • 负责 Job
    • build-staging
    • build-production-runtime-images
    • 其他需要 Docker buildx 的任务

新CI服务器(5个 Runner

  • 数量: 5个(保持不变)
  • 标签: saas, host, ci-check, ubuntu-latest
  • 负责 Job
    • validate
    • unit-tests
    • integration-tests
    • frontend-lint
    • 安全扫描(gitleaks / pip-audit / vulture 等)

业务服务器(1-2个 Runner

  • 数量: 1-2个(逐步替换旧的3个)
  • 标签: saas, host, deploy-only, ubuntu-latest
  • 负责 Job
    • deploy-staging
    • deploy-production
    • staging-e2e / production-e2e
    • staging-api-tests

四、实施步骤

Phase 1: 标签打标(低风险,立即做)

  1. 新服务器 5 个 Runner 添加 ci-check 标签
  2. 构建服务器保留 3 个 Runner,添加 build-only 标签
  3. 业务服务器部署 1 个新 Runner,标签 deploy-only

Phase 2: Job 路由调整(中风险,逐步来)

  1. validate / unit-tests / integration-tests / frontend-lint 改为 runs-on: ci-check
  2. build-staging / build-production 改为 runs-on: build-only
  3. deploy-* / e2e 改为 runs-on: deploy-only

Phase 3: 旧 Runner 下线

  • 业务服务器旧的 3 个 Runner 确认无任务后下线
  • 构建服务器多余的 1 个 Runner 迁移到新服务器

五、并发配置优化建议

5.1 当前并发情况

  • 首发并行 Jobvalidate + unit-tests + frontend-lint3个并行)
  • integration-tests 依赖 validate(串行,浪费资源)
  • 无 concurrency 限制,同一分支多次 push 会重复跑

5.2 优化建议

1. integration-tests 改为与 unit-tests 并行

# 当前
integration-tests:
  needs: validate  # 没必要等validate

# 优化后
integration-tests:
  needs: []  # 直接和unit-tests并行跑

2. 增加分支级 concurrency,取消重复构建

concurrency:
  group: ${{ github.workflow }}-${{ github.ref }}
  cancel-in-progress: true

同一 PR 多次 push 时,取消旧的构建,只跑最新的。

3. Build Staging 移出 PR 门禁

  • 已在阶段二优化中完成(PR #245
  • Build Staging 只在 develop/main 上异步构建

六、预期收益

指标 当前 优化后 提升
PR CI 总时长 ~8-12分钟 ~4-6分钟 ⏱️ 缩短 40-50%
构建速度 可能抢到慢机器 固定高配构建机 🚀 更稳定更快
线上稳定性 CI和业务抢资源 部署独立Runner 🛡️ 隔离保障
Runner 利用率 随机分配 按任务类型调度 📈 更合理