name: CI
on:
push:
branches: [main]
pull_request:
merge_group:
types: [checks_requested]
permissions:
contents: read
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: ${{ github.ref != 'refs/heads/main' }}
jobs:
test:
name: Test Suite
runs-on: ubuntu-24.04
env:
LLVM_SYS_211_PREFIX: "/usr/lib/llvm-21"
MLIR_SYS_210_PREFIX: "/usr/lib/llvm-21"
TABLEGEN_210_PREFIX: "/usr/lib/llvm-21"
steps:
- uses: actions/checkout@v6
- name: Install LLVM Dependencies
uses: ./.github/actions/install-llvm-deps
- name: Install Rust
uses: dtolnay/rust-toolchain@1.94.0
- name: Rust Cache
uses: Swatinem/rust-cache@v2
- name: Install testing tools
uses: taiki-e/install-action@v2
with:
tool: cargo-nextest
- name: Run tests
run: make test
test-macos:
name: Test Suite (macOS)
runs-on: macos-14
env:
LIBRARY_PATH: /opt/homebrew/lib
steps:
- uses: actions/checkout@v6
- name: Install LLVM Dependencies
run: brew install llvm@21
- name: Set LLVM environment
run: |
echo "LLVM_SYS_211_PREFIX=$(brew --prefix llvm@21)" >> $GITHUB_ENV
echo "MLIR_SYS_210_PREFIX=$(brew --prefix llvm@21)" >> $GITHUB_ENV
echo "TABLEGEN_210_PREFIX=$(brew --prefix llvm@21)" >> $GITHUB_ENV
- name: Install Rust
uses: dtolnay/rust-toolchain@1.94.0
- name: Rust Cache
uses: Swatinem/rust-cache@v2
- name: Install testing tools
uses: taiki-e/install-action@v2
with:
tool: cargo-nextest
- uses: Homebrew/actions/setup-homebrew@master
- name: Run tests
run: make test
clippy:
name: Linting check
runs-on: ubuntu-24.04
env:
LLVM_SYS_211_PREFIX: "/usr/lib/llvm-21"
MLIR_SYS_210_PREFIX: "/usr/lib/llvm-21"
TABLEGEN_210_PREFIX: "/usr/lib/llvm-21"
steps:
- uses: actions/checkout@v6
- name: Install LLVM Dependencies
uses: ./.github/actions/install-llvm-deps
- name: Install Rust
uses: dtolnay/rust-toolchain@1.94.0
with:
components: rustfmt, clippy
- name: Rust Cache
uses: Swatinem/rust-cache@v2
- name: Run make check
run: make check
format:
name: Check Formatting
runs-on: ubuntu-24.04
steps:
- uses: actions/checkout@v6
- name: Install Rust
uses: dtolnay/rust-toolchain@1.94.0
with:
components: rustfmt
- name: Check formatting
run: cargo fmt --all -- --check
unused-deps:
name: Check Unused Dependencies
runs-on: ubuntu-24.04
steps:
- uses: actions/checkout@v6
- name: Install Rust
uses: dtolnay/rust-toolchain@1.94.0
- name: Check for unused dependencies
uses: bnjbvr/cargo-machete@main
coverage:
name: Coverage
runs-on: ubuntu-24.04
env:
LLVM_SYS_211_PREFIX: "/usr/lib/llvm-21"
MLIR_SYS_210_PREFIX: "/usr/lib/llvm-21"
TABLEGEN_210_PREFIX: "/usr/lib/llvm-21"
steps:
- uses: actions/checkout@v6
- name: Install LLVM Dependencies
uses: ./.github/actions/install-llvm-deps
- name: Install Rust
uses: dtolnay/rust-toolchain@1.94.0
- name: Rust Cache
uses: Swatinem/rust-cache@v2
- name: Install testing tools
uses: taiki-e/install-action@v2
with:
tool: cargo-nextest,cargo-llvm-cov
- name: Generate coverage report
run: cargo llvm-cov nextest --workspace --verbose --lcov --output-path lcov.info
- name: Upload coverage to Codecov
uses: codecov/codecov-action@v4
with:
token: ${{ secrets.CODECOV_TOKEN }}
files: lcov.info
fail_ci_if_error: false
verbose: true