| 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.31.0 |
| - stable |
| - beta |
| - nightly |
| runs-on: ubuntu-latest |
| steps: |
| - uses: actions/checkout@v2 |
| - name: Install Rust |
| run: ci/install-rust.sh ${{ matrix.rust }} |
| - name: Install cargo-hack |
| if: matrix.rust != '1.31.0' |
| run: | |
| cargo install cargo-hack |
| - name: cargo check |
| if: matrix.rust == '1.31.0' |
| run: | |
| cargo check --all-features |
| - name: cargo test |
| if: matrix.rust != '1.31.0' |
| run: | |
| cargo test --all-features |
| - name: cargo hack check --each-feature |
| if: matrix.rust != '1.31.0' |
| run: | |
| cargo hack check --all --each-feature --no-dev-deps |
| - name: cargo check (minimal versions) |
| if: matrix.rust == 'nightly' |
| run: | |
| bash scripts/check-minimal-versions.sh |
| |
| 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 |
| - 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 |
| - shellcheck |
| runs-on: ubuntu-latest |
| steps: |
| - name: Mark the job as a failure |
| run: exit 1 |