Skip to content

CI: publish a package index of the release wheels on GitHub Pages - #6

Merged
thervier merged 1 commit into
masterfrom
ci/package-index
Oct 12, 2026
Merged

thervier merged 1 commit into
masterfrom
ci/package-index

Conversation

@thervier

Copy link
Copy Markdown

Summary

Publishes a PEP 503 package index on GitHub Pages (https://funwithagents.github.io/libqi-python/simple/), listing the wheels of all GitHub Releases. pip and uv can then install qi by version, instead of each client linking every wheel by URL with platform markers.

  • ci/generate_index.py: builds simple/index.html and simple/qi/index.html from the GitHub Releases API. Each link points to the release asset and carries its #sha256= hash: the digest GitHub reports, or the script's own hash for assets older than GitHub's digests (e.g. v3.1.6). Drafts and pre-releases are excluded, because a pre-release has wheels with the same file names as the final release.
  • .github/workflows/index.yml: new "Package index" workflow (workflow_dispatch) that generates the index and deploys it with actions/deploy-pages.
  • wheels.yml: after a release (not a pre-release), the release job starts the index workflow on master. The release event can't be used because releases created with the GITHUB_TOKEN don't trigger it, and the github-pages environment only accepts deployments from the default branch.
  • README: install instructions for uv (explicit index) and pip (--extra-index-url, pinned version).

Client usage with uv:

[[tool.uv.index]]
name = "funwithagents"
url = "https://funwithagents.github.io/libqi-python/simple/"
explicit = true

[tool.uv.sources]
qi = { index = "funwithagents" }

Test plan

  • Generated the index locally from the real releases (v3.1.6), served it over HTTP, then uv lock + uv sync + import qi in a client project (macOS arm64, Python 3.13)
  • After merge: run "Package index" manually and check https://funwithagents.github.io/libqi-python/simple/qi/
  • After the v3.1.7 tag: check the release job starts the index workflow and the 3.1.7 wheels appear

Independent of #5 (version bump): no conflicts, and the index is regenerated from all releases whatever the merge order.

🤖 Generated with Claude Code

A PEP 503 index (simple/qi/) lists the wheels of all the GitHub Releases
(except drafts and pre-releases), with their SHA-256, so that pip and uv
can install qi by version instead of linking each wheel by URL.

The index is generated by ci/generate_index.py and deployed by the new
"Package index" workflow, started after each release or manually.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@thervier
thervier merged commit 937541c into master Oct 12, 2026
0 of 3 checks passed
@thervier
thervier deleted the ci/package-index branch October 12, 2026 15:07
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