name: CI
on:
push:
branches:
- main
pull_request:
schedule:
- cron: "0 17 * * 5"
env:
FORCE_JAVASCRIPT_ACTIONS_TO_NODE24: true
jobs:
rust-checks:
name: Rust Checks (Format, Clippy, Test)
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Install Rust toolchain
uses: dtolnay/rust-toolchain@stable
with:
components: rustfmt, clippy
- name: Rust Cache
uses: Swatinem/rust-cache@v2
- name: Check Formatting
run: cargo fmt --all -- --check
- name: Run Clippy
run: cargo clippy --all-targets --all-features -- -D warnings
- name: Run Tests
run: cargo test --all-targets --all-features
ui-checks:
name: UI Checks (Typecheck)
runs-on: ubuntu-latest
defaults:
run:
working-directory: ./ui
steps:
- uses: actions/checkout@v4
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: "24"
cache: "npm"
cache-dependency-path: "./ui/package-lock.json"
- name: Install dependencies
run: npm ci
- name: Run Typecheck
run: npm run typecheck
release-plz:
name: Release-plz
runs-on: ubuntu-latest
needs: [rust-checks, ui-checks]
if: github.ref == 'refs/heads/main' && (github.event_name == 'push' || github.event_name == 'schedule')
steps:
- name: Checkout repository
uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Install Rust toolchain
uses: dtolnay/rust-toolchain@stable
- name: Run release-plz
uses: MarcoIeni/release-plz-action@v0.5
env:
GITHUB_TOKEN: ${{ secrets.GH_RELEASE_PLZ_TOKEN }}
CARGO_REGISTRY_TOKEN: ${{ secrets.CARGO_REGISTRY_TOKEN }}