You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@mesos.apache.org by vi...@apache.org on 2014/01/17 03:02:35 UTC

[2/3] git commit: Updated support/release.sh script to upload artifacts after vote.

Updated support/release.sh script to upload artifacts after vote.

Review: https://reviews.apache.org/r/16487


Project: http://git-wip-us.apache.org/repos/asf/mesos/repo
Commit: http://git-wip-us.apache.org/repos/asf/mesos/commit/5e61d071
Tree: http://git-wip-us.apache.org/repos/asf/mesos/tree/5e61d071
Diff: http://git-wip-us.apache.org/repos/asf/mesos/diff/5e61d071

Branch: refs/heads/master
Commit: 5e61d07116b9c6719dba07837d675663997c8539
Parents: 77d4c5a
Author: Vinod Kone <vi...@twitter.com>
Authored: Fri Dec 27 11:56:29 2013 -0800
Committer: Vinod Kone <vi...@twitter.com>
Committed: Thu Jan 16 17:48:05 2014 -0800

----------------------------------------------------------------------
 support/release.sh | 133 ++++++++++++++++++++++++++++++++++--------------
 1 file changed, 95 insertions(+), 38 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/mesos/blob/5e61d071/support/release.sh
----------------------------------------------------------------------
diff --git a/support/release.sh b/support/release.sh
index 1be2a5f..1f2c9d8 100755
--- a/support/release.sh
+++ b/support/release.sh
@@ -1,69 +1,126 @@
 #!/bin/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; }
 
-# TODO(benh): Figure out a way to get version number and release
-# candidate automagically.
 VERSION=${1}
 CANDIDATE=${2}
+TAG="${VERSION}-rc${CANDIDATE}"
 
-echo "${GREEN}Releasing mesos-${VERSION} candidate ${CANDIDATE}${NORMAL}"
+echo "${GREEN}Releasing mesos-${TAG} as mesos-${VERSION}${NORMAL}"
 
 read -p "Hit enter to continue ... "
 
-make distcheck || \
-  { echo "${RED}Failed to check the distribution${NORMAL}"; exit 1; }
+WORK_DIR=`mktemp -d /tmp/mesos-release-XXXX`
+atexit "rm -rf ${WORK_DIR}"
 
-TARBALL=mesos-${VERSION}.tar.gz
+pushd ${WORK_DIR}
 
-echo "${GREEN}Now let's sign the distribution ...${NORMAL}"
+SVN_DEV_REPO="https://dist.apache.org/repos/dist/dev/mesos"
 
-# Sign the tarball.
-gpg --armor --output ${TARBALL}.asc --detach-sig ${TARBALL} || \
-  { echo "${RED}Failed to sign the distribution${NORMAL}"; exit 1; }
+echo "${GREEN}Downloading the artifacts from the dev repo ...${NORMAL}"
+svn export ${SVN_DEV_REPO}/${TAG}
 
-echo "${GREEN}And let's create a MD5 checksum...${NORMAL}"
+SVN_RELEASE_REPO="https://dist.apache.org/repos/dist/release/mesos"
+SVN_RELEASE_LOCAL="${WORK_DIR}/release"
 
-# Create MD5 checksum.
-gpg --print-md MD5 ${TARBALL} > ${TARBALL}.md5 || \
-  { echo "${RED}Failed to create MD5 for distribution${NORMAL}"; exit 1; }
+echo "${GREEN}Checking out svn release repo ...${NORMAL}"
 
-DIRECTORY=public_html/mesos-${VERSION}-RC${CANDIDATE}
+# 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}Now let's upload our artifacts (the distribution," \
-  "signature, and MD5) ...${NORMAL}"
+echo "${GREEN}Uploading the artifacts (the distribution," \
+  "signature, and MD5) to the release repo ${NORMAL}"
 
-ssh people.apache.org "mkdir -p ${DIRECTORY}" || \
-  { echo "${RED}Failed to create remote directory${NORMAL}"; exit 1; }
+mv ${TAG} ${SVN_RELEASE_LOCAL}/${VERSION}
 
-{ scp ${TARBALL} people.apache.org:${DIRECTORY}/ && \
-  scp ${TARBALL}.asc people.apache.org:${DIRECTORY}/ && \
-  scp ${TARBALL}.md5 people.apache.org:${DIRECTORY}/; } || \
-  { echo "${RED}Failed to copy distribution artifacts${NORMAL}"; exit 1; }
+pushd ${SVN_RELEASE_LOCAL}
 
-echo "${GREEN}Now let's make the artifacts world readable ...${NORMAL}"
+svn add ${VERSION}
+svn commit -m "Adding mesos-${VERSION}."
 
-{ ssh people.apache.org "chmod a+r ${DIRECTORY}/${TARBALL}" && \
-  ssh people.apache.org "chmod a+r ${DIRECTORY}/${TARBALL}.asc" && \
-  ssh people.apache.org "chmod a+r ${DIRECTORY}/${TARBALL}.md5"; } || \
-  { echo "${RED}Failed to change permissions of artifacts${NORMAL}";
-    exit 1; }
+popd # ${SVN_RELEASE_LOCAL}
 
-echo "${GREEN}Now we'll create a git tag ...${NORMAL}"
+popd # ${WORK_DIR}
 
-MESSAGE="Tag for ${VERSION}-rc${CANDIDATE}."
-TAG="${VERSION}-rc${CANDIDATE}"
-git tag -m "${MESSAGE}" ${TAG} || \
-  { echo "${RED}Failed to create git tag${NORMAL}"; exit 1; }
+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}/mesos-${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.
 
-echo "${GREEN}Finally, we'll push the git tag to the repository...${NORMAL}"
+Thanks,
+__EOF__
+)
 
-REPOSITORY="https://git-wip-us.apache.org/repos/asf/mesos.git"
-git push ${REPOSITORY} ${TAG} || \
-  { echo "${RED}Failed to push git tag to the repo${NORMAL}"; exit 1; }
+echo "${MESSAGE}"
 
 exit 0