Skip to content

ci: downloadable releases + TBD pipeline - #1

Merged
agarat merged 8 commits into
mainfrom
feat/releases-pipeline
Jul 15, 2026
Merged

ci: downloadable releases + TBD pipeline#1
agarat merged 8 commits into
mainfrom
feat/releases-pipeline

Conversation

@agarat

@agarat agarat commented Jul 15, 2026

Copy link
Copy Markdown
Owner

What

Adds downloadable releases and a CI pipeline for openpodgo, following Trunk-Based Development. Every push to main publishes a rolling latest pre-release; every vX.Y.Z tag publishes a permanent stable release. Both attach an sdist + wheel and auto-generated changelog notes. No PyPI — the tarball from the Release is the distribution channel.

Changes

  • Dynamic versioning (pyproject.toml): version derived from git via setuptools-scm (tag vX.Y.ZX.Y.Z; no tag → a dev version). No more hand-editing.
  • Reusable test workflow (tests.yml): the matrix (3.10/3.11/3.12, offline, Qt offscreen) is now workflow_call. ci.yml runs it on PRs only; release.yml runs it as a gate on main/tags — no double runs.
  • Release pipeline (release.yml): test → build → release. Builds sdist+wheel, generates notes with git-cliff, and publishes to the correct channel by ref type (branch main → rolling latest, prerelease; tag v* → permanent stable). Least-privilege permissions (contents: write only on the publish job), a concurrency group, the third-party publish action pinned to a full SHA (softprops/action-gh-release@v2.6.2), and target_commitish so the latest tag advances to the pushed commit.
  • Changelog (cliff.toml): release notes generated from commit messages, grouped by the repo's scope prefixes. No CHANGELOG.md committed to the repo.
  • Docs: README gains a ## Download section (install from the Release tarball); CONTRIBUTING gains a ## Releases runbook (how versions are derived and how to cut a stable).
  • Repo hygiene: internal design/plan docs are git-ignored.

Verification

  • pytest: 341 passed, 3 skipped.
  • actionlint on all three workflows: 0 findings.
  • python -m build produces an installable sdist+wheel with a git-derived version; git-cliff produces non-empty grouped notes.
  • The publish steps can only be exercised on GitHub itself — on the first real run, confirm the latest tag moves to the pushed commit and that --current on the first stable tag yields the expected range.

🤖 Generated with Claude Code

agarat and others added 8 commits July 15, 2026 13:32
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Add a Download section to README.md pointing users at the sdist/wheel
tarballs attached to GitHub Releases (rolling `latest` vs stable tags),
and a Releases (TBD) section to CONTRIBUTING.md describing the
trunk-based tagging flow that drives release.yml.
@agarat
agarat merged commit cc9e851 into main Jul 15, 2026
3 checks passed
@agarat
agarat deleted the feat/releases-pipeline branch July 15, 2026 23:17
agarat added a commit that referenced this pull request Jul 15, 2026
ci: downloadable releases + TBD pipeline
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