From 7f4681fed1b74f3afbcf34ed9a81ee1b88ca6f24 Mon Sep 17 00:00:00 2001 From: Markus Mayer Date: Sun, 23 Jun 2024 18:05:08 +0200 Subject: [PATCH] Add GitHub Actions workflows --- .github/workflows/codespell.yml | 19 +++++++ .github/workflows/rust.yml | 93 +++++++++++++++++++++++++++++++++ 2 files changed, 112 insertions(+) create mode 100644 .github/workflows/codespell.yml create mode 100644 .github/workflows/rust.yml diff --git a/.github/workflows/codespell.yml b/.github/workflows/codespell.yml new file mode 100644 index 0000000..3bda702 --- /dev/null +++ b/.github/workflows/codespell.yml @@ -0,0 +1,19 @@ +--- +name: Codespell + +on: + push: + branches: [main] + pull_request: + branches: [main] + +jobs: + codespell: + name: Check for spelling errors + runs-on: ubuntu-latest + + steps: + - name: Checkout + uses: actions/checkout@v4 + - name: Codespell + uses: codespell-project/actions-codespell@v2 diff --git a/.github/workflows/rust.yml b/.github/workflows/rust.yml new file mode 100644 index 0000000..87415f6 --- /dev/null +++ b/.github/workflows/rust.yml @@ -0,0 +1,93 @@ +--- +name: Rust + +on: + push: + branches: [ "main" ] + paths: + - 'Cargo.toml' + - 'Cargo.lock' + - 'src/**' + - '.github/workflows/rust.yml' + pull_request: + branches: [ "main" ] + paths: + - 'Cargo.toml' + - 'Cargo.lock' + - 'src/**' + - '.github/workflows/rust.yml' + +env: + CARGO_TERM_COLOR: always + +jobs: + lint: + name: Lint + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - name: Check format + run: cargo fmt --check + - name: Clippy + run: cargo clippy + + docs: + name: Build documentation + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - name: Build documentation + run: cargo doc + + codecov: + needs: lint + name: Code Coverage + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - name: Build + run: cargo build --verbose + - name: Build Benchmarks + run: cargo build --benches --package minikalman + - uses: dtolnay/rust-toolchain@stable + with: + components: llvm-tools-preview + - name: Install cargo-llvm-cov + uses: taiki-e/install-action@cargo-llvm-cov + - name: Install nextest + uses: taiki-e/install-action@nextest + - name: Generate code coverage + run: cargo llvm-cov nextest --features=std,unsafe --workspace ---lcov --output-path lcov.info + - name: Upload coverage to Codecov + uses: codecov/codecov-action@v4.0.1 + with: + token: ${{ secrets.CODECOV_TOKEN }} + files: lcov.info + fail_ci_if_error: true + + build-std: + needs: + - lint + - docs + name: Build and Test (floating-point) + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - name: Run doctests + run: cargo test --doc --verbose --package marg-orientation --no-default-features --features=std + + build-others: + needs: + - codecov + - build-std + name: Build and Test + runs-on: ${{ matrix.os }} + strategy: + matrix: + os: [ macos-latest, windows-latest ] + steps: + - uses: actions/checkout@v4 + - name: Run tests + run: cargo test --package marg-orientation --verbose + - name: Run doctests + run: cargo test --doc --package marg-orientation --verbose