make mark-new-release.sh do branching and tell you exactly what to do next

We keep getting tags and branches wonky.  This will land

v0.14.0 as an ancestor of master
v0.14.1 will NOT be an ancestor of master

I can do the later, it only a touch of git gymnastics, not really hard, but
we only occasionably do that today. (0.13.1 is an ancestor of master,
but 0.13.2 is not)
This commit is contained in:
Eric Paris 2015-03-27 15:24:28 -05:00
parent f0da47b2dd
commit 3919a38ad6

View File

@ -24,7 +24,7 @@ KUBE_ROOT=$(dirname "${BASH_SOURCE}")/..
NEW_VERSION=${1-}
VERSION_REGEX="v([0-9]+).([0-9]+(.[0-9]+)?)"
VERSION_REGEX="v([0-9]+).([0-9]+)(.([0-9]+))?"
[[ ${NEW_VERSION} =~ $VERSION_REGEX ]] || {
echo "!!! You must specify the version in the form of '$VERSION_REGEX'" >&2
exit 1
@ -32,6 +32,13 @@ VERSION_REGEX="v([0-9]+).([0-9]+(.[0-9]+)?)"
VERSION_MAJOR="${BASH_REMATCH[1]}"
VERSION_MINOR="${BASH_REMATCH[2]}"
VERSION_PATCH="${BASH_REMATCH[4]}"
# force .0 if no patch version specified
if [[ -z ${VERSION_PATCH:-} ]]; then
VERSION_PATCH="0"
NEW_VERSION="${NEW_VERSION}.0"
fi
if ! git diff-index --quiet --cached HEAD; then
echo "!!! You must not have any changes in your index when running this command"
@ -43,6 +50,16 @@ if ! git diff-files --quiet pkg/version/base.go; then
exit 1
fi
release_branch="release-${VERSION_MAJOR}.${VERSION_MINOR}"
if [[ "${VERSION_PATCH}" != "0" ]]; then
branch=$(git rev-parse --abbrev-ref HEAD)
if [[ ${branch} != "${release_branch}" ]]; then
echo "!!! You are trying to tag to an existing minor release but are not on the release branch: ${release_branch}"
exit 1
fi
fi
SED=sed
if which gsed &>/dev/null; then
SED=gsed
@ -54,8 +71,8 @@ fi
VERSION_FILE="${KUBE_ROOT}/pkg/version/base.go"
echo "+++ Updating to ${NEW_VERSION}"
"$SED" -r -i -e "s/gitMajor\s+string = \"[^\"]*\"/gitMajor string = \"$VERSION_MAJOR\"/" "${VERSION_FILE}"
"$SED" -r -i -e "s/gitMinor\s+string = \"[^\"]*\"/gitMinor string = \"$VERSION_MINOR\"/" "${VERSION_FILE}"
"$SED" -r -i -e "s/gitMajor\s+string = \"[^\"]*\"/gitMajor string = \"${VERSION_MAJOR}\"/" "${VERSION_FILE}"
"$SED" -r -i -e "s/gitMinor\s+string = \"[^\"]*\"/gitMinor string = \"${VERSION_MINOR}.${VERSION_PATCH}\"/" "${VERSION_FILE}"
"$SED" -r -i -e "s/gitVersion\s+string = \"[^\"]*\"/gitVersion string = \"$NEW_VERSION\"/" "${VERSION_FILE}"
gofmt -s -w "${VERSION_FILE}"
@ -67,11 +84,30 @@ echo "+++ Tagging version"
git tag -a -m "Kubernetes version $NEW_VERSION" "${NEW_VERSION}"
echo "+++ Updating to ${NEW_VERSION}-dev"
"$SED" -r -i -e "s/gitMajor\s+string = \"[^\"]*\"/gitMajor string = \"$VERSION_MAJOR\"/" "${VERSION_FILE}"
"$SED" -r -i -e "s/gitMinor\s+string = \"[^\"]*\"/gitMinor string = \"$VERSION_MINOR\+\"/" "${VERSION_FILE}"
"$SED" -r -i -e "s/gitMajor\s+string = \"[^\"]*\"/gitMajor string = \"${VERSION_MAJOR}\"/" "${VERSION_FILE}"
"$SED" -r -i -e "s/gitMinor\s+string = \"[^\"]*\"/gitMinor string = \"${VERSION_MINOR}.${VERSION_PATCH}\+\"/" "${VERSION_FILE}"
"$SED" -r -i -e "s/gitVersion\s+string = \"[^\"]*\"/gitVersion string = \"$NEW_VERSION-dev\"/" "${VERSION_FILE}"
gofmt -s -w "${VERSION_FILE}"
echo "+++ Committing version change"
git add "${VERSION_FILE}"
git commit -m "Kubernetes version ${NEW_VERSION}-dev"
if [[ "${VERSION_PATCH}" == "0" ]]; then
echo "+++ Creating release branch"
git branch "${release_branch}"
fi
echo "Success you must now:"
echo ""
echo "- Push the tag:"
echo " git push git@github.com:GoogleCloudPlatform/kubernetes.git v${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_PATCH}"
if [[ "${VERSION_PATCH}" == "0" ]]; then
echo "- Submit HEAD as a PR to master"
echo "- Merge that PR"
echo "- Push the new release branch"
echo " git push git@github.com:GoogleCloudPlatform/kubernetes.git ${release_branch}"
else
echo "- Submit HEAD as a PR to ${release_branch}"
echo "- Merge that PR"
fi