Continuous integration

Each product repo has its own GitHub Actions workflow on push / pull_request to main. agency-workspace has no workflow — it records compatible submodule SHAs.

Overview

Repository

Workflow

Jobs

agency-django

.github/workflows/tests.yml

pytest: collect-only sanity → full suite + --cov-fail-under=35

agency-ui

.github/workflows/tests.yml

vitest + typecheck + build (all required)

agency-server

—

Docs built locally via ./run document; Compose smoke is manual / todo

Backend job (agency-django)

  1. actions/checkout@v4 — single repo only

  2. Python 3.11, pip install -e ".[dev]"

  3. pytest --collect-only -q

  4. pytest -v --cov=agency --cov-report=term-missing --cov-fail-under=35

No Docker, Ollama, or Tavily in CI. Channels tests use in-memory layer. Standalone pytest wires an in-memory Celery app via tests/celery_app.py so .delay() does not require Redis.

Frontend job (agency-ui)

  1. actions/checkout@v4

  2. Node 22, npm ci

  3. npm test + npm run build

  4. Separate typecheck job (vue-tsc; required, blocks main)

Private repos

agency-django CI must not checkout sibling private repos. Standalone tests/settings.py replaces server.settings for pytest.

Publishing UI

Not part of CI today. Manual / umbrella flow:

  1. Commit source in agency-ui

  2. npm run build:django → commit dist in agency-django

  3. ./dev ui → collectstatic in running stack

Submodule pointers in agency-workspace document which commits ship together.

Local parity checklist

./dev up
./dev test-all          # backend container + frontend
./dev test-docker       # optional stack smoke

See Backend (pytest) and Frontend (Vitest) for details.