#!/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 MD5) 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 ${VERSION} ${TAG} echo "${GREEN}Pushing the git tag to the repository...${NORMAL}" MESOS_GIT_URL="https://git-wip-us.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://git-wip-us.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