name: CI on: pull_request: push: branches: - master - staging schedule: - cron: '0 1 * * *' env: CARGO_INCREMENTAL: 0 RUSTFLAGS: -D warnings RUST_BACKTRACE: 1 defaults: run: shell: bash jobs: 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 - uses: taiki-e/github-actions/install-rust@main with: toolchain: ${{ matrix.rust }} - if: startsWith(matrix.rust, 'nightly') run: cargo install cargo-hack - run: rustup target add thumbv7m-none-eabi - run: cargo test --all --all-features --exclude expandtest - run: cargo check --manifest-path tests/no-std/Cargo.toml --target thumbv7m-none-eabi - run: cargo check --manifest-path tests/rust-2015/Cargo.toml --target thumbv7m-none-eabi - if: startsWith(matrix.rust, 'nightly') run: bash scripts/check-minimal-versions.sh expandtest: runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 - uses: taiki-e/github-actions/install-rust@main with: component: rustfmt - name: Fetch latest release version of cargo-expand run: | mkdir -p .github/caching curl -LsSf https://api.github.com/repos/dtolnay/cargo-expand/releases/latest | jq -r '.name' > .github/caching/cargo-expand.lock - name: Cache cargo-expand id: cache-cargo-expand uses: actions/cache@v2 with: path: ${{ runner.tool_cache }}/cargo-expand/bin key: cargo-expand-bin-${{ hashFiles('.github/caching/cargo-expand.lock') }} - name: Install cargo-expand if: steps.cache-cargo-expand.outputs.cache-hit != 'true' run: cargo install -f cargo-expand --root ${{ runner.tool_cache }}/cargo-expand - run: echo "${{ runner.tool_cache }}/cargo-expand/bin" >> "${GITHUB_PATH}" - run: cargo test -p expandtest miri: runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 - uses: taiki-e/github-actions/install-rust@main with: component: miri - run: cargo miri test clippy: runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 - uses: taiki-e/github-actions/install-rust@main with: component: clippy - run: cargo clippy --all --all-features --all-targets rustfmt: runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 - uses: taiki-e/github-actions/install-rust@main with: component: rustfmt - run: cargo fmt --all -- --check rustdoc: env: RUSTDOCFLAGS: -D warnings runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 - uses: taiki-e/github-actions/install-rust@main - run: cargo doc --no-deps --all --all-features shellcheck: runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 - run: shellcheck **/*.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 - expandtest - miri - clippy - rustfmt - rustdoc - 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 - expandtest - miri - clippy - rustfmt - rustdoc - shellcheck runs-on: ubuntu-latest steps: - name: Mark the job as a failure run: exit 1