cf2130090e
* fix(ci): build the workspace once per e2e job * perf(ci): cache rust compilations with sccache * fix(ci): stop sccache idling out mid-compile and cancel superseded runs * fix(tests): poll for the new root index instead of a fixed sleep * perf(ci): cache release target builds with sccache
71 lines
1.8 KiB
YAML
71 lines
1.8 KiB
YAML
name: Python CI
|
|
|
|
on:
|
|
push:
|
|
branches: [main]
|
|
paths-ignore:
|
|
- '**.md'
|
|
- 'doc/**'
|
|
pull_request:
|
|
branches: [main]
|
|
paths-ignore:
|
|
- '**.md'
|
|
- 'doc/**'
|
|
|
|
env:
|
|
CARGO_TERM_COLOR: always
|
|
MACOSX_DEPLOYMENT_TARGET: "13.0"
|
|
CARGO_PROFILE_RELEASE_LTO: thin
|
|
CARGO_PROFILE_RELEASE_CODEGEN_UNITS: 16
|
|
SCCACHE_GHA_ENABLED: "true"
|
|
RUSTC_WRAPPER: sccache
|
|
# fff-search alone exceeds the 600s default on windows, and the server sees
|
|
# no new requests while it compiles, so it would idle out mid-unit.
|
|
SCCACHE_IDLE_TIMEOUT: "0"
|
|
|
|
concurrency:
|
|
group: ${{ github.workflow }}-${{ github.ref }}
|
|
cancel-in-progress: ${{ github.ref != 'refs/heads/main' && !startsWith(github.ref, 'refs/tags/') }}
|
|
|
|
jobs:
|
|
test:
|
|
name: Python bindings (${{ matrix.os }})
|
|
runs-on: ${{ matrix.os }}
|
|
strategy:
|
|
fail-fast: false
|
|
matrix:
|
|
os: [ubuntu-latest, macos-latest, windows-latest]
|
|
|
|
steps:
|
|
- uses: actions/checkout@v5
|
|
with:
|
|
persist-credentials: false
|
|
|
|
- name: Install Rust
|
|
uses: actions-rust-lang/setup-rust-toolchain@v1.15.4
|
|
with:
|
|
cache: true
|
|
cache-on-failure: true
|
|
cache-key: "v1-rust-python"
|
|
|
|
- name: Setup sccache
|
|
uses: mozilla-actions/sccache-action@v0.0.11
|
|
with:
|
|
version: v0.17.0
|
|
|
|
- name: Setup uv
|
|
uses: astral-sh/setup-uv@v5
|
|
with:
|
|
version: "0.11.14"
|
|
enable-cache: true
|
|
|
|
- name: Build and test Python bindings
|
|
working-directory: packages/fff-python
|
|
shell: bash
|
|
run: |
|
|
# --no-install-project: uv would otherwise build the wheel via
|
|
# maturin's PEP 517 backend, then `maturin develop` builds it again.
|
|
uv sync --all-extras --no-install-project
|
|
uv run maturin develop --release
|
|
uv run pytest -v
|