name: Rust
on:
push:
branches: [ main, staging, trying, v0.1.* ]
pull_request:
branches: [ main ]
env:
CARGO_TERM_COLOR: always
jobs:
build:
runs-on: ubuntu-latest
strategy:
matrix:
toolchain:
- stable
- beta
- nightly
steps:
- uses: actions/checkout@v2
- run: rustup update ${{ matrix.toolchain }} && rustup default ${{ matrix.toolchain }} && rustup component add rustfmt clippy
- name: Cargo fmt
uses: actions-rs/cargo@v1
with:
command: fmt
args: --all -- --check
- name: Build
uses: actions-rs/cargo@v1
with:
command: build
args: --release --verbose
- name: Cargo clippy
uses: actions-rs/cargo@v1
with:
command: clippy
args: --all -- -D warnings
- uses: taiki-e/install-action@nextest
- name: Run tests
uses: actions-rs/cargo@v1
with:
command: test
args: --release --verbose
- name: Doc
uses: actions-rs/cargo@v1
with:
command: doc
args: --release --all --verbose
- uses: actions/checkout@master
coverage:
name: Coverage
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Install Rust Nightly
uses: actions-rs/toolchain@v1
with:
toolchain: nightly
default: true
profile: minimal
- name: run cargo tarpaulin
uses: actions-rs/tarpaulin@v0.1
with:
version: '0.20.0'
args: '--release --verbose --run-types Doctests --output-dir coverage --out Lcov'
- uses: codecov/codecov-action@v2
- name: Coveralls
uses: coverallsapp/github-action@master
with:
github-token: ${{ secrets.GITHUB_TOKEN }}
- name: Archive code coverage results
uses: actions/upload-artifact@v1
with:
name: code-coverage-report
path: coverage/lcov.info