blob: d85ab26b7c53d51f1047a68c3ad0e7449cffa285 [file] [log] [blame]
<!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.18.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"
>
0.19.1
</option>
<option value="0.19.0"
>
0.19.0
</option>
<option value="0.18.1"
selected="selected">
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>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.</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>