| title | Infrastructure |
|---|---|
| layout | default |
| nav_order | 7 |
The python-wheels project makes use of some supplemental infrastructure available both on GitHub, and externally. The following sections outline these services and how to configure/maintain them.
For RISE-hosted builds of Python wheels and upstream submissions, the
python-wheels repository uses the RISC-V
Runners project. It is already enabled
for the repository; to reconfigure, see the installation
guide.
Built wheels are stored as assets on GitHub Releases. Each successful publish
from main creates a new release with a normalized package-and-version title
and a unique UTC timestamp in its tag. Releases are created as drafts, populated
with all wheel and GPL-source assets, and then published.
Immutable releases must remain enabled under the repository's release settings.
Once published, a release's tag and assets cannot be changed or deleted. The
_publish-wheel.yml reusable workflow checks this setting before publishing and
verifies that the resulting release is immutable.
The workflow uses the repository-provided GITHUB_TOKEN; callers grant the
publish job contents: write and pull-requests: write. No external package
registry credentials are required.
The .github/workflows/website.yml workflow handles building and deploying
documentation. For this to work correctly, the following settings need to be
configured under Settings -> Pages -> Build and deployment in the
repository:
Sourceshould be set toDeploy from a branchBranchshould be set togh-pages/(root)
When this is configured, any push to main touching the docs folder
triggers a docs build and deploy. The deploy replaces the whole content of the
gh-pages branch, including the simple/project package index (generated
from docs/packages/*.yaml), so nothing should be committed there by hand.
The custom domain is written to CNAME by the cname input of
peaceiris/actions-gh-pages.
Note that the gh-pages branch should be automatically created by the
workflows, but if not it must be created manually with an empty .nojekyll file
in the project root to avoid long rebuild times.