diff --git a/build/mark-new-version.sh b/build/mark-new-version.sh index ac2c1e2db52..943ef7f95ea 100755 --- a/build/mark-new-version.sh +++ b/build/mark-new-version.sh @@ -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