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.
105 lines
2.3 KiB
YAML
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
|