Skip to content

test(ffi): pin the ty and tz conjuncts of the site-local threshold (#… #653

test(ffi): pin the ty and tz conjuncts of the site-local threshold (#…

test(ffi): pin the ty and tz conjuncts of the site-local threshold (#… #653

Workflow file for this run

name: Deploy Documentation
on:
push:
branches:
- main
paths:
- 'docs/**'
- 'mkdocs.yml'
- 'rust/**'
- '.github/workflows/docs.yml'
workflow_dispatch:
permissions:
contents: read
pages: write
id-token: write
concurrency:
group: pages
cancel-in-progress: false
jobs:
build:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
with:
fetch-depth: 0
lfs: false
persist-credentials: false
- name: Setup Python
uses: actions/setup-python@5fda3b95a4ea91299a34e894583c3862153e4b97 # v7.0.0
with:
python-version: '3.12'
- name: Setup Rust
# Pin to a commit on the action's `master` branch and pass
# `toolchain: stable` explicitly. The `stable`/`nightly`/`beta`
# branches force-push snapshot commits that get garbage-collected
# when the toolchain advances — pinning to a `stable`-branch SHA
# would silently break the build the next time stable ships.
# See dtolnay/rust-toolchain README and PR #692 Codex review.
uses: dtolnay/rust-toolchain@6c977a6ca4077a0ceb28ffbe03f59d46e9ac8772 # master 2026-05
with:
toolchain: stable
- name: Cache pip dependencies
uses: actions/cache@55cc8345863c7cc4c66a329aec7e433d2d1c52a9 # v6.1.0
with:
path: ~/.cache/pip
key: ${{ runner.os }}-pip-${{ hashFiles('**/requirements-docs.txt') }}
restore-keys: |
${{ runner.os }}-pip-
- name: Cache Cargo
uses: actions/cache@55cc8345863c7cc4c66a329aec7e433d2d1c52a9 # v6.1.0
with:
path: |
~/.cargo/registry
~/.cargo/git
target
key: ${{ runner.os }}-cargo-${{ hashFiles('**/Cargo.lock') }}
restore-keys: |
${{ runner.os }}-cargo-
- name: Install system dependencies
run: |
sudo apt-get update
sudo apt-get install -y libglib2.0-dev libcairo2-dev libpango1.0-dev libatk1.0-dev libgdk-pixbuf2.0-dev libgtk-3-dev
- name: Install Python dependencies
run: pip install -r requirements-docs.txt
- name: Build MkDocs
run: mkdocs build --strict
- name: Build Rustdoc
run: cargo doc --no-deps --workspace
continue-on-error: true
- name: Copy Rustdoc to site
run: |
if [ -d "target/doc" ]; then
mkdir -p site/api/rust
cp -r target/doc/* site/api/rust/
fi
continue-on-error: true
- name: Create .nojekyll file
run: touch site/.nojekyll
- name: Verify site structure
run: |
echo "Site directory contents:"
ls -la site/ | head -20
echo ""
echo "Checking for index.html:"
ls -la site/index.html || echo "index.html not found!"
echo ""
echo "Site directory size:"
du -sh site/
- name: Setup Pages
uses: actions/configure-pages@45bfe0192ca1faeb007ade9deae92b16b8254a0d # v6.0.0
- name: Upload artifact
uses: actions/upload-pages-artifact@fc324d3547104276b827a68afc52ff2a11cc49c9 # v5.0.0
with:
path: site
deploy:
environment:
name: github-pages
url: ${{ steps.deployment.outputs.page_url }}
runs-on: ubuntu-latest
needs: build
steps:
- name: Deploy to GitHub Pages
id: deployment
uses: actions/deploy-pages@cd2ce8fcbc39b97be8ca5fce6e763baed58fa128 # v5.0.0
with:
# A push burst to main (every rust/** change triggers this workflow)
# can leave several Pages deployments backlogged on GitHub's backend,
# which processes one per environment at a time. The action's default
# 10-minute poll window (timeout: 600000) is too tight for that
# backlog and turns a recoverable delay into a hard failure: a run
# timed out at deployment_queued while the very next push deployed
# fine. Give the backend more runway before aborting.
timeout: 1200000 # 20 minutes (default 600000 = 10 min)
error_count: 20 # tolerate more transient status-API blips (default 10)