Migrate CI to rust-toolchain #77
Workflow file for this run
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
name: Tests | |
on: | |
push: | |
branches: [ master ] | |
pull_request: | |
branches: [ master ] | |
env: | |
CARGO_TERM_COLOR: always | |
jobs: | |
check-doc: | |
name: Check doc | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Install toolchain | |
uses: dtolnay/rust-toolchain@nightly | |
- run: cargo install cargo-deadlinks | |
- name: doc (rand) | |
env: | |
RUSTDOCFLAGS: --cfg doc_cfg | |
# --all builds all crates, but with default features for other crates (okay in this case) | |
run: cargo deadlinks --ignore-fragments -- --all --all-features | |
test: | |
runs-on: ${{ matrix.os }} | |
strategy: | |
fail-fast: false | |
matrix: | |
include: | |
- os: ubuntu-latest | |
target: x86_64-unknown-linux-gnu | |
toolchain: stable | |
- os: macos-latest | |
target: x86_64-apple-darwin | |
toolchain: stable | |
# TODO: also aarch64 / M1 | |
- os: windows-latest | |
target: x86_64-pc-windows-gnu | |
toolchain: stable | |
- os: windows-latest | |
target: x86_64-pc-windows-msvc | |
toolchain: beta | |
# Test both windows-gnu and windows-msvc; use beta rust on one | |
- os: ubuntu-latest | |
target: x86_64-unknown-linux-gnu | |
variant: MSRV | |
toolchain: 1.61.0 | |
- os: ubuntu-latest | |
deps: sudo apt-get update ; sudo apt install gcc-multilib | |
target: i686-unknown-linux-gnu | |
toolchain: nightly | |
- os: ubuntu-latest | |
target: x86_64-unknown-linux-gnu | |
toolchain: nightly | |
variant: minimal_versions | |
steps: | |
- uses: actions/checkout@v4 | |
- name: MSRV | |
if: ${{ matrix.variant == 'MSRV' }} | |
run: cp Cargo.lock.msrv Cargo.lock | |
- name: Install toolchain | |
uses: dtolnay/rust-toolchain@master | |
with: | |
targets: ${{ matrix.target }} | |
toolchain: ${{ matrix.toolchain }} | |
- run: ${{ matrix.deps }} | |
- name: Maybe minimal versions | |
if: ${{ matrix.variant == 'minimal_versions' }} | |
run: | | |
cargo generate-lockfile -Z minimal-versions | |
cargo update regex --precise 1.5.1 # insufficient minimal version of criterion | |
- name: Maybe nightly | |
if: ${{ matrix.toolchain == 'nightly' }} | |
run: | | |
cargo test --target ${{ matrix.target }} --benches | |
- name: Test | |
run: | | |
cargo test --target ${{ matrix.target }} --manifest-path rand_hc/Cargo.toml --all-features | |
cargo test --target ${{ matrix.target }} --manifest-path rand_isaac/Cargo.toml --all-features | |
cargo test --target ${{ matrix.target }} --manifest-path rand_xorshift/Cargo.toml --all-features | |
cargo test --target ${{ matrix.target }} --manifest-path rand_xoshiro/Cargo.toml --all-features | |
cargo test --target ${{ matrix.target }} --manifest-path rand_jitter/Cargo.toml --all-features | |
test-cross: | |
runs-on: ubuntu-latest | |
strategy: | |
fail-fast: false | |
matrix: | |
target: [powerpc-unknown-linux-gnu] | |
toolchain: [stable] | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Install toolchain | |
uses: dtolnay/rust-toolchain@master | |
with: | |
targets: ${{ matrix.target }} | |
toolchain: ${{ matrix.toolchain }} | |
- name: Cache cargo plugins | |
uses: actions/cache@v1 | |
with: | |
path: ~/.cargo/bin/ | |
key: ${{ runner.os }}-cargo-plugins | |
- name: Install cross | |
run: cargo install cross || true | |
- name: Test | |
run: | | |
cross test --no-fail-fast --target ${{ matrix.target }} --manifest-path rand_hc/Cargo.toml --all-features | |
cross test --no-fail-fast --target ${{ matrix.target }} --manifest-path rand_isaac/Cargo.toml --all-features | |
cross test --no-fail-fast --target ${{ matrix.target }} --manifest-path rand_xorshift/Cargo.toml --all-features | |
cross test --no-fail-fast --target ${{ matrix.target }} --manifest-path rand_xoshiro/Cargo.toml --all-features | |
cross test --no-fail-fast --target ${{ matrix.target }} --manifest-path rand_jitter/Cargo.toml --all-features | |
test-miri: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Install toolchain | |
run: | | |
MIRI_NIGHTLY=nightly-$(curl -s https://rust-lang.github.io/rustup-components-history/x86_64-unknown-linux-gnu/miri) | |
rustup default "$MIRI_NIGHTLY" | |
rustup component add miri | |
- name: Test rand | |
run: | | |
cargo miri test --manifest-path rand_hc/Cargo.toml --all-features | |
cargo miri test --manifest-path rand_isaac/Cargo.toml --all-features | |
cargo miri test --manifest-path rand_xorshift/Cargo.toml --all-features | |
cargo miri test --manifest-path rand_xoshiro/Cargo.toml --all-features | |
MIRIFLAGS="-Zmiri-disable-isolation" cargo miri test --manifest-path rand_jitter/Cargo.toml |