Skip to content

fix(ci): Tauri Linux 编译补装 glib/gtk/webkit 系统依赖 #135

fix(ci): Tauri Linux 编译补装 glib/gtk/webkit 系统依赖

fix(ci): Tauri Linux 编译补装 glib/gtk/webkit 系统依赖 #135

Workflow file for this run

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