-
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 #11941
Enacting versioning.md #11941
Conversation
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
GCE e2e build/test passed for commit 4363f14. |
Ping? |
i'm looking |
Note that this isn't the complete solution, we need to augment this script so that we can tag things: |
I note that
I guess really it is the "gitMajor and gitMinor" not the second half of the diff that I thought we were trying to escape, and I wrong on that? |
The script is attempting to adjust the
|
So |
(It's a crude approximation if someone is trying to work outside of Git.) |
ok, so more specifically, gitMinor. It seems that hack/lib/version.sh::kube::version::get_version_vars() only sets the gitMinor to .Y whereas this is setting gitMinor to .Y.Z.
|
probably I just don't understand what you are trying to do in base.go..... |
That part might've been unintentional. Looking. |
also the +$Format: stuff, I guess I don't know where that is useful/used.... |
That's because part of this review is a process change. I'm abandoning any PRs back to |
Here's an example way to see it:
And look at the base.go in there. |
looking at the two |
I would test this on a patch release to answer your question, but I STILL can't because of #12037. I've been blocked by that for a couple of weeks now. |
But I don't think this is doing anything different than it was in the past, build wise, or with |
I was able to test this on
After a
|
Output building from git archive:
Output building the exact same thing from git tree:
notice how "minor" is different? |
Yeah, I can fix that, but I actually don't think I'm doing anything different in this PR than we do today. |
@@ -93,15 +94,13 @@ echo "+++ Running ./versionize-docs" | |||
${KUBE_ROOT}/build/versionize-docs.sh ${NEW_VERSION} | |||
git commit -am "Versioning docs and examples for ${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_PATCH}" | |||
|
|||
dochash=$(git log -n1 --format=%H) | |||
|
|||
VERSION_FILE="${KUBE_ROOT}/pkg/version/base.go" | |||
|
|||
GIT_MINOR="${VERSION_MINOR}.${VERSION_PATCH}" | |||
echo "+++ Updating to ${NEW_VERSION}" | |||
$SED -ri -e "s/gitMajor\s+string = \"[^\"]*\"/gitMajor string = \"${VERSION_MAJOR}\"/" "${VERSION_FILE}" | |||
$SED -ri -e "s/gitMinor\s+string = \"[^\"]*\"/gitMinor string = \"${GIT_MINOR}\"/" "${VERSION_FILE}" |
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.
ok, i finally get your point. It's right here. Not this PRs fault.
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.
Honestly, I was half tempted to follow the TODO
in base.go
and kill the gitMajor/gitMinor fields, but I was afraid of scripts consuming them. This almost lends credence to no one consuming them usefully, because the "official" builds don't actually have anything useful there.
Oh Interesting if I take what I did above and add a commit (so i'm not 'on' the 1.0.2 tag)!
Now the "minor" is But anyway, now I'm wrapping my head aorund |
Oh, right, that's the other things I was going to play with on the release branch after I got
|
It's actually almost perfect, just barely not semver.org compliant. I'll try to figure it out soon. I guess we need to push a pre-release tag of some sort on the release branch, too, if we want to do this "right". |
actually, on the release branch, just git-describe is semver compliant... s/-g/+/ |
# | ||
# TODO: We continue calling this "git version" because so many | ||
# downstream consumers are expecting it there. | ||
KUBE_GIT_VERSION=$(echo "${KUBE_GIT_VERSION}" | sed "s/-\([0-9]\{1,\}\)-g\([0-9a-f]\{14\}\)$/.\1\+\2/") |
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 want: sed "s/-\([0-9]\{1,\}\)-g\([0-9a-f]\{14\}\)$/-\1\+\2/")
(the only change is a single .
to -
)
The semver line 9 says that you may include -
inside the prerelease information. On the release branch this would mean you get versions like v1.0.2-2+abcdef
which is semver happy. On the master branch this would mean get versions like v1.2.0-alpha.0-1+abcdef
which is also semver happy.
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.
/me can't decide in semver.org if v1.0.0-0.11-0
> v1.0.0-0.2-0
is semver
is only splitting on the .
and doing alphabetic comparision between 11-0
and 2-0
something tells me it would give the "wrong" answer. Then again, since nothing in the world actually seems to use semver, other than people, and people would do the right thing, maybe it doesn't matter? Ugggh
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.
Yeah, that's the issue. I got this intentionally right for master because we have some needs for continuous integration, so I really wanted v1.2.0-alpha.0-1+abcdef
< v1.2.0
.
It's not sure how much CI is going to happen on the release branch. Arguably more should. If you look at, say, the FreeBSD model, they have a hierarchy of CURRENT / STABLE / RELEASE, where STABLE is effectively this release branch. In that world, it would be useful if the build numbers that came off the release branch looked "correct", whatever that is.
Something like v1.0.2-2+abcdef
is compliant, but it's strictly less than v1.0.2
, hence my comment about a second tag (we could tag v1.0.3-prerelease
). Which, thinking out loud, I have no idea where you even put the second tag, because I killed the "dev" version commit - I could bring that back just for the purpose of tagging, but it seemed like such a wasted commit when the scripts can do it for you.
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'm kind of inclined to punt and make it semver.org parseable but not correctly ordered for now, on the release branch.
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 sounds good to me. Lets do it. Commit. and Iterate. I've wasted enough of your time.
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.
Er, I'm not sure that's the right change to the regex, for the master
case. (Sorry, back actually at a computer now.) My goal was something like v1.1.0-alpha.0.6+84c76d1142ea4d
. The numeric .6
past the .0
actually force it to sort numerically, whereas semver says that .0-6
sorts lexically, so when you get to .0-10
, it's obnoxious (without doing, say, printf %010d
or something`).
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.
(Which is to say, maybe let's just go with the regex that's in the PR right now and figure out a better regex for the release branch later, also. v1.0.1.1
might look funny, but hey.)
…41-upstream-release-1.0 Automated cherry pick of #11941
A small bug from #11941: When we push to GCS, we were pushing bucket names that matched the old pattern `git describe`, e.g.: gs://kubernetes-release/ci/v1.1.0-alpha.0-2413-g986d37d/ But after #11941, the binaries inside these actually have versions that look like: v1.1.0-alpha.0.2413+g986d37d to more closely match up with semver. This pull makes the GCS directory match the binaries it's already serving.
A small bug from #11941: When we push to GCS, we were pushing bucket names that matched the old pattern `git describe`, e.g.: gs://kubernetes-release/ci/v1.1.0-alpha.0-2413-g986d37d/ But after #11941, the binaries inside these actually have versions that look like: v1.1.0-alpha.0.2413+g986d37d to more closely match up with semver. This pull makes the GCS directory match the binaries it's already serving.
I have 140 commits in this directory and I get a lot of cleanup reviews and want to be able to approve changes to hack/.golint_failures. 0e69316 delete unused cache b9c7007 enable token review when openapi is generated d5bbc35 make deps-approvers the approvers of sample-cli-plugin/Godeps 4186abf bzl: fix update-bazel.sh 7b47229 remove deprecated /proxy paths b973840 gke-certificates-controller: rm -rf 4961065 cluster: remove unused functions 1e2b644 cluster: move logging library to hack/ bef68f7 cluster: build gci mounter like other go binaries fe7ba9e kubeadm: use kubelet bootstrap instead of reimplementing 3c39173 fixit: break sig-cluster-lifecycle tests into subpackage 64f77eb enable race detection on integration tests cdcfa35 promote tls-bootstrap to beta ff4a814 migrate set generation to go genrule 3600d49 delete benchmark integration tests that don't work at all 21617a6 don't use build tags to mark integration tests 59fc948 bump rules_go and go version for bazel builds ba5c285 bazel: implement git build stamping ad42b42 move kubeadm api group testing to kubeadm package c8ce55f Revert "Merge pull request kubernetes#41132 from kubernetes/revert-40893-kubelet-auth" cbe5bd9 bump gazel to v14 86d9493 remove second CA used for kubelet auth in favor of webhook auth 04a7880 update repo local config to allow redirects from gopkg.in 44b7246 autogenerated 96c146c promote certificates.k8s.io to beta 087016d update gazel to v8 837eee4 pin gazel to v3 e225625 add a configuration for kubelet to register as a node with taints 584689f implement kubectl procelain csr commands 93f737e fix verify-bazel.sh on mac and windows 5dc7554 bazel: implement set-gen as a bazel genrule 61bd6aa remove docs/user-guide from bindata search path 224e32b make godep licenses/copyright check case insensitive 1cd2968 godep: vendor go-bindata d380cb1 fix realpath issue on mac ea632fa Revert "disable bazel build" 27116c6 rename build/ to build-tools/ ee15c80 disable bazel build 999c967 ignore BUILD in the flags-underscore.py validation b250a88 don't check BUILD file when verifying godeps a2eec91 add bazel presubmits to verify BUILD files are up to date c17a8a7 kubectl: apply prune should fallback to basic delete when a resource has no reaper 25e4dcc kubeadm: fix conversion macros and add kubeadm to round trip testing 6d17a87 kubectl: add two more test of kubectl apply --prune 62960aa add a test for kubectl apply --prune 6339d91 add a test to test-cmd.sh for apply -f with label selector b421bf4 build kube-discovery and kubeadm with release 0c76cf5 fix hack/verify-codegen.sh 9f379df add an option to controller-manager to auto approve all CSRs 95e2e29 move kube-dns to the cluster/addons/ directory f3de21b move integration tests into individual pacakges af0177e cleanup hack/verify-govet.sh to throttle process creation 2c93ea5 Merge pull request kubernetes#27289 from mikedanese/split-verify ee34c76 split verify out of unit/integration suite d046275 now that go test runs iteration loops, use that instead of custom executor 1ef1906 Merge pull request kubernetes#26197 from wonderfly/update_default_master_image fbf6bbc Merge pull request kubernetes#25596 from derekparker/inotify 3e1c0b5 run kube-addon-manager in a pod c5cc0c3 Merge pull request kubernetes#24277 from ihmccreery/upgrade-timeout 132c427 add linux fastbuild option to ./build/release.sh 2857baa use defaults in test-dockerized for etcd prefix and api versions 695211e Merge pull request kubernetes#21105 from caesarxuchao/watchCacheForIntegration 2172e0d Merge pull request kubernetes#21108 from mml/slow-flake 1478cf3 Merge pull request kubernetes#21090 from ihmccreery/feature-reboot b3172a4 kubelet: add a pidfile b1743a6 this is a manual reversion of kubernetes#20702 5b27055 Merge pull request kubernetes#19378 from ihmccreery/remove-update-jobs b743827 Merge pull request kubernetes#19659 from ihmccreery/timeout-reboot a6589f7 hack: ignore cluster/env.sh in boilerplate check f71657d retrofit the scheduler with the leader election client. bf763bb Merge pull request kubernetes#19498 from pwittrock/nodelabels 22cfa5e build: move some of hack/lib/ into a new cluster/lib/ b174fc9 Merge pull request kubernetes#18994 from bprashanth/flannel_suite a09d85b expose master count configuration in a cli option on apiserver c2753d7 bump ci go version to 1.5.2 0655e65 fall back to old behavior when deciding mem availablity during build 1d9d11c run kube-proxy in a static pod 91de3a1 cleanup some nits in hack/get-build.sh cd79c6c fix unbound variable error in hace/get-build.sh 5e64590 renable enable var to correct name and only use it when needed 9bdb860 add apigroup installer and tests e6d3b47 add componentconfig api group to autogen stuff 88008de Merge pull request kubernetes#16459 from mikedanese/enable-exp d28d134 Merge pull request kubernetes#16533 from ihmccreery/upgrade-test-fixes 3343522 enable deployment and daemonset in gce upgrade tests 7cbf249 Merge pull request kubernetes#15836 from wojtek-t/codecgen_from_godeps 92404e7 add upgrade test between 1.0 and 1.1 for gce 95b8394 Merge pull request kubernetes#15861 from mikedanese/upgrade-num-minion ece5779 increase NUM_MINIONS for jenkins gce upgrade test b8b35af actually promote daemonset simple test out of flaky and skip all daemonset tests in gke d379a36 copy directory not contents of directory 402e68e add slow test for terminated pod garbage collection c0943f1 add intermediate e2e runs to gce upgrade 10d56ff promote simple daemonset test out of flaky b635fc5 Merge pull request kubernetes#15228 from mesosphere/sttts-conformance-tags 392f33e Merge pull request kubernetes#14054 from mikedanese/register-master fa60bbe add flag to kubelet to ignore the cidr passed down by the apiserver on the master 53e14c7 diff all of pkg/ when verifying swagerspec instead of just pkg/api/ 05ef8ed Merge pull request kubernetes#15104 from mikedanese/ds-e2e fe820fc break up daemonset test into two tests 833be48 enable all experimental flags with one controller 905e971 be explicit about minion group size in upgrade test ae7d3d5 add gce-upgrade to jenkins/e2e.sh 376faea add pod garbage collection b0457be Merge pull request kubernetes#13058 from mvdan/go1.5 a48f218 Merge pull request kubernetes#13754 from tummychow/labels-deps 1fec199 Merge pull request kubernetes#13824 from kubernetes/revert-13547-hpa-kubeup fa40ced move contrib/for-tests to test/images f061875 updating all references in .sh scripts 8326697 rewrite all links to prs to k8s links fb02b33 fix build 8e48431 Revert "demote to flaky tests from parallel e2e" b56edd1 Merge pull request kubernetes#11727 from ZJU-SEL/build-nonstatic-hyperkube cf4cb1a Merge pull request kubernetes#10474 from kargakis/scale-multiple-controllers e376a09 demote to flaky service tests from parallel e2e 7c47d6b Merge pull request kubernetes#12009 from smarterclayton/fix_cmd_config 0269e2b Merge pull request kubernetes#11941 from GoogleCloudPlatform/enact_version_md 94a387d Revert "Improve conversion to support multiple packages" 1a613c4 Merge pull request kubernetes#9971 from smarterclayton/make_conversion_more_flexible 0ae48c4 Merge pull request kubernetes#11927 from wojtek-t/remove_shell_services 59a1dd4 Merge pull request kubernetes#11789 from mbforbes/nodesNetwork 6294070 Merge pull request kubernetes#11803 from wojtek-t/move_back_from_flaky daa6d4d Merge pull request kubernetes#11285 from liggitt/ca 9f16fd9 Merge pull request kubernetes#11860 from ingvagabund/delimiter-for-X-option-eparis c0acfbc Merge pull request kubernetes#11421 from nikhiljindal/exposeServcPort ae1c8e5 Merge pull request kubernetes#11737 from thockin/cleanup-remove-v1beta3 01ee1b8 Merge pull request kubernetes#10840 from jbeda/master d4d99de make mungedoc exit 1 if manual changes are needed and wire up erro message. 337772a fix all tests 055115a fake realpath, and standardize treatment of trailing / of dirs in gendoc b4514ee fix run-gendocs to point to new repo location c053b9a add documentation and script on how to get recent and "nightly" builds 719870f add publishing of latest-green.txt to jenkins e2e tests on success 1e130e0 remove --machines from code and docs dbb47fe remove e2e run before cluster upgrade de55e17 e2e test cluster stability during upgrade c9fcf45 fix bad cmd-test for patch. 9f91532 fix error where we can't use patch and add cmd-test for patch and file update
This PR changes how we version going forward in the following ways:
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.
gitVersion and gitCommit just be
export-subst
. I testing that thisworks with GitHub's source export tarballs. There's no reason to
bother with forcing the version into
base.go
(especially twice). Thetarball 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.
master would have immediately become v1.1.0-alpha.0
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