diff --git a/.github/workflows/rust.yml b/.github/workflows/rust.yml new file mode 100644 index 0000000..6fc44a9 --- /dev/null +++ b/.github/workflows/rust.yml @@ -0,0 +1,93 @@ +name: Rust + +on: + push: + branches: [ main ] + pull_request: + branches: [ main ] + +env: + CARGO_TERM_COLOR: always + +jobs: + build: + runs-on: buildjet-4vcpu-ubuntu-2204 + + steps: + - uses: actions/checkout@v3 + + - name: Install rust + uses: dtolnay/rust-toolchain@master + with: + toolchain: stable + + - uses: actions/cache@v3 + with: + path: | + ~/.cargo/registry + ~/.cargo/git + target + key: ${{ runner.os }}-cargo-release-${{ hashFiles('**/Cargo.lock') }} + + - name: Run cargo build + run: cargo build --all --locked --release + + test: + runs-on: buildjet-4vcpu-ubuntu-2204 + + steps: + - uses: actions/checkout@v3 + + - name: Install rust + uses: dtolnay/rust-toolchain@master + with: + toolchain: stable + + - uses: actions/cache@v3 + with: + path: | + ~/.cargo/registry + ~/.cargo/git + target + key: ${ runner.os }-cargo-debug-${{ hashFiles('**/Cargo.lock') }} + + - name: Run cargo test + run: cargo test --all-features + + clippy: + runs-on: buildjet-4vcpu-ubuntu-2204 + + steps: + - uses: actions/checkout@v3 + + - name: Install latest rust + uses: dtolnay/rust-toolchain@master + with: + toolchain: stable + components: clippy + + - uses: actions/cache@v3 + with: + path: | + ~/.cargo/registry + ~/.cargo/git + target + key: ${{ runner.os }}-cargo-debug-${{ hashFiles('**/Cargo.lock') }} + + - name: Run clippy + run: cargo clippy -- -D warnings + + format: + runs-on: buildjet-4vcpu-ubuntu-2204 + + steps: + - uses: actions/checkout@v3 + + - name: Install latest rust + uses: dtolnay/rust-toolchain@master + with: + toolchain: stable + components: rustfmt + + - name: Format + run: cargo fmt -- --check