Skip to main content
Clousight Bench publishes to PyPI via a tag-triggered GitHub Actions workflow (.github/workflows/release.yml) using PyPI Trusted Publishing (OIDC) — no long-lived API token is stored.

One-time setup (per project, done once by a maintainer)

  1. On PyPI, create the clousight-bench project (or claim it) and add a Trusted Publisher:
    • Owner: clousight
    • Repository: clousight-bench
    • Workflow: release.yml
    • Environment: pypi
  2. In the GitHub repo settings, create an Environment named pypi (optionally with required reviewers for a manual approval gate before publish).

Cutting a release

  1. Update CHANGELOG.md: move the Unreleased section under the new version with today’s date. Never rename a released section back to Unreleased — once a version is tagged its section is history; new work goes in a fresh ## [Unreleased] heading above it. (This happened once, in #80: the shipped ## [0.5.0] heading was reopened as ## [Unreleased], so CHANGELOG.md claimed 0.4.0 was the latest release while v0.5.0 was published.)
  2. Bump version in pyproject.toml — and keep the four other copies in sync: src/clousight_bench/__init__.py (RUNNER_VERSION, enforced by the wheel-smoke CI job), CITATION.cff (version + date-released), the README’s “N.N.N Developer Preview” line, and the assertions in tests/test_schema.py. The release workflow verifies the tag matches pyproject.toml.
  3. Land those on main through a pull request.
  4. Tag and push:
  5. The release workflow builds the sdist + wheel, runs twine check, and publishes to PyPI. Watch the Actions tab.
  6. Create a GitHub Release from the tag and paste the changelog section.

Versioning

Pre-1.0, minor versions may include breaking changes, but the result schema and plugin API carry their own version fields (schema_version, PLUGIN_API_VERSION) and are migrated deliberately — see CHANGELOG.md and docs/architecture. Changing the scoring of a shipped dimension always requires a version bump and a changelog entry.