👷 ci: Add GitHub Actions workflow for tests, formatting, and linting#50
👷 ci: Add GitHub Actions workflow for tests, formatting, and linting#50justwheel wants to merge 2 commits into
Conversation
Pay off maintainer debt by adding automated CI validation for every push and pull request. The pipeline invokes `pytest`, `black`, and `ruff` directly (skipping `tox`) for speed, while maintaining exact command parity with the existing `tox.ini` environments. Three parallel jobs run: a matrix test job across Python 3.10 and 3.11, a formatting check, and a lint check. Aggressive caching is used to minimize run time: pip download caching via `setup-python` GitHub Action, plus installed site-packages caching via `actions/cache` with dynamic path resolution. Cache keys are hashed from requirements files so invalidation is automatic when dependencies change. This adds no new checks or expanded scope — it validates what already exists in `tox.ini` against every change. Assisted-by: Claude Opus 4.6 (1M context) Signed-off-by: Justin Wheeler <jwheel@redhat.com>
The test job fails because `httpx_gssapi` depends on the `gssapi` Python package, which requires Kerberos development headers (`krb5-config`) to compile from source. The GitHub Actions Ubuntu runner does not ship `libkrb5-dev` by default, so pip cannot build the wheel. Adding an explicit `apt-get install` step before pip install resolves the build failure for both Python 3.10 and 3.11 matrix entries. Assisted-by: Claude Opus 4.6 (1M context) Signed-off-by: Justin Wheeler <jwheel@redhat.com>
|
Hey @GregSutcliffe, I wanted to give a quick summary of the CI results on this PR so you have context when you get a chance to look at it. Two issues surfaced, both pre-existing — the CI pipeline is working correctly by catching them. 1. Missing system dependency (
|
|
Both in this PR is fine, thanks for tackling it! |
|
Sounds good. I'll push up the fix sometime soon but could also be after my PTO next week. |
Pay off maintainer debt by adding automated CI validation for every push and pull request. The pipeline invokes
pytest,black, andruffdirectly (skippingtox) for speed, while maintaining exact command parity with the existingtox.inienvironments. Three parallel jobs run: a matrix test job across Python 3.10 and 3.11, a formatting check, and a lint check.Aggressive caching is used to minimize run time: pip download caching via
setup-pythonGitHub Action, plus installed site-packages caching viaactions/cachewith dynamic path resolution. Cache keys are hashed from requirements files so invalidation is automatic when dependencies change.This adds no new checks or expanded scope — it validates what already exists in
tox.iniagainst every change.