feat: in-browser WASM conversion engine with full worker-matrix parity #711
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: ci-docs | |
| on: | |
| workflow_dispatch: | |
| push: | |
| # Republish to Pages when the docs/report sources land on main — | |
| # previously this only happened on a version tag, so verification/ | |
| # changes (e.g. new report tables) didn't show up until the next | |
| # release. Tags still publish (release footer / git-describe string). | |
| # NOTE: GitHub applies this `paths` filter to the tag pushes in this | |
| # same block too; release commits normally touch src/ada or | |
| # pyproject, but if one doesn't, republish via workflow_dispatch. | |
| branches: | |
| - main | |
| tags: | |
| - 'v*.*.*' | |
| paths: | |
| - 'docs/**' | |
| - 'verification/**' | |
| - 'src/ada/**' | |
| - 'pixi.toml' | |
| - 'pixi.lock' | |
| - 'pyproject.toml' | |
| - '.github/workflows/ci-pages.yml' | |
| # PR builds don't deploy (see the gated upload step) — they just smoke-test | |
| # that the docs/report build succeeds before merge. | |
| pull_request: | |
| branches: | |
| - main | |
| # Serialize gh-pages publishes. peaceiris force-pushes the branch, so two | |
| # overlapping deploys (e.g. the main push and the tag push of a release) race | |
| # the ref lock — the symptom is `cannot lock ref 'refs/heads/gh-pages': is at X | |
| # but expected Y`. All deploying runs (push to main + tags) share one group so | |
| # only one publishes at a time, and a newer run supersedes an in-flight one (it | |
| # carries the newer docs anyway). PR builds stay per-ref so a new commit cancels | |
| # the previous build without blocking on the deploy group. | |
| concurrency: | |
| group: ci-docs-${{ github.event_name == 'pull_request' && github.ref || 'pages-deploy' }} | |
| cancel-in-progress: true | |
| jobs: | |
| build: | |
| runs-on: ubuntu-latest | |
| defaults: | |
| run: | |
| shell: bash -l {0} | |
| steps: | |
| - uses: actions/checkout@v6 | |
| with: | |
| fetch-depth: 0 # otherwise, you will fail to push refs to dest repo | |
| - uses: prefix-dev/setup-pixi@v0.9.6 # https://github.com/prefix-dev/setup-pixi | |
| with: | |
| pixi-version: v0.68.0 | |
| environments: docs | |
| cache: true | |
| # The `docs` task chains `fea-doc`, which renders the FEA | |
| # verification posters offscreen via wgpu/pygfx. A bare runner has | |
| # no graphics adapter, so wgpu can't init a device and | |
| # `bake_with_posters` swallows the failure — the published docs | |
| # then ship without poster images. mesa-vulkan-drivers provides the | |
| # lavapipe software Vulkan adapter (reports as "llvmpipe … via | |
| # Vulkan") and libvulkan1 the loader; together they're the minimal | |
| # closure for the pygfx offscreen backend (matches the Vulkan deps | |
| # baked into deploy/Dockerfile.docs). | |
| - name: Install offscreen render deps (wgpu software Vulkan) | |
| run: sudo apt-get update && sudo apt-get install -y --no-install-recommends mesa-vulkan-drivers libvulkan1 | |
| - name: Build Documentation | |
| run: pixi run docs | |
| - name: Upload to GitHub Pages | |
| if: github.event_name != 'pull_request' | |
| uses: peaceiris/actions-gh-pages@v4 | |
| with: | |
| github_token: ${{ secrets.GITHUB_TOKEN }} | |
| publish_dir: ./docs/_build/html/ | |
| # Rewrite gh-pages as a single orphan commit each publish. The site | |
| # is multi-MB; without this the branch history grows unbounded. | |
| force_orphan: true |