Compare commits
3
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
da01066d5d | ||
|
|
29f9cbe538 | ||
|
|
12b2ca22a5 |
@@ -0,0 +1,72 @@
|
|||||||
|
name: CI
|
||||||
|
|
||||||
|
# Гейт качества на каждый PR и push в dev/main — как в Vobot (.gitea/workflows/backend.yml).
|
||||||
|
# CD (.gitea/workflows/deploy.yml) тесты не гоняет: они прошли здесь, на PR.
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches: [dev, main]
|
||||||
|
pull_request:
|
||||||
|
branches: [dev, main]
|
||||||
|
|
||||||
|
concurrency:
|
||||||
|
group: ci-${{ github.ref }}
|
||||||
|
cancel-in-progress: true
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
lint-and-test:
|
||||||
|
# Имя джоба — контекст статуса в PR; если включать branch protection, требовать именно его.
|
||||||
|
name: ruff · mypy · pytest
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
|
||||||
|
services:
|
||||||
|
postgres:
|
||||||
|
image: postgres:16-alpine
|
||||||
|
env:
|
||||||
|
POSTGRES_DB: tgit_test
|
||||||
|
POSTGRES_USER: tgit
|
||||||
|
POSTGRES_PASSWORD: tgit
|
||||||
|
options: >-
|
||||||
|
--health-cmd pg_isready
|
||||||
|
--health-interval 5s
|
||||||
|
--health-timeout 5s
|
||||||
|
--health-retries 10
|
||||||
|
# без маппинга портов: act_runner запускает job в контейнере, сервис доступен по имени `postgres`
|
||||||
|
# (опыт Vobot: маппинг 5432 на хост конфликтует с postgres самого Gitea)
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v4
|
||||||
|
|
||||||
|
- name: Setup Python 3.12
|
||||||
|
uses: actions/setup-python@v5
|
||||||
|
with:
|
||||||
|
python-version: "3.12"
|
||||||
|
|
||||||
|
- name: Install uv
|
||||||
|
# pip, а не astral-sh/setup-uv: на self-hosted Gitea экшен ходит в GitHub API и падает (опыт Vobot)
|
||||||
|
run: pip install uv
|
||||||
|
|
||||||
|
- name: Install deps
|
||||||
|
run: uv sync --frozen
|
||||||
|
|
||||||
|
- name: Ruff
|
||||||
|
run: |
|
||||||
|
uv run ruff check .
|
||||||
|
uv run ruff format --check .
|
||||||
|
|
||||||
|
- name: Mypy
|
||||||
|
run: uv run mypy
|
||||||
|
|
||||||
|
- name: Migrations on PostgreSQL — up, down, up
|
||||||
|
# pytest гоняет схему на SQLite; здесь — настоящий Postgres: JSONB, BIGINT, CHECK, откат
|
||||||
|
env:
|
||||||
|
DATABASE_URL: postgresql+asyncpg://tgit:tgit@postgres:5432/tgit_test
|
||||||
|
run: |
|
||||||
|
uv run alembic upgrade head
|
||||||
|
uv run alembic downgrade base
|
||||||
|
uv run alembic upgrade head
|
||||||
|
|
||||||
|
- name: Pytest (+ порог покрытия из pyproject)
|
||||||
|
run: |
|
||||||
|
git config --global user.name ci
|
||||||
|
git config --global user.email ci@ci
|
||||||
|
uv run pytest -q --cov --cov-report=term
|
||||||
Reference in New Issue
Block a user