name: CI on: push: branches: - main pull_request: permissions: contents: read jobs: quality: name: Node 质量门禁 runs-on: docker timeout-minutes: 15 steps: - name: 检出代码 uses: actions/checkout@v4 - name: 配置 Node.js uses: actions/setup-node@v4 with: node-version: 22.18.0 cache: npm - name: 安装锁定依赖 run: npm ci - name: TypeScript 类型检查 run: npm run typecheck - name: 单元与组件测试 run: npm test - name: 生产构建 run: npm run build - name: 高危依赖审计 run: npm audit --audit-level=high docker: name: Docker 构建与健康检查 runs-on: docker timeout-minutes: 15 steps: - name: 检出代码 uses: actions/checkout@v4 - name: 构建 Web 镜像 run: docker compose build web - name: 启动 Web 服务 run: docker compose up --no-build --detach web - name: 等待健康检查通过 run: ./scripts/check-web-health.sh - name: 输出故障诊断 if: failure() run: docker compose ps && docker compose logs --no-color web - name: 清理容器 if: always() run: docker compose down --volumes --remove-orphans