@@ -2,20 +2,33 @@ name: CI
22
33on :
44 pull_request :
5- push :
6- branches : [main]
75 workflow_dispatch :
86
97permissions :
108 contents : read
119
1210jobs :
11+ lint :
12+ runs-on : ubuntu-latest
13+ steps :
14+ - uses : actions/checkout@v4
15+
16+ - uses : actions/setup-python@v5
17+ with :
18+ python-version : " 3.12"
19+
20+ - name : Install ruff
21+ run : python -m pip install "ruff>=0.8,<1"
22+
23+ - name : Run ruff
24+ run : python -m ruff check .
25+
1326 test :
1427 runs-on : ubuntu-latest
1528 strategy :
1629 fail-fast : false
1730 matrix :
18- python-version : ["3.10", "3.11 ", "3.12 "]
31+ python-version : ["3.10", "3.12 ", "3.14 "]
1932 steps :
2033 - uses : actions/checkout@v4
2134
@@ -24,19 +37,32 @@ jobs:
2437 python-version : ${{ matrix.python-version }}
2538
2639 - name : Compile Python
27- run : python -m py_compile serve.py link.py scripts/check_release_hygiene.py scripts/prepare_release.py mcp_package/link_mcp/server.py mcp_package/link_mcp/__main__.py mcp_package/link_mcp/__init__.py
40+ run : python -m py_compile serve.py link.py scripts/check_release_hygiene.py scripts/check_runtime_duplication.py scripts/check_tool_contract.py scripts/prepare_release.py scripts/smoke_first_use.py scripts/smoke_http_viewer.py scripts/smoke_large_wiki.py scripts/smoke_mcp_stdio.py mcp_package/link_core/*.py mcp_package/link_mcp/server.py mcp_package/link_mcp/__main__.py mcp_package/link_mcp/__init__.py
41+
42+ - name : Install MCP package for verification
43+ run : python -m pip install ./mcp_package
2844
2945 - name : Run tests
3046 run : python -m unittest discover -s tests
3147
48+ - name : Large wiki smoke test
49+ if : matrix.python-version == '3.12'
50+ run : python scripts/smoke_large_wiki.py --pages 1000
51+
3252 - name : Demo health smoke test
3353 run : |
54+ python scripts/smoke_first_use.py
3455 python link.py demo /tmp/link-demo-ci --force
3556 python /tmp/link-demo-ci/link.py doctor /tmp/link-demo-ci
3657 python /tmp/link-demo-ci/link.py rebuild-backlinks /tmp/link-demo-ci
58+ python /tmp/link-demo-ci/link.py validate /tmp/link-demo-ci
3759 python /tmp/link-demo-ci/link.py doctor /tmp/link-demo-ci
3860 PYTHONPATH=mcp_package python link.py verify-mcp /tmp/link-demo-ci --python python
3961
62+ - name : HTTP viewer smoke test
63+ if : matrix.python-version == '3.12'
64+ run : python scripts/smoke_http_viewer.py
65+
4066 installer-syntax :
4167 runs-on : ubuntu-latest
4268 steps :
5783 - name : Check tracked files for secret-looking data
5884 run : python scripts/check_release_hygiene.py
5985
86+ - name : Check runtime duplication
87+ run : python scripts/check_runtime_duplication.py
88+
89+ - name : Check tool contract
90+ run : python scripts/check_tool_contract.py
91+
6092 package :
6193 runs-on : ubuntu-latest
6294 steps :
@@ -76,3 +108,12 @@ jobs:
76108 - name : Check package metadata
77109 working-directory : mcp_package
78110 run : python -m twine check dist/*
111+
112+ - name : Install built wheel
113+ working-directory : mcp_package
114+ run : python -m pip install dist/*.whl
115+
116+ - name : MCP stdio smoke test
117+ run : |
118+ python link.py demo /tmp/link-mcp-smoke --force
119+ python scripts/smoke_mcp_stdio.py /tmp/link-mcp-smoke/wiki
0 commit comments