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 11:39:38 UTC

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

Author: buildbot
Date: Thu Jun 11 09:39:37 2015
New Revision: 954479

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 09:39:37 2015
@@ -1 +1 @@
-1684641
+1684844

Propchange: websites/staging/taverna/trunk/content/
------------------------------------------------------------------------------
--- cms:source-revision (original)
+++ cms:source-revision Thu Jun 11 09:39:37 2015
@@ -1 +1 @@
-1684641
+1684844

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 09:39:37 2015
@@ -162,10 +162,10 @@
 
     <div id="page" class="container">
        <h1>Releasing Apache Taverna</h1>
-      <div id="content"><p>Anyone in the <a href="/community/">Apache Taverna community</a> 
+      <div id="content"><p>Anyone in the <a href="/community/">Apache Taverna community</a>
 can propose a release, although usually a release is
 prepared by one of the <a href="/about/">committers</a>.
-This page describes the procedure for preparing and voting 
+This page describes the procedure for preparing and voting
 over a release.</p>
 <blockquote>
 <p>Release early, release often</p>
@@ -175,11 +175,220 @@ 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>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>
 </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
+over. Make sure you have a recent version of <code>java</code> and <code>mvn</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">taverna</span>$ <span class="n">java</span> <span class="o">-</span><span class="n">version</span>
+<span class="n">openjdk</span> <span class="n">version</span> &quot;1<span class="p">.</span>8<span class="p">.</span>0<span class="n">_45</span><span class="o">-</span><span class="n">internal</span>&quot;
+<span class="n">OpenJDK</span> <span class="n">Runtime</span> <span class="n">Environment</span> <span class="p">(</span><span class="n">build</span> 1<span class="p">.</span>8<span class="p">.</span>0<span class="n">_45</span><span class="o">-</span><span class="n">internal</span><span class="o">-</span><span class="n">b14</span><span class="p">)</span>
+<span class="n">OpenJDK</span> 64<span class="o">-</span><span class="n">Bit</span> <span class="n">Server</span> <span class="n">VM</span> <span class="p">(</span><span class="n">build</span> 25<span class="p">.</span>45<span class="o">-</span><span class="n">b02</span><span class="p">,</span> <span class="n">mixed</span> <span class="n">mode</span><span class="p">)</span>
+
+<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">taverna</span>$ <span class="n">mvn</span> <span class="o">-</span><span class="n">version</span>
+<span class="n">Apache</span> <span class="n">Maven</span> 3<span class="p">.</span>3<span class="p">.</span>1 <span class="p">(</span><span class="n">cab6659f9874fa96462afef40fcf6bc033d58c1c</span><span class="p">;</span> 2015<span class="o">-</span>03<span class="o">-</span>13<span class="n">T20</span><span class="p">:</span>10<span class="p">:</span>27<span class="o">+</span>00<span class="p">:</span>00<span class="p">)</span>
+<span class="n">Maven</span> <span class="n">home</span><span class="p">:</span> <span class="o">/</span><span class="n">home</span><span class="o">/</span><span class="n">stain</span><span class="o">/</span><span class="n">software</span><span class="o">/</span><span class="n">maven</span>
+<span class="n">Java</span> <span class="n">version</span><span class="p">:</span> 1<span class="p">.</span>8<span class="p">.</span>0<span class="n">_45</span><span class="o">-</span><span class="n">internal</span><span class="p">,</span> <span class="n">vendor</span><span class="p">:</span> <span class="n">Oracle</span> <span class="n">Corporation</span>
+<span class="n">Java</span> <span class="n">home</span><span class="p">:</span> <span class="o">/</span><span class="n">usr</span><span class="o">/</span><span class="n">lib</span><span class="o">/</span><span class="n">jvm</span><span class="o">/</span><span class="n">java</span><span class="o">-</span>8<span class="o">-</span><span class="n">openjdk</span><span class="o">-</span><span class="n">amd64</span><span class="o">/</span><span class="n">jre</span>
+<span class="n">Default</span> <span class="n">locale</span><span class="p">:</span> <span class="n">en_GB</span><span class="p">,</span> <span class="n">platform</span> <span class="n">encoding</span><span class="p">:</span> <span class="n">UTF</span><span class="o">-</span>8
+<span class="n">OS</span> <span class="n">name</span><span class="p">:</span> &quot;<span class="n">linux</span>&quot;<span class="p">,</span> <span class="n">version</span><span class="p">:</span> &quot;3<span class="p">.</span>19<span class="p">.</span>0<span class="o">-</span>18<span class="o">-</span><span class="n">generic</span>&quot;<span class="p">,</span> <span class="n">arch</span><span class="p">:</span> &quot;<span class="n">amd64</span>&quot;<span class="p">,</span> <span class="n">family</span><span class="p">:</span> &quot;<span class="n">unix</span>&quot;
+</pre></div>
+
+
+<p>Then let's have a clean Maven Repository to ensure the build works out of the box.</p>
+<div class="codehilite"><pre><span class="n">cd</span> <span class="o">~/</span><span class="p">.</span><span class="n">m2</span><span class="o">/</span>
+<span class="n">mv</span> <span class="n">repository</span> <span class="n">repository</span><span class="o">-</span><span class="n">old</span>
+<span class="n">rm</span> <span class="o">-</span><span class="n">rf</span> <span class="n">repository</span><span class="o">-</span><span class="n">old</span> <span class="o">&amp;</span>
+</pre></div>
+
+
+<p>Similarly we'll check out freshly from git to a new folder,
+to ensure uncommitted files are not being included in the release.
+For the examples below, we'll create and use <code>~/src/rc1</code>
+as the working directory.</p>
+<div class="codehilite"><pre><span class="n">mkdir</span> <span class="n">rc1</span>
+<span class="n">cd</span> <span class="n">rc1</span>
+</pre></div>
+
+
+<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
+<a href="repositories">/download/code/</a> page:</p>
+<div class="codehilite"><pre><span class="n">git</span> <span class="n">clone</span> <span class="n">https</span><span class="p">:</span><span class="o">//</span><span class="n">git</span><span class="o">-</span><span class="n">wip</span><span class="o">-</span><span class="n">us</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">asf</span><span class="o">/</span><span class="n">incubator</span><span class="o">-</span><span class="n">taverna</span><span class="o">-</span><span class="n">maven</span><span class="o">-</span><span class="n">parent</span><span class="p">.</span><span class="n">git</span>
+<span class="n">git</span> <span class="n">clone</span> <span class="n">https</span><span class="p">:</span><span class="o">//</span><span class="n">git</span><span class="o">-</span><span class="n">wip</span><span class="o">-</span><span class="n">us</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">asf</span><span class="o">/</span><span class="n">incubator</span><span class="o">-</span><span class="n">taverna</span><span class="o">-</span><span class="n">maven</span><span class="o">-</span><span class="n">language</span><span class="p">.</span><span class="n">git</span>
+</pre></div>
+
+
+<p>Note that you do not need to clone the repositories which are already
+released and which don't form part of this release.</p>
+<h2 id="git-config">Git config</h2>
+<p><em>Important</em>: Make sure that each new checkout have the correct
+user name information and your <code>@apache.org</code> email address:</p>
+<div class="codehilite"><pre><span class="n">cd</span> <span class="n">incubator</span><span class="o">-</span><span class="n">taverna</span><span class="o">-</span><span class="n">maven</span><span class="o">-</span><span class="n">parent</span>
+<span class="n">git</span> <span class="n">config</span> <span class="n">user</span><span class="p">.</span><span class="n">name</span> &quot;<span class="n">Your</span> <span class="n">Name</span>&quot;
+<span class="n">git</span> <span class="n">config</span> <span class="n">user</span><span class="p">.</span><span class="n">email</span> <span class="n">you</span><span class="p">@</span><span class="n">apache</span><span class="p">.</span><span class="n">org</span>
+
+<span class="n">cd</span> <span class="p">.</span><span class="o">./</span><span class="n">incubator</span><span class="o">-</span><span class="n">taverna</span><span class="o">-</span><span class="n">language</span>
+<span class="n">git</span> <span class="n">config</span> <span class="n">user</span><span class="p">.</span><span class="n">name</span> &quot;<span class="n">Your</span> <span class="n">Name</span>&quot;
+<span class="n">git</span> <span class="n">config</span> <span class="n">user</span><span class="p">.</span><span class="n">email</span> <span class="n">you</span><span class="p">@</span><span class="n">apache</span><span class="p">.</span><span class="n">org</span>
+</pre></div>
+
+
+<h3 id="verify-build">Verify build</h3>
+<p>Now we'll make sure they build normally, <em>pass all the tests</em> and
+complete with <code>BUILD SUCCESS</code>:</p>
+<div class="codehilite"><pre><span class="n">mvn</span> <span class="n">clean</span> <span class="n">verify</span>
+</pre></div>
+
+
+<p>Note that this would download all the <em>dependencies</em> from Maven Central.</p>
+<h3 id="maven-repository-access">Maven repository access</h3>
+<p>When releasing a stable version, Maven will deploy to Apache's
+<a href="https://repository.apache.org">Maven repository</a>, a Nexus instance.
+Here, a <em>staging repository</em> will be automatically created.</p>
+<p>Ensure you can log in to the Nexus instance before performing a release.</p>
+<p>To provide the Nexus credentials, edit your <code>~/.m2/settings.xml</code> to include
+your apache.org committer credentials:</p>
+<p>```xml
+&lt;?xml version="1.0" encoding="UTF-8"?&gt;
+<settings xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.1.0 http://maven.apache.org/xsd/settings-1.1.0.xsd" xmlns="http://maven.apache.org/SETTINGS/1.1.0"
+xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+  <!-- .. -->
+  <servers>
+    <!-- .. --></p>
+<div class="codehilite"><pre><span class="nt">&lt;server&gt;</span>
+  <span class="nt">&lt;id&gt;</span>apache.snapshots.https<span class="nt">&lt;/id&gt;</span>
+  <span class="nt">&lt;username&gt;</span>johndoe<span class="nt">&lt;/username&gt;</span>
+  <span class="nt">&lt;password&gt;</span>fishsoup<span class="nt">&lt;/password&gt;</span>
+<span class="nt">&lt;/server&gt;</span>
+<span class="nt">&lt;server&gt;</span>
+  <span class="nt">&lt;id&gt;</span>apache.releases.https<span class="nt">&lt;/id&gt;</span>
+  <span class="nt">&lt;username&gt;</span>johndoe<span class="nt">&lt;/username&gt;</span>
+  <span class="nt">&lt;password&gt;</span>fishsoup<span class="nt">&lt;/password&gt;</span>
+<span class="nt">&lt;/server&gt;</span>
+</pre></div>
+
+
+<p></servers>
+</settings>
+```</p>
+<p>To check you have the correct credentials set up for
+write-access to
+<a href="https://repository.apache.org/content/repositories/snapshots/org/apache/taverna/">Apache's Maven repository</a>,
+deploy the current SNAPSHOT:</p>
+<div class="codehilite"><pre><span class="n">mvn</span> <span class="n">deploy</span>
+</pre></div>
+
+
+<p>This is best tested with a small repository like <code>taverna-maven-parent</code> as it
+will perform a build.</p>
+<h3 id="closing-old-staging-repositories">Closing old staging repositories</h3>
+<p>Check the list of open
+<a href="https://repository.apache.org/#stagingRepositories">Staging Repositories</a>
+on the Nexus instance, and Close/Drop any old <code>orgapachetaverna-*</code> repositories.
+Do not touch the other repositories.</p>
 <h2 id="creating-release-candidate">Creating release candidate</h2>
-<p><strong>TODO</strong></p>
+<h3 id="figure-out-release-order">Figure out release order</h3>
+<p>If more than one repository needs to be released, e.g. because the
+newer SNAPSHOT version is needed, then those repositories needs
+to be released in incrementing order. The dependency order is
+generally from top to bottom of the list in
+<a href="/download/code">code download page</a></p>
+<h3 id="fix-versions">Fix versions</h3>
+<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>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
+these versions to the bumped SNAPSHOT versions, as that would
+wrongly indicate that a newer dependency is needed.</p>
+<p>Update all <code>taverna.*.version</code> properties
+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>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>
+</pre></div>
+
+
+<h3 id="prepare-release-candidate">Prepare release candidate</h3>
+<p>Using the
+<a href="https://maven.apache.org/maven-release/maven-release-plugin/">Maven release plugin</a>
+is the recommended way to create
+release candidates as it ensures a consistent release process:</p>
+<div class="codehilite"><pre><span class="n">mvn</span> <span class="n">release</span><span class="p">:</span><span class="n">prepare</span>
+</pre></div>
+
+
+<p>(Note: The parameter <code>-Papache-release</code> is no longer needed, as it is activated by the
+<a href="https://github.com/apache/incubator-taverna-maven-parent/blob/master/pom.xml#L301">maven-release-plugin configuration</a>
+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>
+</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>
+</pre></div>
+
+
+<p>The next development vesion should usually be one patch version 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>
+</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>
+<div class="codehilite"><pre><span class="n">mvn</span> <span class="n">release</span><span class="p">:</span><span class="n">rollback</span>
+</pre></div>
+
+
+<h3 id="deploying-the-release-candidate">Deploying the release candidate</h3>
+<p>If the preparation was successful, then you should now be able to do:</p>
+<div class="codehilite"><pre><span class="n">mvn</span> <span class="n">release</span><span class="p">:</span><span class="n">perform</span>
+</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>
+<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
+on both dev@taverna and general@incubator before we release.</p>
 <h2 id="voting">Voting</h2>
 <p><strong>TODO</strong></p>
 <h2 id="distributing">Distributing</h2></div>