Add more CI targets #374
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: CI | |
on: | |
push: | |
branches: [ "master", "v0.7.x", "v0.8.x" ] | |
pull_request: | |
branches: [ "master", "v0.7.x", "v0.8.x" ] | |
env: | |
CARGO_TERM_COLOR: always | |
RUST_BACKTRACE: full | |
CI: true | |
permissions: | |
contents: read # to fetch code (actions/checkout) | |
jobs: | |
Test: | |
runs-on: ${{ matrix.os }} | |
timeout-minutes: 10 | |
strategy: | |
fail-fast: false | |
matrix: | |
os: ["ubuntu-latest", "macos-latest", "windows-latest"] | |
steps: | |
- uses: actions/checkout@v3 | |
- uses: dtolnay/rust-toolchain@stable | |
- name: Install Cargo-hack | |
run: cargo install --debug cargo-hack | |
- name: Check all features | |
run: cargo hack check --feature-powerset | |
- name: Tests | |
run: cargo test --all-features | |
- name: Tests release build | |
run: cargo test --release --all-features | |
TestPoll: | |
runs-on: ubuntu-latest | |
timeout-minutes: 10 | |
env: | |
RUSTFLAGS: "--cfg mio_unsupported_force_poll_poll" | |
steps: | |
- uses: actions/checkout@v3 | |
- uses: dtolnay/rust-toolchain@stable | |
- name: Tests | |
run: cargo test --all-features | |
- name: Tests release build | |
run: cargo test --release --all-features | |
TestWakerPipe: | |
runs-on: ubuntu-latest | |
timeout-minutes: 10 | |
env: | |
RUSTFLAGS: "--cfg mio_unsupported_force_waker_pipe" | |
steps: | |
- uses: actions/checkout@v3 | |
- uses: dtolnay/rust-toolchain@stable | |
- name: Tests | |
run: cargo test --all-features | |
- name: Tests release build | |
run: cargo test --release --all-features | |
MinimalVersions: | |
runs-on: ${{ matrix.os }} | |
timeout-minutes: 10 | |
strategy: | |
fail-fast: false | |
matrix: | |
os: ["ubuntu-latest", "macos-latest", "windows-latest"] | |
steps: | |
- uses: actions/checkout@v3 | |
- uses: dtolnay/rust-toolchain@nightly | |
- name: Install minimal verions | |
run: cargo update -Zminimal-versions | |
- name: Tests | |
run: cargo test --all-features | |
MSRV: | |
runs-on: ${{ matrix.os }} | |
timeout-minutes: 10 | |
strategy: | |
fail-fast: false | |
matrix: | |
os: ["ubuntu-latest", "macos-latest", "windows-latest"] | |
steps: | |
- uses: actions/checkout@v3 | |
- uses: dtolnay/rust-toolchain@master | |
with: | |
toolchain: 1.74.0 | |
- name: Check | |
# We only run check allowing us to use newer features in tests. | |
run: cargo check --all-features | |
Nightly: | |
runs-on: ubuntu-latest | |
timeout-minutes: 10 | |
steps: | |
- uses: actions/checkout@v3 | |
- uses: dtolnay/rust-toolchain@nightly | |
- name: Tests | |
run: cargo test --all-features | |
Clippy: | |
runs-on: ubuntu-latest | |
timeout-minutes: 10 | |
steps: | |
- uses: actions/checkout@v3 | |
- uses: dtolnay/rust-toolchain@stable | |
with: | |
components: clippy | |
- name: Clippy | |
run: cargo clippy --all-targets --all-features -- -D warnings | |
Docs: | |
runs-on: ubuntu-latest | |
timeout-minutes: 10 | |
steps: | |
- uses: actions/checkout@v3 | |
- uses: dtolnay/rust-toolchain@stable | |
- name: Check docs | |
run: RUSTDOCFLAGS="-D warnings" cargo doc --no-deps --all-features | |
Rustfmt: | |
runs-on: ubuntu-latest | |
timeout-minutes: 10 | |
steps: | |
- uses: actions/checkout@v3 | |
- uses: dtolnay/rust-toolchain@stable | |
with: | |
components: rustfmt | |
- name: Check formatting | |
# FIXME: for some reason this doesn't actually check all files. | |
# So instead we run `rustfmt` directly on each file. | |
#cargo fmt --all -- --check | |
run: find src tests examples -type f -iname "*.rs" | xargs rustfmt --check | |
CheckTargets: | |
runs-on: ubuntu-latest | |
timeout-minutes: 10 | |
steps: | |
- uses: actions/checkout@v3 | |
- uses: dtolnay/rust-toolchain@stable | |
- name: Install all targets | |
run: make install_targets | |
- name: Install Cargo-hack | |
run: cargo install --debug cargo-hack | |
- name: Check all targets | |
run: make check_all_targets | |
CheckTier3Targets: | |
name: Check | |
runs-on: ubuntu-latest | |
timeout-minutes: 10 | |
strategy: | |
fail-fast: false | |
matrix: | |
target: ["aarch64-apple-ios", "aarch64-apple-tvos", "aarch64-unknown-openbsd", "arm64_32-apple-watchos", "armv7-sony-vita-newlibeabihf", "sparcv9-sun-solaris", "x86_64-pc-solaris", "x86_64-unknown-dragonfly", "x86_64-unknown-openbsd"] | |
steps: | |
- uses: actions/checkout@v3 | |
- uses: dtolnay/rust-toolchain@nightly | |
with: | |
components: rust-src | |
- uses: taiki-e/install-action@cargo-hack | |
- name: Run check | |
run: cargo hack check -Z build-std=std,panic_abort --feature-powerset --target ${{ matrix.target }} | |
Sanitizer: | |
runs-on: ubuntu-latest | |
timeout-minutes: 10 | |
strategy: | |
fail-fast: false | |
matrix: | |
sanitizer: [address, leak, memory, thread] | |
steps: | |
- uses: actions/checkout@v3 | |
- uses: dtolnay/rust-toolchain@nightly | |
- name: Add rust source | |
run: rustup component add rust-src | |
- name: Run tests with sanitizer | |
run: make test_sanitizer SAN=${{ matrix.sanitizer }} | |
# Single job required to merge the pr. | |
Passed: | |
runs-on: ubuntu-latest | |
needs: | |
- Test | |
- TestPoll | |
- MinimalVersions | |
- MSRV | |
- Nightly | |
- Clippy | |
- Docs | |
- Rustfmt | |
- CheckTargets | |
- CheckTier3Targets | |
steps: | |
- run: exit 0 |