name: CI on: push: branches: [main] pull_request: branches: [main] concurrency: group: ci-${{ github.ref }} cancel-in-progress: true jobs: lint: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - name: Set up Python uses: actions/setup-python@v5 with: python-version: "3.12" - name: Install uv uses: astral-sh/setup-uv@v4 - name: Install dependencies run: uv sync --extra dev - name: Ruff check run: uv run ruff check src/ tests/ test: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - name: Set up Python uses: actions/setup-python@v5 with: python-version: "3.12" - name: Install Rust toolchain uses: dtolnay/rust-toolchain@stable - name: Cargo cache uses: actions/cache@v4 with: path: | ~/.cargo/registry ~/.cargo/git rust/target key: rust-${{ runner.os }}-${{ hashFiles('rust/Cargo.lock') }} restore-keys: rust-${{ runner.os }}- - name: Install uv uses: astral-sh/setup-uv@v4 - name: Install dependencies run: uv sync --extra dev - name: Build Rust extension run: uv run maturin develop --manifest-path rust/crates/openjarvis-python/Cargo.toml - name: Run tests run: uv run pytest tests/ -v --tb=short -m "not live and not cloud" rust: runs-on: ubuntu-latest defaults: run: working-directory: rust steps: - uses: actions/checkout@v4 - name: Install Rust toolchain uses: dtolnay/rust-toolchain@stable with: components: clippy - name: Cargo cache uses: actions/cache@v4 with: path: | ~/.cargo/registry ~/.cargo/git rust/target key: rust-${{ runner.os }}-${{ hashFiles('rust/Cargo.lock') }} restore-keys: rust-${{ runner.os }}- - name: Clippy run: cargo clippy --workspace --all-targets -- -D warnings - name: Test run: cargo test --workspace