name: CI
on:
pull_request:
push:
branches:
- master
- staging
- trying
schedule:
- cron: '00 01 * * *'
env:
RUSTFLAGS: -Dwarnings
RUST_BACKTRACE: 1
defaults:
run:
shell: bash
jobs:
test:
name: test
strategy:
matrix:
rust:
- 1.34.0
- 1.36.0
- 1.37.0
- stable
- beta
include:
- os: ubuntu
rust: nightly
- os: macos
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 --tests
if: matrix.rust == '1.34.0' || matrix.rust == '1.36.0'
run: |
cargo test --all --all-features --exclude expandtest --tests
- name: cargo test
if: matrix.rust != '1.34.0' && matrix.rust != '1.36.0'
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: |
. ./ci/check-minimal-versions.sh
expandtest:
name: expandtest
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Install Rust
run: |
. ./ci/install-rust.sh
- name: Install cargo-expand
run: |
cargo install cargo-expand
- name: cargo test (expandtest)
run: |
cargo test --all-features --manifest-path tests/expand/Cargo.toml
clippy:
name: clippy
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Install Rust
run: |
. ./ci/install-rust.sh
- name: Install 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
run: |
. ./ci/install-rust.sh
- name: Install 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
ci-success:
name: ci
if: github.event_name == 'push' && success()
needs:
- test
- clippy
- rustfmt
- rustdoc
- expandtest
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
runs-on: ubuntu-latest
steps:
- name: Mark the job as a failure
run: exit 1