You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@aries.apache.org by bu...@apache.org on 2011/11/04 12:28:05 UTC

svn commit: r798036 - /websites/staging/aries/trunk/content/development/releasingaries2.html

Author: buildbot
Date: Fri Nov  4 11:28:04 2011
New Revision: 798036

Log:
Staging update by buildbot

Added:
    websites/staging/aries/trunk/content/development/releasingaries2.html

Added: websites/staging/aries/trunk/content/development/releasingaries2.html
==============================================================================
--- websites/staging/aries/trunk/content/development/releasingaries2.html (added)
+++ websites/staging/aries/trunk/content/development/releasingaries2.html Fri Nov  4 11:28:04 2011
@@ -0,0 +1,615 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd";>
+<!--
+    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.
+-->
+<html>
+  <head>
+    <link rel="shortcut icon" href="http://aries.apache.org/images/favicon.ico"></link>
+    <link type="text/css" rel="stylesheet" href="http://aries.apache.org/resources/site.css"></link>
+    </script><script src="http://aries.apache.org/resources/menus.js" language="javascript" type="text/javascript"></script>
+  <meta name="keywords" content="..."/>
+  <meta name="description" content="..." />
+    <title>
+    Apache Aries - ReleasingAries
+    </title>
+  </head>
+<body onload="SetMenu()">
+
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr width="100%">
+    <td id="cell-0-0" colspan="2">&nbsp;</td>
+    <td id="cell-0-1">&nbsp;</td>
+    <td id="cell-0-2" colspan="2">&nbsp;</td>
+  </tr>
+  <tr width="100%">
+    <td id="cell-1-0">&nbsp;</td>
+    <td id="cell-1-1">&nbsp;</td>
+    <td id="cell-1-2">
+      <div style="padding: 5px;">
+        <div id="banner">
+          <!-- Banner -->
+      <table border="0" cellpadding="0" cellspacing="0" width="100%">
+        <tr>
+          <td align="left" class="topbardiv" nowrap="">
+            <a href="http://aries.apache.org/" title="Apache Aries"> <img border="0" src="http://aries.apache.org/images/Arieslogo_Horizontal.gif"> </a>
+          </td>
+          <td align="right" nowrap="">
+            <a href="http://www.apache.org/" title="The Apache Software Foundation"> <img border="0" src="http://aries.apache.org/images/apache_feather.png"> </a>
+              </td>
+        </tr>
+      </table>
+          <!-- Banner -->
+        </div>
+      </div>
+      <div id="top-menu">
+        <table border="0" cellpadding="1" cellspacing="0" width="100%">
+          <tr>
+            <td>
+              <div align="left">
+                <!-- Breadcrumbs -->
+                <!-- Breadcrumbs -->
+              </div>
+            </td>
+            <td>
+              <div align="right">
+                <!-- Quicklinks -->
+          <DIV style="padding: 5px 5px 0px 25px;">
+            <FORM action="http://www.google.com/search" method="get" style="font-size: 10px;">
+            <A href="http://www.apache.org/licenses/LICENSE-2.0.html" class="external-link" rel="nofollow">License</A> 
+            <INPUT name="ie" type="hidden" value="UTF-8"></INPUT>
+            <INPUT name="oe" type="hidden" value="UTF-8"></INPUT>
+            <INPUT maxlength="255" name="q" size="15" type="text" value></INPUT>
+            <INPUT name="btnG" type="submit" value="Search"></INPUT>
+            <INPUT name="domains" type="hidden" value="aries.apache.org"></INPUT>
+            <INPUT name="sitesearch" type="hidden" value="aries.apache.org"></INPUT>
+            </FORM>
+          </DIV>
+                <!-- Quicklinks -->
+              </div>
+            </td>
+          </tr>
+        </table>
+      </div>
+    </td>
+    <td id="cell-1-3">&nbsp;</td>
+    <td id="cell-1-4">&nbsp;</td>
+  </tr>
+  <tr width="100%">
+    <td id="cell-2-0" colspan="2">&nbsp;</td>
+    <td id="cell-2-1">
+      <table>
+        <tr height="100%" valign="top">
+          <td height="100%">
+            <div id="wrapper-menu-page-right">
+              <div id="wrapper-menu-page-top">
+                <div id="wrapper-menu-page-bottom">
+                  <div id="menu-page">
+                    <!-- NavigationBar -->
+          <div onclick="SwitchMenu('overview')" id="overviewTitle" class="menutitle">Overview</div>
+<div id="overview" class="menuitemgroup">
+    <div class="menuitem">
+        <a href="/overview/boardreports.html">Board Reports</a> 
+    </div>
+    <div class="menuitem">
+        <a href="/overview/news.html">News</a> 
+    </div>
+</div>
+<div onclick="SwitchMenu('documentation')" id="documentationTitle" class="menutitle">Documentation</div>
+<div id="documentation" class="menuitemgroup">
+    <div class="menuitem">
+        <a href="/documentation/ariesprogrammingmodel.html">Programming Model</a> 
+    </div>
+    <div class="menuitem">
+        <a href="/documentation/pointerstoosgispecifications.html">Pointers to OSGi specs</a> 
+    </div>
+    <div class="menuitem">
+        <a href="/documentation/integrators-guide.html">Integrators Guide</a> 
+    </div>
+        <div class="menuitem">
+                <a href="/documentation/javadoc.html">Javadoc</a>
+        </div>
+    <div class="menuitem">
+        <a href="/documentation/articles.html">Articles</a> 
+    </div>
+    <div class="menuitem">
+        <a href="https://svn.apache.org/repos/asf/aries/slides/">Slides</a> 
+    </div>
+    <div class="menuitem">
+        <a href="/documentation/tutorials.html">Tutorials</a> 
+    </div>
+    <div class="menuitem">
+        <a href="/documentation/tools.html">Tools</a> 
+    </div>
+</div>
+<div onclick="SwitchMenu('downloads')" id="downloadsTitle" class="menutitle">Downloads</div>
+<div id="downloads" class="menuitemgroup">
+    <div class="menuitem">
+        <a href="/downloads/currentrelease.html">Current Release</a> 
+    </div>
+    <div class="menuitem">
+        <a href="/downloads/testresults.html">Compliance Tests</a> 
+    </div>
+    <div class="menuitem">
+        <a href="/downloads/releasenotes.html">Release Notes</a> 
+    </div>
+    <div class="menuitem">
+        <a href="/downloads/archived-releases.html">Archived Releases</a> 
+    </div>
+</div>
+<div onclick="SwitchMenu('community')" id="communityTitle" class="menutitle">Community</div>
+<div id="community" class="menuitemgroup">
+    <div class="menuitem">
+        <a href="/community/overview.html">Community</a> 
+    </div>
+    <div class="menuitem">
+        <a href="/community/gettinginvolved.html">Getting Involved</a> 
+    </div>
+    <div class="menuitem">
+        <a href="/community/people.html">Who we are</a> 
+    </div>
+    <div class="menuitem">
+        <a href="/community/mailinglists.html">Mailing lists</a> 
+    </div>
+    <div class="menuitem">
+        <a href="http://blogs.apache.org/aries/">Aries Group Blog</a> 
+    </div>
+        <div class="menuitem">
+                <a href="/community/logos.html">Logos for Users</a>
+        </div>
+</div>
+<div onclick="SwitchMenu('development')" id="developmentTitle" class="menutitle">Development</div>
+<div id="development" class="menuitemgroup">
+    <div class="menuitem">
+        <a href="https://svn.apache.org/repos/asf/aries/">Source Control</a> 
+    </div>
+    <div class="menuitem">
+        <a href="https://issues.apache.org/jira/browse/ARIES">Bug Tracking</a> 
+    </div>
+    <div class="menuitem">
+        <a href="/development/buildingaries.html">Building Aries </a> 
+    </div>
+    <div class="menuitem">
+        <a href="/development/maven-best-practice-in-aries.html">Maven best practice</a> 
+    </div>
+    <div class="menuitem">
+        <a href="/development/moduledependencies.html">Module Dependencies</a> 
+    </div>
+    <div class="menuitem">
+        <a href="/development/releasingaries.html">Releasing Aries </a> 
+    </div>
+    <div class="menuitem">
+        <a href="/development/compliancetesting.html">OSGi Compliance Tests </a> 
+    </div>
+    <div class="menuitem">
+        <a href="https://builds.apache.org/hudson/">Build System</a> 
+    </div>
+    <div class="menuitem">
+        <a href="/development/maintainingthewebpages.html">Web Site Maintenance </a> 
+    </div>
+        <div class="menuitem">
+        <a href="/development/versionpolicy.html">OSGi Version Policy </a> 
+    </div>
+</div>
+<div onclick="SwitchMenu('modules')" id="modulesTitle" class="menutitle">Modules</div>
+<div id="modules" class="menuitemgroup">
+    <div class="menuitem">
+        <a href="/modules/samples.html">Samples</a> 
+    </div>
+    <div class="menuitem">
+        <a href="/modules/blueprint.html">Blueprint</a> 
+    </div>
+        <div class="menuitem">
+                <a href="/modules/blueprintannotation.html">Blueprint Annotations</a>
+        </div>
+    <div class="menuitem">
+        <a href="/modules/jndiproject.html">JNDI</a> 
+    </div>
+    <div class="menuitem">
+        <a href="/modules/jpaproject.html">JPA</a> 
+    </div>
+    <div class="menuitem">
+        <a href="/modules/applications.html">Applications</a> 
+    </div>
+    <div class="menuitem">
+        <a href="/modules/transactionsproject.html">Transactions</a> 
+    </div>
+    <div class="menuitem">
+        <a href="/modules/ebamavenpluginproject.html">EBA Maven Plugin </a> 
+    </div>
+    <div class="menuitem">
+        <a href="/modules/spi-fly.html">SPI Fly</a> 
+    </div>
+</div>
+<div onclick="SwitchMenu('sponsorship')" id="sponsorshipTitle" class="menutitle">Sponsorship</div>
+<div id="sponsorship" class="menuitemgroup">
+    <div class="menuitem">
+        <a href="http://www.apache.org/foundation/thanks.html">Thanks</a> 
+    </div>
+    <div class="menuitem">
+        <a href="http://www.apache.org/foundation/sponsorship.html">Sponsoring Apache</a> 
+    </div>
+</div>
+                    <!-- NavigationBar -->
+                  </div>
+                </div>
+              </div>
+            </div>
+          </td>
+          <td height="100%" width="100%">
+            <!-- Content -->
+            <div class="wiki-content"><p><a name="ReleasingAries-HowtodoanAriesRelease"></a></p>
+<h1 id="how_to_do_an_aries_release">How to do an Aries Release</h1>
+<p>There are three types of Aries release:</p>
+<ol>
+<li>Releasing a single Aries bundle (or group of bundles)</li>
+<li>Releasing a distribution - a group of bundles that work together</li>
+<li>Releasing the samples</li>
+</ol>
+<p>The outline process is the same in all three cases, further on down this page there are details about how the
+Apache release process works and how to get set up to run it, read those sections first if this is 
+your first release. If you are already familiar with the Apache process just use the high level descriptions in the
+next few paragraphs to perform releases.</p>
+<h2 id="releasing_a_single_bundle_or_group_of_bundles">Releasing a single bundle or group of bundles.</h2>
+<h3 id="what_to_release_make_a_list">What to release? Make a list</h3>
+<p>The Apache release process will not release any bundle that has dependencies on -SNAPSHOTS. If, for example,
+a release of the blueprint API bundle is required the first step is to find and release any of
+its -SNAPSHOT dependencies. Because Aries bundles are quite interdependent (see <a href="moduledependencies">here</a> 
+for an idea
+of how the modules relate to each other, it may be necessary to release quite a large number of bundles. So,
+step one is to make a list. 
+<p>To help with this, there is a file called aries_release_versions.txt in the top level
+aries directory - this contains a list of all the Aries modules and their current release versions. The file
+can be recreated (if necessary)
+using the perl script list_bundles_in_aries.pl, checked into SVN under the scripts directory. The text file
+is used for later steps in the release process, so by the end of the process it will have been updated to have
+a complete list
+of all Aries modules and their most recent version numbers after the release.</p></p>
+<h3 id="how_to_deal_with_jira">How to deal with JIRA</h3>
+<p>Before actually doing any releasing work through the list of bundles and understand what defects have been fixed
+(add more about JIRA versions here)</p>
+<h3 id="what_version_will_be_released">What version will be released?</h3>
+<p>For each bundle on the list check how its package versions have changed since the last release.
+Based on this, use the <a href="versionpolicy">versioning policy</a> to determine the version of the bundle that should be released.</p>
+<h3 id="releasing_bundles">Releasing bundles</h3>
+<p>For each bundle:</p>
+<ul>
+<li>Deploy a SNAPSHOT to the maven snapshot repository (mvn deploy)</li>
+<li>Build each module and run RAT checks</li>
+<li>Create the release artifacts (mvn release:prepare)</li>
+<li>Upload release artifacts to a staging repository (mvn release:perform)</li>
+</ul>
+<h3 id="complete_the_process">Complete the process</h3>
+<p>Once the bundles are in the staging repository, start a vote on the release. After 72 hours close the vote. To complete
+the release process it is necessary to copy the new bundles to the dist dir and update table on the web pages.</p>
+<h2 id="releasing_a_distribution">Releasing a distribution</h2>
+<p>A distribution is just a collection of Aries bundles which have already been released.
+The distribution is just a convenient way for consumers to download aries bundles and all
+of the Aries bundles that they depend on.
+There are three distributions:</p>
+<ul>
+<li>Blueprint</li>
+<li>Application (isolating framework)</li>
+<li>Application (non-isolating framework)</li>
+</ul>
+<p>The release process is just the same as for everything else, again, the right time to release these is
+immediately after a bundle(s) release when you have a collection of artifacts that 
+work together.</p>
+<h2 id="releasing_the_samples">Releasing the samples</h2>
+<p>The Aries samples are designed to work across all the Aries modules. Samples are released as a single
+module. All of the Aries dependencies are listed in the top level samples pom. In 
+trunk, the version of all the dependencies should always point the SNAPSHOT versions 
+in trunk. At release time these must all be modified to the latest released version of 
+each bundle. <em>It is very important the versions are set <strong>only</strong> in the top level 
+sample pom</em>. Both sub-modules and filtered resources need the version information, setting it in
+one place is the only way to avoid a mess.</p>
+<p>The best time to do a samples release is usually at the end of a bundle release when 
+all of the bundle version information is up to date in aries_release_versions.txt. </p>
+
+<p>It is critically important that the samples are all tested before making release. Some have itests
+but others (blueprint) are only tested manually. In fact it's wise to run through
+a quick manual check for the blog and aries trader samples as the itests do not catch everything.</p>
+
+<h1 id="background_information_on_the_apache_release_process">Background information on the Apache Release process</h1>
+<p>To create a release you will need to create the release artifacts and move
+then to various places (ultimately the Maven central repository). The Maven
+commands and general outline of the process looks like this:</p>
+<p><img alt="rel" src="AriesRelease.png" /></p>
+<p>The full maven commands are not shown - the intention is just to
+give an indication of which maven commands you will need to use to create
+release artifacts in different places.</p>
+<p>Performing a release is described in detail <a href="http://apache.org/dev/publishing-maven-artifacts.html">here</a>
+. This document It covers all the steps listed above so on these pages we
+will only add things which are specific to the Apache Aries release. </p>
+<p>There are a few steps to the process:</p>
+<ol>
+<li>Discussion of the release and its content on the dev@aries mailing list.</li>
+<li>Creating and storing GPG keys</li>
+<li>Setting up your environment</li>
+<li>JIRA preparation</li>
+<li>Checking the release version of the bundle</li>
+<li>Checking release artifacts on your local system</li>
+<li>Creating a snapshot release </li>
+<li>Releasing to a staging repository (uses mvn release:prepare and mvn
+release:perform)</li>
+<li>Running a vote</li>
+<li>Promoting the release artifacts to the Apache release repository</li>
+<li>Making the release artifacts available from the Aries web pages</li>
+<li>What to do when people find problems with the release artifacts</li>
+</ol>
+<p>The best current documentation for releases is <a href="http://apache.org/dev/publishing-maven-artifacts.html">here</a>. It covers all the steps listed above so on
+these pages we will only add things which are specific to the Apache Aries
+release.</p>
+<p><a name="ReleasingAries-Discussionofthereleaseandit'scontentontheAriesmailinglist"></a></p>
+<h3 id="discussion_of_the_release_and_its_content_on_the_aries_mailing_list">Discussion of the release and its content on the Aries mailing list</h3>
+<p>Before starting off the release process it is essential to gain consensus
+on the dev@aries list that this is the right time for a release and to
+agree its content. Allow at least a week for this discussion. </p>
+<p><a name="ReleasingAries-CreatingandstoringGPGkeys"></a></p>
+<h3 id="creating_and_storing_gpg_keys">Creating and storing GPG keys</h3>
+<p>For Aries your GPG key will need to be in this file:
+https://svn.apache.org/repos/asf/aries/KEYS (follow the
+instructions in the file) and checkin</p>
+<p><a name="ReleasingAries-Settingupyourenvironment"></a></p>
+<h3 id="setting_up_your_environment">Setting up your environment</h3>
+<p>Follow the general instructions linked to above. </p>
+<p><a name="ReleasingAries-Creatingabranchtoreleasefrom"></a></p>
+<h3 id="creating_a_branch_to_release_from">Creating a branch to release from</h3>
+<p>It is strongly recomended that releases are made from trunk and NEVER from a branch. But, if you have to release from a branch this is what 
+you will need to do:</p>
+<div class="codehilite"><pre><span class="n">svn</span> <span class="n">copy</span> <span class="n">https:</span><span class="sr">//s</span><span class="n">vn</span><span class="o">.</span><span class="n">apache</span><span class="o">.</span><span class="n">org</span><span class="sr">/repos/</span><span class="n">asf</span><span class="sr">/aries/</span><span class="n">trunk</span> <span class="o">\</span>
+
+<span class="n">https:</span><span class="sr">//s</span><span class="n">vn</span><span class="o">.</span><span class="n">apache</span><span class="o">.</span><span class="n">org</span><span class="sr">/repos/</span><span class="n">asf</span><span class="sr">/aries/</span><span class="n">branches</span><span class="o">/</span><span class="mi">0</span><span class="o">.</span><span class="n">X</span><span class="o">-</span><span class="n">RCx</span> <span class="o">\</span>
+
+  <span class="o">-</span><span class="n">m</span> <span class="s">&quot;Creating a release branch of /aries/trunk.&quot;</span>
+</pre></div>
+
+
+<p>Where '0.X' is the number of the release.</p>
+<p>Checkout the new branch, for example, for the 0.2-incubating  release:</p>
+<div class="codehilite"><pre><span class="n">svn</span> <span class="n">co</span> <span class="n">https:</span><span class="sr">//s</span><span class="n">vn</span><span class="o">.</span><span class="n">apache</span><span class="o">.</span><span class="n">org</span><span class="sr">/repos/</span><span class="n">asf</span><span class="sr">/aries/</span><span class="n">branches</span><span class="o">/</span><span class="mf">0.2</span><span class="o">-</span><span class="n">RCx</span> <span class="n">aries</span><span class="o">-</span><span class="mf">0.2</span><span class="o">-</span><span class="n">candidate</span>
+</pre></div>
+
+
+<p><em>IMPORTANT</em> If you are using a branch to release you <strong>must</strong> edit the 
+pom.xml for <strong>each</strong> bundle to change the SCM references to point to the
+branch and not to trunk. For example:</p>
+<div class="codehilite"><pre><span class="nt">&lt;connection&gt;</span>scm:svn:http://svn.apache.org/repos/asf/aries/branches/0.2-RCx/parent<span class="nt">&lt;/connection&gt;</span>
+
+<span class="nt">&lt;developerConnection&gt;</span>scm:svn:https://svn.apache.org/repos/asf/aries/branches/0.2-RCx/parent<span class="nt">&lt;/developerConnection&gt;</span>
+
+<span class="nt">&lt;url&gt;</span>scm:svn:http://svn.apache.org/repos/asf/aries/branches/0.2-RCx/parent<span class="nt">&lt;/url&gt;</span>
+</pre></div>
+
+
+<p>The consequence of forgetting this is that the commands that create the
+release (mvn release:prepare, mvn release:perform) will declare SUCCESS but
+will not create a staging repository and will add stuff to the snapshot
+repository :-/.</p>
+<p>After taking the branch, change the pom versions in trunk to, say,
+0.3-incubating or whatever you want to call the next development version.</p>
+<p><a name="ReleasingAries-Checkingbundleversion"></a></p>
+<h3 id="checking_which_version_of_the_bundle_to_release">Checking which version of the bundle to release</h3>
+<p>If the Maven version of the bundle ends -SNAPSHOT then some change has been made which may require a release.
+To get a summary of the changes, use svn to compare with the most recently released tag, 
+for example:</p>
+<div class="codehilite"><pre> <span class="n">svn</span> <span class="n">diff</span> <span class="n">https:</span><span class="sr">//s</span><span class="n">vn</span><span class="o">.</span><span class="n">apache</span><span class="o">.</span><span class="n">org</span><span class="sr">/repos/</span><span class="n">asf</span><span class="sr">/aries/</span><span class="n">tags</span><span class="sr">/testsupport-0.3/</span>  <span class="n">https:</span><span class="sr">//s</span><span class="n">vn</span><span class="o">.</span><span class="n">apache</span><span class="o">.</span><span class="n">org</span><span class="sr">/repos/</span><span class="n">asf</span><span class="sr">/aries/</span><span class="n">trunk</span><span class="sr">/testsupport/</span> <span class="o">--</span><span class="n">summarize</span>
+</pre></div>
+
+
+<p>In general, if no Java files have changed only the micro version of the bundle will need to be incremented on release. If Java 
+code has changed it is important to check the packageinfo files to see whether package versions have changed. If so
+these might lead to the requirement to increment the major or minor versions the bundle.</p>
+<p><a name="ReleasingAries-Checkingreleaseartifacts"></a></p>
+<h3 id="checking_release_artifacts">Checking release artifacts</h3>
+<p>Delete everything under ...org/apache/aries in your local
+Maven repo. For linux/Mac users you will find this under ~/.m2/repository/.</p>
+<p>Check that the code builds using the usual <a href="buildingaries.html">sequence</a>
+ of commands, but add the following arguments to the 'mvn install' command:</p>
+<div class="codehilite"><pre><span class="n">mvn</span> <span class="n">install</span> <span class="o">-</span><span class="n">Papache</span><span class="o">-</span><span class="n">release</span> <span class="o">-</span><span class="n">DcreateChecksum</span><span class="o">=</span><span class="n">true</span>
+</pre></div>
+
+
+<p>This should build and install release artifacts in your local repo. </p>
+<p>Check the <a href="https://repository.apache.org/content/repositories/releases/org/apache/aries/parent/0.1-incubating/">0.1 release</a>
+ to understand what files should be created.</p>
+<p>To perform legal checks, in each subproject, run:</p>
+<div class="codehilite"><pre><span class="n">mvn</span> <span class="n">rat:check</span> <span class="o">-</span><span class="n">fn</span>
+</pre></div>
+
+
+<p>This will run through the project and its sub projects generating a file
+called rat.txt in each target directory.
+The 'fn' means it will carry on even if it find a failure. To inspect the
+failures, use:</p>
+<div class="codehilite"><pre><span class="n">find</span> <span class="o">.</span> <span class="o">-</span><span class="n">name</span> <span class="n">rat</span><span class="o">.</span><span class="n">txt</span> <span class="o">|</span> <span class="n">xargs</span> <span class="nb">grep</span> <span class="o">\!\</span><span class="p">?</span><span class="o">\</span><span class="p">?</span>
+</pre></div>
+
+
+<p>This will pick out the failing file names. Some of the files that rat fails
+do not require an Apache license, eg MANIFEST.MF, but any <em>.java or </em>.js
+file does need one. As an alternative you can use 'mvn -Prat install'.</p>
+<p><a name="ReleasingAries-Creatingasnapshotrelease"></a></p>
+<h3 id="creating_a_snapshot_release">Creating a snapshot release</h3>
+<p>This is important to do when releasing from trunk as other bundles may want
+to continue to depend on the -SNAPSHOT version while the release is voted through.</p>
+<p>mvn deploy (check exact format)</p>
+<h3 id="jira_preparation">JIRA preparation</h3>
+<ul>
+<li>After initial release discussion on the mailing list you should have a list of JIRA issues that are required in the release. If not, the default assumption is 'everything that has been fixed since the last release'.</li>
+<li>Make sure that there is a JIRA version that matches the name of the release, if not, create one.</li>
+<li>Check through defects, make sure that anything that is included in the release has been closed. If there are open issues move them to the next release.</li>
+</ul>
+<p><a name="ReleasingAries-Creatingtherelease"></a></p>
+<h3 id="creating_the_release">Creating the release</h3>
+<p><a name="ReleasingAries-Creatingthereleaseartifactsinastagingrepository"></a></p>
+<h5 id="creating_the_release_artifacts_in_a_staging_repository">Creating the release artifacts in a staging repository</h5>
+<p>The release is
+created by releasing each bundle separately and in a specific order. It is
+also desirable to maintain the same IP address for the entire process (the
+staging repository is associated with your IP address, changing it results
+in the creation of a second staging repository).</p>
+<p>Short summary: Use a wired ether net connection and allow about 4 hours for
+the next few steps.</p>
+<p>From the top level directory in your branch run:</p>
+<div class="codehilite"><pre><span class="n">mvn</span> <span class="n">clean</span>
+</pre></div>
+
+
+<p><em>Note</em> The prepare step will make some assumptions about the version of the
+development stream that is left after the release has been made. When
+releasing from a branch it may not be a good idea to accept the default for
+this, it will very likely conflict with the development version in use in
+trunk.</p>
+<p>For each bundle that needs to be release perform the following commands:</p>
+<div class="codehilite"><pre><span class="n">Check</span> <span class="n">that</span> <span class="n">there</span> <span class="n">are</span> <span class="nb">no</span> <span class="n">depndencies</span> <span class="n">on</span> <span class="o">-</span><span class="n">SNAPSHOT</span> <span class="n">versions</span><span class="o">.</span>
+<span class="n">Ensure</span> <span class="n">that</span> <span class="n">everything</span> <span class="n">is</span> <span class="n">committed</span> <span class="n">in</span> <span class="n">SVN</span>
+<span class="n">mvn</span> <span class="n">release:prepare</span> <span class="o">-</span><span class="n">Papache</span><span class="o">-</span><span class="n">release</span> <span class="o">-</span><span class="n">DpreparationGoals</span><span class="o">=</span><span class="s">&quot;clean install&quot;</span> 
+<span class="n">mvn</span> <span class="n">release:perform</span> <span class="o">-</span><span class="n">Papache</span><span class="o">-</span><span class="n">release</span>
+</pre></div>
+
+
+<ul>
+<li>Note 1: Use the -DdryRun option to check that release-prepare works.</li>
+<li>
+<p>Note 2: mvn release:prepare makes and commits changes in SVN. You'll be asked three questions. Here they are with answers for the 'parent' module release: </p>
+<ol>
+<li>What is the release version for "Aries :: Top Parent POM"? (org.apache.aries:parent) 0.5: :  <br />
+</li>
+<li>What is SCM release tag or label for "Aries :: Top Parent POM"? (org.apache.aries:parent) parent-0.5: :</li>
+<li>What is the new development version for "Aries :: Top Parent POM"? (org.apache.aries:parent) 0.6-SNAPSHOT: : 0.5</li>
+</ol>
+<p>i.e. take the default for the first two questions, and set the new development version to be the same as the one you are releasing! This is because you don't know whether the next version released from the trunk will have a major, minor or micro version number change - you won't know until those changes are made! - so leave it for the person making those changes to make the decision and move to <em>module</em>-<em>new version</em>-SNAPSHOT.</p>
+</li>
+<li>
+<p>Note 3: mvn release:clean will do <em>most</em> of the cleaning up in the event of failures.</p>
+</li>
+<li>Note 4: If on mvn release:prepare you get an error from SVN similar to https://svn.apache.org/repos/asf/!svn/bc/1182408/aries/tags/parent-0.5/default-parent/java5-parent/org.apache.aries.bundle.i.am.releasing does not exist then it's because there's no scm element in the pom.xml for the module you're releasing.</li>
+</ul>
+<p>This will put release artifacts into an Apache <a href="https://repository.apache.org/index.html#view-repositories;staging.html">staging repository </a>. You will need to log in to see it.
+If nothing appears in a staging repo you should stop here and work out why. 
+If you have made a mistake it's quite easy to revert. The release
+commands make and commit changes to the project's pom.xml files and they
+create a tag in SVN. To revert the changes you will need to revert the
+pom.xml files and delete the tag from svn.</p>
+<p>If you are in Europe the mvn release:prepare command almost always fails at
+the last step, with a message like:</p>
+<div class="codehilite"><pre><span class="k">[ERROR]</span>
+ <span class="err">BUILD</span> <span class="err">FAILURE</span>
+<span class="k">[INFO]</span>
+ <span class="err">------------------------------------------------------------------------</span>
+<span class="k">[INFO]</span>
+ <span class="err">Unable</span> <span class="err">to</span> <span class="err">tag</span> <span class="err">SCM</span>
+<span class="err">Provider</span> <span class="err">message:</span>
+<span class="err">The</span> <span class="err">svn</span> <span class="err">tag</span> <span class="err">command</span> <span class="err">failed.</span>
+<span class="err">Command</span> <span class="err">output:</span>
+<span class="err">svn:</span> <span class="err">No</span> <span class="err">such</span> <span class="err">revision</span> <span class="err">936951</span>
+</pre></div>
+
+
+<p>This is due to the SVN mirroring in place between Europe and the master in
+the US. When you make a commit, it isn't immediately available in Europe to
+svn up to. Just wait 10 secs and repeat the mvn release:prepare command for
+it to restart where it left off.</p>
+<p><a name="ReleasingAries-Closingthestagingrepository"></a></p>
+<h5 id="closing_the_staging_repository">Closing the staging repository</h5>
+<p>After checking that the staging repository contains the artifacts that you
+expect you should close the staging repository. This will make it available
+so that people can check the release.</p>
+<p><a name="ReleasingAries-Runningthevote(s)"></a></p>
+<h3 id="running_the_vote">Running the vote.</h3>
+<p>At this
+point you should write two notes to the dev@aries.apache.org mailing list.</p>
+<ul>
+<li>Subject [VOTE]
+ Apache Aries release candidate 0N</li>
+</ul>
+<p>The the source archive files should be explicitly called out by release
+manager in any release vote. From an Apache legal standpoint, this is what
+the project is "releasing" and what the community should be voting on. In
+this <a href="devlistvote.txt">sample note</a>
+, there is a link to each modules' source*.zip file.</p>
+<ul>
+<li>Subject [DISCUSS]
+ Apache Aries  release candidate 0X</li>
+</ul>
+<p>The content should just indicate that the note starts a thread to discuss
+the Aries release.</p>
+<p>After 72 hours, if no problems have been found in the release artifacts,
+the dev@aries vote can be summarised and closed. Note that at least three
++1 votes from Aries PMC members are required. </p>
+<p>Finally - ensure that the file aries_release_version.txt is completely up to date and accurate. 
+You will use this file in the following steps to help build the release web pages.</p>
+<p><a name="ReleasingAries-Promotingthereleaseartifacts"></a></p>
+<h3 id="promoting_the_release_artifacts">Promoting the release artifacts</h3>
+<p>From the <a href="https://repository.apache.org/index.html#stagingRepositories">Nexus pages</a>
+, select the staging repository and select 'release' from the top menu.
+This moves the release artifacts into an Apache releases repository, from
+there they will be automatically moved to the Maven repository.</p>
+<p><a name="ReleasingAries-MakingthereleaseartifactsavailablefromtheArieswebpages."></a></p>
+<h3 id="making_the_release_artifacts_available_from_the_aries_web_pages">Making the release artifacts available from the Aries web pages.</h3>
+<p>Anything that is to be downloaded must be put in
+/www/www.apache.org/dist/aries on minotaur. Don't forget to changes the file permissions to '664' so that other 
+members of the group can access them. The distributions are
+archived here /www/archive.apache.org/dist/aries.</p>
+<p>First, delete the artifacts of the previous release from the distribution directory. You don't need to worry about putting the previous release artifacts in the archive as they will already have been rsync'd from the distribution directory.</p>
+<p>Then, put new release artifacts in the distribution directory. This is best done using a script, the script can be generated uing
+the perl script <a href="http://svn.apache.org/repos/asf/aries/scripts/download_release_artifacts.pl">download_release_artifacts.pl</a>. </p>
+<p>Next, update the Aries Downloads pages to refer to the new artifacts.</p>
+<h3 id="tidying_up_tasks">Tidying up tasks</h3>
+<ul>
+<li>Get the compliance tests run</li>
+<li>Release notes</li>
+<li>Release the component in JIRA (manage components), check the JIRA release notes.</li>
+</ul>
+<p><a name="ReleasingAries-Whattodowhenpeoplefindproblemswiththerelease"></a></p>
+<h3 id="what_to_do_when_people_find_problems_with_the_release">What to do when people find problems with the release</h3>
+<ul>
+<li>Cancel the vote [CANCELLED] [VOTE]</li>
+<li>Clean up, fix and re-release.
+The good news here is that it isn't necessarily essential to re-release
+every module. </li>
+</ul></div>
+            <!-- Content -->
+          </td>
+        </tr>
+      </table>
+   </td>
+   <td id="cell-2-2" colspan="2">&nbsp;</td>
+  </tr>
+  <tr width="100%">
+   <td id="cell-3-0">&nbsp;</td>
+   <td id="cell-3-1">&nbsp;</td>
+   <td id="cell-3-2">
+     <div id="footer">
+       <!-- Footer -->
+       <div id="site-footer">
+         <a href="http://aries.apache.org/privacy-policy.html";>Privacy
+Policy</a> 
+       </div>
+       <!-- Footer -->
+     </div>
+   </td>
+   <td id="cell-3-3">&nbsp;</td>
+   <td id="cell-3-4">&nbsp;</td>
+  </tr>
+  <tr width="100%">
+    <td id="cell-4-0" colspan="2">&nbsp;</td>
+    <td id="cell-4-1">&nbsp;</td>
+    <td id="cell-4-2" colspan="2">&nbsp;</td>
+  </tr>
+</table>
+</body>
+</html>