Files
rust_workflow_template/.gitea/workflows/lint.yml
T
melfely 566a55a252
Crossplatform Linting && Build / Linting (pull_request) Successful in 1m13s
Crossplatform Linting && Build / Build (pull_request) Successful in 55s
Crossplatform Linting && Build / Test (pull_request) Successful in 1m31s
Crossplatform Linting && Build / Cross-Build-Windows (pull_request) Successful in 1m52s
Crossplatform Linting && Build / Cross-Build-Linux (pull_request) Successful in 2m23s
Crossplatform Linting && Build / Cross-Build-MacOS (pull_request) Successful in 2m46s
ci: Updated MacOS CI to pass on build fails, added cargo check to MacOS CI
2026-09-10 14:11:36 -05:00

151 lines
3.7 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/install-action@v2
with:
tool: cargo-sort
- name: Install cargo machete
uses: taiki-e/install-action@v2
with:
tool: cargo-machete
- name: Check formatting
run: cargo fmt --check
- name: Check import sorting
run: cargo sort --workspace --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: 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
cross_build_linux:
name: Cross-Build-Linux
runs-on: ubuntu-latest
needs: [lint, build]
steps:
- name: Checkout Project
uses: actions/checkout@v5
- name: Setup Rust
uses: dtolnay/rust-toolchain@stable
- name: Crosscompile for aarch64 linux, windows, macos
uses: zijiren233/cargo-cross@v1
with:
targets: |
aarch64-unknown-linux-musl
aarch64-unknown-linux-gnu
cross_build_windows:
name: Cross-Build-Windows
runs-on: ubuntu-latest
needs: [lint, build]
steps:
- name: Checkout Project
uses: actions/checkout@v5
- name: Setup Rust
uses: dtolnay/rust-toolchain@stable
- name: Crosscompile for targets
uses: zijiren233/cargo-cross@v1
with:
targets: |
x86_64-pc-windows-gnu
cross_Build_osx:
name: Cross-Build-MacOS
runs-on: ubuntu-latest
needs: [lint, build]
steps:
- name: Checkout Project
uses: actions/checkout@v5
- name: Setup Rust
uses: dtolnay/rust-toolchain@stable
# CrossCheck for MacOS first, which checks for a valid rust project on MacOS
- name: Crosscheck for MacOS
uses: zijiren233/cargo-cross@v1
with:
command: check
targets: |
aarch64-apple-darwin
# MacOS is known for having a problematic linker step from linux, we should not fail the job if this fails, but this Workflow ALSO has the seperate cargo check
- name: Crosscompile for targets
continue-on-error: true
uses: zijiren233/cargo-cross@v1
with:
targets: |
aarch64-apple-darwin
test_linux:
name: Test
runs-on: ubuntu-latest
needs: [build, 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: Test for Linux x86 (GNU and MUSL)
run: |
cargo test --target x86_64-unknown-linux-gnu --release --locked
cargo test --target x86_64-unknown-linux-musl --release --locked