Skip to content

ci: try to fan out CI example tests #1437

ci: try to fan out CI example tests

ci: try to fan out CI example tests #1437

Workflow file for this run

name: CI
on:
push:
branches:
- main
pull_request:
branches:
- main
jobs:
lint:
name: lint
runs-on: ubuntu-latest
steps:
- name: Setup | Checkout
uses: actions/checkout@v4
- uses: actions/cache@v4
with:
path: |
~/.cargo/registry
~/.cargo/git
target
key: ${{ runner.os }}-lint
restore-keys: |
${{ runner.os }}-lint
- name: Setup | Toolchain (clippy)
run: |
rustup toolchain install stable --component clippy
rustup default stable
- name: Build | Clippy
run: |
cargo clippy --all-targets --all-features -- -D warnings
- name: Build | Rustfmt
run: cargo fmt -- --check
check:
runs-on: ubuntu-latest
steps:
- name: Setup | Checkout
uses: actions/checkout@v4
- name: Setup | Cache Cargo
uses: actions/cache@v4
with:
path: |
~/.cargo/registry
~/.cargo/git
target
key: ${{ runner.os }}-check
restore-keys: |
${{ runner.os }}-check
- name: Setup | Rust
run: |
rustup toolchain install stable
rustup default stable
- name: Build | Check
run: cargo check --all
test:
needs: check # Ensure check is run first.
strategy:
fail-fast: false
matrix:
os: [ubuntu-latest, macos-latest, windows-latest]
include:
- os: ubuntu-latest
binPath: target/debug/trunk
- os: macos-latest
binPath: target/debug/trunk
- os: windows-latest
binPath: target/debug/trunk.exe
runs-on: ${{ matrix.os }}
steps:
- name: Setup | Checkout
uses: actions/checkout@v4
- name: Setup | Cache Cargo
uses: actions/cache@v4
with:
path: |
~/.cargo/registry
~/.cargo/git
target
key: ${{ runner.os }}-cargo
restore-keys: |
${{ runner.os }}-cargo
- name: Build | Test
run: cargo test
# Run the CLI to ensure we don't have any subtle runtime issues.
- name: Build | Run
run: cargo run -- -h
# Upload the debug binary for testing examples later
- name: Upload CLI for testing
uses: actions/upload-artifact@v4
with:
name: test-cli-${{ matrix.os }}
path: ${{ matrix.binPath }}
if-no-files-found: error
test-examples:
needs: test # Ensure test is run first.
strategy:
fail-fast: false
matrix:
os: [ubuntu-latest, macos-latest, windows-latest]
example:
- proxy
- seed
- vanilla
- webworker
- weborker-module
- webworker-gloo
- yew
- yew-tailwindcss
- yew-tls
- cdylib
- no-rust
include:
- os: ubuntu-latest
binPath: target/debug/trunk
- os: macos-latest
binPath: target/debug/trunk
- os: windows-latest
binPath: target/debug/trunk.exe
runs-on: ${{ matrix.os }}
steps:
- name: Setup | Checkout
uses: actions/checkout@v4
- name: Setup | Rust
run: |
rustup toolchain install stable --target wasm32-unknown-unknown
rustup default stable
- name: Download | CLI
uses: actions/download-artifact@v4
with:
name: test-cli-${{ matrix.os }}
- name: Setup | Cache | Example ${{ matrix.example }} on $${ matrix.os }}
uses: actions/cache@v4
with:
path: examples/${{ matrix.example }}/target
key: wasm32-example-${{ matrix.example }}-$${ matrix.os }}
restore-keys: |
wasm32-example-${{ matrix.example }}-$${ matrix.os }}
- name: Build | Examples | ${{ matrix.example }} on $${ matrix.os }}
run: $GITHUB_WORKSPACE/trunk --config=examples/${{ matrix.example }}/Trunk.toml build