|
name: CI |
|
|
|
on: |
|
push: |
|
branches: |
|
- main |
|
pull_request: |
|
branches: |
|
- main |
|
|
|
concurrency: |
|
group: ${{ github.head_ref || github.run_id }} |
|
cancel-in-progress: true |
|
|
|
jobs: |
|
lint: |
|
runs-on: ubuntu-latest |
|
steps: |
|
- uses: actions/checkout@v6 |
|
- uses: astral-sh/setup-uv@v8.2.0 |
|
- run: uv python install 3.14 |
|
- run: | |
|
uv sync --all-extras --all-groups --frozen --no-install-project |
|
uv run ruff format . --check |
|
uv run ruff check . --no-fix |
|
uv run ty check |
|
|
|
pytest: |
|
runs-on: ubuntu-latest |
|
services: |
|
postgres: |
|
image: postgres:latest |
|
env: |
|
POSTGRES_DB: postgres |
|
POSTGRES_PASSWORD: password |
|
POSTGRES_USER: postgres |
|
ports: |
|
- 5432:5432 |
|
# Set health checks to wait until postgres has started |
|
options: >- |
|
--health-cmd pg_isready |
|
--health-interval 10s |
|
--health-timeout 5s |
|
--health-retries 5 |
|
steps: |
|
- uses: actions/checkout@v6 |
|
- uses: astral-sh/setup-uv@v8.2.0 |
|
- run: uv python install 3.14 |
|
- run: | |
|
uv sync --all-extras --all-groups --frozen --no-install-project |
|
uv run alembic upgrade head |
|
uv run pytest . --cov=. --cov-report xml |
|
env: |
|
SERVICE_ENVIRONMENT: ci |
|
PYTHONDONTWRITEBYTECODE: 1 |
|
PYTHONUNBUFFERED: 1 |
|
DB_DSN: postgresql+asyncpg://postgres:password@127.0.0.1/postgres |