Skip to content

feat: add a startup event to ensure the WebAssembly binding can be used #1630

feat: add a startup event to ensure the WebAssembly binding can be used

feat: add a startup event to ensure the WebAssembly binding can be used #1630

Workflow file for this run

name: CI
on:
push:
branches:
- main
- release/*
pull_request:
branches:
- main
- release/*
jobs:
lint:
runs-on: ubuntu-latest
steps:
- name: Setup | Checkout
uses: actions/checkout@v4
- uses: actions/cache@v4
with:
path: |
~/.cargo/registry/index/
~/.cargo/registry/cache/
~/.cargo/git/db/
target/
key: ${{ runner.os }}-lint-${{ hashFiles('**/Cargo.lock') }}
- name: Setup | Disable rustup self-update
# workaround for: https://github.com/rust-lang/rustup/issues/3709
run: |
rustup set auto-self-update disable
- 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
docs:
uses: ./.github/workflows/docs.yaml
check:
runs-on: ubuntu-latest
strategy:
matrix:
rust:
- stable
- 1.74.0 # MSRV
steps:
- name: Setup | Checkout
uses: actions/checkout@v4
- name: Setup | Cache Cargo
uses: actions/cache@v4
with:
path: |
~/.cargo/registry/index/
~/.cargo/registry/cache/
~/.cargo/git/db/
target/
key: ${{ runner.os }}-check-${{ matrix.rust }}-${{ hashFiles('**/Cargo.lock') }}
- name: Setup | Disable rustup self-update
# workaround for: https://github.com/rust-lang/rustup/issues/3709
run: |
rustup set auto-self-update disable
- name: Setup | Rust
run: |
rustup toolchain install ${{ matrix.rust }}
rustup default ${{ matrix.rust }}
- name: Build | Check
run: cargo check --all
- name: Setup | binstall
run: |
curl -L --proto '=https' --tlsv1.2 -sSf https://raw.githubusercontent.com/cargo-bins/cargo-binstall/main/install-from-binstall-release.sh | bash
- name: Setup | check-all-features
run: |
cargo binstall -y cargo-all-features
- name: Build | Check all features
run: |
cargo check-all-features
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/index/
~/.cargo/registry/cache/
~/.cargo/git/db/
target/
key: ${{ runner.os }}-test-${{ hashFiles('**/Cargo.lock') }}
- 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 | 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.
env:
# for the CI we need to disable those checks, as we may run with a pre-release version, which would force us to
# replace all version requirements with pre-release requirements for this version.
TRUNK_REQUIRED_VERSION: '*'
strategy:
fail-fast: false
max-parallel: 32
matrix:
os: [ ubuntu-latest, macos-latest, windows-latest ]
example:
- cdylib
- initializer
- no-rust
- proxy
- seed
- target-path
- vanilla
- webworker
- webworker-gloo
- webworker-module
- yew
- yew-tailwindcss
- yew-tls
runs-on: ${{ matrix.os }}
steps:
- name: Setup | Checkout
uses: actions/checkout@v4
- name: Setup | Disable rustup self-update
# workaround for: https://github.com/rust-lang/rustup/issues/3709
run: |
rustup set auto-self-update disable
- name: Setup | Rust
run: |
rustup toolchain install stable --target wasm32-unknown-unknown
rustup default stable
- name: Setup | Download CLI
uses: actions/download-artifact@v4
with:
name: test-cli-${{ matrix.os }}
- name: Setup | Make executable
if: ${{ !contains(matrix.os, 'windows') }}
run: chmod a+x $GITHUB_WORKSPACE/trunk
- name: Setup | Cache | Example ${{ matrix.example }} on ${{ matrix.os }}
uses: actions/cache@v4
with:
path: |
~/.cargo/registry/index/
~/.cargo/registry/cache/
~/.cargo/git/db/
examples/${{ matrix.example }}/target
key: wasm32-example-${{ matrix.example }}-${{ matrix.os }}-${{ hashFiles('**/Cargo.lock') }}
- name: Build | Examples | ${{ matrix.example }} on ${{ matrix.os }}
shell: bash
run: $GITHUB_WORKSPACE/trunk --config=examples/${{ matrix.example }}/Trunk.toml build
examples:
runs-on: ubuntu-22.04
needs:
- test-examples
if: always()
steps:
- name: Success
if: ${{ !(contains(needs.*.result, 'failure')) }}
run: exit 0
- name: Failure
if: ${{ contains(needs.*.result, 'failure') }}
run: exit 1