@@ -52,36 +52,24 @@ jobs:
5252 fail-fast : false
5353 matrix :
5454 include :
55- # Windows 10/11 (latest runner is Windows Server 2022 = Win 11 compatible)
56- - os : windows-latest
57- python : " 3.11"
58- - os : windows-latest
59- python : " 3.12"
60- - os : windows-latest
61- python : " 3.13"
62- # macOS (Intel + Apple Silicon)
63- - os : macos-latest
64- python : " 3.11"
65- - os : macos-latest
66- python : " 3.12"
67- - os : macos-latest
68- python : " 3.13"
69- # Ubuntu (covers Debian-based Linux)
70- - os : ubuntu-latest
71- python : " 3.11"
72- - os : ubuntu-latest
73- python : " 3.12"
74- - os : ubuntu-latest
75- python : " 3.13"
76- - os : ubuntu-22.04
77- python : " 3.11"
78- - os : ubuntu-22.04
79- python : " 3.12"
80- - os : ubuntu-20.04
81- python : " 3.11"
55+ # Windows 10/11
56+ - { os: windows-latest, python: "3.11" }
57+ - { os: windows-latest, python: "3.12" }
58+ - { os: windows-latest, python: "3.13" }
59+ # macOS (Apple Silicon + Intel)
60+ - { os: macos-latest, python: "3.11" }
61+ - { os: macos-latest, python: "3.12" }
62+ - { os: macos-latest, python: "3.13" }
63+ # Ubuntu / Linux
64+ - { os: ubuntu-latest, python: "3.11" }
65+ - { os: ubuntu-latest, python: "3.12" }
66+ - { os: ubuntu-latest, python: "3.13" }
67+ - { os: ubuntu-22.04, python: "3.11" }
68+ - { os: ubuntu-22.04, python: "3.12" }
69+ - { os: ubuntu-20.04, python: "3.11" }
8270 runs-on : ${{ matrix.os }}
8371 steps :
84- - name : Download build artifacts
72+ - name : Download artifacts
8573 uses : actions/download-artifact@v4
8674 with :
8775 name : dist
@@ -92,18 +80,15 @@ jobs:
9280 with :
9381 python-version : ${{ matrix.python }}
9482
95- - name : Install wheel
83+ - name : Install from wheel (no root, no system deps)
9684 shell : bash
9785 run : pip install dist/*.whl
9886
9987 - name : Verify CLI
10088 run : code-intelligence --help
10189
102- - name : Verify detectors load
103- run : python -c "from code_intelligence.detectors.registry import DetectorRegistry; r = DetectorRegistry(); r.load_builtin_detectors(); print(f'{len(r.all_detectors())} detectors loaded')"
104-
105- - name : Verify version
106- run : python -c "import importlib.metadata; print(importlib.metadata.version('code-intelligence'))"
90+ - name : Verify detectors
91+ run : python -c "from code_intelligence.detectors.registry import DetectorRegistry; r = DetectorRegistry(); r.load_builtin_detectors(); print(f'{len(r.all_detectors())} detectors')"
10792
10893 test-container :
10994 name : " ${{ matrix.name }}"
@@ -113,61 +98,43 @@ jobs:
11398 fail-fast : false
11499 matrix :
115100 include :
116- # RHEL/UBI (Red Hat Enterprise Linux)
117- - name : " UBI 8 / Python 3.11 (RHEL 8)"
118- container : " registry.access.redhat.com/ubi8/python-311:latest"
119- setup : " dnf install -y libxml2-devel libxslt-devel gcc python3-devel 2>/dev/null || true"
120- - name : " UBI 9 / Python 3.11 (RHEL 9)"
121- container : " registry.access.redhat.com/ubi9/python-311:latest"
122- setup : " dnf install -y libxml2-devel libxslt-devel gcc python3-devel 2>/dev/null || true"
123- - name : " UBI 9 / Python 3.12 (RHEL 9)"
124- container : " registry.access.redhat.com/ubi9/python-312:latest"
125- setup : " dnf install -y libxml2-devel libxslt-devel gcc python3-devel 2>/dev/null || true"
126- # Debian / Ubuntu
127- - name : " Debian Bookworm / Python 3.11"
128- container : " python:3.11-slim-bookworm"
129- setup : " apt-get update && apt-get install -y --no-install-recommends gcc libxml2-dev libxslt1-dev"
130- - name : " Debian Bookworm / Python 3.12"
131- container : " python:3.12-slim-bookworm"
132- setup : " apt-get update && apt-get install -y --no-install-recommends gcc libxml2-dev libxslt1-dev"
133- - name : " Debian Bookworm / Python 3.13"
134- container : " python:3.13-slim-bookworm"
135- setup : " apt-get update && apt-get install -y --no-install-recommends gcc libxml2-dev libxslt1-dev"
136- # Alpine (musl libc — strictest compatibility test)
137- - name : " Alpine / Python 3.11"
138- container : " python:3.11-alpine"
139- setup : " apk add --no-cache gcc musl-dev libxml2-dev libxslt-dev"
140- - name : " Alpine / Python 3.12"
141- container : " python:3.12-alpine"
142- setup : " apk add --no-cache gcc musl-dev libxml2-dev libxslt-dev"
143- # Amazon Linux (AWS Lambda / ECS)
144- - name : " Amazon Linux 2023 / Python 3.11"
145- container : " amazonlinux:2023"
146- setup : " dnf install -y python3.11 python3.11-pip python3.11-devel gcc libxml2-devel libxslt-devel"
147- # Fedora (latest glibc)
148- - name : " Fedora 40 / Python 3.12"
149- container : " fedora:40"
150- setup : " dnf install -y python3 python3-pip python3-devel gcc libxml2-devel libxslt-devel"
101+ # RHEL / UBI — pip install only, NO root, NO dnf
102+ - { name: "UBI 8 / RHEL 8 (Python 3.11)", container: "registry.access.redhat.com/ubi8/python-311:latest" }
103+ - { name: "UBI 9 / RHEL 9 (Python 3.11)", container: "registry.access.redhat.com/ubi9/python-311:latest" }
104+ - { name: "UBI 9 / RHEL 9 (Python 3.12)", container: "registry.access.redhat.com/ubi9/python-312:latest" }
105+ # Debian / Ubuntu slim
106+ - { name: "Debian Bookworm (3.11)", container: "python:3.11-slim-bookworm" }
107+ - { name: "Debian Bookworm (3.12)", container: "python:3.12-slim-bookworm" }
108+ - { name: "Debian Bookworm (3.13)", container: "python:3.13-slim-bookworm" }
109+ # Alpine (musl libc)
110+ - { name: "Alpine (3.11)", container: "python:3.11-alpine" }
111+ - { name: "Alpine (3.12)", container: "python:3.12-alpine" }
112+ # Amazon Linux
113+ - { name: "Amazon Linux 2023", container: "public.ecr.aws/amazonlinux/amazonlinux:2023" }
114+ # Fedora
115+ - { name: "Fedora 40", container: "fedora:40" }
151116 container :
152117 image : ${{ matrix.container }}
153118 steps :
154- - name : Download build artifacts
119+ - name : Download artifacts
155120 uses : actions/download-artifact@v4
156121 with :
157122 name : dist
158123 path : dist/
159124
160- - name : Install system deps
161- run : ${{ matrix.setup }}
125+ - name : Install Python (Amazon Linux / Fedora only)
126+ if : contains(matrix.container, 'amazonlinux') || contains(matrix.container, 'fedora')
127+ run : |
128+ dnf install -y python3 python3-pip 2>/dev/null || yum install -y python3 python3-pip 2>/dev/null || true
162129
163- - name : Install wheel
130+ - name : Install from wheel (no root system deps needed)
164131 run : pip install dist/*.whl || pip3 install dist/*.whl
165132
166133 - name : Verify CLI
167134 run : code-intelligence --help || python3 -m code_intelligence.cli --help
168135
169- - name : Verify detectors load
170- run : python3 -c "from code_intelligence.detectors.registry import DetectorRegistry; r = DetectorRegistry(); r.load_builtin_detectors(); print(f'{len(r.all_detectors())} detectors loaded ')"
136+ - name : Verify detectors
137+ run : python3 -c "from code_intelligence.detectors.registry import DetectorRegistry; r = DetectorRegistry(); r.load_builtin_detectors(); print(f'{len(r.all_detectors())} detectors')"
171138
172139 publish-pypi :
173140 name : Publish to PyPI
@@ -178,7 +145,7 @@ jobs:
178145 name : pypi
179146 url : https://pypi.org/p/code-intelligence
180147 steps :
181- - name : Download build artifacts
148+ - name : Download artifacts
182149 uses : actions/download-artifact@v4
183150 with :
184151 name : dist
0 commit comments