@@ -17,25 +17,13 @@ permissions:
1717
1818jobs :
1919 install-smoke :
20- name : Verify ${{ matrix.profile.name }} install
20+ name : Verify install (py ${{ matrix.python-version }})
2121 runs-on : ubuntu-latest
2222 if : github.repository == 'a2aproject/a2a-python'
2323 strategy :
24+ fail-fast : false
2425 matrix :
2526 python-version : ['3.10', '3.11', '3.12', '3.13', '3.14']
26- profile :
27- - name : base
28- extras : ' '
29- - name : http-server
30- extras : ' [http-server]'
31- - name : fastapi
32- extras : ' [fastapi]'
33- - name : grpc
34- extras : ' [grpc]'
35- - name : telemetry
36- extras : ' [telemetry]'
37- - name : sql
38- extras : ' [sql]'
3927 steps :
4028 - name : Checkout code
4129 uses : actions/checkout@v6
4533 with :
4634 python-version : ${{ matrix.python-version }}
4735
48- - name : Build package
49- run : uv build --wheel
50-
51- - name : Install with ${{ matrix.profile.name }} dependencies only
52- run : |
53- uv venv .venv-smoke
54- # Install only the built wheel + the profile's extras -- no
55- # dev deps. This simulates what an end-user gets with
56- # `pip install a2a-sdk${{ matrix.profile.extras }}`.
57- WHEEL=$(ls dist/*.whl)
58- VIRTUAL_ENV=.venv-smoke uv pip install "${WHEEL}${{ matrix.profile.extras }}"
59-
60- - name : List installed packages
61- run : VIRTUAL_ENV=.venv-smoke uv pip list
62-
63- - name : Run smoke test (imports + runtime checks)
64- run : .venv-smoke/bin/python -m tests.install_smoke ${{ matrix.profile.name }}
36+ # Builds the wheel once, then installs + smoke-tests every profile
37+ # in its own clean venv. Same script developers run locally, so CI
38+ # and local repro stay in sync. Aggregates per-profile failures.
39+ - name : Verify all install profiles
40+ run : scripts/test_install_smoke.sh '' ${{ matrix.python-version }}
0 commit comments