# MetonaAI Desktop — Gitea Actions CI # # 质量门禁:类型检查 + Lint + 单元测试 + 产物编译验证 # 触发:push(main/dev 分支)与 Pull Request # # 说明: # - 主测试使用系统 Node(npm test)——better-sqlite3 原生模块按系统 Node ABI 编译, # audit 套件在 ABI 不匹配时自动跳过(skipIf),保证 CI 稳定绿 # - electron-test job 尝试按 Electron ABI 重建 better-sqlite3 后跑全量测试(含 audit 链式哈希), # 该 job 标记为 experimental(continue-on-error),失败不阻塞合并 # - build 验证只跑 electron-vite build(产物编译),不跑 electron-builder 打包—— # NSIS 目标需要 wine,Linux runner 上不可用 name: CI on: push: branches: [main, dev, master] pull_request: branches: [main, dev, master] env: # Electron 二进制国内镜像(与 .npmrc 注释保持一致,加速 runner 下载) ELECTRON_MIRROR: https://npmmirror.com/mirrors/electron/ jobs: quality: name: 类型检查 + Lint + 单元测试 runs-on: debian-latest timeout-minutes: 20 steps: - name: Checkout uses: actions/checkout@v4 - name: Setup Node.js uses: actions/setup-node@v4 with: node-version: 22 cache: npm - name: Install dependencies run: npm ci - name: Typecheck run: npm run typecheck - name: Lint run: npm run lint - name: Unit tests (system Node) run: npm test electron-test: name: 全量测试 (Electron ABI, experimental) runs-on: debian-latest timeout-minutes: 25 continue-on-error: true steps: - name: Checkout uses: actions/checkout@v4 - name: Setup Node.js uses: actions/setup-node@v4 with: node-version: 22 cache: npm - name: Install dependencies run: npm ci - name: Rebuild better-sqlite3 for Electron ABI run: npx @electron/rebuild -f -w better-sqlite3 - name: Full tests (Electron Node ABI) run: npm run test:electron build: name: 产物编译验证 runs-on: debian-latest timeout-minutes: 20 steps: - name: Checkout uses: actions/checkout@v4 - name: Setup Node.js uses: actions/setup-node@v4 with: node-version: 22 cache: npm - name: Install dependencies run: npm ci - name: Build (electron-vite) run: npx electron-vite build