name: Rust
on: [ push, pull_request ]
env:
CARGO_TERM_COLOR: always
jobs:
test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: taiki-e/install-action@just
- uses: actions/cache@v3
with:
path: src/ext
key: ${{ runner.os }}-ext-deps-${{ hashFiles('**/justfile') }}
- name: Install toolchain
uses: dtolnay/rust-toolchain@stable
with:
components: rustfmt,clippy
- name: Format
run: cargo fmt -- --check
- name: Lint
run: just lint
- name: Install external dependencies
run: |
if [ ! -d "src/ext" ]; then
just deps
fi
- uses: actions/cache@v3
with:
path: |
~/.cargo/registry
~/.cargo/git
target
key: ${{ runner.os }}-cargo-${{ hashFiles('**/Cargo.lock') }}
- name: Build
run: cargo build --verbose
- name: Run tests
run: just test
- uses: taiki-e/install-action@v2
with:
tool: cargo-tarpaulin@0.23.1
- name: Run cargo-tarpaulin
run: just coverage
- name: Upload to codecov.io
uses: codecov/codecov-action@v3
with:
token: ${{ secrets.CODECOV_TOKEN }}
fail_ci_if_error: false
verbose: true