Repository: incubator-hivemall Updated Branches: refs/heads/master 040cec76a -> c119e7929
Update release guide Project: http://git-wip-us.apache.org/repos/asf/incubator-hivemall/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-hivemall/commit/c119e792 Tree: http://git-wip-us.apache.org/repos/asf/incubator-hivemall/tree/c119e792 Diff: http://git-wip-us.apache.org/repos/asf/incubator-hivemall/diff/c119e792 Branch: refs/heads/master Commit: c119e79295d03e6b8ee6b855c34846bbf53fcaad Parents: 040cec7 Author: Makoto Yui <[email protected]> Authored: Wed Feb 14 16:41:29 2018 +0900 Committer: Makoto Yui <[email protected]> Committed: Wed Feb 14 16:41:29 2018 +0900 ---------------------------------------------------------------------- src/site/markdown/release-guide.md | 92 +++++++++++++++++------- src/site/markdown/verify_howto.md | 121 ++++++++++++++++++++++++++++++++ 2 files changed, 188 insertions(+), 25 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-hivemall/blob/c119e792/src/site/markdown/release-guide.md ---------------------------------------------------------------------- diff --git a/src/site/markdown/release-guide.md b/src/site/markdown/release-guide.md index e800308..b263371 100644 --- a/src/site/markdown/release-guide.md +++ b/src/site/markdown/release-guide.md @@ -76,8 +76,6 @@ git pull # or, git reset --hard asf/master ```sh version=X.Y.Z -# RC should start at 1 and increment if early release candidates fail to release -rc=1 # echo "${version}-incubating-SNAPSHOT" ./bin/set_version.sh --pom --version "${version}-incubating-SNAPSHOT" @@ -99,15 +97,17 @@ rc=1 next_version=X.(Y+1).Z # Confirm that version and rc is defined. -echo "Release version: ${version}-incubating-rc${rc}" +echo "Release version: ${version}-incubating" echo "Development version: ${next_version}-incubating-SNAPSHOT" mvn -Papache-release release:prepare \ -DautoVersionSubmodules=true -DdryRun=true \ -Darguments='-Dmaven.test.skip.exec=true' -DskipTests=true -Dmaven.test.skip=true \ - -Dtag=v${version}-rc${rc} -DreleaseVersion=${version}-incubating-rc${rc} -DdevelopmentVersion=${next_version}-incubating-SNAPSHOT + -Dtag=v${version}-rc${rc} -DreleaseVersion=${version}-incubating -DdevelopmentVersion=${next_version}-incubating-SNAPSHOT ``` +**Note:** `-rcX` is only used for git tag. Release candidates do NOT have `-rcX` for artifact versions in pom. Release candidates are just for voting. + ### PUBLISH A SNAPSHOT ```sh @@ -155,18 +155,18 @@ rc=1 next_version=X.(Y+1).Z # Confirm that version and rc is defined. -echo ${version}-incubating-rc${rc} -# X.Y.Z-incubating-rc1 +echo "${version}-incubating (Release Candidates ${rc})" +# 0.5.0-incubating (Release Candidates 3) ``` **2)** Update version strings in source codes. ```sh -./bin/set_version.sh --version "${version}-incubating-rc${rc}" +./bin/set_version.sh --version "${version}-incubating" # Check list of files to be committed. -git stauts -git commit -a -m "Bumped version string to ${version}-incubating-rc${rc}" +git status +git commit -a -m "Bumped version string to ${version}-incubating" ``` **3)** Prepare sets the version numbers in POM and creates a tag. @@ -175,7 +175,7 @@ git commit -a -m "Bumped version string to ${version}-incubating-rc${rc}" mvn -Papache-release release:clean release:prepare \ -DautoVersionSubmodules=true -DdryRun=false \ -Darguments='-Dmaven.test.skip.exec=true' -DskipTests=true -Dmaven.test.skip=true \ - -Dtag=v${version}-rc${rc} -DreleaseVersion=${version}-incubating-rc${rc} -DdevelopmentVersion=${next_version}-incubating-SNAPSHOT + -Dtag=v${version}-rc${rc} -DreleaseVersion=${version}-incubating -DdevelopmentVersion=${next_version}-incubating-SNAPSHOT ``` **4)** Update version strings for the development iteration @@ -254,7 +254,10 @@ cd hivemall # Download release artifacts wget -e robots=off --no-check-certificate \ -r -np --reject=html,txt,tmp -nH --cut-dirs=7 \ - https://repository.apache.org/content/repositories/orgapachehivemall-1001/org/apache/hivemall/hivemall/${version}-incubating-rc${rc}/ + https://repository.apache.org/content/repositories/orgapachehivemall-1001/org/apache/hivemall/hivemall/${version}-incubating/ + +# Rename directory for RC +mv ${version}-incubating ${version}-incubating-rc${rc} # Put ChangeLog cd ${version}-incubating-rc${rc} @@ -282,16 +285,16 @@ svn commit -m "Put hivemall version ${version}-incubating-rc${rc} artifacts" ## PPMC voting -Create a VOTE email thread on `[email protected]` to record votes as replies. +Create a VOTE email thread on [[email protected]](mailto:[email protected]) to record votes as replies. ``` To: [email protected] CC: [email protected] -Subject: [VOTE] Release Apache Hivemall (Incubating) <release version> +Subject: [VOTE] Release Apache Hivemall (Incubating) v0.5.0 Release Candidate #3 Hi all, -Apache Hivmeall 0.5.0 release candidate #1 (the first Apache release!) is now available for a vote within dev community. +Apache Hivmeall 0.5.0 release candidate #1 is now available for a vote within dev community. Links to various release artifacts are given below. Please review and cast your vote. @@ -331,42 +334,81 @@ Regards, Makoto ``` +Once 72 hours has passed (which is generally preferred) and/or at least three +1 (binding) votes have been cast with no -1 (binding) votes, send an email closing the vote and pronouncing the release candidate a success. + +``` +To: [email protected] +Subject: [RESULT][VOTE]: Release Apache Hivemall (Incubating) <release version> + +Hi all, + +The Apache Hivemall <release version> vote is now closed and has passed as follows: + +From PPMC members: ++1 myui (Makoto) ++1 maropu (Takeshi) ++1 lewuathe (Kai) ++1 takuti (Takuya) ++1 ozawa (Tsuyoshi) + +From Mentors: ++1 daniel (IPMC) + +Other non-binding votes: ++1 Kento (committer) + +I will send a vote mail to incubator-general mail list to collect three IPMC +1's votes. +https://incubator.apache.org/policy/incubation.html#releases. + +If voting succeeds, v0.5.0 will be released based on v0.5.0-rc2 with removing rc2. + +Thanks all of the voters. + +Thanks, +Makoto +on behalf of Apache Hivemall PPMC +``` + ## IPMC Voting -What if vote succeed, then vote in `[email protected]`. +What if vote succeed, then vote in [[email protected]](mailto:[email protected]). +Three +1 Incubator PMC votes are required as described in [this page](https://incubator.apache.org/policy/incubation.html#releases). ``` To: [email protected] -Subject: [VOTE] Release Apache Hivemall (Incubating) <release version> +Subject: [VOTE] Release Apache Hivemall (Incubating) v0.5.0-RC2 Hi all, -The Apache Hivemall community has voted on and approved a proposal to release Apache Hivemall 0.5.0-rc1 (the first Apache release). Apache Hivemall is a library for machine learning for Apache Hive/Spark/Pig, incubating since 2016-09-13. +The Apache Hivemall community has approved a proposal to release Apache Hivemall v0.5.0 by v0.5.0-RC2. We now kindly request that the Incubator PMC members review and vote on this incubator release candidate. The PPMC vote thread is located here: - <link to the dev voting thread> + https://www.mail-archive.com/[email protected]/msg00450.html (vote) + https://www.mail-archive.com/[email protected]/msg00460.html (vote result) Links to various release artifacts are given below. - The source tarball, including signatures, digests, ChangeLog, etc.: - https://dist.apache.org/repos/dist/dev/incubator/hivemall/0.5.0-incubating-rc1/ - - KEYS file for verification: - https://dist.apache.org/repos/dist/dev/incubator/hivemall/KEYS + https://dist.apache.org/repos/dist/dev/incubator/hivemall/0.5.0-incubating-rc2/ + - Sources for the release: + https://dist.apache.org/repos/dist/dev/incubator/hivemall/0.5.0-incubating-rc2/hivemall-0.5.0-incubating-rc2-source-release.zip - Git tag for the release: - https://git-wip-us.apache.org/repos/asf?p=incubator-hivemall.git;a=shortlog;h=refs/tags/v0.5.0-rc1 + https://git-wip-us.apache.org/repos/asf?p=incubator-hivemall.git;a=shortlog;h=refs/tags/v0.5.0-rc2 - The Nexus Staging URL: - https://repository.apache.org/content/repositories/orgapachehivemall-1001/ + https://repository.apache.org/content/repositories/orgapachehivemall-1002/ + - KEYS file for verification: + https://dist.apache.org/repos/dist/dev/incubator/hivemall/KEYS - For information about the contents of this release, see: - https://dist.apache.org/repos/dist/dev/incubator/hivemall/0.5.0-incubating-rc1/ChangeLog.html + https://dist.apache.org/repos/dist/dev/incubator/hivemall/0.5.0-incubating-rc2/ChangeLog.html Artifacts verification how-to can be found in http://hivemall.incubator.apache.org/verify_artifacts.html Please vote accordingly: -[ ] +1 approve (Release this package as Apache Hivemall 0.5.0-incubating-rc1) +[ ] +1 approve [ ] -1 disapprove (and reason why) The vote will be open for at least 72 hours. http://git-wip-us.apache.org/repos/asf/incubator-hivemall/blob/c119e792/src/site/markdown/verify_howto.md ---------------------------------------------------------------------- diff --git a/src/site/markdown/verify_howto.md b/src/site/markdown/verify_howto.md new file mode 100644 index 0000000..f5226f0 --- /dev/null +++ b/src/site/markdown/verify_howto.md @@ -0,0 +1,121 @@ +<!-- + Licensed to the Apache Software Foundation (ASF) under one + or more contributor license agreements. See the NOTICE file + distributed with this work for additional information + regarding copyright ownership. The ASF licenses this file + to you under the Apache License, Version 2.0 (the + "License"); you may not use this file except in compliance + with the License. You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, + software distributed under the License is distributed on an + "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + KIND, either express or implied. See the License for the + specific language governing permissions and limitations + under the License. +--> + +<!-- toc --> + +# 1. Preparation + +## Install required softwares + +GPG and Maven, JDK 7 is mandatory for verification. + +```sh +brew install gpg gpg-agent pinentry-mac +brew install maven +brew install md5sha1sum +``` + +## Import GPG KEYS + +```sh +# Download GPG KEYS +wget https://dist.apache.org/repos/dist/dev/incubator/hivemall/KEYS + +# import KEYS for GPG verification +gpg --import KEYS +``` + +# 2. Download all release artifacts + +```sh +VERSION=0.5.0 +RC_NUMBER=3 + +wget -e robots=off --no-check-certificate \ + -r -np --reject=html,txt,tmp -nH --cut-dirs=5 \ + https://dist.apache.org/repos/dist/dev/incubator/hivemall/${VERSION}-incubating-rc${RC_NUMBER}/ +``` + +# 3. Verify SHA1, MD5, and GPG signatures. + +```sh +cd ${VERSION}-incubating-rc${RC_NUMBER}/ + +for f in `find . -type f -iname '*.sha1'`; do + echo -n "Verifying ${f%.*} ... " + sha1sum ${f%.*} | cut -f1 -d' ' | diff -Bw - ${f} + if [ $? -eq 0 ]; then + echo 'Valid' + else + echo "SHA1 is Invalid: ${f}" >&2 + exit 1 + fi +done +echo +for f in `find . -type f -iname '*.md5'`; do + echo -n "Verifying ${f%.*} ... " + md5sum ${f%.*} | cut -f1 -d' ' | diff -Bw - ${f} + if [ $? -eq 0 ]; then + echo 'Valid' + else + echo "MD5 is Invalid: ${f%.*}" >&2 + exit 1 + fi +done +echo +for f in `find . -type f -iname '*.asc'`; do + gpg --verify ${f} + if [ $? -eq 0 ]; then + echo "GPG signature is correct: ${f%.*}" + else + echo "GPG signature is Invalid: ${f%.*}" >&2 + exit 1 + fi + echo +done +``` + +# 4. Build, Test, and Verify source + +```sh +unzip hivemall-${VERSION}-incubating-source-release.zip +cd hivemall-${VERSION}-incubating + +# workaround for Maven sign-release-artifacts plugin +export GPG_TTY=$(tty) + +# JDK 7 is required for packaging +export JAVA_HOME=`/usr/libexec/java_home -v 1.7` + +# Java 8 is required for building Spark 2.2 module +export JAVA8_HOME=`/usr/libexec/java_home -v 1.8` + +# Try to create artifacts +export MAVEN_OPTS=-XX:MaxPermSize=256m + +# Try to create artifacts +# RAT license check and unit tests will be issued +mvn -Papache-release clean install + +# Verify Signatures of Release Artifacts +cd target/ +for file in `find . -type f -iname '*.asc'`; do + gpg --verify ${file} +done +``` \ No newline at end of file
