name: CI
on:
- push
- pull_request
env:
CARGO_TERM_COLOR: always
jobs:
arm:
name: arm
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
command: ["build", "test"]
profile: ["", "--release"]
features: ["", "--all-features"]
toolchain: ["stable", "nightly", "1.58"]
steps:
- uses: actions/checkout@v3
- uses: actions-rs/toolchain@v1
with:
toolchain: ${{ matrix.toolchain }}
target: armv5te-unknown-linux-gnueabi
default: true
- uses: actions-rs/cargo@v1
with:
use-cross: true
command: ${{ matrix.command }}
args: ${{ matrix.profile }} ${{ matrix.features }} --target armv5te-unknown-linux-gnueabi
x64:
name: x64
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
command: ["build", "test"]
profile: ["", "--release"]
features: ["", "--all-features"]
toolchain: ["stable", "nightly", "1.56"]
steps:
- uses: actions/checkout@v3
- uses: actions-rs/toolchain@v1
with:
toolchain: ${{ matrix.toolchain }}
default: true
- uses: actions-rs/cargo@v1
with:
command: ${{ matrix.command }}
args: ${{ matrix.profile }} ${{ matrix.features }}
clippy_check:
name: Linter (clippy)
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: actions-rs/toolchain@v1
with:
toolchain: stable
components: clippy
default: true
- uses: actions-rs/clippy-check@v1
with:
token: ${{ secrets.GITHUB_TOKEN }}
args: --all-features --all-targets -- -D warnings
code_format:
name: Code Formatter (rustfmt)
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: actions-rs/toolchain@v1
with:
toolchain: stable
components: rustfmt
default: true
- uses: mbrobbel/rustfmt-check@0.3.0
with:
token: ${{ secrets.GITHUB_TOKEN }}
sync_readme:
name: Sync README.md (cargo sync-readme)
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- run: cargo install cargo-readme
- run: ./gen_readme.sh
- run: git diff --exit-code
dead_doc_links:
name: Find dead doc links
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- run: RUSTDOCFLAGS="-Dwarnings" cargo doc
coverage:
name: Code Coverage
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: actions-rs/toolchain@v1
with:
toolchain: nightly
default: true
- uses: actions-rs/cargo@v1
with:
command: test
args: --all-features --no-fail-fast
env:
CARGO_INCREMENTAL: '0'
RUSTFLAGS: '-Zprofile -Ccodegen-units=1 -Cinline-threshold=0 -Clink-dead-code -Coverflow-checks=off -Cpanic=abort -Zpanic_abort_tests'
RUSTDOCFLAGS: '-Zprofile -Ccodegen-units=1 -Cinline-threshold=0 -Clink-dead-code -Coverflow-checks=off -Cpanic=abort -Zpanic_abort_tests'
- id: coverage
uses: actions-rs/grcov@v0.1
- uses: codecov/codecov-action@v1
with:
files: ${{ steps.coverage.outputs.report }}
fail_ci_if_error: true
verbose: true