# Runs on pull requests: unit tests plus a compile check. name: CI on: pull_request: paths-ignore: - '*.md' permissions: contents: read env: # Odin release to use (matches `dev-2026-07`, the version used locally). # Bump this when you want CI to track a newer Odin release. ODIN_VERSION: dev-2026-07 jobs: test: name: Unit tests runs-on: ubuntu-latest steps: - uses: actions/checkout@v6 with: submodules: recursive - uses: actions/setup-go@v6 with: go-version: '1.26' - name: Install Rust uses: dtolnay/rust-toolchain@stable - name: Install Odin ${{ env.ODIN_VERSION }} run: scripts/install_odin.sh - name: Install clang run: | if command -v sudo >/dev/null 2>&1; then sudo apt-get update sudo apt-get install -y clang else apt-get update apt-get install -y clang fi - name: Run Odin unit tests run: | mkdir -p lib/local odin test src -collection:lib=lib/local - name: Verify build run: | mkdir -p bin odin build src -collection:lib=lib/local -o:speed -out:bin/desi_explorer - name: Run Go tests run: | cd infra go mod download go test ./... - name: Vet Go code run: | cd infra go vet ./... - name: Test Rust API run: | cd api cargo test - name: Lint Rust API run: | cd api cargo clippy --all-targets -- -D warnings - name: Format-check Rust API run: | cd api cargo fmt --all --check