Repository navigation
fix(ci): Tauri Linux 编译补装 glib/gtk/webkit 系统依赖 #135
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: PR Quality Check | |
| on: | |
| pull_request: | |
| branches: [main, dev] | |
| push: | |
| branches: [dev] | |
| jobs: | |
| # =========================================================================== | |
| # 路径变更检测 —— 决定哪些子项目需要执行检查 | |
| # =========================================================================== | |
| changes: | |
| runs-on: ubuntu-latest | |
| timeout-minutes: 10 | |
| permissions: | |
| contents: read | |
| pull-requests: read | |
| outputs: | |
| app-frontend: ${{ steps.filter.outputs.app-frontend }} | |
| app-rust: ${{ steps.filter.outputs.app-rust }} | |
| docs: ${{ steps.filter.outputs.docs }} | |
| website: ${{ steps.filter.outputs.website }} | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - uses: dorny/paths-filter@v3 | |
| id: filter | |
| with: | |
| filters: | | |
| app-frontend: | |
| - 'app/src/**' | |
| - 'app/package.json' | |
| - 'app/package-lock.json' | |
| - 'app/index.html' | |
| - 'app/vite.config.ts' | |
| - 'app/tsconfig*.json' | |
| app-rust: | |
| - 'app/src-tauri/**' | |
| - 'app/src-tauri/Cargo.lock' | |
| docs: | |
| - 'docs/**' | |
| - 'scripts/docs-check.mjs' | |
| - '.docscheckignore' | |
| website: | |
| - 'website/**' | |
| # =========================================================================== | |
| # App 前端 —— React + Vite + TypeScript | |
| # =========================================================================== | |
| app-frontend: | |
| needs: changes | |
| if: needs.changes.outputs.app-frontend == 'true' | |
| runs-on: ubuntu-latest | |
| timeout-minutes: 15 | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - uses: actions/setup-node@v4 | |
| with: | |
| node-version: 20 | |
| cache: 'npm' | |
| cache-dependency-path: app/package-lock.json | |
| - run: cd app && npm ci | |
| - name: Typecheck | |
| run: cd app && npx tsc --noEmit | |
| - name: Build | |
| run: cd app && npm run build | |
| # =========================================================================== | |
| # App Rust 后端 —— Tauri 主进程(含单测与 lint) | |
| # =========================================================================== | |
| app-rust: | |
| needs: changes | |
| if: needs.changes.outputs.app-rust == 'true' | |
| runs-on: ubuntu-latest | |
| timeout-minutes: 60 | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - uses: dtolnay/rust-toolchain@stable | |
| with: | |
| components: clippy | |
| # Tauri 在 Linux 上编译需要 glib/gtk/webkit 系统库(glib-sys 等 -sys crate 的 pkg-config 依赖) | |
| - name: Install Linux system dependencies | |
| run: | | |
| sudo apt-get update | |
| sudo apt-get install -y libwebkit2gtk-4.1-dev build-essential curl wget file \ | |
| libxdo-dev libssl-dev libayatana-appindicator3-dev librsvg2-dev | |
| # sherpa-onnx 等 crate 编译耗时较长,启用 sccache 加速重复构建 | |
| - name: Cache cargo registry | |
| uses: Swatinem/rust-cache@v2 | |
| with: | |
| workspaces: app/src-tauri | |
| - name: Test | |
| run: cd app/src-tauri && cargo test | |
| - name: Lint (clippy) | |
| run: cd app/src-tauri && cargo clippy -- -D warnings | |
| # =========================================================================== | |
| # 官网 —— Next.js 静态站(构建验证,部署走 deploy-website.yml) | |
| # =========================================================================== | |
| website: | |
| needs: changes | |
| if: needs.changes.outputs.website == 'true' | |
| runs-on: ubuntu-latest | |
| timeout-minutes: 15 | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - uses: actions/setup-node@v4 | |
| with: | |
| node-version: 22 | |
| cache: 'npm' | |
| cache-dependency-path: website/package-lock.json | |
| - run: cd website && npm ci | |
| - name: Build | |
| run: cd website && npm run build | |
| # =========================================================================== | |
| # Docs —— 文档体系一致性检查(链接/索引/命名) | |
| # =========================================================================== | |
| docs: | |
| needs: changes | |
| if: needs.changes.outputs.docs == 'true' | |
| runs-on: ubuntu-latest | |
| timeout-minutes: 10 | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - uses: actions/setup-node@v4 | |
| with: | |
| node-version: 20 | |
| - name: Docs check | |
| run: node scripts/docs-check.mjs |