From 12465925ad4bb357571c382a5545059b5685785a Mon Sep 17 00:00:00 2001 From: Nixon <43715558+nixon-voxell@users.noreply.github.com> Date: Wed, 24 Apr 2024 00:11:23 +0800 Subject: [PATCH] feat: add rust.yml github workflow --- .github/workflows/rust.yml | 87 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 87 insertions(+) create mode 100644 .github/workflows/rust.yml diff --git a/.github/workflows/rust.yml b/.github/workflows/rust.yml new file mode 100644 index 0000000..dbdb497 --- /dev/null +++ b/.github/workflows/rust.yml @@ -0,0 +1,87 @@ +name: Rust + +on: + push: + branches: [ "main" ] + pull_request: + branches: [ "main" ] + +env: + CARGO_TERM_COLOR: always + +jobs: + setup: + runs-on: ubuntu-latest + steps: + - name: Update Packages + run: sudo apt-get update -yq + - name: Install dependencies + run: sudo apt-get install -yq --no-install-recommends libudev-dev libasound2-dev libxcb-composite0-dev + + format: + runs-on: ubuntu-latest + needs: [setup] + steps: + - uses: actions/checkout@v4 + - uses: dtolnay/rust-toolchain@stable + - uses: Swatinem/rust-cache@v2 + - run: rustup component add rustfmt + - run: cargo fmt --all -- --check + + check: + runs-on: ubuntu-latest + needs: [setup] + steps: + - uses: actions/checkout@v4 + - uses: dtolnay/rust-toolchain@stable + - uses: Swatinem/rust-cache@v2 + - run: cargo check --workspace --all-features --all-targets + + check-no-defaults: + runs-on: ubuntu-latest + needs: [setup] + steps: + - uses: actions/checkout@v4 + - uses: dtolnay/rust-toolchain@stable + - uses: Swatinem/rust-cache@v2 + - run: cargo check --workspace --no-default-features + + clippy: + runs-on: ubuntu-latest + needs: [setup] + steps: + - uses: actions/checkout@v4 + - uses: dtolnay/rust-toolchain@stable + - uses: Swatinem/rust-cache@v2 + - run: rustup component add clippy + - run: cargo clippy --workspace --all-features --all-targets -- -D warnings + + doc: + runs-on: ubuntu-latest + needs: [setup] + steps: + - uses: actions/checkout@v4 + - uses: dtolnay/rust-toolchain@stable + - uses: Swatinem/rust-cache@v2 + - run: cargo doc --workspace --all-features --no-deps + env: + RUSTDOCFLAGS: -D warnings + + test: + runs-on: ubuntu-latest + needs: [setup] + steps: + - uses: actions/checkout@v4 + - uses: dtolnay/rust-toolchain@stable + - uses: Swatinem/rust-cache@v2 + - run: cargo test --workspace --all-features --all-targets + + # Note: cargo test --all-targets disables doc tests, so we have to add this to test docs + doctest: + runs-on: ubuntu-latest + needs: [setup] + steps: + - uses: actions/checkout@v4 + - uses: dtolnay/rust-toolchain@stable + - uses: Swatinem/rust-cache@v2 + - run: cargo test --workspace --all-features --doc