Releasing¶
Versions follow Semantic Versioning. The version lives in
pyproject.toml and src/llm_search_eval/__init__.py, and the two must match.
Steps¶
- Move the
[Unreleased]entries inCHANGELOG.mdinto a new## [X.Y.Z] - YYYY-MM-DDsection and update the links at the bottom. - Bump the version in both files.
- Open a pull request and wait for CI.
- After merging, tag the merge commit and push the tag:
- Create a GitHub release for the tag with the changelog section as notes.
Publishing to PyPI¶
Pushing a v* tag runs .github/workflows/release.yml. It checks that the tag
matches the package version, builds the sdist and wheel, runs twine check,
and then publishes with the first method that is configured:
| Method | Setup |
|---|---|
| Trusted publishing (recommended) | Add this repository and the release.yml workflow with environment pypi as a trusted publisher on PyPI, then set the repository variable PYPI_TRUSTED_PUBLISHING to true. |
| API token | Add a PyPI token as the PYPI_API_TOKEN repository secret. |
When neither is configured, the publish job prints a notice and finishes
without uploading, so tagging never fails just because PyPI is not set up yet.
The built distributions are always available as the dist workflow artifact.
Docker images¶
The same tag also builds the Docker image for linux/amd64 and
linux/arm64 and pushes it to ghcr.io/sadrmanesh/llm-search-eval with the
built-in GITHUB_TOKEN. A second job copies every platform from GHCR to Docker
Hub with docker buildx imagetools create. It runs only when the
DOCKERHUB_USERNAME and DOCKERHUB_TOKEN repository secrets are set (a Docker
Hub access token with Read and Write scope) and skips with a notice otherwise.
Mirrors¶
.github/workflows/mirror.yml pushes main and every tag to gitlab.com/sadrmanesh/llm-search-eval. It runs only when the GITLAB_TOKEN repository secret is set (a GitLab access token with the write_repository scope) and skips with a notice otherwise. Set the GITLAB_NAMESPACE repository variable to mirror to another GitLab namespace. GitHub stays the main repository for issues and pull requests.