name: Rust
on:
push:
branches: [ master ]
pull_request:
branches: [ master ]
env:
CARGO_TERM_COLOR: always
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Build
run: cargo build --verbose
tests:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Run tests
run: cargo test -- --nocapture
fmt:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: FMT
run: cargo fmt -- --check
clippy:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: cache-build-artifacts
uses: actions/cache@v2
with:
path: target
key: cargo-clippy-${{ hashFiles('Cargo.lock') }}
restore-keys: |
cargo-clippy-${{ hashFiles('Cargo.lock') }}
cargo-clippy
- name: install-clippy
run: rustup component add clippy
- name: run-clippy
run: cargo clippy -- -W clippy::pedantic
coverage:
runs-on: ubuntu-latest
continue-on-error: true
steps:
- name: Checkout repository
uses: actions/checkout@v2
with:
submodules: true
- name: cache-build-artifacts
uses: actions/cache@v2
with:
path: target
key: cargo-tarpaulin-${{ hashFiles('Cargo.lock') }}
restore-keys: |
cargo-tarpaulin-${{ hashFiles('Cargo.lock') }}
cargo-tarpaulin
- name: Generate code coverage
run: |
cargo install --version 0.16.0 cargo-tarpaulin
cargo tarpaulin --verbose --workspace --out Xml
- name: Upload to codecov.io
uses: codecov/codecov-action@v1
with:
token: ${{secrets.CODECOV_TOKEN}}
fail_ci_if_error: true