mirror of
https://github.com/Zproger/Aurum.git
synced 2026-10-13 02:56:39 +07:00
ci: добавить GitHub Actions для тестов бэкенда и сборки фронтенда
Раньше пул-реквесты никак не проверялись автоматически — сломанный PR можно было смержить, ничего бы не показало проблему. Теперь на каждый PR и пуш в main гоняются 115 backend-тестов (реальный Postgres в сервис- контейнере, та же схема, что и в tests/README.md) и сборка фронтенда (tsc + vite build).
This commit is contained in:
66
.github/workflows/ci.yml
vendored
Normal file
66
.github/workflows/ci.yml
vendored
Normal file
@@ -0,0 +1,66 @@
|
|||||||
|
name: CI
|
||||||
|
|
||||||
|
# Runs on every pull request and on pushes to main, so a broken PR shows a
|
||||||
|
# red check before it's mergeable (enable "Require status checks to pass"
|
||||||
|
# in branch protection for main to actually block the merge button on it).
|
||||||
|
on:
|
||||||
|
pull_request:
|
||||||
|
push:
|
||||||
|
branches: [main]
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
backend-tests:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
services:
|
||||||
|
# A real Postgres, not sqlite — tests/conftest.py creates/migrates/
|
||||||
|
# drops a dedicated aurum_test database against it, same as the local
|
||||||
|
# `docker compose exec backend pytest` workflow in tests/README.md.
|
||||||
|
postgres:
|
||||||
|
image: postgres:16-alpine
|
||||||
|
env:
|
||||||
|
POSTGRES_USER: aurum
|
||||||
|
POSTGRES_PASSWORD: aurum
|
||||||
|
POSTGRES_DB: aurum
|
||||||
|
ports:
|
||||||
|
- 5432:5432
|
||||||
|
options: >-
|
||||||
|
--health-cmd "pg_isready -U aurum"
|
||||||
|
--health-interval 5s
|
||||||
|
--health-timeout 5s
|
||||||
|
--health-retries 10
|
||||||
|
env:
|
||||||
|
AURUM_POSTGRES_USER: aurum
|
||||||
|
AURUM_POSTGRES_PASSWORD: aurum
|
||||||
|
AURUM_POSTGRES_DB: aurum
|
||||||
|
AURUM_POSTGRES_HOST: localhost
|
||||||
|
AURUM_POSTGRES_PORT: 5432
|
||||||
|
defaults:
|
||||||
|
run:
|
||||||
|
working-directory: backend
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v4
|
||||||
|
- uses: actions/setup-python@v5
|
||||||
|
with:
|
||||||
|
python-version: "3.12"
|
||||||
|
cache: pip
|
||||||
|
cache-dependency-path: backend/requirements-dev.txt
|
||||||
|
- run: pip install -r requirements-dev.txt
|
||||||
|
- run: pytest -v
|
||||||
|
|
||||||
|
frontend-build:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
defaults:
|
||||||
|
run:
|
||||||
|
working-directory: frontend
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v4
|
||||||
|
- uses: actions/setup-node@v4
|
||||||
|
with:
|
||||||
|
node-version: "22"
|
||||||
|
cache: npm
|
||||||
|
cache-dependency-path: frontend/package-lock.json
|
||||||
|
- run: npm ci
|
||||||
|
# tsc -b (type-check) then vite build — catches both a broken build
|
||||||
|
# and a type error a PR might introduce, same as `npm run build`
|
||||||
|
# locally before shipping a change.
|
||||||
|
- run: npm run build
|
||||||
Reference in New Issue
Block a user