Repository navigation
81 lines (74 loc) · 3.4 KB
/
Copy pathci.yml
File metadata and controls
81 lines (74 loc) · 3.4 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
name: CI
on:
push:
branches: [main]
pull_request:
jobs:
test:
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
python-version: ["3.10", "3.11", "3.12", "3.13"]
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
with:
python-version: ${{ matrix.python-version }}
- run: python -m pip install --upgrade pip
- run: pip install -e ".[dev]"
- name: Lint
# This repo publishes the wheel, so the lint that matters most has to run HERE — the
# canonical repo's copy cannot fail a hand-edit made in this one. PINNED for the reason
# the platform CI records: an unpinned ruff shipped new rules and turned 14 pushes red,
# which hid seven real defects behind noise.
run: |
python -m pip install "ruff==0.15.21"
ruff check src/mcpgawk
- name: Run tests (incl. the structural no-egress invariant)
# verify_live is the panel verify-button E2E: it runs the real Node engine and lives in
# its own job below, so the fast matrix (four Python versions) does not pay for it four
# times. Everything else, including the rest of the panel E2E, runs here.
run: pytest -q -m "not verify_live"
# The verify-button E2E on its own, with Node — the one panel action that actually launches and
# watches a server. Single Python version: this exercises the TS engine, not Python-version
# behaviour. Skips cleanly (unavailable_reason) if the bundled engine is somehow absent.
verify-button:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
with:
python-version: "3.12"
- uses: actions/setup-node@v4
with:
node-version: "20"
- run: python -m pip install --upgrade pip
- run: pip install -e ".[dev]"
- name: Panel verify-button E2E (real engine)
run: pytest -q -m verify_live -o addopts=""
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
with:
python-version: "3.12"
- run: python -m pip install --upgrade pip build
- run: python -m build
# Same gate the publish workflow runs, on every push and PR. publish-pypi.yml is the one that
# BLOCKS the upload; this is here so a packaging mistake goes red when it is introduced,
# rather than first being discovered by the release that was meant to ship it.
- name: Verify the built artefacts carry no paid code
run: python scripts/verify_public_artifact.py dist/*.whl dist/*.tar.gz
- name: Install the built wheel in a clean env and smoke-test the CLI
run: |
python -m venv /tmp/smoke
/tmp/smoke/bin/pip install dist/*.whl
/tmp/smoke/bin/mcpgawk --help
# version-consistency lived here and compared pyproject.toml against editors/vscode/package.json.
# Both were removed on 2026-07-21: editors/vscode was a hand-written extension that is NOT the one
# published to Open VSX, and this job was green because those two stale sides agreed with each
# other. The extension we ship is built from the platform repo's packages/vscode, so the check
# moved there (platform-ci.yml, "Version consistency"), where it can see both real artefacts.
# This repo holds the engine only; it has nothing to compare a version against.