Files
imSp4rky 9f82777394 ci: run the unit suite in parallel and keep it off the network
Test servers shut down without the 0.5s poll wait, unit tests refuse non-loopback lookups, and three load-sensitive tests are steadied. Pushes to dev test Python 3.11 only; the docs job builds with uv.
2026-10-13 19:31:23 -06:00

83 lines
2.1 KiB
YAML

name: ci
on:
push:
branches: [dev, main]
paths-ignore:
- "docs/**"
- "overrides/**"
- "mkdocs.yml"
- "**.md"
pull_request:
paths-ignore:
- "docs/**"
- "overrides/**"
- "mkdocs.yml"
- "**.md"
workflow_dispatch:
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
jobs:
lint:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v7
- uses: astral-sh/setup-uv@v8.3.2
with:
enable-cache: true
- run: uv sync --locked
- name: Ruff lint
run: uv run ruff check .
- name: Ruff format
run: uv run ruff format --check .
- name: Import order
run: uv run isort --check-only unshackle tests --skip-glob "*/services/*"
test:
strategy:
fail-fast: false
matrix:
os: [ubuntu-latest, windows-latest, macos-latest]
python-version: ${{ fromJSON(github.event_name == 'push' && github.ref == 'refs/heads/dev' && '["3.11"]' || '["3.11", "3.14"]') }}
runs-on: ${{ matrix.os }}
timeout-minutes: 15
env:
UV_NO_SYNC: "1"
steps:
- uses: actions/checkout@v7
- uses: astral-sh/setup-uv@v8.3.2
with:
python-version: ${{ matrix.python-version }}
enable-cache: true
- name: Install
run: uv sync --locked --no-default-groups --group test
- name: CLI loads
run: uv run unshackle --help
- name: Tests
run: uv run pytest -n auto --dist worksteal -m "not live and not slow"
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v7
- uses: astral-sh/setup-uv@v8.3.2
with:
enable-cache: true
cache-suffix: build
- name: Build sdist and wheel
run: uv build
- name: Smoke-test wheel
run: uv run --isolated --no-project --with dist/*.whl unshackle --help
dependency-review:
if: github.event_name == 'pull_request'
runs-on: ubuntu-latest
permissions:
contents: read
steps:
- uses: actions/checkout@v7
- uses: actions/dependency-review-action@v5.0.0