feat(jrag): ship agent-facing jrag CLI (JRAG-CLI plan, 9 PRs) #662
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: test | |
| on: | |
| pull_request: | |
| push: | |
| branches: [master] | |
| jobs: | |
| test: | |
| name: test (${{ matrix.os }}) | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| # Ubuntu is the required gate (blocks merges). macOS + Windows run on | |
| # every code-change PR to surface platform regressions, but stay | |
| # non-blocking (continue-on-error below) until each has been green | |
| # across several merges — the fast test suite exercises the native | |
| # kuzu/ladybug graph layer, which had never been run on these OSes | |
| # before this matrix. Promote an OS to a hard gate by dropping it from | |
| # the continue-on-error expression once it is reliably green. | |
| os: [ubuntu-latest, macos-latest, windows-latest] | |
| continue-on-error: ${{ matrix.os != 'ubuntu-latest' }} | |
| runs-on: ${{ matrix.os }} | |
| steps: | |
| - uses: actions/checkout@v4 | |
| with: | |
| fetch-depth: 0 | |
| - uses: dorny/paths-filter@v3 | |
| id: changes | |
| with: | |
| filters: | | |
| docs: | |
| - '**/*.md' | |
| - '**/*.mdc' | |
| - 'docs/**' | |
| - 'propose/**' | |
| - 'plans/**' | |
| - 'skills/**' | |
| - '.agents/**' | |
| - 'AGENTS.md' | |
| - 'README.md' | |
| - 'CODEBASE_REQUIREMENTS.md' | |
| - '.github/CODEOWNERS' | |
| code: | |
| - '**/*.py' | |
| - 'pyproject.toml' | |
| - 'pytest.ini' | |
| - 'mcp.json.example' | |
| - '.gitignore' | |
| - '.github/workflows/**' | |
| - 'tests/fixtures/**' | |
| - 'tests/bank-chat-system/**' | |
| - 'tests/pytest.ini' | |
| - uses: actions/setup-python@v5 | |
| if: steps.changes.outputs.code == 'true' | |
| with: | |
| python-version: "3.11" | |
| - name: Install dependencies | |
| if: steps.changes.outputs.code == 'true' | |
| run: | | |
| python -m pip install --upgrade pip | |
| pip install -e ".[dev]" | |
| - name: Check generated edge navigation doc | |
| if: steps.changes.outputs.code == 'true' | |
| run: python scripts/generate_edge_navigation.py --check | |
| - name: Cache HuggingFace models | |
| if: steps.changes.outputs.code == 'true' | |
| uses: actions/cache@v4 | |
| with: | |
| path: ~/.cache/huggingface | |
| key: hf-${{ hashFiles('**/pyproject.toml') }}-v1 | |
| restore-keys: | | |
| hf-${{ hashFiles('**/pyproject.toml') }}- | |
| hf- | |
| - name: Run tests | |
| if: steps.changes.outputs.code == 'true' | |
| env: | |
| JAVA_CODEBASE_RAG_RUN_HEAVY: "0" | |
| HF_TOKEN: ${{ secrets.HF_TOKEN }} | |
| TRANSFORMERS_CACHE: ~/.cache/huggingface | |
| HF_HOME: ~/.cache/huggingface | |
| # Process isolation: run each test file in its own fresh worker process. | |
| # Running the full suite in a single process accumulates native runtimes | |
| # (cocoindex + lancedb Tokio, plus kuzu's scheduler and torch) that corrupt | |
| # the heap, crashing kuzu's NodeTableScanState::scanNext with a SIGSEGV ~53%. | |
| # `--dist loadfile` keeps each file in one worker, so no cross-file state | |
| # accumulates. Verified: 771 passed / 9 skipped, no segfault. | |
| run: pytest tests -n auto --dist loadfile -v | |
| - name: Skip tests (docs-only) | |
| if: steps.changes.outputs.code != 'true' | |
| run: echo "Docs-only change; pytest skipped." |