mirror of
https://github.com/aljazceru/turso.git
synced 2025-12-24 19:44:21 +01:00
Test with the earliest and latest supported versions, but skip the ones in the middle to reduce our Python CI build matrix.
209 lines
5.2 KiB
YAML
209 lines
5.2 KiB
YAML
name: Python
|
|
|
|
on:
|
|
push:
|
|
branches:
|
|
- main
|
|
tags:
|
|
- v*
|
|
pull_request:
|
|
branches:
|
|
- main
|
|
|
|
env:
|
|
working-directory: bindings/python
|
|
PIP_DISABLE_PIP_VERSION_CHECK: "true"
|
|
|
|
jobs:
|
|
configure-strategy:
|
|
runs-on: blacksmith-4vcpu-ubuntu-2404
|
|
outputs:
|
|
python-versions: ${{ steps.gen-matrix.outputs.python-versions }}
|
|
steps:
|
|
- id: gen-matrix
|
|
run: |
|
|
echo "python-versions=[\"3.9\",\"3.13\"]" >> $GITHUB_OUTPUT
|
|
|
|
test:
|
|
needs: configure-strategy
|
|
strategy:
|
|
matrix:
|
|
os:
|
|
- blacksmith-4vcpu-ubuntu-2404
|
|
- macos-latest
|
|
- windows-latest
|
|
python-version: ${{ fromJson(needs.configure-strategy.outputs.python-versions) }}
|
|
runs-on: ${{ matrix.os }}
|
|
|
|
defaults:
|
|
run:
|
|
working-directory: ${{ env.working-directory }}
|
|
|
|
steps:
|
|
- name: Checkout code
|
|
uses: actions/checkout@v4
|
|
|
|
- name: Install Rust (stable)
|
|
uses: dtolnay/rust-toolchain@stable
|
|
|
|
- name: Set up Python ${{ matrix.python-version }}
|
|
uses: useblacksmith/setup-python@v6
|
|
with:
|
|
python-version: ${{ matrix.python-version }}
|
|
|
|
- name: Install uv
|
|
uses: useblacksmith/setup-uv@v4
|
|
with:
|
|
enable-cache: true
|
|
|
|
- name: Install the project
|
|
run: uv sync --all-extras --dev --all-packages
|
|
|
|
- name: Run Pytest
|
|
run: uv run pytest tests
|
|
|
|
lint:
|
|
runs-on: blacksmith-4vcpu-ubuntu-2404
|
|
|
|
steps:
|
|
- name: Checkout code
|
|
uses: actions/checkout@v4
|
|
|
|
- name: Set up Python
|
|
uses: useblacksmith/setup-python@v6
|
|
|
|
- name: Install uv
|
|
uses: useblacksmith/setup-uv@v4
|
|
with:
|
|
enable-cache: true
|
|
|
|
- name: Install the project
|
|
run: uv sync --all-extras --dev --all-packages
|
|
|
|
- name: Ruff lint
|
|
run: uvx ruff check
|
|
|
|
linux:
|
|
runs-on: blacksmith-4vcpu-ubuntu-2404
|
|
defaults:
|
|
run:
|
|
working-directory: ${{ env.working-directory }}
|
|
strategy:
|
|
matrix:
|
|
target: [x86_64]
|
|
steps:
|
|
- uses: actions/checkout@v3
|
|
- uses: useblacksmith/setup-python@v6
|
|
with:
|
|
python-version: '3.10'
|
|
- name: Build wheels
|
|
uses: PyO3/maturin-action@v1
|
|
with:
|
|
working-directory: ${{ env.working-directory }}
|
|
target: ${{ matrix.target }}
|
|
args: --release --out dist --find-interpreter
|
|
sccache: 'true'
|
|
manylinux: auto
|
|
- name: Upload wheels
|
|
uses: actions/upload-artifact@v4
|
|
with:
|
|
name: wheels-linux
|
|
path: bindings/python/dist
|
|
|
|
macos-x86_64:
|
|
runs-on: macos-13
|
|
defaults:
|
|
run:
|
|
working-directory: ${{ env.working-directory }}
|
|
strategy:
|
|
matrix:
|
|
target: [x86_64]
|
|
steps:
|
|
- uses: actions/checkout@v3
|
|
- uses: actions/setup-python@v4
|
|
with:
|
|
python-version: '3.10'
|
|
- name: Build wheels
|
|
uses: PyO3/maturin-action@v1
|
|
env:
|
|
CXX: clang++
|
|
CC: clang
|
|
with:
|
|
working-directory: ${{ env.working-directory }}
|
|
target: ${{ matrix.target }}
|
|
args: --release --out dist --find-interpreter
|
|
sccache: 'true'
|
|
- name: Upload wheels
|
|
uses: actions/upload-artifact@v4
|
|
with:
|
|
name: wheels-macos-x86
|
|
path: bindings/python/dist
|
|
|
|
macos-arm64:
|
|
runs-on: macos-14
|
|
defaults:
|
|
run:
|
|
working-directory: ${{ env.working-directory }}
|
|
strategy:
|
|
matrix:
|
|
target: [aarch64]
|
|
steps:
|
|
- uses: actions/checkout@v3
|
|
- uses: actions/setup-python@v4
|
|
env:
|
|
CXX: clang++
|
|
CC: clang
|
|
with:
|
|
python-version: '3.10'
|
|
- name: Build wheels
|
|
uses: PyO3/maturin-action@v1
|
|
with:
|
|
working-directory: ${{ env.working-directory }}
|
|
target: ${{ matrix.target }}
|
|
args: --release --out dist --find-interpreter
|
|
sccache: 'true'
|
|
- name: Upload wheels
|
|
uses: actions/upload-artifact@v4
|
|
with:
|
|
name: wheels-macos-arm64
|
|
path: bindings/python/dist
|
|
|
|
sdist:
|
|
runs-on: blacksmith-4vcpu-ubuntu-2404
|
|
defaults:
|
|
run:
|
|
working-directory: ${{ env.working-directory }}
|
|
steps:
|
|
- uses: actions/checkout@v3
|
|
- name: Build sdist
|
|
uses: PyO3/maturin-action@v1
|
|
with:
|
|
working-directory: ${{ env.working-directory }}
|
|
command: sdist
|
|
args: --out dist
|
|
- name: Upload sdist
|
|
uses: actions/upload-artifact@v4
|
|
with:
|
|
name: wheels-sdist
|
|
path: bindings/python/dist
|
|
|
|
release:
|
|
name: Release
|
|
runs-on: blacksmith-4vcpu-ubuntu-2404
|
|
if: "startsWith(github.ref, 'refs/tags/')"
|
|
needs: [linux, macos-arm64, macos-x86_64, sdist]
|
|
steps:
|
|
- uses: actions/download-artifact@v4
|
|
with:
|
|
path: bindings/python/dist
|
|
pattern: wheels-*
|
|
merge-multiple: true
|
|
- name: Publish to PyPI
|
|
uses: PyO3/maturin-action@v1
|
|
env:
|
|
MATURIN_PYPI_TOKEN: ${{ secrets.PYPI_API_TOKEN }}
|
|
with:
|
|
working-directory: ${{ env.working-directory }}
|
|
command: upload
|
|
args: --skip-existing dist/*
|