feat: decoupled into core; tui; mcp components; full admin control over kagan board via admin roled mcp #151
Workflow file for this run
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: CI | |
| on: | |
| pull_request: | |
| paths-ignore: | |
| - "docs/**" | |
| - "*.md" | |
| - ".github/assets/**" | |
| - "mkdocs.yml" | |
| - ".readthedocs.yaml" | |
| push: | |
| branches: [main] | |
| paths-ignore: | |
| - "docs/**" | |
| - "*.md" | |
| - ".github/assets/**" | |
| - "mkdocs.yml" | |
| - ".readthedocs.yaml" | |
| jobs: | |
| lint: | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v6 | |
| - uses: astral-sh/setup-uv@v7 | |
| with: | |
| enable-cache: true | |
| - run: uv sync --dev | |
| - run: uv run poe lint | |
| - run: uv run poe typecheck | |
| test: | |
| needs: lint | |
| timeout-minutes: 15 | |
| runs-on: ${{ matrix.os }} | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| os: [ubuntu-latest, macos-latest] | |
| steps: | |
| - uses: actions/checkout@v6 | |
| - name: Install system dependencies | |
| run: | | |
| if [ "$RUNNER_OS" = "Linux" ]; then | |
| sudo apt-get update | |
| sudo apt-get install -y tmux git | |
| elif [ "$RUNNER_OS" = "macOS" ]; then | |
| brew install tmux | |
| fi | |
| - name: Configure git for tests | |
| run: | | |
| git config --global user.email "test@kagan.local" | |
| git config --global user.name "Kagan Test" | |
| git config --global commit.gpgsign false | |
| - uses: astral-sh/setup-uv@v7 | |
| with: | |
| enable-cache: true | |
| - run: uv sync --dev | |
| - name: Test (with coverage) | |
| if: github.ref == 'refs/heads/main' | |
| run: uv run pytest tests/ -m "not snapshot" -n auto --cov=src/kagan --cov-report=term-missing | |
| - name: Test | |
| if: github.ref != 'refs/heads/main' | |
| run: uv run pytest tests/ -m "not snapshot" -n auto | |
| test-windows: | |
| needs: lint | |
| timeout-minutes: 15 | |
| runs-on: windows-latest | |
| # Windows tests are advisory — xdist/asyncio teardown can cause spurious | |
| # KeyboardInterrupt on Windows, so failures here must not block the pipeline. | |
| continue-on-error: true | |
| steps: | |
| - uses: actions/checkout@v6 | |
| - name: Install system dependencies | |
| run: choco install git -y | |
| - name: Configure git for tests | |
| run: | | |
| git config --global user.email "test@kagan.local" | |
| git config --global user.name "Kagan Test" | |
| git config --global commit.gpgsign false | |
| - uses: astral-sh/setup-uv@v7 | |
| with: | |
| enable-cache: true | |
| - run: uv sync --dev | |
| - name: Test (sequential, with coverage) | |
| id: wintest | |
| if: github.ref == 'refs/heads/main' | |
| run: uv run pytest tests/ -m "not snapshot" -n 0 --cov=src/kagan --cov-report=term-missing | |
| - name: Test (sequential) | |
| id: wintest_pr | |
| if: github.ref != 'refs/heads/main' | |
| run: uv run pytest tests/ -m "not snapshot" -n 0 | |
| - name: Warn on failure | |
| if: failure() | |
| run: echo "::warning::Windows tests failed — this is advisory and does not block the pipeline." | |
| snapshot: | |
| needs: lint | |
| if: github.ref == 'refs/heads/main' | |
| runs-on: ${{ matrix.os }} | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| os: [macos-latest, ubuntu-latest, windows-latest] | |
| steps: | |
| - uses: actions/checkout@v6 | |
| - name: Install system dependencies (Linux) | |
| if: runner.os == 'Linux' | |
| run: | | |
| sudo apt-get update | |
| sudo apt-get install -y tmux git | |
| - name: Install system dependencies (macOS) | |
| if: runner.os == 'macOS' | |
| run: brew install tmux | |
| - name: Install system dependencies (Windows) | |
| if: runner.os == 'Windows' | |
| run: choco install git -y | |
| - name: Configure git for tests | |
| run: | | |
| git config --global user.email "test@kagan.local" | |
| git config --global user.name "Kagan Test" | |
| git config --global commit.gpgsign false | |
| - uses: astral-sh/setup-uv@v7 | |
| with: | |
| enable-cache: true | |
| - run: uv sync --dev | |
| - name: Snapshot tests | |
| run: uv run pytest tests/tui/snapshot/ -n 0 -v | |
| test-all-platforms: | |
| needs: lint | |
| if: github.ref == 'refs/heads/main' | |
| runs-on: ${{ matrix.os }} | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| os: [ubuntu-24.04-arm, macos-15-intel] | |
| steps: | |
| - uses: actions/checkout@v6 | |
| - name: Install system dependencies | |
| run: | | |
| if [ "$RUNNER_OS" = "Linux" ]; then | |
| sudo apt-get update | |
| sudo apt-get install -y tmux git | |
| elif [ "$RUNNER_OS" = "macOS" ]; then | |
| brew install tmux | |
| fi | |
| - name: Configure git for tests | |
| run: | | |
| git config --global user.email "test@kagan.local" | |
| git config --global user.name "Kagan Test" | |
| git config --global commit.gpgsign false | |
| - uses: astral-sh/setup-uv@v7 | |
| with: | |
| enable-cache: true | |
| - run: uv sync --dev | |
| # Exclude snapshot tests from matrix runs; covered by dedicated job. | |
| - run: uv run pytest tests/ -m "not snapshot" -n auto --cov=src/kagan --cov-report=term-missing |