# PR 自动检查:代码风格 + 类型检查 + 测试 name: CI 检查 on: pull_request: branches: [main] push: branches: [main] # 同一分支有新提交时取消旧任务,避免旧任务持续占用 Gitea runner。 concurrency: group: ci-${{ gitea.ref }} cancel-in-progress: true jobs: verify: runs-on: ubuntu-latest timeout-minutes: 30 env: CI: 'true' TURBO_UI: stream steps: - name: 检出代码 uses: actions/checkout@v4 timeout-minutes: 3 - name: 安装 Node.js uses: actions/setup-node@v4 timeout-minutes: 3 with: node-version: '22' cache: npm - name: 安装依赖 run: npm ci --no-audit --no-fund timeout-minutes: 10 - name: 代码检查 # 后端原 lint 脚本带 --fix;CI 中追加 --no-fix,避免检查时修改工作区。 run: | npm run lint -w @gongxue/admin npm run lint -w @gongxue/server -- --no-fix timeout-minutes: 5 - name: 类型检查 run: npm run typecheck timeout-minutes: 8 - name: 后端测试 run: npm run test -w @gongxue/server -- --runInBand --forceExit timeout-minutes: 10 - name: 安装 Chromium run: npx playwright install --with-deps chromium timeout-minutes: 10 - name: 前端测试 run: npm run test -w @gongxue/admin timeout-minutes: 10