Skip to content

Rust

Rust #8

Workflow file for this run

name: Rust
on:
push:
branches: [ "main" ]
pull_request:
branches: [ "main" ]
workflow_call:
secrets:
CODECOV_TOKEN:
required: true
schedule:
- cron: '0 0 * * 0'
env:
CARGO_TERM_COLOR: always
jobs:
Build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- run: cargo build --all-features --verbose
Format:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- run: cargo fmt --all --check --verbose
Clippy:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- run: cargo clippy --all-features --verbose
Tests:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: Swatinem/rust-cache@v2
with:
cache-targets: false
cache-all-crates: true
- run: cargo install-test-tools
- name: Run tests
id: tests
run: cargo llvm-cov nextest --all-features --all-targets --no-fail-fast --verbose
- name: Prepare coverage report
id: coverage
if: success() || steps.tests.outcome == 'failure'
run: cargo llvm-cov report --lcov --output-path coverage.lcov
- name: Upload coverage reports to Codecov
if: success() || steps.coverage.outcome == 'success'
uses: codecov/codecov-action@v4
env:
CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }}
with:
files: coverage/*.lcov
Deps:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: Swatinem/rust-cache@v2
with:
cache-targets: false
cache-all-crates: true
- run: cargo install-dependency-check-tools
- name: Machete
run: cargo machete
- name: Deny
run: cargo deny check all
Publish:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: Swatinem/rust-cache@v2
with:
cache-targets: false
cache-all-crates: true
- run: cargo install-license
- name: Dry run publish
run: |
cargo license --all-features --avoid-dev-deps --json > dependencies-license.json
cargo publish --all-features --allow-dirty --dry-run --verbose
cargo package --all-features --list --allow-dirty