Repository navigation
Replies: 1 comment
|
@petry-projects/solution-architect - Review, analyze and advise. |
0 replies
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
Summary
Evaluate whether repositories that produce and publish packages (such as
empower-personal-dashboard,broodminder-data, etc.) should automatically bump versions and publish releases on every merge tomain, or retain the current version-gated model (where releases only publish when a version bump is explicitly merged). Define and register an Architecture Decision Record (ADR) inpetry-projects/.githubgoverning the release lifecycle, SemVer calculation, and whether to standardize this via a central reusable/vendored workflow in.githubversus repository-specific implementations.Problem Context & Signal
In package-producing repositories across the org (e.g.,
empower-personal-dashboardandbroodminder-data),.github/workflows/publish.ymltriggers onpushtomain. However, publishing is strictly gated:preparejob extractsVERSIONfrompyproject.toml.v<version>exists (or PyPI already hosts<version>), the workflow skips building and publishing (should_publish=false).empower-personal-dashboardPR Compliance: missing-label-dependencies #46), the new capabilities remain unreleased under[Unreleased]inCHANGELOG.mduntil a separate version-bump commit is merged.This creates operational friction:
mainare not immediately consumable viapip installbecause developers/agents forget to bump version strings across multiple files (pyproject.toml,__version__,docs/openapi.yaml,CHANGELOG.md).empower-personal-dashboardandbroodminder-datamaintain nearly identical copy-pastedpublish.ymlworkflows andscripts/pypi_onboard.pyscripts with slight variations (e.g.check_pypi=Truelogic and differing action version pins).Scope: Repositories Publishing Packages
This proposal specifically targets repositories that build, package, and publish libraries or CLI tools (e.g., PyPI packages, npm packages, container images), where
mainacts as the releasable source branch.Release Strategy Options to Evaluate
Option A: Pure Continuous Delivery (Auto-SemVer on Every Merge to
main)feat:→ minor,fix:→ patch,BREAKING CHANGE:→ major). On merge, CI automatically increments the version, updates changelogs, commits/tags, and publishes.Option B: Release PR Automation (Google Release-Please Pattern)
mainand maintains a single open "Release PR" that aggregates pending changes, drafts the changelog, and increments the version. Maintainers merge the Release PR when ready to cut a release.Option C: Curated Batched Releases (Status Quo / Explicit Bump)
[Unreleased]inCHANGELOG.md. Releases are deliberately cut via a dedicatedchore(release): bump version to X.Y.ZPR.Reusability Architecture: Central Vendoring vs. Per-Repo Implementation
An essential architectural question for the upcoming ADR is how this workflow is delivered across the fleet:
petry-projects/.github(or.github/standards/workflows/)pypi-publish-reusable.yml) or vendored workflow template consumed by package-publishing repos.publish.ymlandscripts/pypi_onboard.py.Assessment
python-semantic-release,release-please, or custom tested helper scripts) are mature and integrate cleanly with GitHub Actions.empower-personal-dashboard,broodminder-data) already experience friction and drift between their publish workflows.Adversarial Review
Strongest objection: Python packages published to PyPI are immutable. Automatically releasing on every merge to
mainturns every minor commit into an irrevocable public artifact, creating version bloat and leaving no room for human editorial refinement of release notes or batching related features.Rebuttal: The proposed ADR does not mandate naive commit-by-commit releasing. It explicitly evaluates Option B (Release PR automation via Release-Please) alongside Option A and Option C. Release-Please provides the best of both worlds: automated changelog generation and version calculation without publishing until maintainers merge the release PR. Furthermore, standardizing the publishing pipeline via
.githubeliminates the drift already occurring betweenempower-personal-dashboardandbroodminder-data.Goal & Next Steps
petry-projects/.github/standards/establishing the org standard for package versioning, release triggers, and publishing workflows.petry-projects/.github/standards/workflows/or maintained as a template with pure tested decision logic.empower-personal-dashboardandbroodminder-data.All reactions