From ac377932a095ecebe971df44016772d6413154f1 Mon Sep 17 00:00:00 2001 From: Midas Lambrichts Date: Sat, 25 Sep 2021 17:37:24 +0200 Subject: [PATCH] Add CI (#1) * Coverage * Added generic checks --- .github/workflows/generic.yml | 75 +++++++++++++++++++++++++++++++++++ .github/workflows/grcov.yml | 66 ++++++++++++++++++++++++++++++ 2 files changed, 141 insertions(+) create mode 100644 .github/workflows/generic.yml create mode 100644 .github/workflows/grcov.yml diff --git a/.github/workflows/generic.yml b/.github/workflows/generic.yml new file mode 100644 index 0000000..c4c5027 --- /dev/null +++ b/.github/workflows/generic.yml @@ -0,0 +1,75 @@ +on: + push: + branches: + - master + pull_request: + branches: + - master + +name: Generic checks + +jobs: + check: + name: Check + runs-on: ubuntu-latest + steps: + - name: Checkout sources + uses: actions/checkout@v2 + + - name: Install stable toolchain + uses: actions-rs/toolchain@v1 + with: + profile: minimal + toolchain: stable + override: true + + - name: Run cargo check + uses: actions-rs/cargo@v1 + with: + command: check + + test: + name: Test Suite + runs-on: ubuntu-latest + steps: + - name: Checkout sources + uses: actions/checkout@v2 + + - name: Install stable toolchain + uses: actions-rs/toolchain@v1 + with: + profile: minimal + toolchain: stable + override: true + + - name: Run cargo test + uses: actions-rs/cargo@v1 + with: + command: test + + lints: + name: Lints + runs-on: ubuntu-latest + steps: + - name: Checkout sources + uses: actions/checkout@v2 + + - name: Install stable toolchain + uses: actions-rs/toolchain@v1 + with: + profile: minimal + toolchain: stable + override: true + components: rustfmt, clippy + + - name: Run cargo fmt + uses: actions-rs/cargo@v1 + with: + command: fmt + args: --all -- --check + + - name: Run cargo clippy + uses: actions-rs/cargo@v1 + with: + command: clippy + args: -- -D warnings diff --git a/.github/workflows/grcov.yml b/.github/workflows/grcov.yml new file mode 100644 index 0000000..2099234 --- /dev/null +++ b/.github/workflows/grcov.yml @@ -0,0 +1,66 @@ +on: + push: + branches: + - master + pull_request: + branches: + - master + +name: Code coverage with grcov + +jobs: + grcov: + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v2 + + - name: Install toolchain + uses: actions-rs/toolchain@v1 + with: + toolchain: nightly + override: true + profile: minimal + + - name: Execute tests + uses: actions-rs/cargo@v1 + with: + command: test + args: --all + env: + CARGO_INCREMENTAL: 0 + RUSTFLAGS: "-Zprofile -Ccodegen-units=1 -Cinline-threshold=0 -Clink-dead-code -Coverflow-checks=off -Cpanic=abort -Zpanic_abort_tests" + + # Note that `actions-rs/grcov` Action can install `grcov` too, + # but can't use faster installation methods yet. + # As a temporary experiment `actions-rs/install` Action plugged in here. + # Consider **NOT** to copy that into your workflow, + # but use `actions-rs/grcov` only + - name: Pre-installing grcov + uses: actions-rs/install@v0.1 + with: + crate: grcov + use-tool-cache: true + + - name: Gather coverage data + id: coverage + uses: actions-rs/grcov@v0.1 + with: + coveralls-token: ${{ secrets.COVERALLS_TOKEN }} + + - name: Coveralls upload + uses: coverallsapp/github-action@master + with: + github-token: ${{ secrets.GITHUB_TOKEN }} + parallel: true + path-to-lcov: ${{ steps.coverage.outputs.report }} + + grcov_finalize: + runs-on: ubuntu-latest + needs: grcov + steps: + - name: Coveralls finalization + uses: coverallsapp/github-action@master + with: + github-token: ${{ secrets.GITHUB_TOKEN }} + parallel-finished: true