blob: 9d05055afd2fd1ea94523fb10c6ea80780c0f0ac [file] [log] [blame]
#!/usr/bin/env bash
# This script should be used *after* a successful vote to publish a
# release. In addition to publishing the source tarball to svn repo
# this script also publishes the corresponding jar to Maven.
set -e
# Use 'atexit' for cleanup.
. $(dirname ${0})/atexit.sh
# Use colors for errors.
. $(dirname ${0})/colors.sh
test ${#} -eq 2 || \
{ echo "Usage: `basename ${0}` [version] [candidate]"; exit 1; }
VERSION=${1}
CANDIDATE=${2}
TAG="${VERSION}-rc${CANDIDATE}"
echo "${GREEN}Releasing mesos-${TAG} as mesos-${VERSION}${NORMAL}"
read -p "Hit enter to continue ... "
WORK_DIR=`mktemp -d /tmp/mesos-release-XXXX`
atexit "rm -rf ${WORK_DIR}"
pushd ${WORK_DIR}
SVN_DEV_REPO="https://dist.apache.org/repos/dist/dev/mesos"
echo "${GREEN}Downloading the artifacts from the dev repo ...${NORMAL}"
svn export ${SVN_DEV_REPO}/${TAG}
SVN_RELEASE_REPO="https://dist.apache.org/repos/dist/release/mesos"
SVN_RELEASE_LOCAL="${WORK_DIR}/release"
echo "${GREEN}Checking out svn release repo ...${NORMAL}"
# Note '--depth=empty' ensures none of the existing files
# in the repo are checked out, saving time and space.
svn co --depth=empty ${SVN_RELEASE_REPO} ${SVN_RELEASE_LOCAL}
echo "${GREEN}Uploading the artifacts (the distribution," \
"signature, and checksum) to the release repo ${NORMAL}"
mv ${TAG} ${SVN_RELEASE_LOCAL}/${VERSION}
pushd ${SVN_RELEASE_LOCAL}
svn add ${VERSION}
svn commit -m "Adding mesos-${VERSION}."
popd # ${SVN_RELEASE_LOCAL}
popd # ${WORK_DIR}
echo "${GREEN}Tagging ${TAG} as ${VERSION} ${NORMAL}"
git tag -a ${VERSION} ${TAG} -m "Tagging Mesos ${VERSION}"
echo "${GREEN}Pushing the git tag to the repository...${NORMAL}"
MESOS_GIT_URL="https://gitbox.apache.org/repos/asf/mesos.git"
git push ${MESOS_GIT_URL} ${VERSION}
echo "${GREEN}Successfully published artifacts to svn release repo ...${NORMAL}"
echo "${GREEN}Please *release* the staging maven repository that contains the mesos jar ...${NORMAL}"
input=""
while [ ! ${input:-n} = "y" ]; do
read -p "Have you released the maven repository? (y/n): " input
[ ${input:-n} = "y" ] || echo "Please release the staging maven repository before continuing"
done
echo "${GREEN}Success! Now send the following RESULT VOTE email ...${NORMAL}"
# Create the email body template to be sent to {dev,user}@mesos.apache.org.
MESSAGE=$(cat <<__EOF__
To: dev@mesos.apache.org, user@mesos.apache.org
Subject: [RESULT][VOTE] Release Apache Mesos ${VERSION} (rc${CANDIDATE})
Hi all,
The vote for Mesos ${VERSION} (rc${CANDIDATE}) has passed with the
following votes.
+1 (Binding)
------------------------------
***
***
***
+1 (Non-binding)
------------------------------
***
***
***
There were no 0 or -1 votes.
Please find the release at:
${SVN_RELEASE_REPO}/${VERSION}
It is recommended to use a mirror to download the release:
http://www.apache.org/dyn/closer.cgi
The CHANGELOG for the release is available at:
https://gitbox.apache.org/repos/asf?p=mesos.git;a=blob_plain;f=CHANGELOG;hb=${VERSION}
The mesos-${VERSION}.jar has been released to:
https://repository.apache.org
The website (http://mesos.apache.org) will be updated shortly to reflect this release.
Thanks,
__EOF__
)
echo "${MESSAGE}"
exit 0