Skip to content

👷 ci: Add GitHub Actions workflow for tests, formatting, and linting#50

Open
justwheel wants to merge 2 commits into
GregSutcliffe:mainfrom
justwheel:add/ci
Open

👷 ci: Add GitHub Actions workflow for tests, formatting, and linting#50
justwheel wants to merge 2 commits into
GregSutcliffe:mainfrom
justwheel:add/ci

Conversation

@justwheel

Copy link
Copy Markdown

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.

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>
@justwheel

justwheel commented Apr 22, 2026

Copy link
Copy Markdown
Author

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 (test job) — fixed

pip install was failing when building gssapi (a transitive dependency of httpx_gssapi in requirements.txt). The GitHub Actions Ubuntu runner doesn't have libkrb5-dev installed, which gssapi needs to compile. I've already added an apt-get install libkrb5-dev step to the workflow to fix this.

2. Formatting drift (format job) — not yet fixed

black --diff --check found two files that need reformatting:

  • meetings/db.py — SQL multiline string formatting
  • meetings/__init__.py — string concatenation alignment

These are pre-existing formatting issues, not introduced by this PR. The fix is just black meetings/db.py meetings/__init__.py.

How would you like me to proceed?

I'm happy to make the formatting fix — just let me know your preference:

A) I add the black reformatting commit to this PR so it merges green in one shot.

B) I keep this PR as CI-only and open a separate PR for the formatting fix, so the changes are easier to review independently.

Either way works for me.

@GregSutcliffe

Copy link
Copy Markdown
Owner

Both in this PR is fine, thanks for tackling it!

@justwheel

Copy link
Copy Markdown
Author

Sounds good. I'll push up the fix sometime soon but could also be after my PTO next week.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants