From 6c566bf15a17f35e60342a45c4a3cf55f54ca240 Mon Sep 17 00:00:00 2001 From: Sebastian Messmer Date: Mon, 29 May 2023 10:33:29 -0700 Subject: [PATCH] Add CI --- .github/workflows/ci.yml | 102 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 102 insertions(+) create mode 100644 .github/workflows/ci.yml diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml new file mode 100644 index 0000000..b222bea --- /dev/null +++ b/.github/workflows/ci.yml @@ -0,0 +1,102 @@ +name: CI + +on: + - push + - pull_request + +env: + CARGO_TERM_COLOR: always + +jobs: + test: + name: build_test + runs-on: ubuntu-latest + strategy: + fail-fast: false + matrix: + command: ["build", "test"] + profile: ["", "--release"] + features: ["", "--no-default-features", "--all-features"] + toolchain: ["stable", "nightly", "1.65"] + steps: + - uses: actions/checkout@v3 + - uses: actions-rs/toolchain@v1 + with: + toolchain: ${{ matrix.toolchain }} + default: true + - uses: actions-rs/cargo@v1 + with: + command: ${{ matrix.command }} + args: ${{ matrix.features }} ${{ matrix.profile }} + clippy_check: + name: Linter (clippy) + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 + - uses: actions-rs/toolchain@v1 + with: + toolchain: stable + components: clippy + default: true + - uses: actions-rs/clippy-check@v1 + with: + token: ${{ secrets.GITHUB_TOKEN }} + args: --all-features --all-targets -- -D warnings + code_format: + name: Code Formatter (rustfmt) + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 + - uses: actions-rs/toolchain@v1 + with: + toolchain: stable + components: rustfmt + default: true + - uses: mbrobbel/rustfmt-check@0.3.0 + with: + token: ${{ secrets.GITHUB_TOKEN }} + sync_readme: + name: Sync README.md (cargo sync-readme) + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 + - run: cargo install cargo-rdme + - run: ./gen_readme.sh + # Fail job if gen_readme.sh introduced changes. If this fails, then we need to run gen_readme.sh locally and add it to the commit. + - run: git diff --exit-code + dead_doc_links: + name: Find dead doc links + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 + - uses: actions-rs/toolchain@v1 + with: + toolchain: stable + default: true + - run: RUSTDOCFLAGS="-Dwarnings" cargo doc + coverage: + name: Code Coverage + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 + - uses: actions-rs/toolchain@v1 + with: + toolchain: nightly + default: true + - uses: actions-rs/cargo@v1 + with: + command: test + args: --all-features --no-fail-fast + env: + # Setup taken from https://github.com/actions-rs/grcov/tree/d9881ad44979aa34f846a82abb764b2b8cfbd715 + CARGO_INCREMENTAL: '0' + RUSTFLAGS: '-Zprofile -Ccodegen-units=1 -Cinline-threshold=0 -Clink-dead-code -Coverflow-checks=off' + RUSTDOCFLAGS: '-Zprofile -Ccodegen-units=1 -Cinline-threshold=0 -Clink-dead-code -Coverflow-checks=off' + - id: coverage + uses: actions-rs/grcov@v0.1 + - uses: codecov/codecov-action@v3 + with: + #token: ${{ secrets.CODECOV_TOKEN }} # not required for public repos + files: ${{ steps.coverage.outputs.report }} + fail_ci_if_error: true + verbose: true