Merge pull request #197 from azriel91/feature/182/item-interactions-a… #739
This file contains 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
on: | |
push: | |
branches: | |
- main | |
pull_request: | |
branches: | |
- '**' | |
name: CI | |
jobs: | |
audit: | |
name: Audit | |
runs-on: ubuntu-latest | |
timeout-minutes: 10 | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: actions-rust-lang/audit@v1 | |
with: | |
token: ${{ secrets.GITHUB_TOKEN }} | |
licenses: | |
name: Licenses | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: EmbarkStudios/cargo-deny-action@v1 | |
- name: cargo-about cache | |
id: cargo-about-cache | |
uses: actions/cache@v4 | |
with: | |
path: ~/.cargo/bin/cargo-about | |
key: cargo-about-${{ runner.os }} | |
- name: cargo-about install | |
if: steps.cargo-about-cache.outputs.cache-hit != 'true' | |
run: cargo install --locked cargo-about | |
- name: cargo-about generate licenses | |
run: cargo about generate --workspace --all-features about.hbs > doc/src/licenses.html | |
fmt: | |
name: Rustfmt | |
runs-on: ubuntu-latest | |
timeout-minutes: 10 | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: dtolnay/rust-toolchain@master | |
with: | |
toolchain: nightly | |
components: rustfmt | |
- run: cargo fmt --all -- --check | |
docs_and_spell_check: | |
name: Docs and Spell Check | |
runs-on: ubuntu-latest | |
timeout-minutes: 20 | |
env: | |
RUSTDOCFLAGS: "-Dwarnings" | |
steps: | |
- name: Checkout Actions Repository | |
uses: actions/checkout@v4 | |
- uses: dtolnay/rust-toolchain@stable | |
- name: Check spelling | |
uses: crate-ci/typos@master | |
- run: cargo doc --no-deps | |
clippy: | |
name: Clippy | |
runs-on: ubuntu-latest | |
timeout-minutes: 10 | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: dtolnay/rust-toolchain@master | |
with: | |
toolchain: nightly | |
components: clippy | |
- name: 'Run clippy' | |
# we cannot use `--all-features` because `envman` has features that are mutually exclusive. | |
run: | | |
cargo clippy_cli | |
# Ideally we'd also run it for WASM, but: | |
# | |
# * `workspace_tests` is only coded for native targets. | |
# * There is little benefit running it for everything again. | |
# | |
# The command that we *would* use is: | |
# | |
# ```bash | |
# cargo clippy \ | |
# --workspace \ | |
# --target wasm32-unknown-unknown \ | |
# --no-default-features \ | |
# --features "error_reporting" \ | |
# --fix \ | |
# --exclude peace_rt_model_native \ | |
# --exclude peace_item_spec_sh_cmd \ | |
# --exclude peace_item_spec_sh_sync_cmd \ | |
# --exclude peace_item_spec_tar_x \ | |
# --exclude peace_item_specs \ | |
# --exclude workspace_tests \ | |
# --exclude app_cycle \ | |
# --exclude download \ | |
# -- -D warnings | |
# ``` | |
coverage: | |
name: Coverage | |
runs-on: ubuntu-latest | |
timeout-minutes: 30 | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: dtolnay/rust-toolchain@master | |
with: | |
toolchain: nightly | |
components: llvm-tools-preview | |
- uses: taiki-e/install-action@cargo-llvm-cov | |
- uses: taiki-e/install-action@nextest | |
- name: 'Configure build to remove debuginfo' | |
run: echo $'\n[profile.dev]\ndebug = false' >> Cargo.toml | |
- name: 'Collect coverage' | |
run: ./coverage.sh | |
- name: 'Print directory sizes' | |
run: du -sh target/coverage target/llvm-cov-target | |
- name: Upload to codecov.io | |
uses: codecov/codecov-action@v4 | |
with: | |
files: ./target/coverage/lcov.info | |
token: ${{ secrets.CODECOV_TOKEN }} | |
build_and_test_linux: | |
name: Build and Test (Linux) | |
runs-on: ubuntu-latest | |
timeout-minutes: 20 | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: dtolnay/rust-toolchain@stable | |
- uses: taiki-e/install-action@nextest | |
- name: 'Build and test' | |
run: | | |
for j in {0..4}; do cargo test_$j || break; done | |
build_and_test_windows: | |
name: Build and Test (Windows) | |
runs-on: windows-latest | |
timeout-minutes: 20 | |
steps: | |
- name: Prepare symlink configuration | |
run: git config --global core.symlinks true | |
- uses: actions/checkout@v4 | |
- uses: dtolnay/rust-toolchain@stable | |
- uses: taiki-e/install-action@nextest | |
- name: 'Build and test' | |
run: cargo nextest run --workspace --all-features | |
build_examples_native: | |
name: Build examples (Native) | |
runs-on: ubuntu-latest | |
timeout-minutes: 20 | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: dtolnay/rust-toolchain@stable | |
- name: 'Example: download (native)' | |
run: cargo build --package download --all-features | |
- name: 'Example: envman (native)' | |
run: cargo build --package envman --features cli | |
build_examples_web: | |
name: Build examples (WASM, Leptos) | |
runs-on: ubuntu-latest | |
timeout-minutes: 20 | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: dtolnay/rust-toolchain@master | |
with: | |
toolchain: stable | |
targets: wasm32-unknown-unknown | |
- name: 'Install `wasm-pack`' | |
uses: jetli/[email protected] | |
with: | |
version: 'latest' | |
- name: cargo-leptos cache | |
id: cargo-leptos-cache | |
uses: actions/cache@v4 | |
with: | |
path: ~/.cargo/bin/cargo-leptos | |
key: cargo-leptos-${{ runner.os }} | |
- name: cargo-leptos install | |
if: steps.cargo-leptos-cache.outputs.cache-hit != 'true' | |
run: cargo install --git https://github.com/leptos-rs/cargo-leptos.git --locked cargo-leptos | |
- name: 'Example: envman (leptos)' | |
run: cargo envman_build_debug | |
# When updating this, also update book.yml | |
- name: 'Example: download (WASM)' | |
# The following no longer works, because the AWS SDK uses tokio with UDP features enabled: | |
# for example in $(ls examples) | |
run: | | |
for example in download | |
do wasm-pack build \ | |
--target web \ | |
--out-dir "../../doc/src/examples/pkg" \ | |
--release \ | |
"examples/${example}" \ | |
--features 'error_reporting' | |
done |