openpencil/.github/workflows/ci.yml
Kayshen-X 22003f9b0c chore(shell-native): add transient P0 probe gate (Step 1a)
Drives the three-OS CI matrix verification of the skia-safe + glutin +
glow + winit dep stack per Step 1a spec §7.

- examples/p0_probe.rs: stencil_visibility + readback chain runner (must
  own a real OS main thread because winit on macOS rejects
  EventLoop::new() from cargo test worker threads).
- tests/p0_probe.rs: subprocess-invoke wrapper, gated
  #[ignore = "P0_PROBE_GATE"] so default cargo test stays untouched.
- Cargo.toml: add transient [target.'cfg(not(target_arch = "wasm32"))'.
  dev-dependencies] block (skia-safe 0.97 + glutin 0.32.3 + glutin-winit
  0.5.0 + glow 0.17.0 + raw-window-handle 0.6.2 + scopeguard 1.2.0 +
  winit defaults). Pinned to versions resolved in /tmp/skia-glow-probe.
- .github/workflows/rust-check.yml: install Linux GL prereqs (xvfb,
  mesa, libxkbcommon, libwayland) and add a P0-probe-gate step running
  cargo test --ignored on each OS (Linux through xvfb-run; Windows
  early-returns per spec §8.2 WINDOWS_GPU_DEFERRED_NO_RUNNER).

All three artefacts are TRANSIENT — reverted in a follow-up cleanup
commit after CI is green and the loader-compat notes commit lands.
Task 1 owns the permanent integration.
2026-05-05 12:23:49 +08:00

105 lines
2.3 KiB
YAML

name: CI
on:
push:
branches: [main, 'v*']
pull_request:
branches: [main]
jobs:
lint-and-test:
name: Lint & Test
runs-on: ubuntu-latest
timeout-minutes: 10
steps:
- uses: actions/checkout@v4
with:
submodules: recursive
- uses: oven-sh/setup-bun@v2
with:
bun-version: latest
- uses: mlugg/setup-zig@v2
with:
version: 0.15.2
- name: Configure git for tests
run: |
git config --global user.name "CI"
git config --global user.email "ci@example.com"
git config --global init.defaultBranch main
- name: Install dependencies
run: bun install --frozen-lockfile
- name: Generate skill registry
run: bun run generate
- name: Lint
run: bun run lint
- name: Format check
run: bun run format:check
- name: Checkout openpencil-skill
uses: actions/checkout@v4
with:
repository: zseven-w/openpencil-skill
path: external/openpencil-skill
- name: Bundle CLI skill
env:
SKILL_ROOT: ${{ github.workspace }}/external/openpencil-skill
run: bun run cli:bundle-skill
- name: Type check
run: npx tsc --noEmit
- name: Run tests
run: bun --bun run test
build-web:
name: Build Web
runs-on: ubuntu-latest
timeout-minutes: 10
needs: lint-and-test
steps:
- uses: actions/checkout@v4
with:
submodules: recursive
- uses: oven-sh/setup-bun@v2
with:
bun-version: latest
- uses: mlugg/setup-zig@v2
with:
version: 0.15.2
- name: Install dependencies
run: bun install --frozen-lockfile
- name: Build
run: bun --bun run build
- name: Checkout openpencil-skill
uses: actions/checkout@v4
with:
repository: zseven-w/openpencil-skill
path: external/openpencil-skill
- name: Build CLI
env:
SKILL_ROOT: ${{ github.workspace }}/external/openpencil-skill
run: bun run cli:compile
- name: Upload web build artifact
uses: actions/upload-artifact@v4
with:
name: web-build
path: out/web/
retention-days: 7