Skip to content

Commit 79dd504

Browse files
committed
chore: adopt standardized CI and require chuk-mcp-server>=0.25.5
Add the shared ruff/mypy/bandit/pytest CI workflow and a [dependency-groups] dev group so `uv sync --dev` installs the toolchain. Bump the chuk-mcp-server floor to 0.25.5 (parameterized-generic list-item schema fix) and relock. Signed-off-by: chrishayuk <chrishayuk@googlemail.com>
1 parent f4eddc9 commit 79dd504

2 files changed

Lines changed: 95 additions & 1 deletion

File tree

.github/workflows/ci.yml

Lines changed: 85 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,85 @@
1+
name: CI
2+
3+
on:
4+
push:
5+
branches: [main, develop]
6+
pull_request:
7+
branches: [main]
8+
workflow_call:
9+
10+
concurrency:
11+
group: ${{ github.workflow }}-${{ github.ref }}
12+
cancel-in-progress: true
13+
14+
env:
15+
PYTHON_VERSION: "3.11"
16+
17+
jobs:
18+
lint:
19+
name: Lint
20+
runs-on: ubuntu-latest
21+
steps:
22+
- uses: actions/checkout@v6
23+
- uses: actions/setup-python@v6
24+
with:
25+
python-version: ${{ env.PYTHON_VERSION }}
26+
- uses: astral-sh/setup-uv@v8.1.0
27+
with:
28+
enable-cache: true
29+
cache-dependency-glob: "pyproject.toml"
30+
- run: uv sync --dev
31+
- name: Run ruff linter
32+
run: uv run ruff check .
33+
- name: Run ruff formatter check
34+
run: uv run ruff format --check .
35+
36+
typecheck:
37+
name: Type Check
38+
runs-on: ubuntu-latest
39+
steps:
40+
- uses: actions/checkout@v6
41+
- uses: actions/setup-python@v6
42+
with:
43+
python-version: ${{ env.PYTHON_VERSION }}
44+
- uses: astral-sh/setup-uv@v8.1.0
45+
with:
46+
enable-cache: true
47+
cache-dependency-glob: "pyproject.toml"
48+
- run: uv sync --dev
49+
- name: Run mypy
50+
run: uv run mypy src
51+
52+
test:
53+
name: Test Python ${{ matrix.python-version }}
54+
runs-on: ubuntu-latest
55+
strategy:
56+
matrix:
57+
python-version: ["3.11", "3.12", "3.13"]
58+
steps:
59+
- uses: actions/checkout@v6
60+
- uses: actions/setup-python@v6
61+
with:
62+
python-version: ${{ matrix.python-version }}
63+
- uses: astral-sh/setup-uv@v8.1.0
64+
with:
65+
enable-cache: true
66+
cache-dependency-glob: "pyproject.toml"
67+
- run: uv sync --dev
68+
- name: Run tests with coverage
69+
run: uv run pytest -m "not network" --cov=src --cov-report=term-missing --cov-report=xml -v
70+
71+
security:
72+
name: Security Check
73+
runs-on: ubuntu-latest
74+
steps:
75+
- uses: actions/checkout@v6
76+
- uses: actions/setup-python@v6
77+
with:
78+
python-version: ${{ env.PYTHON_VERSION }}
79+
- uses: astral-sh/setup-uv@v8.1.0
80+
with:
81+
enable-cache: true
82+
cache-dependency-glob: "pyproject.toml"
83+
- run: uv sync --dev
84+
- name: Run bandit security checks
85+
run: uv run bandit -r src/ -ll

pyproject.toml

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ license = { text = "Apache-2.0" }
77
readme = "README.md"
88
requires-python = ">=3.11"
99
dependencies = [
10-
"chuk-mcp-server>=0.15.1",
10+
"chuk-mcp-server>=0.25.5",
1111
"chuk-artifacts",
1212
"python-dotenv>=1.1.1",
1313
"pydantic>=2.0.0",
@@ -102,3 +102,12 @@ target-version = "py311"
102102
[tool.bandit]
103103
exclude_dirs = ["tests"]
104104
skips = ["B101"]
105+
106+
[tool.mypy]
107+
python_version = "3.11"
108+
strict = false
109+
ignore_missing_imports = true
110+
follow_imports = "silent"
111+
disallow_untyped_defs = false
112+
warn_return_any = false
113+
show_error_codes = true

0 commit comments

Comments
 (0)