Release strategy: alpha, beta, rc#1758
Release strategy: alpha, beta, rc#1758tiran wants to merge 1 commit intoinstructlab:maininstructlab/instructlab:mainfrom
Conversation
| ## Git Branches and Tags | ||
|
|
||
| Every `X.Y` release stream gets a new branch. | ||
| Every `X.Y` release stream gets a new branch `release-X.Y`. The release branch is created with first beta, release candidate, or final `X.Y.0` release. |
There was a problem hiding this comment.
The branch name, release-X.Y, differs from the name below release-vX.Y
There was a problem hiding this comment.
Yup, release branches are of the form release-vX.Y
There was a problem hiding this comment.
This is the point I made in the CLI call this week. When we are ready to make an RC build, we need to make it from a release branch and not main. This then opens up main for work. I am not as concerned about beta releases from main but I am also ok with saying beta releases need to come from a release branch.
docs/release-strategy.md
Outdated
| 1. Validate the release branch with an [E2E test](ci.md). | ||
| 1. Create a new release on GitHub targeting the release branch and using the latest Y-Stream tag as the previous release (e.g. `0.15.1` precedes `0.16.0a1`). | ||
|
|
||
| ### Y-Stream (`X.Y.0`, `X.Y.0b1`, `X.Y.0rc1`) |
There was a problem hiding this comment.
| ### Y-Stream (`X.Y.0`, `X.Y.0b1`, `X.Y.0rc1`) | |
| ### Y-Stream (`X.Y.0b1`, `X.Y.0rc1`, `X.Y.0`) |
I would order these in the proper order.
|
|
||
| Alpha releases are tagged as `vX.Y.Za1`, `vX.Y.Za2`, and so on. Alpha releases are created from the main branch, **not** from a `release-X.Y` branch. | ||
|
|
||
| Beta releases are tagged as `vX.Y.Zb1`, `vX.Y.Zb2`, and so on from `release-X.Y` branch. |
There was a problem hiding this comment.
I've always used a tag as the base of a branch, too. So, tag a beta, make the release branch from the same point, then future tags for that release series are on the branch and clearly after only that initial branching version and not intermingled with pre-releases of other versions on the main branch.
| ## Git Branches and Tags | ||
|
|
||
| Every `X.Y` release stream gets a new branch. | ||
| Every `X.Y` release stream gets a new branch `release-X.Y`. The release branch is created with first beta, release candidate, or final `X.Y.0` release. |
There was a problem hiding this comment.
Do we need alphas, betas, and RCs? We want an alpha today to avoid breaking community users while we test some downstream build machinery. The pre-release type doesn't really matter for that, so we could just always use alphas. Maybe there's a reason to use different types upstream, though?
There was a problem hiding this comment.
I would like to start using RCs from here on out with a couple of days of testing between rc1 and final.
- alphas are cut from the main branch and can have known bugs
- betas are cut from a release branch and should have stable API and requirements
- rcs should be stable. When everything goes right, then
1.2.3rc1tag will become the1.2.3tag without any modifications.
russellb
left a comment
There was a problem hiding this comment.
+1 to the clarification that we do alphas from main
Proposal for using alpha, beta, and RCs. Signed-off-by: Christian Heimes <cheimes@redhat.com>
|
|
||
| Z-stream releases are meant for critical bug and documentation fixes. Z-stream releases are cut as maintainers see fit. | ||
|
|
||
| A final release may be preceded by a pre-release (alpha `X.Y.ZaN`, beta `X.Y.ZbN`, or release candidate `X.Y.ZrcN`). PyPI and pip automatically recognize them as pre-release. Pip ignores pre-releases unless the user explicitly requests a pre-release with `pip install --pre` or `pip install instructlab==0.16.0a1`. |
There was a problem hiding this comment.
| A final release may be preceded by a pre-release (alpha `X.Y.ZaN`, beta `X.Y.ZbN`, or release candidate `X.Y.ZrcN`). PyPI and pip automatically recognize them as pre-release. Pip ignores pre-releases unless the user explicitly requests a pre-release with `pip install --pre` or `pip install instructlab==0.16.0a1`. | |
| A release may be preceded by a pre-release, e.g. | |
| - Alpha (`X.Y.ZaN`) | |
| - Beta (`X.Y.ZbN`) | |
| - Release Candidate (`X.Y.ZrcN`) | |
| PyPI and pip automatically recognize these types of tags as pre-release. Pip ignores pre-releases unless the user explicitly requests a pre-release with `pip install --pre` or `pip install instructlab==0.16.0a1`. |
| ## Git Branches and Tags | ||
|
|
||
| Every `X.Y` release stream gets a new branch. | ||
| Every `X.Y` release stream gets a new branch `release-X.Y`. The release branch is created with first beta, release candidate, or final `X.Y.0` release. |
There was a problem hiding this comment.
Yup, release branches are of the form release-vX.Y
| 1. Announce release via the following: | ||
| - The `#announce` channel on Slack | ||
| - The `announce` mailing list |
There was a problem hiding this comment.
Do we want to do as broad of an announcement for pre-releases as we do regular releases?
|
@tiran - could you take this out of draft pls |
|
This pull request has merge conflicts that must be resolved before it can be |
|
This pull request has merge conflicts that must be resolved before it can be |
|
@tiran Are you planning to complete this release strategy? If not or you don't have the cycles currently, would you mind if I rebased and took it over for you? |
|
This pull request has merge conflicts that must be resolved before it can be merged. @tiran please rebase it. https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/working-with-forks/syncing-a-fork |
|
This pull request has merge conflicts that must be resolved before it can be merged. @tiran please rebase it. https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/working-with-forks/syncing-a-fork |
|
This pull request has been automatically marked as stale because it has not had activity within 60 days. It will be automatically closed if no further activity occurs within 30 days. |
Proposal for using alpha, beta, and RCs.
Checklist:
conventional commits.