<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1">
	<title>Apache Aurora</title>
    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.1/css/bootstrap.min.css">
    <link href="/assets/css/main.css" rel="stylesheet">
	<!-- Analytics -->
	<script type="text/javascript">
		  var _gaq = _gaq || [];
		  _gaq.push(['_setAccount', 'UA-45879646-1']);
		  _gaq.push(['_setDomainName', 'apache.org']);
		  _gaq.push(['_trackPageview']);

		  (function() {
		    var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
		    ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
		    var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
		  })();
	</script>
  </head>
  <body>
    <div class="container-fluid section-header">
  <div class="container">
    <div class="nav nav-bar">
    <a href="/"><img src="/assets/img/aurora_logo_dkbkg.svg" width="300" alt="Transparent Apache Aurora logo with dark background"/></a>
    <ul class="nav navbar-nav navbar-right">
      <li><a href="/documentation/latest/">Documentation</a></li>
      <li><a href="/community/">Community</a></li>
      <li><a href="/downloads/">Downloads</a></li>
      <li><a href="/blog/">Blog</a></li>
    </ul>
    </div>
  </div>
</div>
	
    <div class="container-fluid">
      <div class="container content">
        <div class="col-md-12 documentation">
<h5 class="page-header text-uppercase">Documentation
<select onChange="window.location.href='/documentation/' + this.value + '/development/committers-guide/'"
        value="0.19.1">
  <option value="0.22.0"
    >
    0.22.0
      (latest)
  </option>
  <option value="0.21.0"
    >
    0.21.0
  </option>
  <option value="0.20.0"
    >
    0.20.0
  </option>
  <option value="0.19.1"
    selected="selected">
    0.19.1
  </option>
  <option value="0.19.0"
    >
    0.19.0
  </option>
  <option value="0.18.1"
    >
    0.18.1
  </option>
  <option value="0.18.0"
    >
    0.18.0
  </option>
  <option value="0.17.0"
    >
    0.17.0
  </option>
  <option value="0.16.0"
    >
    0.16.0
  </option>
  <option value="0.15.0"
    >
    0.15.0
  </option>
  <option value="0.14.0"
    >
    0.14.0
  </option>
  <option value="0.13.0"
    >
    0.13.0
  </option>
  <option value="0.12.0"
    >
    0.12.0
  </option>
  <option value="0.11.0"
    >
    0.11.0
  </option>
  <option value="0.10.0"
    >
    0.10.0
  </option>
  <option value="0.9.0"
    >
    0.9.0
  </option>
  <option value="0.8.0"
    >
    0.8.0
  </option>
  <option value="0.7.0-incubating"
    >
    0.7.0-incubating
  </option>
  <option value="0.6.0-incubating"
    >
    0.6.0-incubating
  </option>
  <option value="0.5.0-incubating"
    >
    0.5.0-incubating
  </option>
</select>
</h5>
<h1 id="committer-39-s-guide">Committer&rsquo;s Guide</h1>

<p>Information for official Apache Aurora committers.</p>

<h2 id="setting-up-your-email-account">Setting up your email account</h2>

<p>Once your Apache ID has been set up you can configure your account and add ssh keys and setup an
email forwarding address at</p>
<pre class="highlight plaintext"><code>http://id.apache.org
</code></pre>

<p>Additional instructions for setting up your new committer email can be found at</p>
<pre class="highlight plaintext"><code>http://www.apache.org/dev/user-email.html
</code></pre>

<p>The recommended setup is to configure all services (mailing lists, JIRA, ReviewBoard) to send
emails to your @apache.org email address.</p>

<h2 id="creating-a-gpg-key-for-releases">Creating a gpg key for releases</h2>

<p>In order to create a release candidate you will need a gpg key published to an external key server
and that key will need to be added to our KEYS file as well.</p>

<ol>
<li><p>Create a key:</p>
<pre class="highlight plaintext"><code>       gpg --gen-key
</code></pre></li>
<li><p>Add your gpg key to the Apache Aurora KEYS file:</p>
<pre class="highlight plaintext"><code>       git clone https://gitbox.apache.org/repos/asf/aurora.git
       (gpg --list-sigs &lt;KEY ID&gt; &amp;&amp; gpg --armor --export &lt;KEY ID&gt;) &gt;&gt; KEYS
       git add KEYS &amp;&amp; git commit -m "Adding gpg key for &lt;APACHE ID&gt;"
       ./rbt post -o -g
</code></pre></li>
<li><p>Publish the key to an external key server:</p>
<pre class="highlight plaintext"><code>       gpg --keyserver pgp.mit.edu --send-keys &lt;KEY ID&gt;
</code></pre></li>
<li><p>Update the changes to the KEYS file to the Apache Aurora svn dist locations listed below:</p>
<pre class="highlight plaintext"><code>       https://dist.apache.org/repos/dist/dev/aurora/KEYS
       https://dist.apache.org/repos/dist/release/aurora/KEYS
</code></pre></li>
<li><p>Add your key to git config for use with the release scripts:</p>
<pre class="highlight plaintext"><code>       git config --global user.signingkey &lt;KEY ID&gt;
</code></pre></li>
</ol>

<h2 id="creating-a-release">Creating a release</h2>

<p>The following will guide you through the steps to create a release candidate, vote, and finally an
official Apache Aurora release. Before starting your gpg key should be in the KEYS file and you
must have access to commit to the dist.a.o repositories.</p>

<ol>
<li>Ensure that all issues resolved for this release candidate are tagged with the correct Fix
Version in JIRA, the changelog script will use this to generate the CHANGELOG in step #2.
To assign the fix version:</li>
</ol>
<pre class="highlight plaintext"><code>* Look up the [previous release date](https://issues.apache.org/jira/browse/aurora/?selectedTab=com.atlassian.jira.jira-projects-plugin:versions-panel).
* Query all issues resolved after that release date: `project = AURORA AND status in (resolved, Closed) and fixVersion is empty and resolutiondate &gt;= "YYYY/MM/DD"`
* In the upper right corner of the query result, select Tools &gt; Bulk Edit.
* Select all issues &gt; edit issue &gt; set 'Change Fix Version/s' to the release version.
* Make sure to uncheck 'Send mail for this update' at the bottom.
</code></pre>

<ol>
<li><p>Prepare RELEASE-NOTES.md for the release. This just boils down to removing the &ldquo;(Not yet
released)&rdquo; suffix from the impending release.</p></li>
<li><p>Create a release candidate. This will automatically update the CHANGELOG and commit it, create a
branch and update the current version within the trunk. To create a minor version update and publish
it run</p>
<pre class="highlight plaintext"><code>       ./build-support/release/release-candidate -l m -p
</code></pre></li>
<li><p>Update, if necessary, the draft email created from the <code>release-candidate</code> script in step #2 and
send the [VOTE] email to the dev@ mailing list. You can verify the release signature and checksums
by running</p>
<pre class="highlight plaintext"><code>       ./build-support/release/verify-release-candidate
</code></pre></li>
<li><p>Wait for the vote to complete. If the vote fails close the vote by replying to the initial [VOTE]
email sent in step #3 by editing the subject to [RESULT][VOTE] &hellip; and noting the failure reason
(example <a href="http://markmail.org/message/d4d6xtvj7vgwi76f">here</a>). You&rsquo;ll also need to manually revert
the commits generated by the release candidate script that incremented the snapshot version and
updated the changelog. Once that is done, now address any issues and go back to step #1 and run
again, this time you will use the -r flag to increment the release candidate version. This will
automatically clean up the release candidate rc0 branch and source distribution.</p>
<pre class="highlight plaintext"><code>       ./build-support/release/release-candidate -l m -r 1 -p
</code></pre></li>
<li><p>Once the vote has successfully passed create the release</p></li>
</ol>

<p><strong>IMPORTANT: make sure to use the correct release at this final step (e.g.: <code>-r 1</code> if rc1 candidate
has been voted for). Once the release tag is pushed it will be very hard to undo due to remote
git pre-receive hook explicitly forbidding release tag manipulations.</strong></p>
<pre class="highlight plaintext"><code>           ./build-support/release/release
</code></pre>

<ol>
<li><p>Update the draft email created fom the <code>release</code> script in step #5 to include the Apache ID&rsquo;s for
all binding votes and send the [RESULT][VOTE] email to the dev@ mailing list.</p></li>
<li><p>Update the <a href="http://aurora.apache.org/">Aurora Website</a> by following the
<a href="https://svn.apache.org/repos/asf/aurora/site/README.md">instructions</a> on the ASF Aurora SVN repo.
Remember to add a blog post under source/blog and regenerate the site before committing.</p></li>
</ol>

</div>

      </div>
    </div>
  	<div class="container-fluid section-footer buffer">
      <div class="container">
        <div class="row">
		  <div class="col-md-2 col-md-offset-1"><h3>Quick Links</h3>
		  <ul>
		    <li><a href="/downloads/">Downloads</a></li>
            <li><a href="/community/">Mailing Lists</a></li>
			<li><a href="http://issues.apache.org/jira/browse/AURORA">Issue Tracking</a></li>
			<li><a href="/documentation/latest/contributing/">How To Contribute</a></li>     
		  </ul>
	      </div>
		  <div class="col-md-2"><h3>The ASF</h3>
          <ul>
            <li><a href="http://www.apache.org/licenses/">License</a></li>
            <li><a href="http://www.apache.org/foundation/sponsorship.html">Sponsorship</a></li>  
            <li><a href="http://www.apache.org/foundation/thanks.html">Thanks</a></li>
            <li><a href="http://www.apache.org/security/">Security</a></li>
          </ul>
		  </div>
		  <div class="col-md-6">
			<p class="disclaimer">&copy; 2014-2017 <a href="http://www.apache.org/">Apache Software Foundation</a>. Licensed under the <a href="http://www.apache.org/licenses/">Apache License v2.0</a>. The <a href="https://www.flickr.com/photos/trondk/12706051375/">Aurora Borealis IX photo</a> displayed on the homepage is available under a <a href="https://creativecommons.org/licenses/by-nc-nd/2.0/">Creative Commons BY-NC-ND 2.0 license</a>. Apache, Apache Aurora, and the Apache feather logo are trademarks of The Apache Software Foundation.</p>
        </div>
      </div>
    </div>

  </body>
</html>
