diff --git a/.drone.yml b/.drone.yml index 01ab1ca..e73cdd3 100644 --- a/.drone.yml +++ b/.drone.yml @@ -1,48 +1,84 @@ --- kind: pipeline type: docker -name: python-ci +name: python-uv-ci trigger: event: [ pull_request ] +# Cache to speed up uv between steps (optional but nice) +volumes: + - name: uv-cache + temp: {} + steps: - - name: setup+deps + - name: lint+typecheck image: python:3.13-slim + volumes: + - name: uv-cache + path: /root/.cache/uv environment: UV_NO_SYNC_PROGRESS: "1" + PYVER: "3.13" commands: - - python -V - apt-get update && apt-get install -y curl ca-certificates && rm -rf /var/lib/apt/lists/* - curl -LsSf https://astral.sh/uv/install.sh | sh - export PATH="$HOME/.local/bin:$PATH" - # pick python version (use .python-version if present, else 3.12) - - PYVER="$( [ -f .python-version ] && cat .python-version || echo 3.12 )" + - uv --version - uv python install "$PYVER" - - uv venv .venv - - . .venv/bin/activate - # install project + dev tools - | if [ -f pyproject.toml ] && grep -q "\[tool\.uv\]" pyproject.toml; then uv sync --all-extras --dev else uv pip install -e ".[dev]" || true - if [ -f requirements.txt ]; then uv pip install -r requirements.txt; fi + [ -f requirements.txt ] && uv pip install -r requirements.txt || true fi - - uv pip install pytest pytest-cov mypy ruff - - - name: lint-typecheck - image: python:3.13-slim - commands: - - export PATH="$HOME/.local/bin:$PATH" - - . .venv/bin/activate - - ruff check . - - mypy --ignore-missing-imports . + - uv pip install ruff mypy pytest pytest-cov + - uv run ruff check . + - uv run mypy --ignore-missing-imports . - name: test image: python:3.13-slim + volumes: + - name: uv-cache + path: /root/.cache/uv + environment: + UV_NO_SYNC_PROGRESS: "1" + PYVER: "3.13" commands: + - apt-get update && apt-get install -y curl ca-certificates && rm -rf /var/lib/apt/lists/* + - curl -LsSf https://astral.sh/uv/install.sh | sh - export PATH="$HOME/.local/bin:$PATH" - - . .venv/bin/activate - - pytest -q --maxfail=1 --disable-warnings --cov --cov-report=term-missing + - uv python install "$PYVER" + - | + if [ -f pyproject.toml ] && grep -q "\[tool\.uv\]" pyproject.toml; then + uv sync --all-extras --dev + else + uv pip install -e ".[dev]" || true + [ -f requirements.txt ] && uv pip install -r requirements.txt || true + fi + - uv pip install pytest pytest-cov + - uv run pytest -q --maxfail=1 --disable-warnings --cov --cov-report=term-missing + - name: build-wheel + image: python:3.13-slim + volumes: + - name: uv-cache + path: /root/.cache/uv + environment: + UV_NO_SYNC_PROGRESS: "1" + PYVER: "3.13" + commands: + - apt-get update && apt-get install -y curl ca-certificates && rm -rf /var/lib/apt/lists/* + - curl -LsSf https://astral.sh/uv/install.sh | sh + - export PATH="$HOME/.local/bin:$PATH" + - uv python install "$PYVER" + - | + if [ -f pyproject.toml ] && grep -q "\[tool\.uv\]" pyproject.toml; then + uv sync --all-extras --dev + else + uv pip install -e ".[dev]" || true + [ -f requirements.txt ] && uv pip install -r requirements.txt || true + fi + - uv build + - ls -lh dist