From fe2ae9cc32eb9b7786de56ea7195cf6048d1bc29 Mon Sep 17 00:00:00 2001 From: Jay Oster Date: Mon, 22 Apr 2024 20:24:53 -0700 Subject: [PATCH] Add github action for CI --- .github/workflows/ci.yml | 93 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 93 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..d3884d0 --- /dev/null +++ b/.github/workflows/ci.yml @@ -0,0 +1,93 @@ +name: CI +on: + push: + pull_request: + schedule: + - cron: '0 0 * * 0' +jobs: + checks: + name: Check + runs-on: ubuntu-latest + strategy: + matrix: + rust: + - stable + - beta + - 1.70.0 + steps: + - name: Checkout sources + uses: actions/checkout@v3 + - name: Update apt repos + run: sudo apt -y update + - name: Install dependencies + run: sudo apt -y install libasound2-dev + - name: Install toolchain + uses: dtolnay/rust-toolchain@master + with: + toolchain: ${{ matrix.rust }} + - name: Rust cache + uses: Swatinem/rust-cache@v2 + with: + shared-key: common + - name: Cargo check + run: cargo check --workspace + + lints: + name: Lints + runs-on: ubuntu-latest + steps: + - name: Checkout sources + uses: actions/checkout@v3 + - name: Update apt repos + run: sudo apt -y update + - name: Install dependencies + run: sudo apt -y install libasound2-dev + - name: Install toolchain + uses: dtolnay/rust-toolchain@master + with: + toolchain: stable + components: clippy, rustfmt + - name: Rust cache + uses: Swatinem/rust-cache@v2 + with: + shared-key: common + - name: Install cargo-machete + uses: baptiste0928/cargo-install@v2 + with: + crate: cargo-machete + - name: Cargo fmt + run: cargo fmt --all -- --check + - name: Cargo doc + run: cargo doc --workspace --no-deps + - name: Cargo clippy + run: cargo clippy --workspace --tests -- -D warnings + - name: Cargo machete + run: cargo machete + + tests: + name: Test + runs-on: ubuntu-latest + needs: [checks, lints] + strategy: + matrix: + rust: + - stable + - beta + - 1.70.0 + steps: + - name: Checkout sources + uses: actions/checkout@v3 + - name: Update apt repos + run: sudo apt -y update + - name: Install dependencies + run: sudo apt -y install libasound2-dev + - name: Install toolchain + uses: dtolnay/rust-toolchain@master + with: + toolchain: ${{ matrix.rust }} + - name: Rust cache + uses: Swatinem/rust-cache@v2 + with: + shared-key: common + - name: Cargo test + run: cargo test --workspace