# MetonaAI Desktop — Gitea Actions CI # # 质量门禁:类型检查 + Lint + 单元测试 + 产物编译验证 # 触发:push(main/dev/master 分支)与 Pull Request # # v0.5.0 强化: # - typecheck 使用双工程真检查(tsconfig.node.json + tsconfig.web.json), # 修复此前 solution-style 根配置导致 `tsc --noEmit` 空操作、类型错误畅通提交的缺陷 # - electron-test job 从 experimental(continue-on-error)转正为阻塞门禁 # - 私有 npm 凭据通过 GITEA_NPM_AUTH secret 注入(需在仓库 # Settings → Actions → Secrets 配置,值为 base64("用户名:密码")) # # 说明: # - 主测试使用系统 Node(npm test)——better-sqlite3 原生模块按系统 Node ABI 编译, # audit 套件在 ABI 不匹配时自动跳过(skipIf),保证 CI 稳定绿 # - electron-test job 按 Electron ABI 重建 better-sqlite3 后跑全量测试 # (含 audit 链式哈希 + 会话摘要分层),作为阻塞门禁 # - 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/ # 私有 npm 仓库认证(@metona-team/metona-toast)— 从仓库 Secrets 注入 GITEA_NPM_AUTH: ${{ secrets.GITEA_NPM_AUTH }} 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 # v0.5.0: 双工程真检查(node + web),修复此前 solution-style 空操作缺陷 - name: Typecheck (node + web) run: npm run typecheck - name: Lint run: npm run lint - name: Unit tests (system Node) run: npm test electron-test: name: 全量测试 (Electron ABI) runs-on: debian-latest timeout-minutes: 25 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 # v0.5.0: 从 experimental 转正 — 含 SQLite 审计链哈希与摘要分层的全量用例必须通过 - 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