name: CI on: pull_request: push: branches: - master - staging - trying schedule: - cron: '0 1 * * *' env: RUSTFLAGS: -Dwarnings RUST_BACKTRACE: 1 defaults: run: shell: bash jobs: test: name: test strategy: matrix: rust: # This is the minimum supported Rust version of this crate. # When updating this, the reminder to update the minimum supported Rust version in README.md. - 1.37.0 - stable - beta include: - os: ubuntu-latest rust: nightly # pin-project itself has no platform-dependent implementation. # macOS is only used to check that pin-project can interoperate # correctly with `#[cfg()]`. - os: macos-latest rust: nightly runs-on: ${{ matrix.os || 'ubuntu-latest' }} steps: - uses: actions/checkout@v2 - name: Install Rust run: ci/install-rust.sh ${{ matrix.rust }} - name: Install cargo-hack if: matrix.rust == 'nightly' run: | cargo install cargo-hack - name: Add targets if: matrix.rust == 'nightly' run: | rustup target add thumbv7m-none-eabi - name: cargo test run: | cargo test --all --all-features --exclude expandtest - name: cargo check (no-std) if: matrix.rust == 'nightly' run: | cargo check --target thumbv7m-none-eabi --manifest-path tests/no-std/Cargo.toml cargo check --target thumbv7m-none-eabi --manifest-path tests/rust-2015/Cargo.toml - name: cargo check (minimal versions) if: matrix.rust == 'nightly' run: | bash scripts/check-minimal-versions.sh expandtest: name: expandtest runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 - name: Install Rust and Rustfmt run: ci/install-component.sh rustfmt - name: Install cargo-expand run: | cargo install cargo-expand - name: cargo test (expandtest) run: | bash scripts/expandtest.sh miri: name: miri runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 - name: Install Rust and Miri run: | ci/install-component.sh miri cargo miri setup - name: cargo miri test run: | cargo miri test clippy: name: clippy runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 - name: Install Rust and Clippy run: ci/install-component.sh clippy - name: cargo clippy run: | cargo clippy --all --all-features --all-targets rustfmt: name: rustfmt runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 - name: Install Rust and Rustfmt run: ci/install-component.sh rustfmt - name: cargo fmt --check run: | cargo fmt --all -- --check rustdoc: name: rustdoc env: RUSTDOCFLAGS: -Dwarnings runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 - name: Install Rust run: ci/install-rust.sh - name: cargo doc run: | cargo doc --no-deps --all --all-features shellcheck: name: shellcheck runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 - name: shellcheck run: | shellcheck ci/*.sh scripts/*.sh # These jobs don't actually test anything, but they're used to tell bors the # build completed, as there is no practical way to detect when a workflow is # successful listening to webhooks only. # # ALL THE PREVIOUS JOBS NEEDS TO BE ADDED TO THE `needs` SECTION OF THIS JOB! ci-success: name: ci if: github.event_name == 'push' && success() needs: - test - clippy - rustfmt - rustdoc - expandtest - miri - shellcheck runs-on: ubuntu-latest steps: - name: Mark the job as a success run: exit 0 ci-failure: name: ci if: github.event_name == 'push' && !success() needs: - test - clippy - rustfmt - rustdoc - expandtest - miri - shellcheck runs-on: ubuntu-latest steps: - name: Mark the job as a failure run: exit 1