name: "Deploy to GitHub Pages"
on:
workflow_dispatch:
push:
tags:
- "*.*.*"
permissions:
contents: read
pages: write
id-token: write
concurrency:
group: "pages"
cancel-in-progress: false
jobs:
deploy:
environment:
name: github-pages
url: ${{ steps.deployment.outputs.page_url }}
runs-on: ubuntu-latest
steps:
- name: "git checkout"
uses: actions/checkout@v7
- name: "add wasm32 target"
run: rustup target add wasm32-unknown-unknown
- name: "install wasm-bindgen-cli"
run: |
version="$(grep -A1 '^name = "wasm-bindgen"$' examples/Cargo.lock | sed -n 's/^version = "\(.*\)"$/\1/p')"
cargo install wasm-bindgen-cli --version "$version" --locked
- name: "cargo test"
run: cargo test --all-features
- name: "cargo test (examples)"
working-directory: "./examples"
run: cargo test --locked
- name: "cargo build (wasm32, main thread)"
working-directory: "./examples"
run: |
RUSTFLAGS="-Clink-arg=--import-memory -Clink-arg=--max-memory=134217728" \
cargo build --release --target wasm32-unknown-unknown --locked
- name: "wasm-bindgen"
working-directory: "./examples"
run: |
wasm-bindgen --target web --out-dir app --out-name app \
target/wasm32-unknown-unknown/release/app.wasm
- name: "remove wasm-bindgen package boilerplate (no suppression flag exists)"
working-directory: "./examples"
run: rm -f app/README.md app/LICENSE
- name: "remove build intermediates from Pages artifact"
working-directory: "./examples"
run: rm -rf target
- name: "setup Github Pages"
uses: actions/configure-pages@v6
- name: "upload artifact as Github Pages"
uses: actions/upload-pages-artifact@v5
with:
path: "./examples"
- name: "deploy to GitHub Pages"
id: "deployment"
uses: actions/deploy-pages@v5