docs: restructure release process to use release branches#88
docs: restructure release process to use release branches#88slashpai wants to merge 3 commits intorhobs:mainfrom
Conversation
Update release model where the release branch is created first and all release work (changelog, tagging) happens from it. Key changes: - Move branch management strategy to the top of the document - Create release-X.Y branch before changelog and tagging steps - Add pre-releases (RC) as optional step after branch creation - Use fork-based PR workflow throughout (changelog, bugfix, merge-back) - Add patch release workflow: branch off release-X.Y, fix, PR, tag Signed-off-by: Jayapriya Pai <janantha@redhat.com>
|
[APPROVALNOTIFIER] This PR is APPROVED This pull-request has been approved by: slashpai The full list of commands accepted by this bot can be found here. The pull request process is described here DetailsNeeds approval from an approver in each of these files:
Approvers can indicate their approval by writing |
|
Warning Rate limit exceeded
To keep reviews running without waiting, you can enable usage-based add-on for your organization. This allows additional reviews beyond the hourly cap. Account admins can enable it under billing. ⌛ How to resolve this issue?After the wait time has elapsed, a review can be triggered using the We recommend that you space out your commits to avoid hitting the rate limit. 🚦 How do rate limits work?CodeRabbit enforces hourly rate limits for each developer per organization. Our paid plans have higher rate limits than the trial, open-source and free plans. In all cases, we re-allow further reviews after a brief timeout. Please see our FAQ for further information. ℹ️ Review info⚙️ Run configurationConfiguration used: Repository YAML (base), Organization UI (inherited) Review profile: CHILL Plan: Enterprise Run ID: 📒 Files selected for processing (1)
📝 WalkthroughWalkthroughThis pull request updates RELEASE.md to document a new release process structured around Semantic Versioning with dedicated Estimated code review effort🎯 2 (Simple) | ⏱️ ~15 minutes 🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ Finishing Touches🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Review rate limit: 0/1 reviews remaining, refill in 34 minutes and 39 seconds.Comment |
Signed-off-by: Jayapriya Pai <janantha@redhat.com>
There was a problem hiding this comment.
Actionable comments posted: 2
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.
Inline comments:
In `@RELEASE.md`:
- Around line 10-20: Update the ambiguous phrase "latest release branch" under
"Branch management and versioning strategy" to a deterministic rule: replace it
with a statement that bug fixes for released versions must be merged into the
release branch with the highest minor version for the current MAJOR (i.e., the
`release-<MAJOR>.<highest-minor>` branch), clarify that "highest minor" refers
to semver ordering of X.Y, and add a short note describing the fallback when a
newer minor branch hasn’t been cut yet (e.g., if no release branch exists for
the current major, merge fixes into `main` or create the new release-X.Y branch
first).
- Around line 21-27: The fenced ASCII diagram block in RELEASE.md is triggering
markdown lint MD040 because it lacks a language tag; update the opening fence
for the diagram (the triple backticks that start the ASCII diagram block shown
with "main: A---B---C..." etc.) to include a language tag such as text (i.e.,
change ``` to ```text) so the linter stops flagging MD040.
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: Repository YAML (base), Organization UI (inherited)
Review profile: CHILL
Plan: Enterprise
Run ID: 13884749-c162-47ef-81fc-6a13957286d2
📒 Files selected for processing (1)
RELEASE.md
|
/hold |
Signed-off-by: Jayapriya Pai <janantha@redhat.com>
|
addressed coderabbit comments This is good for review now |
| - New features and changes are merged into `main`. | ||
| - When ready to cut a new minor release, create a `release-X.Y` branch from `main`. From this point on, all release work (changelog, tagging) happens on the release branch. | ||
| - Bug fixes for a released version are merged into the **latest maintained release branch** (the `release-X.Y` branch with the highest `Y` for the current `X`). | ||
| - Bug fixes from the release branch are then merged back into `main` so that `main` always contains all commits from the latest release branch. |
There was a problem hiding this comment.
Isn't this unnecessary complicated? Wouldn't it be better to always get everything to master and cherrypick things that would be worth backporting (which is the model openshift-mcp is taking afaik?).
There was a problem hiding this comment.
Ok, that's fine too.
I was using a usual upstream approach used here.
There was a problem hiding this comment.
I depends on definition of usual (non of the upstreams I've been part of followed this pattern:) Out of curiosity, what repository/project you have in mind as an inspiration? I would be curious on what's the experience there.
Said that, I would really recommend the simpler model, unless there is some big win in the release process to do it this way.
There was a problem hiding this comment.
like in prometheus-operator :), also in prometheus https://github.com/prometheus/prometheus/blob/main/RELEASE.md
But for obs-mcp we can follow a simple approach if thats preferred.
Edit:
But a few adavantages of this approach I wanted to highlight and we can decide :)
-
Latest release branch gets the fix first and we can do immediate release without worrying of changes in main (cherrypicking to release branch becomes tricky when main is ahead of release branch very much). I see this as main reason for this approach because main may not be in a state to do immediate release but release branch will be a stable one and we can do quick release in case of bugfixes.
-
The merge-back step guarantees main always has every fix. With the reverse approach (fix in main, cherry-pick to release), someone might forget to cherry-pick and the release branch stays broken.
-
Cleaner git history
The tradeoff is contributors must target the release branch for bug fixes, not main. If someone accidentally merges a fix to main first, you need to cherry-pick to the release branch and merge back.
There was a problem hiding this comment.
There was a problem hiding this comment.
Thanos also follows like Prometheus IIUC :)
We can keep it simple for obs-mcp. May be backport only needed fixes to release branch and be ready to release from main any time? :)
Now that we have stable release v0.1.3 🤞🏻 so I have created release branch https://github.com/rhobs/obs-mcp/tree/release-0.1
This PR update release model where the release branch is created first and all release work (changelog, tagging) happens from it for next releases to manage releases better way