WIP
The INTERSECT Campaign orchestrator is responsible for executing INTERSECT campaigns.
Make sure you have UV installed (Instructions)
uv venv .venvsource .venv/bin/activateuv sync --all-groups --all-extras --all-packagesuv run pre-commit installcp .env.example .env- will need to do this each time.env.exampleupdates from remote
docker compose up -d- configures a message broker setup if you don't already have oneuv run python -m intersect_orchestrator
ghcr.io/intersect-sdk/campaign-orchestrator:latest- base image (no optional DB drivers)ghcr.io/intersect-sdk/campaign-orchestrator-backends-full:latest- includes both MongoDB and PostgreSQL optional dependencies
The Helm chart defaults to the campaign-orchestrator-backends-full image so
all repository backend modes are available.
The CI workflow (.github/workflows/full-test-suite.yaml) runs integration tests
against RabbitMQ, MongoDB, PostgreSQL, the orchestrator, and the random-number-service.
You can reproduce this locally in three commands using docker-compose.
- Docker & Docker Compose
- uv
libpq-dev(or equivalent) for the PostgreSQL driver:# Debian / Ubuntu sudo apt-get install -y libpq-dev # macOS brew install libpq
uv sync --dev --extra mongo --extra postgresdocker compose up -d --build --waitThis builds and starts the broker, MongoDB, PostgreSQL, the orchestrator, and
the random-number-service. The --wait flag blocks until every service passes
its health check (equivalent to the CI timeout 120 … until healthy loop).
set -a && source .env.test && set +a && uv run pytest tests/integration --cov=intersect_orchestrator --cov-report=term-missing --cov-report=htmlThe .env.test file contains the environment variables that point the test
runner at the local docker-compose services (broker credentials, DB URIs,
orchestrator host/port, etc.). It mirrors the CI job exactly.
docker compose down -v| Step | Command |
|---|---|
| Install deps | uv sync --dev --extra mongo --extra postgres |
| Start services | docker compose up -d --build --wait |
| Run tests | set -a && source .env.test && set +a && uv run pytest tests/integration --cov=intersect_orchestrator --cov-report=term-missing |
| Tear down | docker compose down -v |