openpencil/.github/workflows/rust-check.yml
Kayshen-X d5011547f1 ci: remove TS/Electron workflows (build-electron / ci / docker / publish-cli)
Rust-ification 阶段,CI 只保留 Rust 相关:
- rust-check.yml: cargo fmt + build + test (with STEP1A_REQUIRE_GPU=1 on Linux) + clippy + cargo-deny
- wasm-bundle-check.yml: wasm32 target check

删除:
- build-electron.yml: Electron desktop build (Rust 化后用 openpencil-shell-native)
- ci.yml: TS type-check + Vitest + web build (Rust 化后已废)
- docker.yml: TS Docker image (Rust 化后重做)
- publish-cli.yml: npm packages (Rust 化后改 cargo publish)
2026-05-05 12:23:33 +08:00

76 lines
2.5 KiB
YAML

name: Rust check (native)
on:
pull_request:
paths:
- 'Cargo.toml'
- 'Cargo.lock'
- 'crates/**'
- 'rust-toolchain.toml'
- 'rustfmt.toml'
- 'deny.toml'
- '.github/workflows/rust-check.yml'
push:
branches: [main, 'feat/rust-ification']
paths:
- 'Cargo.toml'
- 'Cargo.lock'
- 'crates/**'
- 'rust-toolchain.toml'
jobs:
check:
name: ${{ matrix.os }} / 1.85
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
os: [macos-latest, ubuntu-latest, windows-latest]
steps:
- uses: actions/checkout@v4
with:
submodules: recursive
- uses: dtolnay/rust-toolchain@stable
with:
toolchain: '1.85'
components: rustfmt, clippy
- uses: Swatinem/rust-cache@v2
# Linux GL prerequisites for winit's x11+wayland feature link.
# libxkbcommon-x11-dev / libwayland-dev are winit's link-time deps on
# Linux; the wayland-csd-adwaita feature pulls in xkbcommon + wayland-client.
- name: Install Linux GL prereqs
if: runner.os == 'Linux'
run: |
sudo apt-get update
sudo apt-get install -y \
libxkbcommon-dev libxkbcommon-x11-dev \
libwayland-dev libxcb-render0-dev libxcb-shape0-dev libxcb-xfixes0-dev \
libegl1-mesa-dev libgles2-mesa-dev libgbm-dev mesa-utils \
libfreetype-dev libfontconfig1-dev
- run: cargo fmt --all -- --check
- run: cargo build --workspace
# Step 1a §9.2: Linux GPU smoke must hard-fail on EGL/GL setup failure
# in CI (real Mesa software-rendered EGL pbuffer is available). Local
# dev runners (no GPU + no env var) skip with INCONCLUSIVE marker.
- name: Run tests (Linux with strict GPU gate)
if: runner.os == 'Linux'
env:
STEP1A_REQUIRE_GPU: '1'
run: cargo test --workspace
- name: Run tests (macOS / Windows)
if: runner.os != 'Linux'
run: cargo test --workspace
- run: cargo clippy --workspace --all-targets -- -D warnings
deny:
name: cargo-deny (native)
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
submodules: recursive
- uses: dtolnay/rust-toolchain@stable
- uses: EmbarkStudios/cargo-deny-action@v2 # auto-updates within v2.x; runner cargo at this stage carries cargo-deny 0.18+ which handles modern transitive manifests (Phase 1 Task 1.8 finding)
with:
command: check