Skip to content

Merge pull request #22 from send/feat/m4-3-form-frame-loop #126

Merge pull request #22 from send/feat/m4-3-form-frame-loop

Merge pull request #22 from send/feat/m4-3-form-frame-loop #126

Workflow file for this run

name: CI
on:
push:
branches: [main]
pull_request:
branches: [main]
concurrency:
group: ci-${{ github.ref }}
cancel-in-progress: true
permissions:
contents: read
env:
CARGO_TERM_COLOR: always
CARGO_INCREMENTAL: 0
jobs:
changes:
name: Detect changes
runs-on: ubuntu-latest
outputs:
rust: ${{ steps.filter.outputs.rust }}
config: ${{ steps.filter.outputs.config }}
steps:
- uses: actions/checkout@v6
- uses: dorny/paths-filter@v3
id: filter
with:
filters: |
rust:
- 'crates/**'
- 'Cargo.toml'
- 'Cargo.lock'
- 'rust-toolchain.toml'
- '.rustfmt.toml'
- 'clippy.toml'
- 'mise.toml'
config:
- 'deny.toml'
- 'Cargo.toml'
- 'Cargo.lock'
check:
name: Check, Test, Lint
needs: changes
if: needs.changes.outputs.rust == 'true' || github.event_name == 'push'
timeout-minutes: 20
strategy:
fail-fast: false
matrix:
os: [ubuntu-latest, macos-latest, windows-latest]
runs-on: ${{ matrix.os }}
steps:
- uses: actions/checkout@v6
- uses: dtolnay/rust-toolchain@stable
with:
components: rustfmt, clippy
- name: Install fonts (Ubuntu)
if: runner.os == 'Linux'
run: |
sudo apt-get update -qq
sudo apt-get install -y -qq fonts-dejavu fonts-noto-core
- uses: Swatinem/rust-cache@v2
- name: Check formatting
run: cargo fmt --all -- --check
- name: Clippy
run: cargo clippy --workspace --all-targets -- -D warnings
- name: Run tests
run: cargo test --workspace
doc:
name: Documentation
needs: changes
if: needs.changes.outputs.rust == 'true' || github.event_name == 'push'
timeout-minutes: 10
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v6
- uses: dtolnay/rust-toolchain@stable
- uses: Swatinem/rust-cache@v2
- name: Build documentation
run: cargo doc --workspace --no-deps
env:
RUSTDOCFLAGS: -D warnings
deny:
name: Licenses & Vulnerabilities
needs: changes
if: needs.changes.outputs.config == 'true' || github.event_name == 'push'
timeout-minutes: 10
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v6
- uses: dtolnay/rust-toolchain@stable
- uses: Swatinem/rust-cache@v2
- uses: taiki-e/install-action@v2
with:
tool: cargo-deny
- name: Check licenses and vulnerabilities
run: cargo deny check