Publishing
The documentation is designed to run directly on GitHub Pages through the
Pages workflow in .github/workflows/pages.yml.
Recommended Public Setup
Use GitHub Pages as the canonical technical documentation host:
GitHub Pages is the best first home for this project because the package, issues, examples, notebooks, API reference, release checks, and source history live in the same repository. The site is versioned with the code and rebuilt from the same MkDocs configuration used locally.
The personal website can still be the front door. Link from https://jsluis.com
to the GitHub Pages site, or mirror the built site/ directory later if a
single-domain presentation becomes preferable.
Repository Settings
After pushing the repository to GitHub:
- Open Settings.
- Open Pages.
- Set Build and deployment to GitHub Actions.
- Do not select the suggested GitHub Pages Jekyll or Static HTML
workflows. This repository already provides the custom MkDocs workflow in
.github/workflows/pages.yml. - Push to
mainor run the Pages workflow manually.
The workflow installs the documentation extras and runs:
The published artifact includes the rendered MkDocs site, rendered notebooks, MathJax assets, figures, and the local SILVA article PDF.
Local Preview
For a local preview:
For a release-style local check:
PyPI
The package name is:
Published package: https://pypi.org/project/silva-networks/
The import name is:
Publishing is configured through the Release workflow in
.github/workflows/release.yml. Pushing a validated v* tag builds and checks
the distributions, publishes them to PyPI after environment approval, and then
creates the GitHub Release with the same artifacts. It uses PyPI Trusted
Publishing, so no PyPI API token is stored in GitHub. PyPI's trusted-publisher
flow exchanges a GitHub Actions identity token for a short-lived publishing
credential during the release job.
The v1.0.0 release established this PyPI trusted-publisher configuration, and later releases use the same publisher identity:
- Open PyPI and sign in.
- Open Account settings.
- Open Publishing.
- Add a pending trusted publisher with:
| Field | Value |
|---|---|
| PyPI project name | silva-networks |
| Owner | jseluis |
| Repository name | silva-networks |
| Workflow filename | release.yml |
| Environment name | pypi |
Then configure the matching GitHub environment:
- Open the GitHub repository.
- Open Settings.
- Open Environments.
- Create an environment named
pypi. - Add a required reviewer for the environment.
The environment gate keeps package upload as an explicit release action. The
release workflow builds the source distribution and wheel, runs twine check,
publishes the package to PyPI after deployment approval, and creates the GitHub
Release only after the package upload succeeds.
After the workflow succeeds:
python -m pip install silva-networks
python -c "import silva_networks; print(silva_networks.__version__)"
Zenodo
Zenodo archiving should be connected before each public GitHub Release. The
repository includes .zenodo.json, which gives Zenodo software metadata, the
MIT license, keywords, repository relation, and the arXiv article relation.
To enable the archive:
- Open Zenodo and sign in with GitHub.
- Open the GitHub integration page.
- Enable archiving for
jseluis/silva-networks. - Push the validated version tag, currently
v1.2.2; the release workflow creates the corresponding GitHub Release.
Use the concept DOI for the living software citation:
The immutable v1.0.0 archive remains:
Version DOI: 10.5281/zenodo.21770099
Concept DOI: 10.5281/zenodo.21770098
Record: https://zenodo.org/records/21770099
Publishing the v1.2.2 GitHub release creates a new version record under the
same concept DOI. Record its minted version DOI in the release readiness page
after the integration finishes.
Official setup references:
- PyPI Trusted Publishing
- Publishing with a trusted publisher
- Creating a PyPI project with a trusted publisher
- Zenodo
.zenodo.json
Website Mirror
If the site is mirrored to jsluis.com, keep GitHub Pages enabled as the
package-native documentation target. That keeps all repository links,
notebook paths, GitHub Actions checks, and release documentation stable.
Where to Go Next
| Question | Page |
|---|---|
| Which checks must pass before publication? | Release Readiness |
| How should the release be cited? | Citation-Aware Reporting |
| Where are article and software identifiers recorded? | Paper and References |