name: Dependency Runner CI
on: [push, pull_request]
jobs:
test:
name: ${{ matrix.target }} (${{ matrix.channel }})
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
os: [ubuntu-latest, windows-latest, macos-latest]
channel: [stable, beta, nightly]
target:
- x86_64-pc-windows-msvc
- x86_64-apple-darwin
- x86_64-unknown-linux-gnu
- x86_64-unknown-linux-musl
- aarch64-unknown-linux-gnu
- aarch64-unknown-linux-musl
exclude:
- os: ubuntu-latest
target: x86_64-pc-windows-msvc
- os: ubuntu-latest
target: x86_64-apple-darwin
- os: windows-latest
target: x86_64-apple-darwin
- os: windows-latest
target: x86_64-unknown-linux-gnu
- os: windows-latest
target: x86_64-unknown-linux-musl
- os: windows-latest
target: aarch64-unknown-linux-gnu
- os: windows-latest
target: aarch64-unknown-linux-musl
- os: macos-latest
target: x86_64-pc-windows-msvc
- os: macos-latest
target: x86_64-unknown-linux-gnu
- os: macos-latest
target: x86_64-unknown-linux-musl
- os: macos-latest
target: aarch64-unknown-linux-gnu
- os: macos-latest
target: aarch64-unknown-linux-musl
steps:
- uses: actions/checkout@v4
- name: Install Rust
uses: dtolnay/rust-toolchain@master
with:
toolchain: ${{ matrix.channel }}
targets: ${{ matrix.target }}
- name: Rust Cache
uses: Swatinem/rust-cache@v2
with:
key: ${{ matrix.target }}
- name: Install Cross
if: matrix.os == 'ubuntu-latest' && (contains(matrix.target, 'linux') || contains(matrix.target, 'musl'))
uses: taiki-e/install-action@cross
- name: Build
run: |
if [ "${{ matrix.os }}" = "ubuntu-latest" ] && ([ "${{ matrix.target }}" = "aarch64-unknown-linux-gnu" ] || [ "${{ matrix.target }}" = "aarch64-unknown-linux-musl" ] || [ "${{ matrix.target }}" = "x86_64-unknown-linux-musl" ]); then
cross build --target ${{ matrix.target }} --all-features
else
cargo build --target ${{ matrix.target }} --all-features
fi
shell: bash
- name: Test
run: |
if [ "${{ matrix.os }}" = "ubuntu-latest" ] && ([ "${{ matrix.target }}" = "aarch64-unknown-linux-gnu" ] || [ "${{ matrix.target }}" = "aarch64-unknown-linux-musl" ] || [ "${{ matrix.target }}" = "x86_64-unknown-linux-musl" ]); then
cross test --target ${{ matrix.target }} --all-features
elif [ "${{ matrix.target }}" = "x86_64-pc-windows-msvc" ] || [ "${{ matrix.target }}" = "x86_64-apple-darwin" ] || [ "${{ matrix.target }}" = "x86_64-unknown-linux-gnu" ]; then
cargo test --target ${{ matrix.target }} --all-features
fi
shell: bash