You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@taverna.apache.org by bu...@apache.org on 2015/06/11 13:59:11 UTC

svn commit: r954491 - in /websites/staging/taverna/trunk: cgi-bin/ content/ content/community/releasing.html

Author: buildbot
Date: Thu Jun 11 11:59:11 2015
New Revision: 954491

Log:
Staging update by buildbot for taverna

Modified:
    websites/staging/taverna/trunk/cgi-bin/   (props changed)
    websites/staging/taverna/trunk/content/   (props changed)
    websites/staging/taverna/trunk/content/community/releasing.html

Propchange: websites/staging/taverna/trunk/cgi-bin/
------------------------------------------------------------------------------
--- cms:source-revision (original)
+++ cms:source-revision Thu Jun 11 11:59:11 2015
@@ -1 +1 @@
-1684844
+1684860

Propchange: websites/staging/taverna/trunk/content/
------------------------------------------------------------------------------
--- cms:source-revision (original)
+++ cms:source-revision Thu Jun 11 11:59:11 2015
@@ -1 +1 @@
-1684844
+1684860

Modified: websites/staging/taverna/trunk/content/community/releasing.html
==============================================================================
--- websites/staging/taverna/trunk/content/community/releasing.html (original)
+++ websites/staging/taverna/trunk/content/community/releasing.html Thu Jun 11 11:59:11 2015
@@ -174,9 +174,11 @@ over a release.</p>
 for tasks required for a release.</p>
 <h2 id="preparations">Preparations</h2>
 <ul>
-<li>Email dev@taverna to say a release is imminent. This gives the community a chance to finish up anything they want to get into the next release.</li>
-<li>Check Jira for <a href="https://issues.apache.org/jira/browse/TAVERNA">issues</a> for the corresponding
-<a href="https://issues.apache.org/jira/browse/TAVERNA/?selectedTab=com.atlassian.jira.jira-projects-plugin:components-panel">components</a></li>
+<li>Email dev@taverna to say a release is imminent. This gives the community a chance
+to finish up anything they want to get into the next release.</li>
+<li>Check Jira for <a href="https://issues.apache.org/jira/browse/TAVERNA">issues</a> on the corresponding
+<a href="https://issues.apache.org/jira/browse/TAVERNA/?selectedTab=com.atlassian.jira.jira-projects-plugin:components-panel">components</a>.
+If you find any that are blocking or in progress, consult with the dev@taverna list first.</li>
 </ul>
 <h3 id="prepare-your-build-machine">Prepare your build machine</h3>
 <p>You need to build and release Apache Taverna from a machine you have control
@@ -212,6 +214,44 @@ as the working directory.</p>
 </pre></div>
 
 
+<h3 id="gpg-keys">GPG keys</h3>
+<p>You need to have <code>gpg</code> and preferably a <em>GPG Agent</em> installed on the machine
+you will build the release on. This needs to be configured with your
+GPG release key.</p>
+<p>Check that our
+<a href="https://dist.apache.org/repos/dist/release/incubator/taverna/KEYS">KEYS</a>
+contains your correct key and fingerprint. If not, then:</p>
+<p>Find your PGP fingerprint:</p>
+<div class="codehilite"><pre><span class="n">stain</span><span class="p">@</span><span class="n">biggie</span><span class="o">-</span><span class="n">utopic</span><span class="p">:</span><span class="o">~/</span><span class="n">src</span><span class="o">/</span><span class="n">rc1</span><span class="o">/</span><span class="n">dist</span>$ <span class="n">gpg</span> <span class="o">--</span><span class="n">fingerprint</span> <span class="n">stain</span><span class="p">@</span><span class="n">apache</span><span class="p">.</span><span class="n">org</span>
+<span class="n">pub</span>   1024<span class="n">D</span><span class="o">/</span><span class="n">A0FFD119</span> 2002<span class="o">-</span>01<span class="o">-</span>20
+<span class="n">Key</span> <span class="n">fingerprint</span> <span class="p">=</span> <span class="n">DDDE</span> <span class="n">E876</span> 12<span class="n">E9</span> <span class="n">FB95</span> <span class="n">F5C8</span>  <span class="n">D91E</span> 4110 63<span class="n">A3</span> <span class="n">A0FF</span> <span class="n">D119</span>
+<span class="n">uid</span>                  <span class="n">Stian</span> <span class="n">Soiland</span><span class="o">-</span><span class="n">Reyes</span> <span class="o">&lt;</span><span class="n">stian</span><span class="p">@</span><span class="n">soiland</span><span class="o">-</span><span class="n">reyes</span><span class="p">.</span><span class="n">com</span><span class="o">&gt;</span>
+<span class="n">uid</span>                  <span class="n">Stian</span> <span class="n">Soiland</span> <span class="o">&lt;</span><span class="n">stian</span><span class="p">@</span><span class="n">soiland</span><span class="p">.</span><span class="n">no</span><span class="o">&gt;</span>
+<span class="n">uid</span>                  <span class="n">Stian</span> <span class="n">Soiland</span> <span class="o">&lt;</span><span class="n">stain</span><span class="p">@</span><span class="n">nvg</span><span class="p">.</span><span class="n">org</span><span class="o">&gt;</span>
+<span class="n">uid</span>                  <span class="n">Stian</span> <span class="n">Soiland</span> <span class="o">&lt;</span><span class="n">stain</span><span class="p">@</span><span class="n">soiland</span><span class="p">.</span><span class="n">no</span><span class="o">&gt;</span>
+<span class="n">uid</span>                  <span class="p">[</span><span class="n">jpeg</span> <span class="n">image</span> <span class="n">of</span> <span class="nb">size</span> 9477<span class="p">]</span>
+<span class="n">uid</span>                  <span class="n">Stian</span> <span class="n">Soiland</span> <span class="o">&lt;</span><span class="n">stain</span><span class="p">@</span><span class="n">s11</span><span class="p">.</span><span class="n">no</span><span class="o">&gt;</span>
+<span class="n">uid</span>                  <span class="n">Stian</span> <span class="n">Soiland</span><span class="o">-</span><span class="n">Reyes</span> <span class="o">&lt;</span><span class="n">soiland</span><span class="o">-</span><span class="n">reyes</span><span class="p">@</span><span class="n">cs</span><span class="p">.</span><span class="n">manchester</span><span class="p">.</span><span class="n">ac</span><span class="p">.</span><span class="n">uk</span><span class="o">&gt;</span>
+<span class="n">uid</span>                  <span class="n">Stian</span> <span class="n">Soiland</span><span class="o">-</span><span class="n">Reyes</span> <span class="o">&lt;</span><span class="n">stain</span><span class="p">@</span><span class="n">apache</span><span class="p">.</span><span class="n">org</span><span class="o">&gt;</span>
+<span class="n">sub</span>   4096<span class="n">R</span><span class="o">/</span>4<span class="n">BBAC7C6</span> 2014<span class="o">-</span>06<span class="o">-</span>05 <span class="p">[</span><span class="n">expires</span><span class="p">:</span> 2016<span class="o">-</span>06<span class="o">-</span>10<span class="p">]</span>
+</pre></div>
+
+
+<p>Edit your details on <a href="https://id.apache.org/">id.apache.org</a>
+to provide your <em>OpenPGP Public Key Primary Fingerprint</em>,
+e.g.:</p>
+<div class="codehilite"><pre><span class="n">DDDE</span> <span class="n">E876</span> 12<span class="n">E9</span> <span class="n">FB95</span> <span class="n">F5C8</span>  <span class="n">D91E</span> 4110 63<span class="n">A3</span> <span class="n">A0FF</span> <span class="n">D119</span>
+</pre></div>
+
+
+<p>Now verify that <a href="https://people.apache.org/keys/group/taverna.asc">taverna.asc</a>
+includes the correct key fingerprint, and update on dist:</p>
+<p>svn co https://dist.apache.org/repos/dist/release/incubator/taverna/
+  cd taverna
+  wget https://people.apache.org/keys/group/taverna.asc
+  cat KEYS.template taverna.asc &gt; KEYS
+  rm taverna.asc<br />
+  svn commit -m "Updated KEYS" KEYS</p>
 <h3 id="fresh-checkouts">Fresh checkouts</h3>
 <p>Then we'll clone the Taverna git repositories that we are going to release.
 Be sure to clone using the <em>Apache Committer</em> URLs, as found on the
@@ -300,6 +340,9 @@ generally from top to bottom of the list
 <p>Edit the top-level <code>pom.xml</code> of the repository to ensure there
 are no <code>-SNAPSHOT</code> dependencies in its <code>&lt;parent&gt;</code> and
 <code>&lt;properties&gt;</code>.</p>
+<p><strong>Do not fix</strong> the <code>&lt;version&gt;</code> of the Maven project itself or
+its submodules, as they must be on the form <code>-SNAPSHOT</code> in
+order for the Maven Release Plugin to modify them.</p>
 <p>Check if a newer <code>taverna-maven-parent</code> or other <code>taverna.*.version</code>
 is needed. This is usually indicated by depending on an unreleased
 SNAPSHOT version.  Accordingly, after the release, do <em>not</em> update
@@ -310,6 +353,9 @@ to the <em>latest released version</em>.
 (Exception to the rule - when OSGi backwards-compatibility is
 needed, e.g. a wsdl-activity that should work also with an older
 taverna-engine release).</p>
+<p>If you are updating <code>taverna-maven-parent</code>, then try to
+update this to the latest
+<a href="http://central.maven.org/maven2/org/apache/apache/">Apache super-pom</a>.</p>
 <p>Commit your <code>pom.xml</code> changes (if any) and push.</p>
 <div class="codehilite"><pre><span class="n">git</span> <span class="n">commit</span> <span class="o">-</span><span class="n">m</span> &quot;<span class="n">Dependency</span> <span class="n">updates</span> <span class="k">for</span> <span class="n">release</span> 1<span class="p">.</span>2<span class="p">.</span>3&quot; <span class="n">pom</span><span class="p">.</span><span class="n">xml</span>
 <span class="n">git</span> <span class="n">push</span>
@@ -330,29 +376,65 @@ release candidates as it ensures a consi
 in taverna-maven-parent)</p>
 <p>The default for "What is the release version for" is usually good - but check the policy for version numbers below.</p>
 <div class="codehilite"><pre><span class="p">[</span><span class="n">INFO</span><span class="p">]</span> <span class="n">Checking</span> <span class="n">dependencies</span> <span class="n">and</span> <span class="n">plugins</span> <span class="k">for</span> <span class="n">snapshots</span> <span class="p">...</span>
-<span class="n">What</span> <span class="n">is</span> <span class="n">the</span> <span class="n">release</span> <span class="n">version</span> <span class="k">for</span> &quot;<span class="n">Apache</span> <span class="n">Taverna</span> <span class="p">(</span><span class="n">incubating</span><span class="p">)</span> <span class="n">Maven</span> <span class="n">parent</span>&quot;? <span class="p">(</span><span class="n">org</span><span class="p">.</span><span class="n">apache</span><span class="p">.</span><span class="n">taverna</span><span class="p">:</span><span class="n">taverna</span><span class="o">-</span><span class="n">parent</span><span class="p">)</span> 1<span class="o">-</span><span class="n">incubating</span><span class="p">:</span> <span class="p">:</span> 1<span class="o">-</span><span class="n">incubating</span>
+<span class="n">What</span> <span class="n">is</span> <span class="n">the</span> <span class="n">release</span> <span class="n">version</span> <span class="k">for</span> &quot;<span class="n">Apache</span> <span class="n">Taverna</span> <span class="n">Language</span> <span class="n">APIs</span> <span class="p">(</span><span class="n">Scufl2</span><span class="p">,</span> <span class="n">Databundle</span><span class="p">)</span>&quot;? <span class="p">(</span><span class="n">org</span><span class="p">.</span><span class="n">apache</span><span class="p">.</span><span class="n">taverna</span><span class="p">.</span><span class="n">language</span><span class="p">:</span><span class="n">taverna</span><span class="o">-</span><span class="n">language</span><span class="p">)</span> 0<span class="p">.</span>15<span class="p">.</span>0<span class="o">-</span><span class="n">incubating</span><span class="p">:</span> <span class="p">:</span>
+<span class="n">What</span> <span class="n">is</span> <span class="n">the</span> <span class="n">release</span> <span class="n">version</span> <span class="k">for</span> &quot;<span class="n">Apache</span> <span class="n">Taverna</span> <span class="n">Baclava</span> <span class="n">support</span>&quot;? <span class="p">(</span><span class="n">org</span><span class="p">.</span><span class="n">apache</span><span class="p">.</span><span class="n">taverna</span><span class="p">.</span><span class="n">language</span><span class="p">:</span><span class="n">taverna</span><span class="o">-</span><span class="n">baclava</span><span class="o">-</span><span class="n">language</span><span class="p">)</span> 0<span class="p">.</span>15<span class="p">.</span>0<span class="o">-</span><span class="n">incubating</span><span class="p">:</span> <span class="p">:</span>
+<span class="n">What</span> <span class="n">is</span> <span class="n">the</span> <span class="n">release</span> <span class="n">version</span> <span class="k">for</span> &quot;<span class="n">Apache</span> <span class="n">Taverna</span> <span class="n">Scufl</span> 2 <span class="n">UCF</span> <span class="n">Package</span>&quot;? <span class="p">(</span><span class="n">org</span><span class="p">.</span><span class="n">apache</span><span class="p">.</span><span class="n">taverna</span><span class="p">.</span><span class="n">language</span><span class="p">:</span><span class="n">taverna</span><span class="o">-</span><span class="n">scufl2</span><span class="o">-</span><span class="n">ucfpackage</span><span class="p">)</span> 0<span class="p">.</span>15<span class="p">.</span>0<span class="o">-</span><span class="n">incubating</span><span class="p">:</span> <span class="p">:</span>
+<span class="n">What</span> <span class="n">is</span> <span class="n">the</span> <span class="n">release</span> <span class="n">version</span> <span class="k">for</span> &quot;<span class="n">Apache</span> <span class="n">Taverna</span> <span class="n">Scufl</span> 2 <span class="n">API</span>&quot;? <span class="p">(</span><span class="n">org</span><span class="p">.</span><span class="n">apache</span><span class="p">.</span><span class="n">taverna</span><span class="p">.</span><span class="n">language</span><span class="p">:</span><span class="n">taverna</span><span class="o">-</span><span class="n">scufl2</span><span class="o">-</span><span class="n">api</span><span class="p">)</span> 0<span class="p">.</span>15<span class="p">.</span>0<span class="o">-</span><span class="n">incubating</span><span class="p">:</span> <span class="p">:</span>
 </pre></div>
 
 
-<p>For the tag, use the proposed format, but append <code>-RC1</code> or equivalent to indicate
-the release candidate number in the tag. (Note: the <code>RC1</code> string should <em>NOT</em> be part of
-the version number, only the tag, as the released Maven artifacts would eventually
-be published as-is). This ensures that there is a tag for the particular release
-candidate that is subject to the <em>[VOTE]</em>.</p>
-<div class="codehilite"><pre><span class="n">What</span> <span class="n">is</span> <span class="n">SCM</span> <span class="n">release</span> <span class="n">tag</span> <span class="n">or</span> <span class="n">label</span> <span class="k">for</span> &quot;<span class="n">Apache</span> <span class="n">Taverna</span> <span class="p">(</span><span class="n">incubating</span><span class="p">)</span> <span class="n">Maven</span> <span class="n">parent</span>&quot;? <span class="p">(</span><span class="n">org</span><span class="p">.</span><span class="n">apache</span><span class="p">.</span><span class="n">taverna</span><span class="p">:</span><span class="n">taverna</span><span class="o">-</span><span class="n">parent</span><span class="p">)</span> <span class="n">taverna</span><span class="o">-</span><span class="n">parent</span><span class="o">-</span>1<span class="o">-</span><span class="n">incubating</span><span class="p">:</span> <span class="p">:</span> <span class="n">taverna</spa
 n><span class="o">-</span><span class="n">parent</span><span class="o">-</span>1<span class="o">-</span><span class="n">incubating</span><span class="o">-</span><span class="n">RC1</span>
+<p>You will be asked for each submodule what version they should have - generally
+their version should be the same as their parent (except to explicitly allow
+API backward compatibility)</p>
+<p><strong>Note</strong>: Take care to use the previous version number if preparing a
+second release candidate, as Maven would then suggest too high version
+number based on the bumped <code>-SNAPSHOT</code> version.  </p>
+<h4 id="apache-taverna-version-numbers">Apache Taverna version numbers</h4>
+<ul>
+<li>Has to end in <code>-incubating</code> (while Apache Taverna is incubating)</li>
+<li>taverna-maven-parent is versioned with just major version, e.g. <code>4-incubating</code></li>
+<li>All other repositories use <a href="http://semver.org/spec/v2.0.0.html">Semantic Versioning 2.0.0</a>,
+e.g. <code>2.13.1-incubating</code></li>
+</ul>
+<p>Semantic versioning summary:</p>
+<blockquote>
+<p>Given a version number MAJOR.MINOR.PATCH, increment the:</p>
+<ul>
+<li>MAJOR version when you make incompatible API changes,</li>
+<li>MINOR version when you add functionality in a backwards-compatible manner, and</li>
+<li>PATCH version when you make backwards-compatible bug fixes.</li>
+</ul>
+</blockquote>
+<h4 id="tagging-and-next-snapshot-version">Tagging and next SNAPSHOT version</h4>
+<p>For the tag, use the proposed format, but modify <code>-RC1</code>
+for any subsequent release candidates.</p>
+<div class="codehilite"><pre><span class="n">What</span> <span class="n">is</span> <span class="n">SCM</span> <span class="n">release</span> <span class="n">tag</span> <span class="n">or</span> <span class="n">label</span> <span class="k">for</span> &quot;<span class="n">Apache</span> <span class="n">Taverna</span> <span class="n">Language</span> <span class="n">APIs</span> <span class="p">(</span><span class="n">Scufl2</span><span class="p">,</span> <span class="n">Databundle</span><span class="p">)</span>&quot;? <span class="p">(</span><span class="n">org</span><span class="p">.</span><span class="n">apache</span><span class="p">.</span><span class="n">taverna</span><span class="p">.</span><span class="n">language</span><span class="p">:</span><span class="n">taverna</span><span class="o">-</span><span class="n">language</span><span class="p">)</span> 0<span class="p">.</span>15<span class="p">.</span>0<span class="o">-</span><span class="n">incubating</span><span class="o">-</spa
 n><span class="n">RC1</span><span class="p">:</span> <span class="p">:</span>
 </pre></div>
 
 
-<p>The next development vesion should usually be one patch version higher,
+<p>The next development version should usually be one <em>patch version</em> higher,
 or for taverna-maven-parent simply the next number:</p>
-<div class="codehilite"><pre><span class="n">What</span> <span class="n">is</span> <span class="n">the</span> <span class="n">new</span> <span class="n">development</span> <span class="n">version</span> <span class="k">for</span> &quot;<span class="n">Apache</span> <span class="n">Taverna</span> <span class="p">(</span><span class="n">incubating</span><span class="p">)</span> <span class="n">Maven</span> <span class="n">parent</span>&quot;? <span class="p">(</span><span class="n">org</span><span class="p">.</span><span class="n">apache</span><span class="p">.</span><span class="n">taverna</span><span class="p">:</span><span class="n">taverna</span><span class="o">-</span><span class="n">parent</span><span class="p">)</span> 2<span class="o">-</span><span class="n">incubating</span><span class="o">-</span><span class="n">SNAPSHOT</span><span class="p">:</span> <span class="p">:</span>
+<div class="codehilite"><pre><span class="n">What</span> <span class="n">is</span> <span class="n">the</span> <span class="n">new</span> <span class="n">development</span> <span class="n">version</span> <span class="k">for</span> &quot;<span class="n">Apache</span> <span class="n">Taverna</span> <span class="n">Language</span> <span class="n">APIs</span> <span class="p">(</span><span class="n">Scufl2</span><span class="p">,</span> <span class="n">Databundle</span><span class="p">)</span>&quot;? <span class="p">(</span><span class="n">org</span><span class="p">.</span><span class="n">apache</span><span class="p">.</span><span class="n">taverna</span><span class="p">.</span><span class="n">language</span><span class="p">:</span><span class="n">taverna</span><span class="o">-</span><span class="n">language</span><span class="p">)</span> 0<span class="p">.</span>15<span class="p">.</span>1<span class="o">-</span><span class="n">incubating</span><span class="o">-</span><span class="n">SN
 APSHOT</span><span class="p">:</span> <span class="p">:</span>
+<span class="n">What</span> <span class="n">is</span> <span class="n">the</span> <span class="n">new</span> <span class="n">development</span> <span class="n">version</span> <span class="k">for</span> &quot;<span class="n">Apache</span> <span class="n">Taverna</span> <span class="n">Baclava</span> <span class="n">support</span>&quot;? <span class="p">(</span><span class="n">org</span><span class="p">.</span><span class="n">apache</span><span class="p">.</span><span class="n">taverna</span><span class="p">.</span><span class="n">language</span><span class="p">:</span><span class="n">taverna</span><span class="o">-</span><span class="n">baclava</span><span class="o">-</span><span class="n">language</span><span class="p">)</span> 0<span class="p">.</span>15<span class="p">.</span>1<span class="o">-</span><span class="n">incubating</span><span class="o">-</span><span class="n">SNAPSHOT</span><span class="p">:</span> <span class="p">:</span>
+<span class="n">What</span> <span class="n">is</span> <span class="n">the</span> <span class="n">new</span> <span class="n">development</span> <span class="n">version</span> <span class="k">for</span> &quot;<span class="n">Apache</span> <span class="n">Taverna</span> <span class="n">Scufl</span> 2 <span class="n">UCF</span> <span class="n">Package</span>&quot;? <span class="p">(</span><span class="n">org</span><span class="p">.</span><span class="n">apache</span><span class="p">.</span><span class="n">taverna</span><span class="p">.</span><span class="n">language</span><span class="p">:</span><span class="n">taverna</span><span class="o">-</span><span class="n">scufl2</span><span class="o">-</span><span class="n">ucfpackage</span><span class="p">)</span> 0<span class="p">.</span>15<span class="p">.</span>1<span class="o">-</span><span class="n">incubating</span><span class="o">-</span><span class="n">SNAPSHOT</span><span class="p">:</span> <span class="p">:</span>
+<span class="n">What</span> <span class="n">is</span> <span class="n">the</span> <span class="n">new</span> <span class="n">development</span> <span class="n">version</span> <span class="k">for</span> &quot;<span class="n">Apache</span> <span class="n">Taverna</span> <span class="n">Scufl</span> 2 <span class="n">API</span>&quot;? <span class="p">(</span><span class="n">org</span><span class="p">.</span><span class="n">apache</span><span class="p">.</span><span class="n">taverna</span><span class="p">.</span><span class="n">language</span><span class="p">:</span><span class="n">taverna</span><span class="o">-</span><span class="n">scufl2</span><span class="o">-</span><span class="n">api</span><span class="p">)</span> 0<span class="p">.</span>15<span class="p">.</span>1<span class="o">-</span><span class="n">incubating</span><span class="o">-</span><span class="n">SNAPSHOT</span><span class="p">:</span> <span class="p">:</span>
 </pre></div>
 
 
-<p>Maven will now transform your poms, create the tag, and push it back to
-Apache's git repository.</p>
-<p>If anything goes wrong, then you probably need to undo and start again:</p>
+<p>Maven will now transform your poms, create the tag, and push changes
+back to Apache's git repository.</p>
+<p>If you abort, you can start the process again using <code>mvn release:prepare</code>,
+which will pick up your answers so far from <code>release.profiles</code>.</p>
+<p>Note Maven will use <code>gpg</code> to tag and sign the artifacts - so you might want to
+install and configure a <strong>GPG Agent</strong> to avoid repeatedly providing your
+GPG passphrase.</p>
+<h4 id="rolling-back">Rolling back</h4>
+<p>If anything goes wrong at this stage, you will need to undo,
+edit and commit required changes, and start again:</p>
 <div class="codehilite"><pre><span class="n">mvn</span> <span class="n">release</span><span class="p">:</span><span class="n">rollback</span>
+<span class="n">vi</span> <span class="n">foo</span><span class="o">/</span><span class="n">pom</span><span class="p">.</span><span class="n">xml</span>
+<span class="n">git</span> <span class="n">commit</span>
+<span class="n">mvn</span> <span class="n">release</span><span class="p">:</span><span class="n">prepare</span>
 </pre></div>
 
 
@@ -362,35 +444,104 @@ Apache's git repository.</p>
 </pre></div>
 
 
-<p>This will check out the tag, build it, then deploy the compiled artifacts,
-and sign the packaged source code.</p>
-<p>Note that this will use <code>gpg</code> to sign the artifacts - so you might want to
-use a <em>GPG Agent</em> to avoid repeatedly providing your GPG passphrase.</p>
-<h3 id="policy-for-apache-taverna-version-numbers">Policy for Apache Taverna version numbers</h3>
-<ul>
-<li>Has to end in <code>-incubating</code> (while Apache Taverna is incubating)</li>
-<li>taverna-maven-parent is versioned with just major version, e.g. <code>4-incubating</code></li>
-<li>All other repositories use <a href="http://semver.org/spec/v2.0.0.html">Semantic Versioning 2.0.0</a>,
-e.g. <code>2.13.1-incubating</code></li>
-</ul>
-<p>Semantic versioning summary:</p>
-<blockquote>
-<p>Given a version number MAJOR.MINOR.PATCH, increment the:</p>
-<ul>
-<li>MAJOR version when you make incompatible API changes,</li>
-<li>MINOR version when you add functionality in a backwards-compatible manner, and</li>
-<li>PATCH version when you make backwards-compatible bug fixes.</li>
-</ul>
-</blockquote>
+<p>This will check out the tag, build it, then sign and
+deploy the packaged source code and compiled JARs.</p>
 <h3 id="locate-the-staging-repository">Locate the staging repository</h3>
 <p>On Apache's Nexus instance, locate the
 <a href="https://repository.apache.org/#stagingRepositories">Staging Repository</a>
 for the code you just released. It should be called something like
-<code>orgapachetaverna-1001</code> -- check the <em>Updated</em> timestamp.</p>
-<p><strong>DO NOT CLICK RELEASE</strong> - the release candidate must pass <em>[VOTE]</em> emails
+<code>orgapachetaverna-1001</code> -- check the <em>Updated</em> time stamp and click to
+verify its <em>Content</em>.</p>
+<p>You can leave the staging repository <em>Open</em> until you have released all the
+projects that will form part of this <em>[VOTE]</em>, e.g. you can deploy both
+<code>taverna-maven-parent</code> and <code>taverna-language</code> using the same staging repository.</p>
+<p>When all artifacts to be deployed are in the staging repository, tick the box
+next to it and click <em>Close</em>.</p>
+<p><strong>DO NOT CLICK RELEASE YET</strong> - the release candidate must pass <em>[VOTE]</em> emails
 on both dev@taverna and general@incubator before we release.</p>
+<p>Once closing has finished (check with <em>Refresh</em>, browse to the
+<em>URL</em>  of the
+<a href="https://repository.apache.org/content/repositories">staging repository</a>
+which should be something like
+https://repository.apache.org/content/repositories/orgapachetaverna-1001/</p>
+<h3 id="uploading-to-distapacheorg">Uploading to dist.apache.org</h3>
+<p>The release candidate source code, checksums and signatures
+should be uploaded to
+<a href="https://dist.apache.org/repos/dist/dev/incubator/taverna/">dist.apache.org</a>
+using <code>svn</code> - here we'll check out to a folder <code>~/src/rc1/dist</code>:</p>
+<div class="codehilite"><pre><span class="n">svn</span> <span class="n">co</span> <span class="n">https</span><span class="p">:</span><span class="o">//</span><span class="n">dist</span><span class="p">.</span><span class="n">apache</span><span class="p">.</span><span class="n">org</span><span class="o">/</span><span class="n">repos</span><span class="o">/</span><span class="n">dist</span><span class="o">/</span><span class="n">dev</span><span class="o">/</span><span class="n">incubator</span><span class="o">/</span><span class="n">taverna</span> <span class="n">dist</span>
+</pre></div>
+
+
+<p>The folder should normally be empty -- if
+you find remains of an earlier RC that is not
+still under <em>[VOTE]</em>, first remove them with <code>svn rm</code>:</p>
+<div class="codehilite"><pre><span class="n">cd</span> <span class="n">dist</span>
+<span class="n">svn</span> <span class="n">rm</span> <span class="o">*</span>
+</pre></div>
+
+
+<p>Retrieve the source archives from the staging repository by looking for
+<code>-*source-release.zip</code> (not <code>sources.jar</code>!) in the
+staging repository, located under the
+folder corresponding to the groupID and artifactId of the
+top-level project, e.g. <code>org/apache/taverna/language/0.15.0-incubating/</code>
+containing <code>taverna-language-0.15.0-incubating-source-release.zip</code></p>
+<p>Here's a convenient <code>wget</code> command to get all the release archives and
+their checksums and signatures:</p>
+<div class="codehilite"><pre><span class="n">wget</span> <span class="o">-</span><span class="n">e</span> <span class="n">robots</span><span class="p">=</span><span class="n">off</span> <span class="o">--</span><span class="n">recursive</span> <span class="o">--</span><span class="n">no</span><span class="o">-</span><span class="n">parent</span> <span class="o">--</span><span class="n">no</span><span class="o">-</span><span class="n">directories</span> <span class="o">-</span><span class="n">A</span> &quot;<span class="o">*-</span><span class="n">source</span><span class="o">-</span><span class="n">release</span><span class="o">*</span>&quot; <span class="n">https</span><span class="p">:</span><span class="o">//</span><span class="n">repository</span><span class="p">.</span><span class="n">apache</span><span class="p">.</span><span class="n">org</span><span class="o">/</span><span class="n">content</span><span class="o">/</span><span class="n">repositories</span><span class="o">/</s
 pan><span class="n">orgapachetaverna</span><span class="o">-</span>1002<span class="o">/</span><span class="n">org</span><span class="o">/</span><span class="n">apache</span><span class="o">/</span><span class="n">taverna</span><span class="o">/</span>
+</pre></div>
+
+
+<p>Make sure you have not got any extra files in your <code>dist/</code> folders, like
+<code>index.html</code> or duplicates like <code>*.zip.1</code></p>
+<div class="codehilite"><pre><span class="n">stain</span><span class="p">@</span><span class="n">biggie</span><span class="o">-</span><span class="n">utopic</span><span class="p">:</span><span class="o">~/</span><span class="n">src</span><span class="o">/</span><span class="n">rc1</span><span class="o">/</span><span class="n">dist</span>$  <span class="n">ls</span>
+<span class="n">taverna</span><span class="o">-</span><span class="n">language</span><span class="o">-</span>0<span class="p">.</span>15<span class="p">.</span>0<span class="o">-</span><span class="n">incubating</span><span class="o">-</span><span class="n">source</span><span class="o">-</span><span class="n">release</span><span class="p">.</span><span class="n">zip</span>      <span class="n">taverna</span><span class="o">-</span><span class="n">language</span><span class="o">-</span>0<span class="p">.</span>15<span class="p">.</span>0<span class="o">-</span><span class="n">incubating</span><span class="o">-</span><span class="n">source</span><span class="o">-</span><span class="n">release</span><span class="p">.</span><span class="n">zip</span><span class="p">.</span><span class="n">sha1</span>  <span class="n">taverna</span><span class="o">-</span><span class="n">parent</span><span class="o">-</span>1<span class="o">-</span><span class="n">incubating</span><span class="o">-</span
 ><span class="n">source</span><span class="o">-</span><span class="n">release</span><span class="p">.</span><span class="n">zip</span><span class="p">.</span><span class="n">md5</span>
+<span class="n">taverna</span><span class="o">-</span><span class="n">language</span><span class="o">-</span>0<span class="p">.</span>15<span class="p">.</span>0<span class="o">-</span><span class="n">incubating</span><span class="o">-</span><span class="n">source</span><span class="o">-</span><span class="n">release</span><span class="p">.</span><span class="n">zip</span><span class="p">.</span><span class="n">asc</span>  <span class="n">taverna</span><span class="o">-</span><span class="n">parent</span><span class="o">-</span>1<span class="o">-</span><span class="n">incubating</span><span class="o">-</span><span class="n">source</span><span class="o">-</span><span class="n">release</span><span class="p">.</span><span class="n">zip</span>          <span class="n">taverna</span><span class="o">-</span><span class="n">parent</span><span class="o">-</span>1<span class="o">-</span><span class="n">incubating</span><span class="o">-</span><span class="n">source</span><span class="o">-</s
 pan><span class="n">release</span><span class="p">.</span><span class="n">zip</span><span class="p">.</span><span class="n">sha1</span>
+<span class="n">taverna</span><span class="o">-</span><span class="n">language</span><span class="o">-</span>0<span class="p">.</span>15<span class="p">.</span>0<span class="o">-</span><span class="n">incubating</span><span class="o">-</span><span class="n">source</span><span class="o">-</span><span class="n">release</span><span class="p">.</span><span class="n">zip</span><span class="p">.</span><span class="n">md5</span>  <span class="n">taverna</span><span class="o">-</span><span class="n">parent</span><span class="o">-</span>1<span class="o">-</span><span class="n">incubating</span><span class="o">-</span><span class="n">source</span><span class="o">-</span><span class="n">release</span><span class="p">.</span><span class="n">zip</span><span class="p">.</span><span class="n">asc</span>
+</pre></div>
+
+
+<p>Now make a corresponding versioned folder for each product, and include the RC number:</p>
+<div class="codehilite"><pre><span class="n">mkdir</span> <span class="n">taverna</span><span class="o">-</span><span class="n">language</span><span class="o">-</span>0<span class="p">.</span>15<span class="p">.</span>0<span class="o">-</span><span class="n">incubating</span><span class="o">-</span><span class="n">RC1</span>
+<span class="n">mkdir</span> <span class="n">taverna</span><span class="o">-</span><span class="n">parent</span><span class="o">-</span>1<span class="o">-</span><span class="n">incubating</span><span class="o">-</span><span class="n">RC1</span>
+</pre></div>
+
+
+<p>Now add them to the <code>dist</code> folder with <code>svn add</code> and <code>svn commit</code></p>
+<div class="codehilite"><pre><span class="p">...</span> <span class="n">TODO</span>
+</pre></div>
+
+
+<p>If any binary distributions are also be provided from the
+<a href="/download">Download page</a> (e.g. Taverna Workbench installers and
+Taverna Server <code>war</code>s), then download them as well <em>from the staging
+repository</em> and add them similarly with their corresponding
+<code>.asc</code>, <code>.md5</code> and <code>.sha1</code> files.</p>
+<p>Now verify that the files are available on
+<a href="https://dist.apache.org/repos/dist/dev/incubator/taverna/">https://dist.apache.org/repos/dist/dev/incubator/taverna/</a> -
+you might need a <em>Refresh</em> in the browser.</p>
 <h2 id="voting">Voting</h2>
+<h3 id="vote">Vote</h3>
 <p><strong>TODO</strong></p>
+<h2 id="dropping-a-release-candidate">Dropping a release candidate</h2>
+<p>If a release candidate is to be dropped, e.g. it fails the <em>[VOTE]</em>, then</p>
+<p>In Nexus, tick the <a href="https://repository.apache.org/#stagingRepositories">staging repository</a> and <em>Drop</em>.</p>
+<p>Delete the old tag:</p>
+<div class="codehilite"><pre><span class="n">git</span> <span class="n">push</span> <span class="n">origin</span> <span class="p">:</span>0<span class="p">.</span>15<span class="p">.</span>0<span class="o">-</span><span class="n">incubating</span><span class="o">-</span><span class="n">RC1</span>
+</pre></div>
+
+
+<p>Roll back the SNAPSHOT version number:</p>
+<div class="codehilite"><pre><span class="n">mvn</span> <span class="n">release</span><span class="p">:</span><span class="n">update</span><span class="o">-</span><span class="n">versions</span> <span class="o">-</span><span class="n">DautoVersionSubmodules</span><span class="p">=</span><span class="n">true</span> <span class="o">-</span><span class="n">DdevelopmentVersion</span><span class="p">=</span>0<span class="p">.</span>15<span class="p">.</span>0<span class="o">-</span><span class="n">incubating</span><span class="o">-</span><span class="n">SNAPSHOT</span>`
+</pre></div>
+
+
+<p>In dist, svn rm all.</p>
+<div class="codehilite"><pre><span class="n">svn</span> <span class="n">rm</span> <span class="o">*/*</span>
+</pre></div>
+
+
 <h2 id="distributing">Distributing</h2></div>
 
     </div>