Skip to content

Add platform module to hide platform-specific customizations behind c… #52

Add platform module to hide platform-specific customizations behind c…

Add platform module to hide platform-specific customizations behind c… #52

Workflow file for this run

name: CI
on:
pull_request:
push:
env:
CARGO_TERM_COLOR: always
jobs:
test:
name: ${{ matrix.platform.os_name }}
strategy:
fail-fast: false
matrix:
platform:
- os_name: Web Assembly w/ WebGPU
slug: wasm-webgpu
# Use macOS so we can test on Safari.
os: macos-14
target: wasm32-unknown-unknown
rustflags: --cfg=web_sys_unstable_apis
run_tests: false
- os_name: Web Assembly w/ WebGL2
slug: wasm-webgl2
# Use macOS so we can test on Safari.
os: macos-14
target: wasm32-unknown-unknown
run_tests: false
- os_name: Android ARMv8-A
slug: android-armv8
os: ubuntu-22.04
target: aarch64-linux-android
run_tests: true
- os_name: Android x86_64
slug: android-x86_64
os: ubuntu-22.04
target: x86_64-linux-android
run_tests: true
- os_name: iOS A7+
slug: ios-a7
os: macos-14
target: aarch64-apple-ios
# iOS needs a custom test runner.
run_tests: false
- os_name: macOS Apple Silicon
slug: macos-apple-silicon
os: macos-14
target: aarch64-apple-darwin
run_tests: true
- os_name: macOS Intel
slug: macos-intel
os: macos-13
target: x86_64-apple-darwin
run_tests: true
- os_name: Windows x86_64
slug: windows-x86_64
os: windows-2022
target: x86_64-pc-windows-msvc
run_tests: true
- os_name: Linux ARMv8-A
slug: linux-armv8
os: ubuntu-22.04
target: aarch64-unknown-linux-gnu
run_tests: true
- os_name: Linux ARMv7-A
slug: linux-armv7
os: ubuntu-22.04
target: thumbv7neon-unknown-linux-gnueabihf
run_tests: true
- os_name: Linux x86_64/amd64
slug: linux-x86_64
os: ubuntu-22.04
target: x86_64-unknown-linux-gnu
run_tests: true
runs-on: ${{ matrix.platform.os }}
steps:
- name: Checkout sources
uses: actions/checkout@v4
- name: Cache
uses: actions/cache@v4
with:
path: |
~/.cargo/bin/
~/.cargo/registry/index/
~/.cargo/registry/cache/
~/.cargo/git/db/
target/
key: ${{ matrix.platform.slug }}-cargo-build-${{ hashFiles('**/Cargo.toml') }}
- name: Install toolchain
uses: dtolnay/rust-toolchain@master
with:
toolchain: stable 1 month ago
components: rustfmt, clippy
targets: ${{ matrix.platform.target }}
- name: Install cross-rs
shell: bash
run: which cross && cross --version || cargo install cross --git https://github.com/cross-rs/cross --rev 221324fd39a857f7af954484b96296cbc8c6a65f --force
- name: Install wasm tools
if: ${{ matrix.platform.target == 'wasm32-unknown-unknown' }}
shell: bash
run: |
which wasm-bindgen && wasm-bindgen --version || cargo install wasm-bindgen-cli --version "0.2.92" --force
which wasm-pack && wasm-pack --version || cargo install wasm-pack --version "0.12.1" --force
- name: Install alsa and udev
if: runner.os == 'linux'
shell: bash
run: sudo apt-get update; sudo apt-get install --no-install-recommends libasound2-dev libudev-dev
- name: Build
shell: bash
run: RUSTFLAGS="${{ matrix.platform.rustflags }}" cross build --target ${{ matrix.platform.target }}
- name: Run native tests
if: ${{ matrix.platform.run_tests }}
shell: bash
run: |
RUSTFLAGS="${{ matrix.platform.rustflags }}" cross test --target ${{ matrix.platform.target }} --workspace
RUSTFLAGS="${{ matrix.platform.rustflags }}" cross test --target ${{ matrix.platform.target }} --workspace --doc --all-features
- name: Run web tests
if: ${{ matrix.platform.target == 'wasm32-unknown-unknown' }}
shell: bash
run: |
RUSTFLAGS="${{ matrix.platform.rustflags }}" wasm-pack test --node
RUSTFLAGS="${{ matrix.platform.rustflags }}" wasm-pack test --headless --chrome
RUSTFLAGS="${{ matrix.platform.rustflags }}" wasm-pack test --headless --firefox
RUSTFLAGS="${{ matrix.platform.rustflags }}" wasm-pack test --headless --safari
- name: Run clippy
shell: bash
run: RUSTFLAGS="${{ matrix.platform.rustflags }}" cross clippy --target ${{ matrix.platform.target }} --workspace --all-targets --all-features -- -D warnings
rustfmt:
name: Formatting
runs-on: ubuntu-22.04
steps:
- uses: actions/checkout@v4
- uses: actions/cache@v4
with:
path: |
~/.cargo/bin/
~/.cargo/registry/index/
~/.cargo/registry/cache/
~/.cargo/git/db/
target/
key: ubuntu-22.04-cargo-build-${{ hashFiles('**/Cargo.toml') }}
- uses: dtolnay/rust-toolchain@master
with:
toolchain: stable 1 month ago
components: rustfmt
- name: Check format
shell: bash
run: cargo fmt --all -- --check