Skip to content

Merge pull request #220 from nyx-space/dependabot/cargo/typed-builder… #57

Merge pull request #220 from nyx-space/dependabot/cargo/typed-builder…

Merge pull request #220 from nyx-space/dependabot/cargo/typed-builder… #57

Workflow file for this run

name: Rust
on:
push:
branches:
- master
tags:
- "*"
pull_request:
workflow_dispatch:
env:
RUST_BACKTRACE: 1
jobs:
check:
name: Check
runs-on: ubuntu-latest
steps:
- name: Checkout sources
uses: actions/checkout@v3
- name: Install stable toolchain
uses: dtolnay/rust-toolchain@master
with:
toolchain: stable
targets: wasm32-unknown-unknown
- name: Run cargo check
run: cargo check
- name: Run cargo check for WASM target
run: cargo check --target wasm32-unknown-unknown
tests:
strategy:
matrix:
os: [ubuntu-latest, macos-latest, windows-latest]
rust:
- { version: "1.70", name: MSRV }
- { version: stable, name: stable }
runs-on: ${{ matrix.os }}
name: Tests (${{ matrix.os }}, ${{ matrix.rust.name }})
needs: [check]
steps:
- name: Checkout sources
uses: actions/checkout@v3
- name: Install ${{ matrix.rust.name }} toolchain
uses: dtolnay/rust-toolchain@master
with:
toolchain: ${{ matrix.rust.version }}
- name: Set up cargo cache
uses: actions/cache@v3
continue-on-error: false
with:
path: |
~/.cargo/bin/
~/.cargo/registry/index/
~/.cargo/registry/cache/
~/.cargo/git/db/
target/
key: ${{ runner.os }}-cargo-${{ hashFiles('**/Cargo.lock') }}
restore-keys: ${{ runner.os }}-cargo-
- name: Unit Test (debug)
run: cargo test --lib
- name: All integration tests (release)
run: cargo test --release --test "*"
- name: Doc Test
run: cargo test --doc
lints:
name: Lints
runs-on: ubuntu-latest
needs: [tests]
steps:
- name: Checkout sources
uses: actions/checkout@v3
- name: Install stable toolchain
uses: dtolnay/rust-toolchain@master
with:
toolchain: stable
components: rustfmt, clippy
- name: Run cargo fmt
run: cargo fmt --all -- --check
- name: Run cargo clippy
run: cargo clippy -- -D warnings
audit:
name: Security Audit
runs-on: ubuntu-latest
needs: [lints]
steps:
- name: Checkout
uses: actions/checkout@v3
- name: Install stable toolchain
uses: dtolnay/rust-toolchain@master
with:
toolchain: stable
- name: Install cargo-audit
run: cargo install cargo-audit
- name: Audit code
run: cargo audit
ut-coverage:
name: Coverage (unit tests only)
runs-on: ubuntu-latest
needs: [tests]
steps:
- name: Checkout
uses: actions/checkout@v3
- name: Install stable toolchain
uses: dtolnay/rust-toolchain@master
with:
toolchain: stable
components: rustfmt, clippy
- name: Install cargo-grcov
run: |
rustup component add llvm-tools-preview
cargo install grcov
- name: Generate coverage report for unit tests
env:
RUSTFLAGS: "-Cinstrument-coverage"
LLVM_PROFILE_FILE: "target/coverage/nyx_space-%p-%m.profraw"
run: |
cargo test --lib
grcov . --binary-path ./target/debug/ -t lcov -s . --keep-only 'src/*' > lcov-lib.txt
- name: Upload coverage report
uses: codecov/codecov-action@v3
with:
token: ${{ secrets.CODECOV_TOKEN }}
files: ./lcov-*.txt
release:
name: Release
runs-on: ubuntu-latest
needs: [check, tests, lints, audit]
if: github.ref_type == 'tag'
steps:
- name: Checkout sources
uses: actions/checkout@v3
- name: release-plz
uses: MarcoIeni/[email protected]
- name: Install stable toolchain
uses: dtolnay/rust-toolchain@master
with:
toolchain: stable
components: rustfmt, clippy
- name: Publish to crates.io
env:
TOKEN: ${{ secrets.CRATESIO_API_TOKEN }}
run: |
cargo login $TOKEN
cargo publish