diff --git a/.drone.yml b/.drone.yml index ac81a3c..f240775 100644 --- a/.drone.yml +++ b/.drone.yml @@ -1,48 +1,74 @@ --- kind: pipeline type: docker -name: python-ci +name: python-uv-ci trigger: event: [ push, pull_request ] +volumes: + - name: uv-cache + temp: {} + - name: uv-home + temp: {} # persists ~/.local (uv tool shims/envs) across steps in this run + steps: - - name: setup+deps - image: python:3.12-slim + - name: lint+typecheck + image: python:3.13-slim + volumes: + - name: uv-cache + path: /root/.cache/uv + - name: uv-home + path: /root/.local environment: UV_NO_SYNC_PROGRESS: "1" 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 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 - fi - - uv pip install pytest pytest-cov mypy ruff - - - name: lint-typecheck - image: python:3.12-slim - commands: - - export PATH="$HOME/.local/bin:$PATH" - - . .venv/bin/activate + - uv python install 3.13 + - uv sync --all-extras --dev + # install CLI tools (ruff not bundled by default) + - uv tool install ruff + - uv tool install mypy + - ruff --version + - mypy --version - ruff check . - mypy --ignore-missing-imports . - name: test - image: python:3.12-slim + image: python:3.13-slim + volumes: + - name: uv-cache + path: /root/.cache/uv + - name: uv-home + path: /root/.local + environment: + UV_NO_SYNC_PROGRESS: "1" 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 + - uv python install 3.13 + - uv sync --all-extras --dev + # tools already installed in previous step; safe to re-run for idempotency + - uv add pytest pytest-cov - 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 + - name: uv-home + path: /root/.local + environment: + UV_NO_SYNC_PROGRESS: "1" + 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 3.13 + - uv sync --all-extras --dev + - uv build + - ls -lh dist