blob: 510417ed3b230d0eff202e0d9e8ee90615b1bc9a [file] [log] [blame]
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