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-} 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 ]] || { [[ ${NEW_VERSION} =~ $VERSION_REGEX ]] || {
echo "!!! You must specify the version in the form of '$VERSION_REGEX'" >&2 echo "!!! You must specify the version in the form of '$VERSION_REGEX'" >&2
exit 1 exit 1
@ -32,6 +32,13 @@ VERSION_REGEX="v([0-9]+).([0-9]+(.[0-9]+)?)"
VERSION_MAJOR="${BASH_REMATCH[1]}" VERSION_MAJOR="${BASH_REMATCH[1]}"
VERSION_MINOR="${BASH_REMATCH[2]}" 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 if ! git diff-index --quiet --cached HEAD; then
echo "!!! You must not have any changes in your index when running this command" 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 exit 1
fi 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 SED=sed
if which gsed &>/dev/null; then if which gsed &>/dev/null; then
SED=gsed SED=gsed
@ -54,8 +71,8 @@ fi
VERSION_FILE="${KUBE_ROOT}/pkg/version/base.go" VERSION_FILE="${KUBE_ROOT}/pkg/version/base.go"
echo "+++ Updating to ${NEW_VERSION}" echo "+++ Updating to ${NEW_VERSION}"
"$SED" -r -i -e "s/gitMajor\s+string = \"[^\"]*\"/gitMajor string = \"$VERSION_MAJOR\"/" "${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_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}" "$SED" -r -i -e "s/gitVersion\s+string = \"[^\"]*\"/gitVersion string = \"$NEW_VERSION\"/" "${VERSION_FILE}"
gofmt -s -w "${VERSION_FILE}" gofmt -s -w "${VERSION_FILE}"
@ -67,11 +84,30 @@ echo "+++ Tagging version"
git tag -a -m "Kubernetes version $NEW_VERSION" "${NEW_VERSION}" git tag -a -m "Kubernetes version $NEW_VERSION" "${NEW_VERSION}"
echo "+++ Updating to ${NEW_VERSION}-dev" 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/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/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}" "$SED" -r -i -e "s/gitVersion\s+string = \"[^\"]*\"/gitVersion string = \"$NEW_VERSION-dev\"/" "${VERSION_FILE}"
gofmt -s -w "${VERSION_FILE}" gofmt -s -w "${VERSION_FILE}"
echo "+++ Committing version change" echo "+++ Committing version change"
git add "${VERSION_FILE}" git add "${VERSION_FILE}"
git commit -m "Kubernetes version ${NEW_VERSION}-dev" 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