Skip to content

feat: in-browser WASM conversion engine with full worker-matrix parity #711

feat: in-browser WASM conversion engine with full worker-matrix parity

feat: in-browser WASM conversion engine with full worker-matrix parity #711

Workflow file for this run

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