-
Notifications
You must be signed in to change notification settings - Fork 291
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Release management #555
Release management #555
Conversation
Signed-off-by: Nilekh Chaudhari <1626598+nilekhc@users.noreply.github.com>
Hi @nilekhc. Thanks for your PR. I'm waiting for a kubernetes-sigs member to verify that this patch is reasonable to test. If it is, they should reply with Once the patch is verified, the new status will be reflected by the I understand the commands that are listed here. Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository. |
@nilekhc: GitHub didn't allow me to assign the following users: sozercan. Note that only kubernetes-sigs members, repo collaborators and people who have commented on this issue/PR can be assigned. Additionally, issues/PRs can only have 10 assignees at the same time. In response to this: Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository. |
@nilekhc: GitHub didn't allow me to assign the following users: sozercan. Note that only kubernetes-sigs members, repo collaborators and people who have commented on this issue/PR can be assigned. Additionally, issues/PRs can only have 10 assignees at the same time. In response to this:
Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository. |
/cc @tam7t |
/label tide/merge-method-squash |
docs/Release_Management.md
Outdated
|
||
- A new release should be created on the _`second Wednesday`_ of each month. This schedule not only allows us to do bug fixes, but also provides an opportunity to address underline image vulnerabilities etc. if any. | ||
|
||
- Once the new version is decided(as per above guideline), release candidate branch should be created from `master` with name `vX.Y.Z-rc.W` followed by release with same tag, for eg. if new version is going to be `v0.1.2` then release candidate branch should be `v0.1.2-rc.0` |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
there's some discrepancies between this and our current release docs:
we use release-<VERSION>
for the branch names (no rc's)
@aramase do you think this or the release docs should be updated? Should we also create long lived release branches?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I think we should create long live release branches as part of v0.1.0
. This could be the 1st release that we can explore options to cherry pick bug fixes and cut patch releases.
Note: we'll also need to track pipeline changes to handle these scenarios of building from release branches.
As for the release branches, I don't think we need release branches for rc. We cut a release branch for the intended release release-v0.1.0
. RC images will be published from the master branch with tags. After rc image validation, we'll build cut a stable release branch and build the image from the release branch. WDYT?
This is how kubernetes does it today
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
that sgtm, and also the merging to master + cherry picking to release branches
### Minor releases | ||
- Minor releases contain security and bug fixes as well as _**new features**_. | ||
|
||
- They are backwards compatible. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Are we committing to backwards compatible within the Major release?
Does backwards compatible imply upgrade path or just features?
I'm not sure that we would want to commit to backwards compatibility until v1 Major release and within a Major release I'm not sure we want to support arbitrary upgrades.
example:
- Should
0.2.0
be backwards compatible in features with0.1.0
- Should a direct upgrade from
1.1.0
to1.3.0
be possible or may you need to go through1.1.0 -> 1.2.0 -> 1.3.0
(from the test gate section above i assume that the user would need to step through each minor release)
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I think major release should imply breaking change. For eg if we go from 1.0.0
-> 2.0.0
then we indicate there is breaking change and not all features would work as expected.
Also, backward compatibility I am thinking in terms of features and not upgrade path.
Should 0.2.0 be backwards compatible in features with 0.1.0
This is correct
Should a direct upgrade from 1.1.0 to 1.3.0 be possible or may you need to go through 1.1.0 -> 1.2.0 -> 1.3.0 (from the test gate section above i assume that the user would need to step through each minor release)
I think it should be possible to go from 1.1.0
-> 1.3.0
. I don't believe we have any such restriction today. (Please correct me if I am wrong here)
As for backward compatibility we can document since which version/release we can support. WDYT?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
ACK, I'm not sure its feasible for us to maintain and test all permutations of up update paths, so maybe just adding some wording that upgrades are only tested for consecutive version numbers
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Since you're working on #457 - yes we intend to so this sgtm
docs/Release_Management.md
Outdated
|
||
- A new release should be created on the _`second Wednesday`_ of each month. This schedule not only allows us to do bug fixes, but also provides an opportunity to address underline image vulnerabilities etc. if any. | ||
|
||
- Once the new version is decided(as per above guideline), release candidate branch should be created from `master` with name `vX.Y.Z-rc.W` followed by release with same tag, for eg. if new version is going to be `v0.1.2` then release candidate branch should be `v0.1.2-rc.0` |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I think we should create long live release branches as part of v0.1.0
. This could be the 1st release that we can explore options to cherry pick bug fixes and cut patch releases.
Note: we'll also need to track pipeline changes to handle these scenarios of building from release branches.
As for the release branches, I don't think we need release branches for rc. We cut a release branch for the intended release release-v0.1.0
. RC images will be published from the master branch with tags. After rc image validation, we'll build cut a stable release branch and build the image from the release branch. WDYT?
This is how kubernetes does it today
docs/Release_Management.md
Outdated
|
||
- Once the new version is decided(as per above guideline), release candidate branch should be created from `master` with name `vX.Y.Z-rc.W` followed by release with same tag, for eg. if new version is going to be `v0.1.2` then release candidate branch should be `v0.1.2-rc.0` | ||
|
||
- Run tests to ensure stability. If issues/bugs are found, submit patches to the RC's release branch and create a new RC with the tag `vX.Y.Z-rc.W+1`. Apply those same patches to the `master` branch. Repeat until the release is suitably stable. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
We should merge the fix to master and then cherry pick to the release branch (similar to kubernetes)
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
updated
/ok-to-test |
/lgtm |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
/approve
[APPROVALNOTIFIER] This PR is APPROVED This pull-request has been approved by: aramase, nilekhc The full list of commands accepted by this bot can be found here. The pull request process is described here
Needs approval from an approver in each of these files:
Approvers can indicate their approval by writing |
What this PR does / why we need it:
Defines Release Management guidelines.
Which issue(s) this PR fixes (optional, using
fixes #<issue number>(, fixes #<issue_number>, ...)
format, will close the issue(s) when the PR gets merged):Fixes #541
Special notes for your reviewer: