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:36 UTC

[3/3] git commit: Added a script to automate voting a release candidate.

Added a script to automate voting a release candidate.

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


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

Branch: refs/heads/master
Commit: 77d4c5a59b0507a8e6a8ee02849a811280ecd2ac
Parents: 5c47810
Author: Vinod Kone <vi...@twitter.com>
Authored: Thu Dec 26 17:31:20 2013 -0800
Committer: Vinod Kone <vi...@twitter.com>
Committed: Thu Jan 16 17:48:05 2014 -0800

----------------------------------------------------------------------
 support/vote.sh | 158 +++++++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 158 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/mesos/blob/77d4c5a5/support/vote.sh
----------------------------------------------------------------------
diff --git a/support/vote.sh b/support/vote.sh
new file mode 100755
index 0000000..95aba2b
--- /dev/null
+++ b/support/vote.sh
@@ -0,0 +1,158 @@
+#!/bin/bash
+
+# This script should be used for calling a vote for a release candidate.
+# In addition to publishing the source tarball to svn repo this script
+# also deploys the corresponding jar to a staging Maven repo.
+
+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}Voting for mesos-${VERSION} candidate ${CANDIDATE}${NORMAL}"
+
+read -p "Hit enter to continue ... "
+
+MESOS_GIT_URL="https://git-wip-us.apache.org/repos/asf/mesos.git"
+
+WORK_DIR=`mktemp -d /tmp/mesos-vote-XXXX`
+atexit "rm -rf ${WORK_DIR}"
+
+pushd ${WORK_DIR}
+
+echo "${GREEN}Checking out ${TAG}${NORMAL}"
+
+# First checkout the release tag.
+git clone --depth 1 --branch ${TAG} ${MESOS_GIT_URL}
+
+pushd mesos
+
+# Ensure configure.ac has the correct version.
+grep "\[mesos\], \[${VERSION}\]" configure.ac
+
+# Build mesos.
+./bootstrap
+mkdir build
+pushd build
+../configure --disable-optimize
+make -j3 check
+
+# Build and deploy the jar.
+make maven-install
+mvn deploy -f src/java/mesos.pom
+
+echo "${GREEN}Successfully deployed the jar to staging maven repository ...${NORMAL}"
+
+# Loop here until the user enters a URL.
+MAVEN_REPO=""
+while [ -z ${MAVEN_REPO} ]; do
+  read  -p "Please *close* the staging repository and provide its URL here: " MAVEN_REPO
+done
+
+# Build the distribution.
+echo "${GREEN}Building the distribution ...${NORMAL}"
+make -j3 dist
+
+TARBALL=mesos-${VERSION}.tar.gz
+
+echo "${GREEN}Signing the distribution ...${NORMAL}"
+
+# Sign the tarball.
+gpg --armor --output ${TARBALL}.asc --detach-sig ${TARBALL}
+
+echo "${GREEN}Creating a MD5 checksum...${NORMAL}"
+
+# Create MD5 checksum.
+gpg --print-md MD5 ${TARBALL} > ${TARBALL}.md5
+
+SVN_DEV_REPO="https://dist.apache.org/repos/dist/dev/mesos"
+SVN_DEV_LOCAL="${WORK_DIR}/dev"
+
+echo "${GREEN}Checking out svn dev 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_DEV_REPO} ${SVN_DEV_LOCAL}
+
+echo "${GREEN}Uploading the artifacts (the distribution," \
+  "signature, and MD5) ...${NORMAL}"
+
+RELEASE_DIRECTORY="${SVN_DEV_LOCAL}/${TAG}"
+mkdir ${RELEASE_DIRECTORY}
+mv ${TARBALL} ${TARBALL}.asc ${TARBALL}.md5 ${RELEASE_DIRECTORY}
+
+popd # build
+popd # mesos
+
+pushd ${SVN_DEV_LOCAL}
+
+svn add ${TAG}
+svn commit -m "Adding mesos-${TAG}."
+
+popd # ${SVN_DEV_LOCAL}
+
+popd # ${WORK_DIR}
+
+echo "${GREEN}Success! Now send the following 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: [VOTE] Release Apache Mesos ${VERSION} (rc${CANDIDATE})
+
+Hi all,
+
+Please vote on releasing the following candidate as Apache Mesos ${VERSION}.
+
+
+${VERSION} includes the following:
+--------------------------------------------------------------------------------
+*****Announce major features here*****
+*****Announce major bug fixes here*****
+
+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=${TAG}
+--------------------------------------------------------------------------------
+
+The candidate for Mesos ${VERSION} release is available at:
+${SVN_DEV_REPO}/mesos-${TAG}/${TARBALL}
+
+The tag to be voted on is ${TAG}:
+https://git-wip-us.apache.org/repos/asf?p=mesos.git;a=commit;h=${TAG}
+
+The MD5 checksum of the tarball can be found at:
+${SVN_DEV_REPO}/mesos-${TAG}/${TARBALL}.md5
+
+The signature of the tarball can be found at:
+${SVN_DEV_REPO}/mesos-${TAG}/${TARBALL}.asc
+
+The PGP key used to sign the release is here:
+https://dist.apache.org/repos/dist/release/mesos/KEYS
+
+The JAR is up in Maven in a staging repository here:
+${MAVEN_REPO}
+
+Please vote on releasing this package as Apache Mesos ${VERSION}!
+
+The vote is open until `date -v+3d` and passes if a majority of at least 3 +1 PMC votes are cast.
+
+[ ] +1 Release this package as Apache Mesos ${VERSION}
+[ ] -1 Do not release this package because ...
+
+Thanks,
+__EOF__
+)
+
+echo "${MESSAGE}"
+
+exit 0