ci: add Forgejo CI workflow — backend lint+tests, frontend build

Backend job spins up Postgres+pgvector and Redis as services, runs ruff,
applies the initial migration to confirm it's clean, and runs pytest.
Frontend job runs vue-tsc and vite build.

Requires a runner labeled "fabledcurator-ci" with Python 3.14, ruff,
and Node 22 pre-installed. Integration tests run locally via
docker-compose with testing.Short() gating per FabledRulebook
verification.md.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-05-14 07:52:30 -04:00
parent 37e97d52ee
commit 8cbe963b37
+66
View File
@@ -0,0 +1,66 @@
name: CI
on:
push:
branches: [dev, main]
pull_request:
branches: [main]
jobs:
backend-lint-and-test:
# Runner must have Python 3.14 + ruff installed. Provision a runner
# labeled "fabledcurator-ci" with Python 3.14, ruff, and Node 22.
runs-on: fabledcurator-ci
services:
postgres:
image: pgvector/pgvector:pg16
env:
POSTGRES_USER: fabledcurator
POSTGRES_PASSWORD: ci_test_password
POSTGRES_DB: fabledcurator_test
options: >-
--health-cmd "pg_isready -U fabledcurator"
--health-interval 10s
--health-timeout 5s
--health-retries 5
redis:
image: redis:7-alpine
options: >-
--health-cmd "redis-cli ping"
--health-interval 10s
--health-timeout 5s
--health-retries 5
env:
DB_USER: fabledcurator
DB_PASSWORD: ci_test_password
DB_HOST: postgres
DB_PORT: "5432"
DB_NAME: fabledcurator_test
CELERY_BROKER_URL: redis://redis:6379/0
CELERY_RESULT_BACKEND: redis://redis:6379/0
SECRET_KEY: ci_test_secret_not_for_prod
steps:
- uses: actions/checkout@v4
- name: Install Python deps
run: pip install -r requirements.txt pytest pytest-asyncio "ruff>=0.9,<1.0"
- name: Ruff lint
run: ruff check backend/ tests/ alembic/
- name: Alembic upgrade (smoke)
run: alembic upgrade head
- name: Pytest (unit only)
run: pytest tests/ -v
frontend-build:
runs-on: fabledcurator-ci
defaults:
run:
working-directory: frontend
steps:
- uses: actions/checkout@v4
- run: npm ci --no-audit --no-fund
- run: npm run check
- run: npm run build