You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@slider.apache.org by bu...@apache.org on 2015/01/28 17:49:49 UTC

svn commit: r938075 - in /websites/staging/slider/trunk/content: ./ developing/releasing.html

Author: buildbot
Date: Wed Jan 28 16:49:48 2015
New Revision: 938075

Log:
Staging update by buildbot for slider

Modified:
    websites/staging/slider/trunk/content/   (props changed)
    websites/staging/slider/trunk/content/developing/releasing.html

Propchange: websites/staging/slider/trunk/content/
------------------------------------------------------------------------------
--- cms:source-revision (original)
+++ cms:source-revision Wed Jan 28 16:49:48 2015
@@ -1 +1 @@
-1655105
+1655389

Modified: websites/staging/slider/trunk/content/developing/releasing.html
==============================================================================
--- websites/staging/slider/trunk/content/developing/releasing.html (original)
+++ websites/staging/slider/trunk/content/developing/releasing.html Wed Jan 28 16:49:48 2015
@@ -178,7 +178,7 @@ Latest release: <strong>0.60.0-incubatin
 -->
 
 <h1 id="apache-slider-release-process">Apache Slider Release Process</h1>
-<p>Here is our release process.</p>
+<p>Here is our release process from Slider 0.61-incubating onwards (January 2015)</p>
 <h3 id="tooling">Tooling</h3>
 <p>As well as everything needed to build slider, there are some extra requirements
 for releasing:</p>
@@ -250,12 +250,22 @@ Upload your PGP public key only to <code
 below do not choose one. If a profile is needed, append it to all the maven commands.</p>
 <p>e.g. <code>mvn clean install -Prelease-2.6</code></p>
 <h2 id="prepare">Prepare</h2>
+<h3 id="check-everything-in">Check everything in</h3>
+<p>This and other other commands assume that <code>origin</code> maps
+to <code>https://git-wip-us.apache.org/repos/asf/incubator-slider.git</code>;
+you can check this with <code>git remote -v</code></p>
+<ul>
+<li>
 <p>Verify that there's nothing not yet checked in</p>
 <div class="codehilite"><pre><span class="n">git</span> <span class="n">status</span>
 </pre></div>
 
 
+</li>
+</ul>
 <p>Everything must be checked in at this point.</p>
+<ul>
+<li>
 <p>Sync up with the ASF repo. You do not want to release the wrong code.</p>
 <div class="codehilite"><pre><span class="n">git</span> <span class="n">checkout</span> <span class="n">develop</span>
 <span class="n">git</span> <span class="n">pull</span> <span class="n">origin</span>
@@ -263,34 +273,29 @@ below do not choose one. If a profile is
 </pre></div>
 
 
-<p><strong>Step #1:</strong> Create a JIRA for the release, estimate 3h
-(so you don't try to skip the tests)</p>
+</li>
+</ul>
+<h3 id="start-the-jira">Start the JIRA</h3>
+<p>Create a JIRA for the release, estimate 1d</p>
 <div class="codehilite"><pre><span class="n">export</span> <span class="n">SLIDER_RELEASE_JIRA</span><span class="p">=</span><span class="n">SLIDER</span><span class="o">-</span>544
 </pre></div>
 
 
-<p><strong>Step #4:</strong> If they are not what you want, set the version numbers using <a href="http://mojo.codehaus.org/versions-maven-plugin/">the maven
-versions plugin</a></p>
-<div class="codehilite"><pre><span class="n">export</span> <span class="n">SLIDER_RELEASE</span><span class="p">=</span>0<span class="p">.</span>60<span class="p">.</span>0<span class="o">-</span><span class="n">incubating</span><span class="o">-</span><span class="n">SNAPSHOT</span>
-
-<span class="n">mvn</span> <span class="n">versions</span><span class="p">:</span><span class="n">set</span> <span class="o">-</span><span class="n">DnewVersion</span><span class="p">=</span>$<span class="n">SLIDER_RELEASE</span>
-</pre></div>
-
-
-<p><strong>Step #5:</strong> Commit the changed POM files</p>
-<div class="codehilite"><pre><span class="n">git</span> <span class="n">status</span>
-<span class="n">git</span> <span class="n">add</span> <span class="o">--</span><span class="n">all</span>
-<span class="n">git</span> <span class="n">commit</span> <span class="o">-</span><span class="n">m</span> &quot;$<span class="n">SLIDER_RELEASE_JIRA</span> <span class="n">updating</span> <span class="n">release</span> <span class="n">POMs</span> <span class="k">for</span> $<span class="n">SLIDER_RELEASE</span>&quot;
-</pre></div>
+<p>This seems pessimistic, but there may be surprises.</p>
+<h3 id="choose-your-versions">Choose your versions</h3>
+<p>Choose the version number for the release</p>
+<p>Example:</p>
+<div class="codehilite"><pre>0<span class="p">.</span>61<span class="p">.</span>0<span class="o">-</span><span class="n">incubating</span>
+0<span class="p">.</span>62<span class="p">.</span>0<span class="o">-</span><span class="n">incubating</span><span class="o">-</span><span class="n">SNAPSHOT</span>
 
 
-<p><strong>Step #3:</strong> Create or check out a release branch</p>
-<div class="codehilite"><pre><span class="n">git</span> <span class="n">checkout</span> <span class="o">-</span><span class="n">b</span> <span class="n">branches</span><span class="o">/</span><span class="n">branch</span><span class="o">-</span>0<span class="p">.</span>6
-<span class="n">git</span> <span class="n">push</span> <span class="n">origin</span> <span class="n">branches</span><span class="o">/</span><span class="n">branch</span><span class="o">-</span>0<span class="p">.</span>6
+<span class="n">export</span> <span class="n">SLIDER_RELEASE</span><span class="p">=</span>0<span class="p">.</span>61<span class="p">.</span>0<span class="o">-</span><span class="n">incubating</span>
+<span class="n">export</span> <span class="n">SLIDER_DEV</span><span class="p">=</span>0<span class="p">.</span>62<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><strong>Step #6:</strong> Do a final test run to make sure nothing is broken</p>
+<h3 id="test-that-everything-works">Test that everything works</h3>
+<p>Do a final test run to make sure nothing is broken</p>
 <p>In the <code>slider</code> directory, run:</p>
 <div class="codehilite"><pre><span class="n">mvn</span> <span class="n">clean</span> <span class="n">install</span> <span class="o">-</span><span class="n">DskipTests</span>
 </pre></div>
@@ -314,104 +319,33 @@ This stops functional tests failing beca
 the tests time out.</p>
 <p>As the test run takes 60+ minutes, now is a good time to consider
 finalizing the release notes.</p>
-<h2 id="build-the-release-notes">Build the release notes</h2>
-<p>Create a a one-line plain text release note for commits and tags
-and a multi-line markdown release note which will be used for artifacts.</p>
-<div class="codehilite"><pre><span class="n">Release</span> <span class="n">against</span> <span class="n">hadoop</span> 2<span class="p">.</span>6<span class="p">.</span>0
-</pre></div>
-
-
-<p>The multi-line release notes should go into the slider SVN repo under
-<code>site/trunk/content/release_notes</code>.</p>
-<p>Commit the documentation changes:</p>
-<div class="codehilite"><pre><span class="n">svn</span> <span class="n">commit</span> <span class="o">-</span><span class="n">m</span> &quot;$<span class="n">SLIDER_RELEASE_JIRA</span> <span class="n">updating</span> <span class="n">release</span> <span class="n">notes</span> <span class="k">for</span> <span class="n">slider</span><span class="o">-</span>$<span class="n">SLIDER_RELEASE</span>&quot;
+<h3 id="create-a-release-branch">Create a release branch</h3>
+<p>Create or check out a release branch,</p>
+<p>Example of creation then push to the origin</p>
+<div class="codehilite"><pre><span class="n">git</span> <span class="n">checkout</span> <span class="o">-</span><span class="n">b</span> <span class="n">branches</span><span class="o">/</span><span class="n">branch</span><span class="o">-</span>0<span class="p">.</span>6
+<span class="n">git</span> <span class="n">push</span> <span class="n">origin</span> <span class="n">branches</span><span class="o">/</span><span class="n">branch</span><span class="o">-</span>0<span class="p">.</span>6
 </pre></div>
 
 
-<p><strong>Step #10:</strong> Get back to the develop branch</p>
+<p>This branch is where all the release work will take place. That can include patching and cherry picking from the development branch.</p>
+<h3 id="update-the-version-numbers-on-the-main-branch">Update the version numbers on the main branch</h3>
+<p>Get back to the develop branch and patch its versions</p>
 <div class="codehilite"><pre><span class="n">git</span> <span class="n">checkout</span> <span class="n">develop</span>
-</pre></div>
-
-
-<p>You will now be back on the <code>develop</code> branch.</p>
-<p><strong>Step #11:</strong> update maven versions</p>
-<p>Switch back to <code>develop</code> and update its version number past
-the release number</p>
-<div class="codehilite"><pre><span class="n">export</span> <span class="n">SLIDER_DEV</span><span class="p">=</span>0<span class="p">.</span>61<span class="p">.</span>0<span class="o">-</span><span class="n">incubating</span><span class="o">-</span><span class="n">SNAPSHOT</span>
 <span class="n">mvn</span> <span class="n">versions</span><span class="p">:</span><span class="n">set</span> <span class="o">-</span><span class="n">DnewVersion</span><span class="p">=</span>$<span class="n">SLIDER_DEV</span>
 <span class="n">git</span> <span class="n">commit</span> <span class="o">-</span><span class="n">a</span> <span class="o">-</span><span class="n">m</span> &quot;$<span class="n">SLIDER_RELEASE_JIRA</span> <span class="n">updating</span> <span class="n">development</span> <span class="n">POMs</span> <span class="n">to</span> $<span class="n">SLIDER_DEV</span>&quot;
+<span class="n">git</span> <span class="n">push</span> <span class="n">origin</span>
 </pre></div>
 
 
-<p><strong>Step #12:</strong> Push the release and develop branches to github </p>
-<div class="codehilite"><pre><span class="n">git</span> <span class="n">push</span> <span class="n">origin</span> <span class="n">develop</span> <span class="n">releases</span><span class="o">/</span><span class="n">slider</span><span class="o">-</span>0<span class="p">.</span>60
-</pre></div>
-
-
-<p>(assuming that <code>origin</code> maps to <code>https://git-wip-us.apache.org/repos/asf/incubator-slider.git</code>;
- you can check this with <code>git remote -v</code></p>
-<h2 id="wzxhzdk41wzxhzdk42phase-ii-publish-to-the-asf"><a name="phase2"></a>Phase - II: publish to the ASF</h2>
-<p>This phase of the process creates the artifacts for the ASF.
-This is done in a separate directory to ensure that nothing accidentally gets in.</p>
-<p>Preamble: set up the RC Version </p>
-<div class="codehilite"><pre><span class="n">export</span> <span class="n">RELEASE_RC</span><span class="p">=</span><span class="n">rc0</span>
-</pre></div>
-
-
-<p><strong>Step 1</strong></p>
-<p>Get a clean git clone in its own directory.</p>
-<div class="codehilite"><pre><span class="n">mkdir</span> <span class="n">release</span>
-<span class="n">cd</span> <span class="n">release</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">slider</span><span class="p">.</span><span class="n">git</span> <span class="n">slider</span><span class="o">-</span>$<span class="n">SLIDER_RELEASE</span>
-<span class="n">cd</span> <span class="n">slider</span><span class="o">-</span>$<span class="n">SLIDER_RELEASE</span>
-</pre></div>
-
-
-<p><strong>Step 2</strong></p>
-<p>Ensure you are in the <em>master</em> branch and it's clean. Beware that the git clean command will remove any unknown files to Git in your current repository.</p>
-<div class="codehilite"><pre><span class="n">git</span> <span class="n">checkout</span> <span class="n">releases</span><span class="o">/</span><span class="n">slider</span><span class="o">-</span>0<span class="p">.</span>60
-<span class="n">git</span> <span class="n">pull</span> <span class="n">origin</span>
-<span class="n">git</span> <span class="n">clean</span> <span class="o">-</span><span class="n">fxd</span>
-</pre></div>
-
-
-<h2 id="publish-via-svn">Publish via SVN (?)</h2>
-<p>Publish the release as below:</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">release</span><span class="o">/</span><span class="n">incubator</span><span class="o">/</span><span class="n">slider</span> <span class="n">slider</span>
-
-<span class="n">cd</span> <span class="n">slider</span>
-</pre></div>
-
-
-<p>Make sure your PGP keys is in the KEYS file. The instructions to add a key 
-are at the top of the file</p>
-<p>Then...</p>
-<div class="codehilite"><pre><span class="n">mkdir</span> $<span class="n">SLIDER_RELEASE</span> $<span class="n">SLIDER_RELEASE</span><span class="o">/</span><span class="n">src</span>
-<span class="n">cd</span> $<span class="n">SLIDER_RELEASE</span><span class="o">/</span><span class="n">src</span>
-<span class="n">scp</span> <span class="o">~/</span><span class="n">public_html</span><span class="o">/</span>$<span class="n">SLIDER_RELEASE</span><span class="o">-</span>$<span class="n">RELEASE_RC</span><span class="o">/*</span> <span class="p">.</span>
-<span class="n">cd</span> <span class="p">..</span>
-<span class="n">svn</span> <span class="n">add</span> $<span class="n">SLIDER_RELEASE</span>
-<span class="n">svn</span> <span class="n">commit</span> <span class="o">-</span><span class="n">m</span> &quot;<span class="n">SLIDER_RELEASE_JIRA</span> <span class="n">Committing</span> <span class="n">Release</span> $<span class="n">SLIDER_RELEASE</span>&quot;
-</pre></div>
-
-
-<p><strong>Step 14</strong></p>
-<p>Create the release tag:</p>
-<div class="codehilite"><pre><span class="n">On</span> <span class="n">branch</span> <span class="n">master</span>
-<span class="n">git</span> <span class="n">tag</span> <span class="o">-</span><span class="n">a</span> $<span class="n">SLIDER_RELEASE</span> <span class="o">-</span><span class="n">m</span> <span class="s">&#39;Slider $SLIDER_RELEASE&#39;</span>
-<span class="n">git</span> <span class="n">push</span> <span class="o">--</span><span class="n">tags</span> <span class="n">origin</span>
-</pre></div>
-
-
-<p><strong>Step 15</strong></p>
-<p>Update the Slider website as needed. Most of the documents would have been updated by now to reflect the released version. <em>The remaining changes should really be modifying the references to the latest release to the new version.</em></p>
-<p>The download details for the latest release needs to be updated after mirrors are updated in <strong>Step 12</strong>. </p>
-<p>Verify the download links at <a href="http://slider.incubator.apache.org">Slider Page</a>.</p>
 <h1 id="automated-releases-via-maven">Automated releases via maven</h1>
 <p>The Slider project uses Maven to automatically publish all the slider artifacts —source and binary— to the ASF repositories</p>
 <p>Core sequence
 1. Dry Run
-1. Deploy to staging</p>
+1. Deploy to staging
+1. Publish the real release
+1. Get the votes in</p>
+<p>If the vote fails: fix the issues then repeat</p>
+<p>Recommended Reading</p>
 <ul>
 <li><a href="http://www.apache.org/dev/release.html">ASF release guidelines</a></li>
 <li><a href="http://maven.apache.org/maven-release/maven-release-plugin/index.html">Maven release plugin</a></li>
@@ -458,13 +392,6 @@ anyway.</p>
 </pre></div>
 
 
-<h3 id="choose-your-versions">Choose your versions</h3>
-<p>Choose the version numbers for the release and for afterwards.</p>
-<div class="codehilite"><pre>0<span class="p">.</span>61<span class="p">.</span>0<span class="o">-</span><span class="n">incubating</span>
-0<span class="p">.</span>62<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>
-
-
 <h2 id="git-preparation">Git preparation</h2>
 <p>The maven automated release adds its own git tags and pushes things up to a branch. All work must be done on a branch created for the release process, so as to not interfere with the rest of the development. You are likely to end up rolling back the branch, force-pushing changes &amp;c, so cannot actively share the branch with anyone.</p>
 <h3 id="clone-the-repo">Clone the repo.</h3>
@@ -476,6 +403,7 @@ anyway.</p>
 
 
 <h3 id="check-out-the-branch-you-plan-to-release-on-tag-it">Check out the branch you plan to release on; tag it</h3>
+<p>The tag is so that if things go wrong you know what you have to roll back to.</p>
 <div class="codehilite"><pre><span class="n">cd</span> <span class="n">incubator</span><span class="o">-</span><span class="n">slider</span>
 <span class="n">git</span> <span class="n">checkout</span> <span class="o">-</span><span class="n">t</span> <span class="n">origin</span><span class="o">/</span><span class="n">branches</span><span class="o">/</span><span class="n">branch</span><span class="o">-</span>0<span class="p">.</span>6
 </pre></div>
@@ -571,47 +499,37 @@ with your ASF username &amp; LDAP passwo
 <li>Get the URL of the closed staging repository. This is needed for the next step —the votes.</li>
 </ol>
 <h2 id="get-the-votes-in">Get the Votes In</h2>
-<h3 id="call-for-a-slider-vote">Call for a slider vote</h3>
-<p>Call for a release VOTE to the dev mailing list (<code>dev@slider.incubator.apache.org</code>).</p>
-<p>To build the URLs, echo them then verify in your browser that they are present</p>
-<div class="codehilite"><pre><span class="n">echo</span>  <span class="p">[</span><span class="n">VOTE</span><span class="p">]</span> <span class="n">Apache</span> <span class="n">Slider</span> <span class="n">Incubating</span> <span class="n">Release</span> $<span class="n">SLIDER_RELEASE</span>
-
-<span class="n">echo</span> &quot;<span class="n">This</span> <span class="n">is</span> <span class="n">a</span> <span class="n">call</span> <span class="k">for</span> <span class="n">a</span> <span class="n">vote</span> <span class="n">on</span> <span class="n">Apache</span> <span class="n">Slider</span> $<span class="n">SLIDER_RELEASE</span> <span class="n">release</span>&quot;
-
-<span class="n">echo</span> &quot;<span class="n">Artifacts</span> <span class="n">at</span> <span class="n">http</span><span class="p">:</span><span class="o">//</span><span class="n">people</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">ASF_USER</span><span class="o">/</span><span class="n">slider</span><span class="o">/</span><span class="n">slider</span><span class="o">-</span><span class="n">release</span><span class="o">-</span>$<span class="n">SLIDER_RELEASE</span><span class="o">-</span>$<span class="n">RELEASE_RC</span>&quot;
+<h3 id="set-up-your-env-vars-for-email-templates">Set up your env vars for email templates</h3>
+<p>set up the environment with the git release tag, URL to the staging repository, and your ASF username:</p>
+<div class="codehilite"><pre><span class="n">export</span> <span class="n">RELEASE_TAG</span><span class="p">=</span>
+<span class="n">export</span> <span class="n">STAGING_REPO</span><span class="p">=</span>
+<span class="n">export</span> <span class="n">ASF_USER</span><span class="p">=</span>
+</pre></div>
 
-<span class="n">echo</span> &quot;<span class="n">Git</span> <span class="n">source</span> <span class="n">tag</span><span class="p">:</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="n">p</span><span class="p">=</span><span class="n">incubator</span><span class="o">-</span><span class="n">slider</span><span class="p">.</span><span class="n">git</span><span class="p">;</span><span class="n">a</span><span class="p">=</span><span class="n">shortlog</span><span class="p">;</span><span class="n">h</span><span class="p">=</span><span class="n">refs</span><span class="o">/</span><span class="n">tags</span><span class
 ="o">/</span><span class="n">release</span><span class="o">-</span>$<span class="n">SLIDER_RELEASE</span><span class="o">-</span>$<span class="n">RELEASE_RC</span>&quot;
 
-<span class="n">echo</span> &quot;<span class="n">PGP</span> <span class="n">keys</span> <span class="n">at</span> <span class="n">http</span><span class="p">:</span><span class="o">//</span><span class="n">pgp</span><span class="p">.</span><span class="n">mit</span><span class="p">.</span><span class="n">edu</span><span class="p">:</span>11371<span class="o">/</span><span class="n">pks</span><span class="o">/</span><span class="n">lookup</span>?<span class="n">op</span><span class="p">=</span><span class="n">vindex</span><span class="o">&amp;</span><span class="n">search</span><span class="p">=</span>$<span class="n">ASF_USER</span><span class="p">@</span><span class="n">apache</span><span class="p">.</span><span class="n">org</span>&quot;
+<p>example</p>
+<div class="codehilite"><pre><span class="n">export</span> <span class="n">RELEASE_TAG</span><span class="p">=</span>64<span class="n">a8bac068e6801748fb973dbfb590bc62c60935</span>
+<span class="n">export</span> <span class="n">STAGING_REPO</span><span class="p">=</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">/</span><span class="n">orgapacheslider</span><span class="o">-</span>1003<span class="o">/</span>
+<span class="n">export</span> <span class="n">ASF_USER</span><span class="p">=</span><span class="n">stevel</span>
 </pre></div>
 
 
-<p>Sample:</p>
-<p>```</p>
-<p>Title: [VOTE] Apache Slider Incubating Release $SLIDER_RELEASE $RELEASE_RC</p>
-<p>Hello folks,</p>
-<p>This is a call for a vote on Apache Slider $SLIDER_RELEASE release. 
-Thanks to everyone who have contributed to this release.</p>
-<p>Git source checksum d3fd75007a209cf6439dde99c35a46a2632ca79d</p>
-<p>tag:
-https://git-wip-us.apache.org/repos/asf?p=incubator-slider.git;a=tag;h=refs/tags/slider-0.61.0</p>
-<p>Staging site:</p>
-<p>https://repository.apache.org/content/repositories/orgapacheslider-1002/org/apache/slider/</p>
-<p>The single archive is in </p>
-<p>https://repository.apache.org/content/repositories/orgapacheslider-1002/org/apache/slider/slider-assembly/0.61.0/</p>
-<p>PGP release keys (signed as stevel)
-http://pgp.mit.edu:11371/pks/lookup?op=vindex&amp;search=$stevel@apache.org</p>
-<p>The issues fixed in this release are listed at at:
-https://issues.apache.org/jira/browse/SLIDER/fixforversion/12329034</p>
-<p>This is a source+binary release.</p>
-<p>Build instructions at: http://slider.incubator.apache.org/developing/building.html </p>
+<h3 id="call-for-a-slider-vote">Call for a slider vote</h3>
+<p>Call for a release VOTE to the dev mailing list (<code>dev@slider.incubator.apache.org</code>).</p>
+<p>To build the URLs, echo them then verify in your browser that they are present</p>
+<p>echo "[VOTE] Apache Slider Incubating Release $SLIDER_RELEASE"</p>
+<p>echo "This is a call for a vote on Apache Slider $SLIDER_RELEASE release"
+echo "This is a source+binary release."
+echo "Artifacts at $STAGING_REPO" 
+echo "Git source tag: https://git-wip-us.apache.org/repos/asf?p=incubator-slider.git;a=commit;h=$RELEASE_TAG "
+echo "PGP keys at http://pgp.mit.edu:11371/pks/lookup?op=vindex&amp;search=$ASF_USER@apache.org"</p>
+<p>Build instructions at: http://slider.incubator.apache.org/developing/building.html</p>
 <p>Vote will be open for 72 hours </p>
-<p>[ ] +1 approve
-[ ] +0 no opinion
-[ ] -1 disapprove (and reason why)</p>
-<p>```</p>
+<p>[ ] +1 approve 
+[ ] +0 no opinion 
+[ ] -1 disapprove (and reason why) </p>
 <ul>
-<li>CHECK ALL THE URLS FIRST *</li>
+<li>CHECK ALL THE URLS  *</li>
 </ul>
 <h3 id="call-for-an-incubator-vote">Call for an incubator vote</h3>
 <p>If the VOTE passes, call for VOTE from IPMC. Include the VOTE and RESULT thread from the dev alias.
@@ -630,7 +548,62 @@ If that VOTE passes with the IPMC send a
 </pre></div>
 
 
-<h2 id="publishing-the-release">Publishing the release</h2>
+<h2 id="publishing-the-nexus-staging-repository">Publishing the Nexus staging repository</h2>
+<p>Once —and only once— the incubator vote is successful, you may release the nexus-staged artifacts.</p>
+<ol>
+<li>Log in to <a href="https://repository.apache.org/index.html#stagingRepositories">the ASF Nexus server</a></li>
+<li>Locate and select the staged Slider repository</li>
+<li>In the toolbar above, press the release button</li>
+</ol>
+<h2 id="publishing-the-source-and-binary-tarzip-files">Publishing the source and binary tar/zip files</h2>
+<p>The ASF distribution system mirrors the source and binary files across the all apache mirror sites. This the standard way which the archives are distributed.</p>
+<p>Publish the release as below:</p>
+<h3 id="grab-the-released-artifacts-from-nexus">Grab the released artifacts from Nexus</h3>
+<ol>
+<li>
+<p>Create a temp directory somewhere</p>
+<div class="codehilite"><pre><span class="n">mkdir</span> <span class="n">temp</span>
+<span class="n">cd</span> <span class="n">temp</span>
+</pre></div>
+
+
+<ol>
+<li>
+<p>create a directory, <code>artifacts</code></p>
+<p>mkdir artifacts
+cd artifacts</p>
+</li>
+</ol>
+</li>
+<li>
+<p>Under <code>org/apache/slider/slider-assembly/$SLIDER_RELEASE</code> download all but the POM files (or download everything ) into <code>artifacts</code></p>
+</li>
+<li>Repeat for the source files <code>org/apache/slider/slider/$SLIDER_RELEASE</code></li>
+</ol>
+<h3 id="check-out-the-distribution-dir-somewhere">Check out the distribution dir somewhere</h3>
+<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">release</span><span class="o">/</span><span class="n">incubator</span><span class="o">/</span><span class="n">slider</span> <span class="n">slider</span>
+
+<span class="n">cd</span> <span class="n">slider</span>
+</pre></div>
+
+
+<p>Make sure your PGP keys is in the <code>KEYS</code> file. The instructions to add a key 
+are at the top of that file</p>
+<p>Then...</p>
+<div class="codehilite"><pre><span class="n">mkdir</span> $<span class="n">SLIDER_RELEASE</span> $<span class="n">SLIDER_RELEASE</span><span class="o">/</span><span class="n">src</span>
+<span class="n">cd</span> $<span class="n">SLIDER_RELEASE</span><span class="o">/</span><span class="n">src</span>
+<span class="n">scp</span> <span class="o">~/</span><span class="n">public_html</span><span class="o">/</span>$<span class="n">SLIDER_RELEASE</span><span class="o">-</span>$<span class="n">RELEASE_RC</span><span class="o">/*</span> <span class="p">.</span>
+<span class="n">cd</span> <span class="p">..</span>
+<span class="n">svn</span> <span class="n">add</span> $<span class="n">SLIDER_RELEASE</span>
+<span class="n">svn</span> <span class="n">commit</span> <span class="o">-</span><span class="n">m</span> &quot;<span class="n">SLIDER_RELEASE_JIRA</span> <span class="n">Committing</span> <span class="n">Release</span> $<span class="n">SLIDER_RELEASE</span>&quot;
+</pre></div>
+
+
+<p><strong>Step 14</strong></p>
+<h3 id="web-site-updates">Web site updates</h3>
+<p>Update the Slider website as needed. Most of the documents would have been updated by now to reflect the released version. <em>The remaining changes should really be modifying the references to the latest release to the new version.</em></p>
+<p>The download details for the latest release needs to be updated after mirrors are updated in . </p>
+<p>Verify the download links at <a href="http://slider.incubator.apache.org">Slider Page</a>.</p>
 <h2 id="announcing">Announcing</h2>
 <p>Send an announcement:</p>
 <p>The bits published in <strong>Step 13</strong> may take up to 24 hours to replicate to the mirrors.</p>
@@ -655,6 +628,19 @@ To send the message to announcement@apac
 </pre></div>
 
 
+<h3 id="push-the-release-to-originmaster-todo">Push the release to origin/master —TODO</h3>
+<p><strong> TODO </strong></p>
+<p>Goal: get the master branch updated with this release, with any changes in the release taking priority over the versions in /master. </p>
+<p>This is where gitflow breaks down. It may be better to have tags like <code>latest_stable</code> and <code>latest_development</code> and just move them along. </p>
+<p>Otherwise: 
+In the branch for the release, go to the tag create for the release by maven. This represents the code released, including the version numbering of the release artifact (not the HEAD of the branch, which has the incremented one)</p>
+<div class="codehilite"><pre><span class="n">git</span> <span class="n">tag</span> <span class="o">-</span><span class="n">a</span> $<span class="n">SLIDER_RELEASE</span> <span class="o">-</span><span class="n">m</span> <span class="s">&#39;Slider $SLIDER_RELEASE&#39;</span> $<span class="n">RELEASE_TAG</span>
+<span class="n">git</span> <span class="n">push</span> <span class="n">origin</span> $<span class="n">SLIDER_RELEASE</span>
+<span class="n">git</span> <span class="n">checkout</span> <span class="n">master</span>
+<span class="n">git</span> <span class="n">merge</span> <span class="n">branch</span> <span class="o">-</span><span class="n">X</span> $<span class="n">SLIDER_RELEASE</span>
+</pre></div>
+
+
 <h2 id="finish-the-jira">Finish the JIRA</h2>
 <p>Log the time, close the issue. This should normally be the end of a 
 sprint —so wrap that up too.</p>