Template
Cross compiling will be moved into an optional "nice to have" rather than something that is required for the tooling to move on.
92 lines
2.3 KiB
YAML
92 lines
2.3 KiB
YAML
name: Crossplatform Linting && Build
|
|
|
|
on:
|
|
push:
|
|
branches: [ main, master ]
|
|
pull_request:
|
|
|
|
jobs:
|
|
lint:
|
|
name: Linting
|
|
runs-on: ubuntu-latest
|
|
|
|
steps:
|
|
- name: Checkout Project
|
|
uses: actions/checkout@v5
|
|
|
|
- name: Setup Rust
|
|
uses: dtolnay/rust-toolchain@stable
|
|
with:
|
|
components: rustfmt, clippy
|
|
|
|
- name: Install cargo sort
|
|
uses: taiki-e/cache-cargo-install-action@v3 # v3
|
|
with:
|
|
tool: cargo-sort
|
|
|
|
- name: Install cargo machete
|
|
uses: taiki-e/cache-cargo-install-action@v3 # v3
|
|
with:
|
|
tool: cargo-machete
|
|
|
|
- name: Cache cargo dependencies
|
|
uses: actions/cache@v4
|
|
with:
|
|
path: |
|
|
~/.cargo/bin/
|
|
~/.cargo/registry/index/
|
|
~/.cargo/registry/cache/
|
|
~/.cargo/git/db/
|
|
target/
|
|
key: ${{ runner.os }}-cargo-lint-${{ hashFiles('**/Cargo.lock') }}
|
|
restore-keys: |
|
|
${{ runner.os }}-cargo-lint-
|
|
|
|
- name: Check formatting
|
|
run: cargo fmt --check
|
|
|
|
- name: Check import sorting
|
|
run: cargo sort --grouped --check --check-format
|
|
|
|
- name: Check for unused dependencies
|
|
run: cargo machete
|
|
|
|
- name: Clippy for Linux x86 (GNU ONLY)
|
|
run: |
|
|
cargo clippy --target x86_64-unknown-linux-gnu -- -D warnings
|
|
build:
|
|
name: Build
|
|
runs-on: ubuntu-latest
|
|
needs: lint
|
|
|
|
steps:
|
|
- name: Checkout Project
|
|
uses: actions/checkout@v5
|
|
|
|
- name: Setup Rust
|
|
uses: dtolnay/rust-toolchain@stable
|
|
with:
|
|
targets: x86_64-unknown-linux-musl
|
|
|
|
- name: Cache cargo dependencies
|
|
uses: actions/cache@v4
|
|
with:
|
|
path: |
|
|
~/.cargo/bin/
|
|
~/.cargo/registry/index/
|
|
~/.cargo/registry/cache/
|
|
~/.cargo/git/db/
|
|
target/
|
|
key: ${{ runner.os }}-cargo-lint-${{ hashFiles('**/Cargo.lock') }}
|
|
restore-keys: |
|
|
${{ runner.os }}-cargo-lint-
|
|
|
|
- name: Build for Linux x86 (GNU and MUSL)
|
|
run: |
|
|
cargo build --target x86_64-unknown-linux-gnu --release --locked
|
|
cargo build --target x86_64-unknown-linux-musl --release --locked
|
|
|
|
|
|
|
|
|