HiveMind 2

Wiki
Project Page

Documentation

User Guide
Contributors Guide

Creating a release

Steps

  1. Determine the correct version number <release_version>
  2. Ensure that all POMs use the new version number in their version element, the parent relationship and all inter-project dependencies
  3. Tag the release by making a SVN copy of the head or designated revision
    svn copy -m "Release <release_version>" 
      https://svn.apache.org/repos/asf/hivemind/hivemind2/trunk 
      https://svn.apache.org/repos/asf/hivemind/hivemind2/tags/releases/<release_version> 
      
  4. Assemble the release
    mvn clean install site assembly:assembly
      
  5. Deploy the Maven artifacts to the staging repository
    • Create a release folder at people.apache.org://www/people.apache.org/builds/hivemind/<release_version>
    • Make sure the staging repository at http://people.apache.org/builds/hivemind/m2-staging-repository is empty or missing
    • Deploy files using maven
      mvn deploy 
    • Move the staging repository under the new <release_version> folder
  6. (TODO) Sign the Maven artifacts (in target)
    gpg --armor --output hivemind-<release_version>-all.zip.asc --detach-sig hivemind-#.#.#-all.zip 
      openssl md5 < hivemind-<release_version>-all.zip > hivemind-<release_version>-all.zip.md5
  7. Deploy the new project specific site
    mvn site:site-deploy
  8. Update JIRA
    Add the new version or change its status to release.
  9. Post a release/quality vote to the dev list (and only the dev list). After the vote, if the distribution is being mirrored (there was a favorable release vote), copy the ZIPs to /www/www.apache.org/dist/hivemind, and the Maven artifacts to /www/people.apache.org/repo/m2-ibiblio-rsync-repository/.
  10. Wait 24 hours before updating the global site page and making any announcement to the user list or general public.
  11. Update the global site (project hivemind-site) with information about the new release and the download location.

Signing

#!/usr/bin/perl -w
# signs and checksums all files given as command line args

foreach my $file (@ARGV) {
    print $file."\n";

    my $md5 = `md5 $file`;
    `echo "$md5" > $file.md5`;
    $md5 =~ /(\w+)\s+/;
    $md5 = $1;

    `gpg --armor --output $file.asc --detach-sig $file`;
    # verify signature
    `gpg --verify $file.asc $file`
}