Skip to content

Restructure CI/release workflows to match the standard chuk-* layout - #40

Merged
chrishayuk merged 2 commits into
mainfrom
restructure/standard-workflow-layout
Jul 17, 2026
Merged

chrishayuk merged 2 commits into
mainfrom
restructure/standard-workflow-layout

Conversation

@chrishayuk

Copy link
Copy Markdown
Collaborator

Summary

Replaced the bespoke `ci.yml` + `release.yml` pair with the standard `test.yml` / `publish.yml` / `release.yml` split used across the other chuk-* repos:

  • test.yml: lint, type check, test matrix (now including 3.13 to match the sibling repos' matrix — verified compatible), coverage threshold check, `workflow_call` so `publish.yml` can reuse it. Kept the `check-version` PR warning job.
  • publish.yml: gates on `test.yml`, builds, runs `twine check` (kept from the original `release.yml` as a useful pre-publish safety check), then publishes via PyPI trusted publishing. Triggers on tag push directly (this repo already had that right) as well as release-published and workflow_dispatch.
  • release.yml: standard changelog-from-git-log GitHub Release creation, matching the other repos exactly.

Dropped the original `release.yml`'s post-publish `test-installation` job (pip install from PyPI + smoke test) since no sibling repo has an equivalent step — can be reintroduced if wanted.

Test plan

  • `uv run pytest --cov=src/chuk_llm` — 2844 passed, 2 skipped, 82% coverage (clears 70% threshold)
  • `uv run ruff check .` / `ruff format --check .` — clean
  • `uv run mypy src` — clean
  • Verified Python 3.13 compatibility locally before adding it to the matrix
  • CI green on this PR (exercises the new test.yml directly)

Replaced the bespoke ci.yml + release.yml pair with the standard
test.yml / publish.yml / release.yml split used across the other
chuk-* repos:

- test.yml: lint, type check, test matrix (now including 3.13 to
  match the sibling repos' matrix; verified compatible), coverage
  threshold check, workflow_call so publish.yml can reuse it. Kept
  the check-version PR warning job.
- publish.yml: gates on test.yml, builds, runs twine check (kept from
  the original release.yml as a useful pre-publish safety check), then
  publishes via PyPI trusted publishing. Triggers on tag push directly
  (this repo already had that right) as well as release-published and
  workflow_dispatch.
- release.yml: standard changelog-from-git-log GitHub Release creation,
  matching the other repos exactly.

Dropped the original release.yml's post-publish 'test-installation'
job (pip install from PyPI + smoke test) since no sibling repo has an
equivalent step; can be reintroduced if wanted.

Signed-off-by: chris hay <chris.hay@uk.ibm.com>
…adTimeout

_wait_for_health's exception handling only caught (httpx.ConnectError,
httpx.ReadTimeout), but httpx.ConnectTimeout is a separate branch of
the exception hierarchy (subclass of TimeoutException, not
ConnectError). A refused connection surfaces as ConnectTimeout rather
than ConnectError/ReadTimeout on some platforms (observed reliably on
windows-latest), so the health-check polling loop crashed with an
unhandled exception instead of retrying -- a real bug for anyone
running llama.cpp servers on Windows, not just a CI artifact. Same
pattern existed in is_healthy() and the model-load wait loop; widened
all three to catch httpx.TimeoutException, which covers
ConnectTimeout/ReadTimeout/WriteTimeout/PoolTimeout.

Also fixed test_wait_for_health_timeout, which wasn't mocking
httpx.AsyncClient (unlike its test_wait_for_health_process_died
sibling) and so was making a real network connection attempt -- the
source of the actual httpx.ConnectTimeout surfacing in CI.

Also fixed the local mypy pre-commit hook: it ran in pre-commit's
isolated venv via mirrors-mypy, separate from the project's uv-managed
environment, so it couldn't see real dependencies (pydantic, etc.) and
failed outright. Replaced with a local hook using 'uv run mypy',
matching the fix already applied to chuk-tool-processor.

Signed-off-by: chris hay <chris.hay@uk.ibm.com>
@chrishayuk
chrishayuk merged commit 7265fe5 into main Jul 17, 2026
11 checks passed
@chrishayuk
chrishayuk deleted the restructure/standard-workflow-layout branch July 17, 2026 12:18
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.

1 participant