name: CI on: pull_request: push: branches: - main workflow_dispatch: permissions: contents: read jobs: lint: name: lint runs-on: ubuntu-latest steps: - name: Checkout uses: actions/checkout@v4 - name: Install uv uses: astral-sh/setup-uv@v5 - name: Set up Python uses: actions/setup-python@v5 with: python-version: '3.11' - name: Install project dependencies run: uv sync --extra dev - name: Run ruff lint run: uv run ruff check . contract-regression: name: contract-regression runs-on: ubuntu-latest steps: - name: Checkout uses: actions/checkout@v4 - name: Install uv uses: astral-sh/setup-uv@v5 - name: Set up Python uses: actions/setup-python@v5 with: python-version: '3.11' - name: Install project dependencies run: uv sync --extra dev - name: Run MCP response contract regression tests run: uv run pytest tests/test_contract_regression.py pytest-regression: name: pytest-regression runs-on: ubuntu-latest steps: - name: Checkout uses: actions/checkout@v4 - name: Install uv uses: astral-sh/setup-uv@v5 - name: Set up Python uses: actions/setup-python@v5 with: python-version: '3.11' - name: Install project dependencies run: uv sync --extra dev --extra dashboard - name: Run pytest regression suite run: uv run pytest --ignore=tests/test_dashboard_app.py dashboard-app-test: name: dashboard-app-test runs-on: ubuntu-latest steps: - name: Checkout uses: actions/checkout@v4 - name: Install uv uses: astral-sh/setup-uv@v5 - name: Set up Python uses: actions/setup-python@v5 with: python-version: '3.11' - name: Install project dependencies run: uv sync --extra dev --extra dashboard - name: Run Streamlit AppTest with synthetic fixture DB run: uv run pytest tests/test_dashboard_app.py dashboard-http-smoke: name: dashboard-http-smoke runs-on: ubuntu-latest steps: - name: Checkout uses: actions/checkout@v4 - name: Install uv uses: astral-sh/setup-uv@v5 - name: Set up Python uses: actions/setup-python@v5 with: python-version: '3.11' - name: Install project dependencies run: uv sync --extra dashboard - name: Run dashboard HTTP smoke with synthetic fixture DB run: uv run python scripts/ci_dashboard_http_smoke.py --host 127.0.0.1 --port 18501 --timeout 45 db-safety-smoke: name: db-safety-smoke runs-on: ubuntu-latest steps: - name: Checkout uses: actions/checkout@v4 - name: Install uv uses: astral-sh/setup-uv@v5 - name: Set up Python uses: actions/setup-python@v5 with: python-version: '3.11' - name: Install project dependencies run: uv sync - name: Run DB safety smoke with synthetic temp DBs run: uv run python scripts/ci_db_safety_smoke.py --timeout 45