This short guide is for volunteers that intend to cover the role of Release Manager. It also contains a sections for voters with recommended steps before casting a vote.
svn commit -m "updating files for release"
mvn clean deploy
mvn release:branch -DbranchName=1.0.x
svn checkout https://svn.apache.org/repos/asf/onami/branches/${module}-${version}mvn release:prepare -DdryRun=true
If you cancel a release:prepare before it updates the pom.xml versions, then use the release:clean goal to just remove the extra files that were created.
svn commit -m "fixing formatting for release"
for file in `find . -type f -iname '*.asc'`
do
gpg --verify ${file}
donegpg: Good signature from ... gpg: Signature made ...
mvn release:rollback
mvn release:prepare
mvn release:perform [-Duser.name=<your_apache_uid>]
If your local OS userid doesn't match your Apache userid, then you'll have to also override the value provided by the OS to Maven for the site-deploy step to work. This is known to work for Linux, but not for Mac and unknown for Windows.
To: "Apache Onami Developers List" <dev@onami.apache.org> Subject: [VOTE] Release Apache Onami XXXX major.minor.patch Hi, We solved N issues: http://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12311100&styleName=Html&version=X.Y There are still a couple of issues left in JIRA: http://issues.apache.org/jira/secure/IssueNavigator.jspa?reset=true&pid=12311100&status=1 SVN source tag https://svn.apache.org/repos/asf/onami/tags/org.apache.onami.xxxx-major.minor.patch/ Staging repo: https://repository.apache.org/content/repositories/orgapacheonami-[YOUR REPOSITORY ID]/ Release artifact: https://repository.apache.org/content/repositories/orgapacheonami-[YOUR REPOSITORY ID]/org/apache/onami/org.apache.onami.xxxx/major.minor.patch/org.apache.onami.xxx-major.minor.patch-source-release.zip PGP release keys (signed using ABCDEFG): http://www.apache.org/dist/onami/KEYS Vote will be open for 72 hours. [ ] +1, let's get it ruuuumbleeeeee!!! [ ] +/-0, fine, but consider to fix few issues before... [ ] -1, nope, because... (and please explain why)
To: "Apache Onami Developers List" <dev@onami.apache.org>
Subject: [DISCUSS] Apache Onami XXXX major.minor.patch
Discussion thread for vote on <version> release candidate, with SVN source tag.
For more information on the release process, check out http://www.apache.org/dev/release.html
Some of the things to check before voting are:
- does "mvn rat:check" pass on the source
- can you build the contents of source-release.zip and svn tag
- do all of the staged jars/zips contain the required LICENSE and NOTICE files
- are all of the staged jars signed and the signature verifiable
- is the signing key in the project's KEYS file and on a public server (i.e. http://www.apache.org/dist/onami/)
To: "Apache Onami Developers List" <dev@onami.apache.org>
Subject: [RESULT] [VOTE] Release Onami XXXX major.minor.patch
Hi,
The vote has passed with the following result :
+1 (binding):
Christian Grobmeier
Mohammad Nour El-Din
Olivier Lamy
Jordi Gerona
Marco Speranza
Simone Tripodi
+1 (non binding):
Mario Rossi
John Doe
I will promote the artifacts to the central repo.svn co https://dist.apache.org/repos/dist/release/onami onami-dist cd onami-dist # if the component dir doesn't exist svn mkdir org.apache.onami.xxxx cd org.apache.onami.xxxx wget -e robots=off -nH --cut-dirs=7 -np --no-check-certificate -m -A *.zip* -R .asc.sha1,.asc.md5 \ https://repository.apache.org/content/repositories/orgapacheonami-[YOUR REPOSITORY ID]/org/apache/onami/org.apache.onami.xxxx/major.minor.patch/ svn add major.minor.patch svn commit -m "Promoting the voted release artifacts" major.minor.patch
Make an announcement about the release on the user@, dev@, and announce@ lists as per the Apache Announcement Mailing Lists page
From: YOUR_APACHE_USERNAME@apache.org To: "ASF Announcements" <announce@apache.org>, "Apache Onami Users List" <user@onami.apache.org> CC: "Apache Onami Developers List" <dev@onami.apache.org>, "Google Guice Users List" <google-guice@googlegroups.com> Subject: [ANNOUNCE] Apache Onami XXXX major.minor.patch The Apache Onami Team is pleased to announce the release of Apache Onami XXXX major.minor.patch. (put XXXX extension description here) Release Notes: (put JIRA release notes here) Have Fun, (committer name), on behalf of the Apache Onami PMC
mvn release:rollback
svn rm https://svn.apache.org/repos/asf/onami/tags/org.apache.onami.xxxx-major.minor.patch -m "deleting tag from rolled back release"
Making releases is a serious job at the ASF. And a time-eater.
The following gives you some ideas to check a release and cast your vote (as written by Christian Grobmeier on the Onami dev mailing list).
[1] https://gist.github.com/3504123 from our mate Ivan (over from logging land)
from os.path import join, splitext, basename
import os
import sys
import hashlib
def file_get_contents(path):
with open(path, 'rb') as file:
return file.read()
for root, dirs, files in os.walk('.'):
for file in files:
file = join(root, file)
name, ext = splitext(file)
if ext == '.md5':
file_contents = file_get_contents(name)
md5_given = file_get_contents(file)
md5_actual = hashlib.md5(file_contents).hexdigest()
if (md5_given == md5_actual):
print "%s md5 OK" % basename(name)
else:
print "\nERROR: md5 mismatch\nfile : %s\ncalculated: %s\ngiven : %s\n" % (name, md5_actual, md5_given)
if ext == '.sha1':
file_contents = file_get_contents(name)
sha1_given = file_get_contents(file)
sha1_actual = hashlib.sha1(file_contents).hexdigest()
if (sha1_given == sha1_actual):
print "%s sha1 OK" % basename(name)
else:
print "\nERROR: sha1 mismatch\nfile : %s\ncalculated: %s\ngiven : %s\n" % (name, sha1_actual, sha1_given)[2] http://www.grobmeier.de/checking-md5-and-signatures-with-a-shell-script-29062011.html
#!/bin/bash
file1=`md5 -q $1`
file2=`cut -d* -f1 $1.md5`
echo "Checking file: $1"
echo "Using MD5 file: $1.md5"
echo $file1
echo $file2
if [ $file1 != $file2 ]
then
echo "md5 sums mismatch"
else
echo "checksums OK"
fi
echo "GPG verification output"
gpg --verify $1.asc $1