-
Notifications
You must be signed in to change notification settings - Fork 40k
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
Enacting versioning.md: Prerelease versions between 1.0 and 1.1 #11495
Comments
cc @ghodss |
BTW, of particular note to @eparis maybe: alpha builds of this nature would not have any version information in the tarball. They would just look like |
So,
Re:
Can you elaborate a little more on what you mean when you refer to "the backmerge process for patch releases"? |
Super glad we're proceeding with this BTW, it has not been making sense to me why a version like 0.21.0 is a "prerelease" but 0.21.3 and 0.21.4 are both "finals". |
Yeah, agreed.
Today .. well, prior to today, and for a few months, we were doing some funny Git Jujitsu to get the tag on (And it bumps the version files, but that's only important for the tarballs.) |
Sounds good. Thanks again for driving this! |
One fidgety bit is that continuous integration versions like |
semver says the form should be 1.X.Y-alpha I find it confusing that 1.1.10-alpha < 1.1.0. |
Hrm? |
I would hope it works like: 1.1.0-alpha1, 1.1.0-alpha2 = master branch while we're doing development (I On Wed, Jul 22, 2015 at 1:54 PM, Zach Loafman notifications@github.com
|
Precisely right, though @bgrant0607 wants to kill -rcX in #11708. |
@thockin: Yes, except they're spelled |
I'm being super nitpicky, but we have existing parsers that vaguely care, and I wouldn't actually mind ditching some of them for semver parsers, too. (I even have a Google internal one that attempts to care about the prerelease matter for figuring out if it's a release version, because sigh.) |
Read semver again. My interpretation is that we need 1.1.0-alpha.X for minor versions X preceding 1.1.0 |
I think we're agreeing violently with each other. |
Indeed. Updated #11708. |
This PR changes how we version going forward in the following ways: * mark-new-version.sh is changed to a new policy of just splitting branches, rather than the old backmerge policy, as discussed in vX.Y.0, and a tag for vX.(Y+1).0-alpha.0 back to master. * I eliminated PRs back to master by making the version/base.go gitVersion and gitCommit just be `export-subst`. I testing that this works with GitHub's source export tarballs. There's no reason to bother with forcing the version into `base.go` (especially twice). The tarball versions outside a git tree aren't perfect (master looks like "v0.0.0+hash", and the release branches look more accurate), but our build contract has never allowed that version is perfect in this situation, so I think we can relax this. * That master tag gets picked up by "git describe" on master, so e.g. master would have immediately become v1.1.0-alpha.0 * In order to be more semVer compatible, the gitVersion field for the master branch now looks something like 1.1.0-alpha.0.6+84c76d1142ea4d. This is a tiny translation of the "git describe". I did this because there are a ton of consumers out there of the "gitVersion" field expecting it to be the full version, but it would be nice if this field were actually semver compliant. (1.1.0-alpha.0-6-84c76d1142ea4d is, but it's not *usefully* so.) Fixes #11495
This PR changes how we version going forward in the following ways: * mark-new-version.sh is changed to a new policy of just splitting branches, rather than the old backmerge policy, as discussed in vX.Y.0, and a tag for vX.(Y+1).0-alpha.0 back to master. * I eliminated PRs back to master by making the version/base.go gitVersion and gitCommit just be `export-subst`. I testing that this works with GitHub's source export tarballs. There's no reason to bother with forcing the version into `base.go` (especially twice). The tarball versions outside a git tree aren't perfect (master looks like "v0.0.0+hash", and the release branches look more accurate), but our build contract has never allowed that version is perfect in this situation, so I think we can relax this. * That master tag gets picked up by "git describe" on master, so e.g. master would have immediately become v1.1.0-alpha.0 * In order to be more semVer compatible, the gitVersion field for the master branch now looks something like 1.1.0-alpha.0.6+84c76d1142ea4d. This is a tiny translation of the "git describe". I did this because there are a ton of consumers out there of the "gitVersion" field expecting it to be the full version, but it would be nice if this field were actually semver compliant. (1.1.0-alpha.0-6-84c76d1142ea4d is, but it's not *usefully* so.) Fixes kubernetes#11495
versioning.md describes a fanstasy that eventually needs to be enacted. I'm going to describe a super fast way to implement something, and if someone wants to do something better, they can maybe implement the infrastructure.
Right now, we only push git tags on major/minor/patch releases. I'm going to propose the following changes that actually get us to that document:
s/1.1-alpha.1/1.1.0-alpha.1/
to be semver compliant (minor patch to the existing design).alpha
releases are simply tags of known good hashes onmaster
that we'll provide builds for on GCS in a known directory. Similar to how we're handling CI builds (which are wild wild west), we can provide ags://kubernetes-release/ci/latest-alpha.txt
that is the alpha build. We will literally just promote a previous git hash, i.e.v1.1.0-alpha.0-6-g84c76d1
will becomev1.1.0-alpha.1
, and we will push the binaries for that build (but not bother for intervening CI builds - and master will broadcastalpha.1-<y>
for some<y>
a few commits after the stamping).alpha
builds. If analpha
build is particularly crappy, we may stamp a new one that week, but that's it.master
will be broadcasting a1.1.x
tag, not a1.0.x
tag.beta
. Maybe.The text was updated successfully, but these errors were encountered: