name: Rust CI
on:
pull_request:
push:
branches:
- main
jobs:
checks:
name: check / fmt / clippy
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v5
- name: Setup Rust toolchain
uses: dtolnay/rust-toolchain@stable
with:
components: rustfmt, clippy
- name: Cache cargo artifacts
uses: Swatinem/rust-cache@v2
- name: cargo fmt --check
run: cargo fmt --all -- --check
- name: cargo check
run: cargo check --workspace --all-targets
- name: cargo clippy
run: cargo clippy --workspace --all-targets -- -D warnings
package:
name: package asfml-core
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v5
- name: Inject synthetic release version into Cargo manifests
shell: bash
run: |
set -euo pipefail
python3 scripts/prepare_cargo_release.py \
--version "0.0.0-ci.${{ github.run_number }}"
- name: Refresh lockfile for injected version
shell: bash
run: cargo generate-lockfile
- name: Setup Rust toolchain
uses: dtolnay/rust-toolchain@stable
- name: Cache cargo artifacts
uses: Swatinem/rust-cache@v2
- name: cargo package asfml-core
run: cargo package --allow-dirty --locked -p asfml-core