ci(wiki): publish CI-produced benchmark results + nav link + CI statu… #44
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: Publish Wiki & Deploy Site | |
| on: | |
| push: | |
| branches: | |
| - main | |
| paths: | |
| - 'book/**' | |
| - 'website/**' | |
| - 'crates/**' | |
| - 'Cargo.toml' | |
| - 'Cargo.lock' | |
| - '.env.markflow' | |
| - '.github/workflows/wiki.yml' | |
| workflow_dispatch: | |
| permissions: | |
| contents: write | |
| pages: write | |
| id-token: write | |
| concurrency: | |
| group: pages | |
| cancel-in-progress: true | |
| jobs: | |
| publish-wiki: | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Checkout repository | |
| uses: actions/checkout@v4 | |
| - name: Prepare wiki content | |
| run: | | |
| mkdir -p wiki | |
| # Copy book files to wiki directory | |
| cp book/README.md wiki/Home.md | |
| cp book/01-introduction.md wiki/01-Introduction.md | |
| cp book/02-getting-started.md wiki/02-Getting-Started.md | |
| cp book/03-using-the-cli.md wiki/03-Using-the-CLI.md | |
| cp book/04-grammar-syntax.md wiki/04-Grammar-Syntax.md | |
| cp book/05-semantic-actions.md wiki/05-Semantic-Actions.md | |
| cp book/06-typed-ast.md wiki/06-The-TypedAST.md | |
| cp book/07-typed-ast-builder.md wiki/07-TypedAST-Builder.md | |
| cp book/08-zig-example.md wiki/08-Zig-Example.md | |
| cp book/09-reference.md wiki/09-Reference.md | |
| cp book/10-packaging-distribution.md wiki/10-Packaging-Distribution.md | |
| cp book/11-hir-builder.md wiki/11-HIR-Builder.md | |
| cp book/12-embedding-sdk.md wiki/12-Embedding-SDK.md | |
| cp book/13-async-runtime.md wiki/13-Async-Runtime.md | |
| cp book/14-runtime-plugins.md wiki/14-Runtime-Plugins.md | |
| cp book/15-building-dsls.md wiki/15-Building-DSLs.md | |
| cp book/16-image-pipeline-dsl.md wiki/16-Image-Pipeline-DSL.md | |
| # Fix internal links for wiki format | |
| sed -i 's|\./01-introduction\.md|01-Introduction|g' wiki/*.md | |
| sed -i 's|\./02-getting-started\.md|02-Getting-Started|g' wiki/*.md | |
| sed -i 's|\./03-using-the-cli\.md|03-Using-the-CLI|g' wiki/*.md | |
| sed -i 's|\./04-grammar-syntax\.md|04-Grammar-Syntax|g' wiki/*.md | |
| sed -i 's|\./05-semantic-actions\.md|05-Semantic-Actions|g' wiki/*.md | |
| sed -i 's|\./06-typed-ast\.md|06-The-TypedAST|g' wiki/*.md | |
| sed -i 's|\./07-typed-ast-builder\.md|07-TypedAST-Builder|g' wiki/*.md | |
| sed -i 's|\./08-zig-example\.md|08-Zig-Example|g' wiki/*.md | |
| sed -i 's|\./09-reference\.md|09-Reference|g' wiki/*.md | |
| sed -i 's|\./10-packaging-distribution\.md|10-Packaging-Distribution|g' wiki/*.md | |
| sed -i 's|\./11-hir-builder\.md|11-HIR-Builder|g' wiki/*.md | |
| sed -i 's|\./12-embedding-sdk\.md|12-Embedding-SDK|g' wiki/*.md | |
| sed -i 's|\./13-async-runtime\.md|13-Async-Runtime|g' wiki/*.md | |
| sed -i 's|\./14-runtime-plugins\.md|14-Runtime-Plugins|g' wiki/*.md | |
| sed -i 's|\./15-building-dsls\.md|15-Building-DSLs|g' wiki/*.md | |
| sed -i 's|\./16-image-pipeline-dsl\.md|16-Image-Pipeline-DSL|g' wiki/*.md | |
| - name: Upload wiki | |
| uses: Andrew-Chen-Wang/github-wiki-action@v4 | |
| with: | |
| path: wiki/ | |
| token: ${{ secrets.GITHUB_TOKEN }} | |
| benchmark: | |
| name: Run ZynML benchmark suite | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Checkout repository | |
| uses: actions/checkout@v4 | |
| - name: Setup Rust toolchain | |
| uses: dtolnay/rust-toolchain@stable | |
| - name: Cache cargo artifacts | |
| uses: Swatinem/rust-cache@v2 | |
| with: | |
| key: bench-runner | |
| - name: Install LLVM 21 | |
| run: | | |
| wget -qO llvm.sh https://apt.llvm.org/llvm.sh | |
| chmod +x llvm.sh | |
| sudo ./llvm.sh 21 all | |
| echo "LLVM_SYS_211_PREFIX=/usr/lib/llvm-21" >> "$GITHUB_ENV" | |
| - name: Run benchmarks | |
| env: | |
| RUST_MIN_STACK: 134217728 | |
| # `--out` writes JSON the static page consumes; `--runs 3` takes the | |
| # median of three trials per kernel/tier to dampen runner noise. | |
| # `--features llvm-backend` exercises the full tier-up ladder so the | |
| # `zyntax-tiered-llvm` column reflects honest LLVM-tier numbers. | |
| run: | | |
| mkdir -p bench-out | |
| cargo run --release --package zynml --example bench_runner --features llvm-backend -- \ | |
| --out bench-out/results.json --runs 3 | |
| - name: Upload benchmark results | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: benchmark-results | |
| path: bench-out/results.json | |
| retention-days: 90 | |
| deploy-site: | |
| needs: benchmark | |
| runs-on: ubuntu-latest | |
| environment: | |
| name: github-pages | |
| url: ${{ steps.deployment.outputs.page_url }} | |
| steps: | |
| - name: Checkout repository | |
| uses: actions/checkout@v4 | |
| - name: Download benchmark results | |
| uses: actions/download-artifact@v4 | |
| with: | |
| name: benchmark-results | |
| path: bench-out | |
| - name: Install Markflow | |
| run: curl -sL https://raw.githubusercontent.com/darmie/markflow/main/install.sh | bash | |
| - name: Build site | |
| run: | | |
| export PATH="$HOME/.markflow:$PATH" | |
| mkdir -p site | |
| # Copy website landing page and assets to site root | |
| cp website/index.html site/index.html | |
| cp website/og-image.png site/og-image.png | |
| cp website/favicon.ico site/favicon.ico | |
| cp website/favicon.svg site/favicon.svg | |
| cp website/apple-touch-icon.png site/apple-touch-icon.png | |
| cp website/icon-192x192.png site/icon-192x192.png | |
| cp website/site.webmanifest site/site.webmanifest | |
| touch site/.nojekyll | |
| echo "zyntax.org" > site/CNAME | |
| # Build book docs with Markflow into /book subdirectory | |
| markflow build --prebake --source ./book --output ./site/book --config .env.markflow | |
| # Publish benchmark page + CI-produced results.json | |
| mkdir -p site/benchmark | |
| cp website/benchmark/index.html site/benchmark/index.html | |
| cp bench-out/results.json site/benchmark/results.json | |
| # Verify book output exists | |
| ls -la site/book/ | |
| ls -la site/benchmark/ | |
| - name: Configure Pages | |
| uses: actions/configure-pages@v5 | |
| - name: Upload Pages artifact | |
| uses: actions/upload-pages-artifact@v3 | |
| with: | |
| path: ./site | |
| - name: Deploy to GitHub Pages | |
| id: deployment | |
| uses: actions/deploy-pages@v4 |