Author: buildbot Date: Thu Jun 11 14:48:51 2015 New Revision: 954502 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 14:48:51 2015 @@ -1 +1 @@ -1684860 +1684907 Propchange: websites/staging/taverna/trunk/content/ ------------------------------------------------------------------------------ --- cms:source-revision (original) +++ cms:source-revision Thu Jun 11 14:48:51 2015 @@ -1 +1 @@ -1684860 +1684907 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 14:48:51 2015 @@ -217,9 +217,9 @@ as the working directory.</p> <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> +<a href="https://www.apache.org/dev/release-signing.html">GPG release key</a>.</p> +<p>Check that the Apache Taverna +<a href="https://dist.apache.org/repos/dist/release/incubator/taverna/KEYS">KEYS</a> file 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> @@ -244,8 +244,9 @@ e.g.:</p> </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>Now verify that the +<a href="https://people.apache.org/keys/group/taverna.asc">people.apache.org taverna.asc</a> +file now 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 @@ -264,7 +265,7 @@ Be sure to clone using the <em>Apache Co <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 +<p>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> "<span class="n">Your</span> <span class="n">Name</span>" @@ -328,34 +329,40 @@ will perform a build.</p> <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> +Do not touch the other repositories from other projects.</p> <h2 id="creating-release-candidate">Creating release candidate</h2> <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> +<p>If more than one git repository needs to be released, +e.g. because the newer SNAPSHOT version is needed, then those +repositories needs to be released in incremental order. The +dependency order is generally from top to bottom of the list on +the <a href="/download/code">code download page</a>, e.g. <code>taverna-language</code> +before <code>taverna-engine</code> before <code>taverna-workbench</code>.</p> <h3 id="fix-versions">Fix versions</h3> -<p>Edit the top-level <code>pom.xml</code> of the repository to ensure there +<p>Edit the top-level <code>pom.xml</code> of each project to release, ensuring there are no <code>-SNAPSHOT</code> dependencies in its <code><parent></code> and <code><properties></code>.</p> <p><strong>Do not fix</strong> the <code><version></code> of the Maven project itself or -its submodules, as they must be on the form <code>-SNAPSHOT</code> in +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 -these versions to the bumped SNAPSHOT versions, as that would +dependencies are needed. This is usually indicated by depending on an +unreleased SNAPSHOT version. Accordingly, after the release process, +do <em>not</em> update <code>master</code> to use 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>For compile/test purposes, update all <code>taverna.*.version</code> properties +to the <em>latest released version</em>.</p> +<p>Exception to the rule: - when OSGi backwards-compatibility is +needed, e.g. an updated wsdl-activity that should work also with an +older taverna-engine-api release.</p> +<p>Remember that in OSGi, as long as we follow semantic +versioning and don't break API compatibility, an upstream +dependency can be updated without forcing an update release +of its downstream users.</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> +<a href="http://central.maven.org/maven2/org/apache/apache/">Apache super-pom</a> - be aware +that this could change Maven build settings.</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> "<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" <span class="n">pom</span><span class="p">.</span><span class="n">xml</span> <span class="n">git</span> <span class="n">push</span> @@ -363,18 +370,19 @@ update this to the latest <h3 id="prepare-release-candidate">Prepare release candidate</h3> -<p>Using the +<p>We use 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> +to 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> +<p><strong>Note:</strong> 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> +<p>The defaults for "What is the release version for" is usually good (assuming the SNAPSHOT version has been +correctly bumped for any major/minor/patch changes to the code), +but check the <a href="#Version_numbers">policy for version numbers below</a>.</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> "<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>"? <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> "<span class="n">Apache</span> <span class="n">Taverna</span> <span class="n">Baclava</span> <span class="n">support</span>"? <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> @@ -386,10 +394,10 @@ in taverna-maven-parent)</p> <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 +<p><strong>Note</strong>: Take care to use the correct version number if preparing a +second release candidate, as Maven could suggest a higher version number based on the bumped <code>-SNAPSHOT</code> version. </p> -<h4 id="apache-taverna-version-numbers">Apache Taverna version numbers</h4> +<h4 id="version-numbers">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> @@ -405,13 +413,33 @@ e.g. <code>2.13.1-incubating</code></li> <li>PATCH version when you make backwards-compatible bug fixes.</li> </ul> </blockquote> +<p>Use <code>git diff</code> against the previous release tag for a rough check for changes.</p> +<div class="codehilite"><pre><span class="n">git</span> <span class="n">diff</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">RC2</span> +</pre></div> + + +<p>Note that as we use of OSGi, the public Java API is usually just what is exposed +by the <code>*-api</code> modules, meaning that implementatoin changes normally should +just warrant a new patch version. We should also consider indirect APIs, such +as an Activity's expected JSON configuration or +the REST API of the Taverna Server. </p> +<p>Check with dev@taverna if you are not sure. Usually bumping minor +(e.g. from <code>1.5.2</code> to <code>1.6.0</code>) is the right option, as we release all +modules in the git repository.</p> <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> +<p>For the tag, use the proposed format (<code>0.15.0-incubating-RC1</code>), 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> "<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>"? <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><strong>Module-specific release</strong>: If a hot-patch update of a +particular Maven module is being released from within its subfolder, +then prefix the tag-name with the module name, +e.g. <code>taverna-scufl2-t2flow-0.15.1-incubating-RC1</code>. Note that preparing a +single module release requires careful consideration for +setting the <code><parent></code> and <code><dependency></code> versions and +should generally be avoided.</p> <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> "<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>"? <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> @@ -424,10 +452,7 @@ or for taverna-maven-parent simply the n <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> +which will pick up your answers so far from the file <code>release.profiles</code>.</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> @@ -445,7 +470,8 @@ edit and commit required changes, and st <p>This will check out the tag, build it, then sign and -deploy the packaged source code and compiled JARs.</p> +deploy the packaged source code and compiled JARs +to <code>repository.apache.org</code>.</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> @@ -459,24 +485,24 @@ projects that will form part of this <em 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 +<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> +<code>https://repository.apache.org/content/repositories/orgapachetaverna-1003/</code></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> +using <code>svn</code> - which we'll check out to a new 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 +<p>The <code>source</code> 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> +<div class="codehilite"><pre><span class="n">cd</span> <span class="n">dist</span><span class="o">/</span><span class="n">source</span> <span class="n">svn</span> <span class="n">rm</span> <span class="o">*</span> </pre></div> @@ -487,7 +513,10 @@ 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 +<p>For consistency checking you also need to include the +PGP signature <code>.asc</code> and the checksums +<code>`.sha1</code> and <code>.md5</code></p> +<p>Here's a convenient <code>wget</code> command to get all the release archives, 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> "<span class="o">*-</span><span class="n">source</span><span class="o">-</span><span class="n">release</span><span class="o">*</span>" <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> @@ -496,36 +525,111 @@ their checksums and signatures:</p> <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">binaries</span><span class="o">/</span> <span class="n">source</span><span class="o">/</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> +<p>Under <code>source/</code>, make a corresponding versioned folder for each product, +and <em>include the RC number</em>, avoiding confusion in case you need to +make a second release candidate:</p> +<div class="codehilite"><pre><span class="n">mkdir</span> <span class="n">source</span><span class="o">/</span><span class="n">averna</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">RC2</span> +<span class="n">mkdir</span> <span class="n">source</span><span class="o">/</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">RC2</span> +<span class="n">mv</span> <span class="o">*</span><span class="n">language</span><span class="o">*</span><span class="n">release</span><span class="o">*</span> <span class="n">source</span><span class="o">/</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">RC2</span> +<span class="n">mv</span> <span class="o">*</span><span class="n">parent</span><span class="o">*</span><span class="n">release</span><span class="o">*</span> <span class="n">source</span><span class="o">/</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">RC2</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> +<p>Now add them to the <code>source</code> folder with <code>svn add</code> and <code>svn commit</code></p> +<div class="codehilite"><pre><span class="n">svn</span> <span class="n">add</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">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> +<span class="n">svn</span> <span class="n">commit</span> <span class="o">-</span><span class="n">m</span> "<span class="n">taverna</span><span class="o">-</span><span class="n">language</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>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> +repository</em> and add them under equivalent versioned folders in <code>binaries/</code>, +including their corresponding +<code>.asc</code>, <code>.md5</code> and <code>.sha1</code> files,</p> +<p>Versioned folders make it easier to tidy up after a dropped release +candidate, and easier to promote the release.</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> +<p>Any Apache release must be approved through a +<a href="http://www.apache.org/foundation/voting.html">vote</a> +of the project's PMC. As Apache Taverna is an incubating project, a Taverna release must be +approved by both the <a href="/about">Apache Taverna PPMC</a> and the +<a href="http://incubator.apache.org/guides/ppmc.html">Apache Incubator IPMC</a>.</p> +<p>Before an Apache Taverna release can be distributed, it must thus pass two stages:</p> +<ul> +<li>[VOTE] on dev@taverna</li> +<li>[VOTE] on general@incubator</li> +</ul> +<p>Each of the <em>[VOTE]</em> threads should be open for <strong>at least 72 hours</strong>, allowing time for +sufficient <a href="#Reviewing">review</a>, and catering for differences in +holidays and timezones.</p> +<p>Including 24 hours grace period for the download mirrors, +this means a release takes a minimum of a week before +a release candidate might be published and released.</p> +<p>Anyone in the <a href="/community">community</a> can participate in the +review and vote, not just PMC members or committers. Only votes +from IPMC members are <strong>binding</strong>.</p> +<h3 id="vote-email-to-devtaverna">Vote email to dev@taverna</h3> +<p>To start the release vote, modify the below example and send to dev@taverna. +Remember <code>[VOTE]</code> in the subject line.</p> +<p>Subject: [VOTE] Release Apache Taverna Language 0.15.0-incubating RC2</p> +<p>I am pleased to be calling this vote for the source release of</p> +<p>Apache Taverna Maven Parent 1-incubating + Apache Taverna Language 0.15.0-incubating</p> +<p>Apache Taverna Language is a set of APIs for workflow definitions (SCUFL2) +and workflow inputs/outputs/run (DataBundle), as consumed and produced by the +Apache Taverna workflow system. The API includes support for working with +Research Object Bundles, and loading/saving Taverna workflows in different +formats.</p> +<p>The release candidates to be voted over are available at:</p> +<p>https://dist.apache.org/repos/dist/dev/incubator/taverna/source/taverna-parent-1-incubating-RC2/ + https://dist.apache.org/repos/dist/dev/incubator/taverna/source/taverna-language-0.15.0-incubating-RC2/</p> +<p>SHA-1 checksums: + 8199880048a59cde622e0caa24c3bc3d83bc5d5a taverna-parent-1-incubating-source-release.zip + 7032e9d2be834f7c029aae562b62613481bf6939 taverna-language-0.15.0-incubating-source-release.zip</p> +<p>MD5 checksums: + 7f9b107b9f1dc0407783ac0ad484d6ea taverna-parent-1-incubating-source-release.zip + 35d3085b596b2dd4b30a0234259efade taverna-language-0.15.0-incubating-source-release.zip</p> +<p>Build the release candidate in the above order, using:</p> +<div class="codehilite"><pre><span class="n">mvn</span> <span class="n">clean</span> <span class="n">install</span> +</pre></div> + + +<p>The release candidates correspond to the following git commits:</p> +<p>https://git-wip-us.apache.org/repos/asf?p=incubator-taverna-maven-parent.git;a=commit;h=3ba669c78782d3fc3b548e2a512d201ee922b34a + https://git-wip-us.apache.org/repos/asf?p=incubator-taverna-language.git;a=commit;h=3340e2090e604b40ac0b88675f57c1d12032d060</p> +<p>Release candidates are signed with a GPG key available at:</p> +<p>https://dist.apache.org/repos/dist/release/incubator/taverna/KEYS</p> +<p>A staged Maven repository is available for review at:</p> +<p>https://repository.apache.org/content/repositories/orgapachetaverna-1003/</p> +<p>The changelog for this release is available from JIRA:</p> +<p>https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12318322&version=12332247 + https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12318322&version=12332246</p> +<p>Please vote on releasing these packages as:</p> +<p>Apache Taverna Maven Parent 1-incubating + Apache Taverna Language 0.1.0-incubating</p> +<p>The vote is open for at least 72 hours and passes if a +majority of at least three +1 Apache Taverna PPMC votes are cast.</p> +<p>[ ] +1 Release this package +[ ] 0 I don't feel strongly about it, but don't object +[ ] -1 Do not release this package because...</p> +<p>Anyone can participate in testing and voting, not just +committers, please feel free to try out the release candidate +and provide your votes.</p> +<h3 id="tallying-the-vote">Tallying the vote</h3> +<h3 id="vote-email-to-generalincubator">Vote email to general@incubator</h3> <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>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> @@ -537,12 +641,37 @@ you might need a <em>Refresh</em> in the </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> +<p>In your <code>dist</code> checkout, <code>svn rm</code> the dropped RC folders:</p> +<div class="codehilite"><pre><span class="n">svn</span> <span class="n">rm</span> <span class="o">*</span><span class="n">RC</span><span class="o">*</span> +</pre></div> + + +<h2 id="distributing">Distributing</h2> +<p>Once a <em>[VOTE] [Results]</em> email has been agreed on general@incubator, +then:</p> +<ul> +<li>Promiote the release candidate to a release</li> +</ul> +<h3 id="moving-to-release-area">Moving to release area</h3> +<p>Use full URL <code>svn mv</code> to move the accepted release candidate +to the <code>release</code> folder structure on dist.apache.org, +e.g. at +<a href="https://dist.apache.org/repos/dist/release/incubator/taverna/source/">https://dist.apache.org/repos/dist/release/incubator/taverna/source/</a> +but remember to remove the <code>-RC1</code> from the folder name.</p> +<div class="codehilite"><pre><span class="n">svn</span> <span class="n">mv</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="o">/</span><span class="n">source</span><span class="o">/</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">RC2</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">release</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">source</span><span class="o">/</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="n">svn</span> <span class="n">mv</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="o">/</span><span class="n">source</span><span class="o">/</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">RC2</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">release</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">source</span><span class="o">/</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> </pre></div> -<h2 id="distributing">Distributing</h2></div> +<h3 id="update-download-page">Update download page</h3> +<p>Wait 24 hours for the download mirrors to pick up the new release from <code>dist.apache.org</code>.</p> +<p>TODO.</p> +<h3 id="removing-old-versions">Removing old versions</h3> +<p>TODO</p> +<h3 id="releasing-maven-repository">Releasing Maven repository</h3> +<p>Tick the correct <a href="https://repository.apache.org/#stagingRepositories">staging repository</a> (perhaps do a quick check of an SHA1 sum against the vote email), then click <em>Release</em>. +It should then propagate to <a href="https://repository.apache.org/content/repositories/releases/org/apache/taverna/">Apache's release Maven repository</a> +and eventually mirrored to <a href="http://central.maven.org/maven2/org/apache/taverna/">Maven Central</a>.</p></div> </div>