From 73646d5c44d815a3a3e6a0298b3f50862ca8722e Mon Sep 17 00:00:00 2001 From: Ruben De Smet Date: Wed, 23 Aug 2023 17:47:49 +0200 Subject: [PATCH] Add codecov and build workflow --- .github/actions-rs/grcov.yml | 1 + .github/codecov.yml | 11 ++++ .github/workflows/build.yml | 107 +++++++++++++++++++++++++++++++++++ 3 files changed, 119 insertions(+) create mode 100644 .github/actions-rs/grcov.yml create mode 100644 .github/codecov.yml create mode 100644 .github/workflows/build.yml diff --git a/.github/actions-rs/grcov.yml b/.github/actions-rs/grcov.yml new file mode 100644 index 0000000..96b0c4b --- /dev/null +++ b/.github/actions-rs/grcov.yml @@ -0,0 +1 @@ +output-path: ./coverage.xml diff --git a/.github/codecov.yml b/.github/codecov.yml new file mode 100644 index 0000000..c4e6b3f --- /dev/null +++ b/.github/codecov.yml @@ -0,0 +1,11 @@ +github_checks: + annotations: false + +coverage: + status: + project: + default: + informational: true + patch: + default: + informational: true diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml new file mode 100644 index 0000000..28b6806 --- /dev/null +++ b/.github/workflows/build.yml @@ -0,0 +1,107 @@ +name: Build +on: + push: + branches: + - main + pull_request: + +env: + CARGO_INCREMENTAL: 0 + CARGO_REGISTRIES_CRATES_IO_PROTOCOL: sparse + +concurrency: + group: ${{ github.workflow }}-${{ github.ref }} + cancel-in-progress: true + +jobs: + build_and_test: + name: cargo test + runs-on: ubuntu-latest + env: + RUSTFLAGS: -D warnings + strategy: + fail-fast: false + matrix: + toolchain: ["stable", "beta"] + coverage: [false] + include: + - toolchain: "nightly" + coverage: true + steps: + - name: Checkout repository + uses: actions/checkout@v2 + + - uses: actions-rs/toolchain@v1 + with: + toolchain: ${{ matrix.toolchain }} + override: true + + - name: Configure CI cache + uses: Swatinem/rust-cache@v2 + + - name: Build + uses: actions-rs/cargo@v1 + with: + command: build + args: --all-targets + + - name: Run tests + uses: actions-rs/cargo@v1 + if: ${{ !matrix.coverage }} + with: + command: test + args: --all-targets --no-fail-fast + + - name: Run tests + uses: actions-rs/cargo@v1 + if: ${{ matrix.coverage }} + with: + command: test + args: --all-targets --no-fail-fast + env: + CARGO_INCREMENTAL: '0' + RUSTFLAGS: '-Zprofile -Ccodegen-units=1 -Cinline-threshold=0 -Clink-dead-code -Coverflow-checks=off -Cpanic=abort -Zpanic_abort_tests' + RUSTDOCFLAGS: '-Zprofile -Ccodegen-units=1 -Cinline-threshold=0 -Clink-dead-code -Coverflow-checks=off -Cpanic=abort -Zpanic_abort_tests' + + - name: Generate code coverage + uses: actions-rs/grcov@v0.1 + if: ${{ matrix.coverage }} + + - name: Upload coverage reports to Codecov with GitHub Action + uses: codecov/codecov-action@v3 + if: ${{ matrix.coverage }} + + rustfmt: + name: rustfmt + runs-on: ubuntu-latest + steps: + - name: Checkout repository + uses: actions/checkout@v2 + + - name: Setup Rust toolchain + run: rustup install stable + + - name: Check code format + uses: actions-rs/cargo@v1 + with: + command: fmt + args: -- --check + + clippy: + name: clippy + runs-on: ubuntu-latest + steps: + - name: Checkout repository + uses: actions/checkout@v2 + + - name: Setup Rust toolchain + run: rustup install stable + + - name: Setup CI cache + uses: Swatinem/rust-cache@v2 + + - name: Run clippy lints + uses: actions-rs/cargo@v1 + with: + command: clippy +