Skip to content

ci: publish PEP 503 package index for release wheels - #24

Merged
Shiti merged 1 commit into
mainfrom
ci/pep503-package-index
Jul 21, 2026
Merged

ci: publish PEP 503 package index for release wheels#24
Shiti merged 1 commit into
mainfrom
ci/pep503-package-index

Conversation

@Shiti

@Shiti Shiti commented Jul 21, 2026

Copy link
Copy Markdown
Contributor

Summary

uniko's Python wheels are distributed as GitHub release assets (each is ~120 MB, over PyPI's 100 MB per-file limit), so they cannot be installed from PyPI.

Publish a static PEP 503 "simple" index on the docs GitHub Pages site so pip/poetry can install them via --extra-index-url https://rustic-ai.github.io/uniko/packages/.

  • scripts/ci/gen_package_index.py: generate the index from the GitHub releases API, grouping every wheel/sdist under its normalized project name (uniko, uniko-cuda, uniko-metal) and pinning #sha256 from asset digests (no downloads; stdlib only).
  • deploy-docs.yml: regenerate the index before building the site, and expose workflow_call so the release can invoke it. The generated tree (website/docs/packages/) is gitignored — the releases API is the source of truth.
  • release.yml: after github-release attaches the wheels, call deploy-docs to rebuild + redeploy so a new release is immediately installable. Invoked directly because GITHUB_TOKEN-created releases don't cascade into trigger-based workflows.

Type of change

  • Bug fix (non-breaking change that fixes an issue)
  • New feature (non-breaking change that adds functionality)
  • Breaking change (fix or feature that would change existing behavior)
  • Refactor (no functional change)
  • Documentation
  • CI / build / tooling

Checklist

  • cargo fmt --check passes
  • cargo clippy -- -D warnings passes
  • cargo nextest run passes
  • cargo deny check passes (licenses / advisories)
  • uni-db seal respected (product crates do not use uni_db or call .db() directly — access goes through uniko-store)
  • Documentation updated where relevant

Linked issues

uniko's Python wheels are distributed as GitHub release assets (each is
~120 MB, over PyPI's 100 MB per-file limit), so they cannot be installed
from PyPI. Publish a static PEP 503 "simple" index on the docs GitHub
Pages site so pip/poetry can install them via --extra-index-url
https://rustic-ai.github.io/uniko/packages/.

- scripts/ci/gen_package_index.py: generate the index from the GitHub
  releases API, grouping every wheel/sdist under its normalized project
  name (uniko, uniko-cuda, uniko-metal) and pinning #sha256 from asset
  digests (no downloads; stdlib only).
- deploy-docs.yml: regenerate the index before building the site, and
  expose workflow_call so the release can invoke it. The generated tree
  (website/docs/packages/) is gitignored — the releases API is the source
  of truth.
- release.yml: after github-release attaches the wheels, call deploy-docs
  to rebuild + redeploy so a new release is immediately installable.
  Invoked directly because GITHUB_TOKEN-created releases don't cascade
  into trigger-based workflows.
@Shiti
Shiti force-pushed the ci/pep503-package-index branch from 83f636e to 979a4ef Compare July 21, 2026 22:37
@Shiti
Shiti merged commit 5aefeff into main Jul 21, 2026
1 of 2 checks passed
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