diff --git a/.forgejo/workflows/ci.yml b/.forgejo/workflows/ci.yml new file mode 100644 index 0000000..28ca052 --- /dev/null +++ b/.forgejo/workflows/ci.yml @@ -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