http://git-wip-us.apache.org/repos/asf/accumulo-website/blob/59a6d65d/contributor/contrib-projects.html ---------------------------------------------------------------------- diff --git a/contributor/contrib-projects.html b/contributor/contrib-projects.html new file mode 100644 index 0000000..08f9aac --- /dev/null +++ b/contributor/contrib-projects.html @@ -0,0 +1,230 @@ +<!DOCTYPE html> +<html lang="en"> +<head> +<!-- + Licensed to the Apache Software Foundation (ASF) under one or more + contributor license agreements. See the NOTICE file distributed with + this work for additional information regarding copyright ownership. + The ASF licenses this file to You under the Apache License, Version 2.0 + (the "License"); you may not use this file except in compliance with + the License. You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +--> +<meta charset="utf-8"> +<meta http-equiv="X-UA-Compatible" content="IE=edge"> +<meta name="viewport" content="width=device-width, initial-scale=1"> +<link href="https://maxcdn.bootstrapcdn.com/bootswatch/3.3.7/paper/bootstrap.min.css" rel="stylesheet" integrity="sha384-awusxf8AUojygHf2+joICySzB780jVvQaVCAt1clU3QsyAitLGul28Qxb2r1e5g+" crossorigin="anonymous"> +<link href="//netdna.bootstrapcdn.com/font-awesome/4.0.3/css/font-awesome.css" rel="stylesheet"> +<link rel="stylesheet" type="text/css" href="https://cdn.datatables.net/v/bs/jq-2.2.3/dt-1.10.12/datatables.min.css"> +<link href="/css/accumulo.css" rel="stylesheet" type="text/css"> + +<title>Contrib Projects</title> + +<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.2.4/jquery.min.js"></script> +<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js" integrity="sha384-Tc5IQib027qvyjSMfHjOMaLkfuWVxZxUPnCJA7l2mCWNIpG9mGCD8wGNIcPD7Txa" crossorigin="anonymous"></script> +<script type="text/javascript" src="https://cdn.datatables.net/v/bs/jq-2.2.3/dt-1.10.12/datatables.min.js"></script> +<script> + // show location of canonical site if not currently on the canonical site + $(function() { + var host = window.location.host; + if (typeof host !== 'undefined' && host !== 'accumulo.apache.org') { + $('#non-canonical').show(); + } + }); + + $(function() { + // decorate section headers with anchors + return $("h2, h3, h4, h5, h6").each(function(i, el) { + var $el, icon, id; + $el = $(el); + id = $el.attr('id'); + icon = '<i class="fa fa-link"></i>'; + if (id) { + return $el.append($("<a />").addClass("header-link").attr("href", "#" + id).html(icon)); + } + }); + }); + + // configure Google Analytics + (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){ + (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o), + m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m) + })(window,document,'script','//www.google-analytics.com/analytics.js','ga'); + + if (ga.hasOwnProperty('loaded') && ga.loaded === true) { + ga('create', 'UA-50934829-1', 'apache.org'); + ga('send', 'pageview'); + } +</script> + +</head> +<body style="padding-top: 100px"> + + <nav class="navbar navbar-default navbar-fixed-top"> + <div class="container"> + <div class="navbar-header"> + <button type="button" class="navbar-toggle" data-toggle="collapse" data-target="#navbar-items"> + <span class="sr-only">Toggle navigation</span> + <span class="icon-bar"></span> + <span class="icon-bar"></span> + <span class="icon-bar"></span> + </button> + <a href="/"><img id="nav-logo" alt="Apache Accumulo" class="img-responsive" src="/images/accumulo-logo.png" width="200"/></a> + </div> + <div class="collapse navbar-collapse" id="navbar-items"> + <ul class="nav navbar-nav"> + <li class="nav-link"><a href="/downloads">Download</a></li> + <li class="dropdown"> + <a class="dropdown-toggle" data-toggle="dropdown" href="#">Releases<span class="caret"></span></a> + <ul class="dropdown-menu"> + <li><a href="/release/accumulo-1.8.0/">1.8.0 (Latest)</a></li> + <li><a href="/release/accumulo-1.7.2/">1.7.2</a></li> + <li><a href="/release/accumulo-1.6.6/">1.6.6</a></li> + <li><a href="/release/">Archive</a></li> + </ul> + </li> + <li class="dropdown"> + <a class="dropdown-toggle" data-toggle="dropdown" href="#">Documentation<span class="caret"></span></a> + <ul class="dropdown-menu"> + <li><a href="/1.8/accumulo_user_manual.html">User Manual (1.8)</a></li> + <li><a href="/1.8/apidocs">Javadocs (1.8)</a></li> + <li><a href="/1.8/examples">Examples (1.8)</a></li> + <li><a href="/features">Features</a></li> + <li><a href="/papers">Papers & Presentations</a></li> + <li><a href="/glossary">Glossary</a></li> + <li><a href="/docs-archive/">Archive</a></li> + </ul> + </li> + <li class="dropdown"> + <a class="dropdown-toggle" data-toggle="dropdown" href="#">Community<span class="caret"></span></a> + <ul class="dropdown-menu"> + <li><a href="/get_involved">Get Involved</a></li> + <li><a href="/mailing_list">Mailing Lists</a></li> + <li><a href="/people">People</a></li> + <li><a href="/projects">Related Projects</a></li> + <li><a href="/contributor/">Contributor Guide</a></li> + <li><a href="/governance/">Governance</a></li> + </ul> + </li> + </ul> + <ul class="nav navbar-nav navbar-right"> + <li class="dropdown"> + <a class="dropdown-toggle" data-toggle="dropdown" href="#">Apache Software Foundation<span class="caret"></span></a> + <ul class="dropdown-menu"> + <li><a href="https://www.apache.org">Apache Homepage <i class="fa fa-external-link"></i></a></li> + <li><a href="https://www.apache.org/licenses/LICENSE-2.0">License <i class="fa fa-external-link"></i></a></li> + <li><a href="https://www.apache.org/foundation/sponsorship">Sponsorship <i class="fa fa-external-link"></i></a></li> + <li><a href="https://www.apache.org/security">Security <i class="fa fa-external-link"></i></a></li> + <li><a href="https://www.apache.org/foundation/thanks">Thanks <i class="fa fa-external-link"></i></a></li> + <li><a href="https://www.apache.org/foundation/policies/conduct">Code of Conduct <i class="fa fa-external-link"></i></a></li> + </ul> + </li> + </ul> + </div> + </div> +</nav> + + + <div class="container"> + <div class="row"> + <div class="col-md-12"> + + <div id="non-canonical" style="display: none; background-color: #F0E68C; padding-left: 1em;"> + Visit the official site at: <a href="https://accumulo.apache.org">https://accumulo.apache.org</a> + </div> + <div id="content"> + + <h1 class="title">Contrib Projects</h1> + + <p>Apache Accumulo is a complex distributed system. In order to minimize that +complexity for both operators and developers the project maintains contrib +repositories for instructive applications and code that builds interoperability +between Accumulo and other systems. This helps minimize the set of dependencies +needed when building or installing Accumulo, keeps the build time down, and +allows the contrib projects to follow their own release schedule.</p> + +<h2 id="existing-contrib-projects">Existing Contrib Projects</h2> + +<p>Each of the below contrib project handles their own development and release +cycle. For information on what version(s) of Accumulo they work with, see the +documentation for the individual project.</p> + +<h3 id="instamo-archetype">Instamo Archetype</h3> + +<p>A Maven Archetype that automates the customization of Instamo to quickly spin +up an Accumulo process in memory.</p> + +<p>The Apache Accumulo Instamo Archetype uses <a href="http://git-scm.com">Git</a> version control +(<a href="https://git-wip-us.apache.org/repos/asf?p=accumulo-instamo-archetype.git;a=summary">browse</a>|<a href="https://git-wip-us.apache.org/repos/asf/accumulo-instamo-archetype.git">checkout</a>). It builds with <a href="https://maven.apache.org">Apache +Maven</a>. See the section <a href="#contributing-to-contrib">Contributing to Contrib</a> for +instructions on submitting issues and patches.</p> + +<h3 id="wikisearch-application">Wikisearch Application</h3> + +<p>A complex application example that makes use of most of the Accumulo feature +stack. The Wikisearch application provides an example of indexing and querying +Wikipedia data within Accumulo. It is a great place to start if you want to get +familiar with good development practices building on Accumulo.</p> + +<p>For details on setting up the application, see the project's README. You can +also read <a href="example/wikisearch">an overview and some performance numbers</a>.</p> + +<p>The Apache Accumulo Wikisearch Example uses <a href="http://git-scm.com">Git</a> version control +(<a href="https://git-wip-us.apache.org/repos/asf?p=accumulo-wikisearch.git;a=summary">browse</a>|<a href="https://git-wip-us.apache.org/repos/asf/accumulo-wikisearch.git">checkout</a>). It builds with +<a href="https://maven.apache.org">Apache Maven</a>. See the section <a href="#contributing-to-contrib">Contributing to Contrib</a> for +instructions on submitting issues and patches.</p> + +<h3 id="hama-integration">Hama Integration</h3> + +<p>An implementation for running <a href="https://hama.apache.org/hama_bsp_tutorial">Bulk Synchronous Parallel (BSP) +algorithms</a> implemented via <a href="https://hama.apache.org">Apache Hama</a> on top of data stored +in Accumulo.</p> + +<p>The Apache Accumulo BSP implementation uses <a href="http://git-scm.com">Git</a> version control +(<a href="https://git-wip-us.apache.org/repos/asf?p=accumulo-bsp.git;a=summary">browse</a>|<a href="https://git-wip-us.apache.org/repos/asf/accumulo-bsp.git">checkout</a>). It builds with <a href="https://maven.apache.org">Apache +Maven</a>. See the section <a href="#contributing-to-contrib">Contributing to Contrib</a> for +instructions on submitting issues and patches.</p> + +<h2 id="contributing-to-contrib">Contributing to Contrib</h2> + +<p>All contributions to the various Apache Accumulo contrib projects should follow +the <a href="git#the-implementation">same process used in the primary project</a>. All contributions +should have a corresponding issue filed in the <a href="https://issues.apache.org/jira/browse/ACCUMULO/component/12316610">contrib component in the +Accumulo issue tracker</a>.</p> + +<h2 id="adding-a-new-contrib-project">Adding a new Contrib Project</h2> + +<p>Proposals for new contrib projects should be sent to the <a href="mailing_list">Accumulo mailing +list</a> for <a href="mailto:dev@accumulo.apache.org?subject=[Accumulo+Contrib+Proposal]">developers</a>.</p> + +<p>If an example application only makes use of a single Accumulo feature, it is +probably better off as an Accumulo version-specific example. You can see +several of these demonstrative applications in the <a href="https://git-wip-us.apache.org/repos/asf?p=accumulo.git;a=tree;f=examples/simple;">simple example +codebase</a> and the related published documentation for versions +<a href="1.7/examples">1.7</a> and <a href="1.6/examples">1.6</a>.</p> + + + </div> + + +<footer> + + <p><a href="https://www.apache.org"><img src="/images/feather-small.gif" alt="Apache Software Foundation" id="asf-logo" height="100" /></a></p> + + <p>Copyright © 2011-2016 The Apache Software Foundation. Licensed under the <a href="https://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a>.</p> + +</footer> + + + </div> + </div> + </div> +</body> +</html>
http://git-wip-us.apache.org/repos/asf/accumulo-website/blob/59a6d65d/contributor/git.html ---------------------------------------------------------------------- diff --git a/contributor/git.html b/contributor/git.html new file mode 100644 index 0000000..bb8dd45 --- /dev/null +++ b/contributor/git.html @@ -0,0 +1,686 @@ +<!DOCTYPE html> +<html lang="en"> +<head> +<!-- + Licensed to the Apache Software Foundation (ASF) under one or more + contributor license agreements. See the NOTICE file distributed with + this work for additional information regarding copyright ownership. + The ASF licenses this file to You under the Apache License, Version 2.0 + (the "License"); you may not use this file except in compliance with + the License. You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +--> +<meta charset="utf-8"> +<meta http-equiv="X-UA-Compatible" content="IE=edge"> +<meta name="viewport" content="width=device-width, initial-scale=1"> +<link href="https://maxcdn.bootstrapcdn.com/bootswatch/3.3.7/paper/bootstrap.min.css" rel="stylesheet" integrity="sha384-awusxf8AUojygHf2+joICySzB780jVvQaVCAt1clU3QsyAitLGul28Qxb2r1e5g+" crossorigin="anonymous"> +<link href="//netdna.bootstrapcdn.com/font-awesome/4.0.3/css/font-awesome.css" rel="stylesheet"> +<link rel="stylesheet" type="text/css" href="https://cdn.datatables.net/v/bs/jq-2.2.3/dt-1.10.12/datatables.min.css"> +<link href="/css/accumulo.css" rel="stylesheet" type="text/css"> + +<title>Git</title> + +<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.2.4/jquery.min.js"></script> +<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js" integrity="sha384-Tc5IQib027qvyjSMfHjOMaLkfuWVxZxUPnCJA7l2mCWNIpG9mGCD8wGNIcPD7Txa" crossorigin="anonymous"></script> +<script type="text/javascript" src="https://cdn.datatables.net/v/bs/jq-2.2.3/dt-1.10.12/datatables.min.js"></script> +<script> + // show location of canonical site if not currently on the canonical site + $(function() { + var host = window.location.host; + if (typeof host !== 'undefined' && host !== 'accumulo.apache.org') { + $('#non-canonical').show(); + } + }); + + $(function() { + // decorate section headers with anchors + return $("h2, h3, h4, h5, h6").each(function(i, el) { + var $el, icon, id; + $el = $(el); + id = $el.attr('id'); + icon = '<i class="fa fa-link"></i>'; + if (id) { + return $el.append($("<a />").addClass("header-link").attr("href", "#" + id).html(icon)); + } + }); + }); + + // configure Google Analytics + (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){ + (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o), + m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m) + })(window,document,'script','//www.google-analytics.com/analytics.js','ga'); + + if (ga.hasOwnProperty('loaded') && ga.loaded === true) { + ga('create', 'UA-50934829-1', 'apache.org'); + ga('send', 'pageview'); + } +</script> + +</head> +<body style="padding-top: 100px"> + + <nav class="navbar navbar-default navbar-fixed-top"> + <div class="container"> + <div class="navbar-header"> + <button type="button" class="navbar-toggle" data-toggle="collapse" data-target="#navbar-items"> + <span class="sr-only">Toggle navigation</span> + <span class="icon-bar"></span> + <span class="icon-bar"></span> + <span class="icon-bar"></span> + </button> + <a href="/"><img id="nav-logo" alt="Apache Accumulo" class="img-responsive" src="/images/accumulo-logo.png" width="200"/></a> + </div> + <div class="collapse navbar-collapse" id="navbar-items"> + <ul class="nav navbar-nav"> + <li class="nav-link"><a href="/downloads">Download</a></li> + <li class="dropdown"> + <a class="dropdown-toggle" data-toggle="dropdown" href="#">Releases<span class="caret"></span></a> + <ul class="dropdown-menu"> + <li><a href="/release/accumulo-1.8.0/">1.8.0 (Latest)</a></li> + <li><a href="/release/accumulo-1.7.2/">1.7.2</a></li> + <li><a href="/release/accumulo-1.6.6/">1.6.6</a></li> + <li><a href="/release/">Archive</a></li> + </ul> + </li> + <li class="dropdown"> + <a class="dropdown-toggle" data-toggle="dropdown" href="#">Documentation<span class="caret"></span></a> + <ul class="dropdown-menu"> + <li><a href="/1.8/accumulo_user_manual.html">User Manual (1.8)</a></li> + <li><a href="/1.8/apidocs">Javadocs (1.8)</a></li> + <li><a href="/1.8/examples">Examples (1.8)</a></li> + <li><a href="/features">Features</a></li> + <li><a href="/papers">Papers & Presentations</a></li> + <li><a href="/glossary">Glossary</a></li> + <li><a href="/docs-archive/">Archive</a></li> + </ul> + </li> + <li class="dropdown"> + <a class="dropdown-toggle" data-toggle="dropdown" href="#">Community<span class="caret"></span></a> + <ul class="dropdown-menu"> + <li><a href="/get_involved">Get Involved</a></li> + <li><a href="/mailing_list">Mailing Lists</a></li> + <li><a href="/people">People</a></li> + <li><a href="/projects">Related Projects</a></li> + <li><a href="/contributor/">Contributor Guide</a></li> + <li><a href="/governance/">Governance</a></li> + </ul> + </li> + </ul> + <ul class="nav navbar-nav navbar-right"> + <li class="dropdown"> + <a class="dropdown-toggle" data-toggle="dropdown" href="#">Apache Software Foundation<span class="caret"></span></a> + <ul class="dropdown-menu"> + <li><a href="https://www.apache.org">Apache Homepage <i class="fa fa-external-link"></i></a></li> + <li><a href="https://www.apache.org/licenses/LICENSE-2.0">License <i class="fa fa-external-link"></i></a></li> + <li><a href="https://www.apache.org/foundation/sponsorship">Sponsorship <i class="fa fa-external-link"></i></a></li> + <li><a href="https://www.apache.org/security">Security <i class="fa fa-external-link"></i></a></li> + <li><a href="https://www.apache.org/foundation/thanks">Thanks <i class="fa fa-external-link"></i></a></li> + <li><a href="https://www.apache.org/foundation/policies/conduct">Code of Conduct <i class="fa fa-external-link"></i></a></li> + </ul> + </li> + </ul> + </div> + </div> +</nav> + + + <div class="container"> + <div class="row"> + <div class="col-md-12"> + + <div id="non-canonical" style="display: none; background-color: #F0E68C; padding-left: 1em;"> + Visit the official site at: <a href="https://accumulo.apache.org">https://accumulo.apache.org</a> + </div> + <div id="content"> + + <h1 class="title">Git</h1> + + <p><a href="https://git-scm.com">Git</a> is an open source, distributed version control system +which has become very popular in large, complicated software projects due to +its efficient handling of multiple, simultaneously and independently developed +branches of source code.\</p> + +<h2 id="workflow-background">Workflow Background</h2> + +<p>Likely the most contested subject matter regarding switching an active team +from one SCM tool to another is a shift in the development paradigm.</p> + +<p>Some background, the common case, as is present with this team, is that +developers coming from a Subversion history are very light on merging being a +critical consideration on how to perform development. Because merging in +Subversion is typically of no consequence to the complete view of history, not +to mention that Subversion allows âmergingâ of specific revisions instead of +sub-trees. As such, a transition to Git typically requires a shift in mindset +in which a fix is not arbitrarily applied to trunk (whatever the main +development is called), but the fix should be applied to the earliest, non +end-of-life (EOL) version of the application.</p> + +<p>For example, say there is a hypothetical application which has just released +version-3 of their software and have shifted their development to a version-4 +WIP. Version-2 is still supported, while version-1 was just EOLâed. Each +version still has a branch. A bug was just found which affects all released +versions of this application. In Subversion, considering the history in the +repository, it is of no consequence where the change is initially applied, +because a Subversion merge is capable of merging it to any other version. +History does not suffer because Subversion doesnât have the capacities to +accurately track the change across multiple branches. In Git, to maintain a +non-duplicative history, it is imperative that the developer choose the correct +branch to fix the bug in. In this case, since version-1 is EOLâed, version-2, +version-3 and the WIP version-4 are candidates. The earliest version is +obviously version-2; so, the change should be applied in version-2, merged to +version-3 and then the version-4 WIP.</p> + +<p>The importance of this example is making a best-attempt to preserve history +when using Git. While Git does have commands like cherry-pick which allow the +contents of a commit to be applied from one branch to another which are not +candidates to merge without conflict (which is typically the case when merging +a higher version into a lower version), this results in a duplication of that +commit in history when the two trees are eventually merged together. While Git +is smart enough to not attempt to re-apply the changes, history still contains +the blemish.</p> + +<p>The purpose of this extravagant example is to outline, in the trivial case, how +the workflow decided upon for development is very important and has direct +impact on the efficacy of the advanced commands bundled with Git.</p> + +<h2 id="proposed-workflow">Proposed Workflow</h2> + +<p>This is a summary of what has been agreed upon by vocal committers/PMC members +on <a href="mailto:dev@accumulo.apache.org">dev@accumulo.apache.org</a>. Enumeration of +every possible situation out of the scope of this document. This document +intends to lay the ground work to define the correct course of action regardless +of circumstances. Some concrete examples will be provided to ensure the +explanation is clear.</p> + +<ol> + <li> + <p>Active development is performed concurrently over no less than two versions +of Apache Accumulo at any one point in time. As such, the workflow must +provide guidance on how and where changes should be made which apply to +multiple versions and how to ensure that such changes are contained in all +applicable versions.</p> + </li> + <li> + <p>Releases are considered extremely onerous and time-consuming so no emphasis +is placed on rapid iterations or development-cycles.</p> + </li> + <li> + <p>New features typically have lengthy development cycles in which more than +one developer contributes to the creation of the new feature from planning, +to implementation, to scale testing. Mechanisms/guidance should be provided +for multiple developers to teach contribute to a remote-shared resource.</p> + </li> + <li> + <p>The repository should be the irrefutable, sole source of information +regarding the development of Apache Accumulo, and, as such, should have +best-efforts given in creating a clean, readable history without any single +entity having to control all write access and changes (a proxy). In other +words, the developers are the ones responsible for ensuring that previous +releases are preserved to meet ASF policy, for not rewriting any public +history of code not yet officially released (also ASF policy relevant) and +for a best-effort to be given to avoid duplicative commits appearing in + history created by the application of multiple revisions which have + different identifying attributes but the same contents (git-rebase and + git-cherry-pick).</p> + </li> +</ol> + +<h1 id="the-implementation">The implementation</h1> + +<h2 id="contributors">Contributors</h2> + +<p>Use the following steps, original derived from Apache Kafkaâs <a href="https://cwiki.apache.org/confluence/display/KAFKA/Patch+submission+and+review#Patchsubmissionandreview-Simplecontributorworkflow">simple +contributor +workflow</a>.</p> + +<p>To be specific, letâs consider a contributor wanting to work on a fix for the +Jira issue ACCUMULO-12345 that affects 1.5.0 release.</p> + +<ol> + <li> + <p>Ensure you configured Git with your information</p> + + <p><code class="highlighter-rouge">git config --global user.name 'My Name' && git config --global user.email + '[email protected]'</code></p> + </li> + <li> + <p>Clone the Accumulo repository:</p> + + <p><code class="highlighter-rouge">git clone https://git-wip-us.apache.org/repos/asf/accumulo.git accumulo</code></p> + </li> + <li> + <p>or update your local copy:</p> + + <p><code class="highlighter-rouge">git fetch && git fetch --tags</code></p> + </li> + <li> + <p>For the given issue you intend to work on, choose the âlowestâ fixVersion +and create a branch for yourself to work in. This example is against the next release of 1.5</p> + + <p><code class="highlighter-rouge">git checkout -b ACCUMULO-12345-my-work origin/1.5</code></p> + </li> + <li> + <p>Make commits as you see fit as you fix the issue, referencing the issue name +in the commit message:</p> + + <p><code class="highlighter-rouge">git commit -av</code></p> + + <p>Please include the ticket number at the beginning of the log message, and + in the first line, as itâs easier to parse quickly. For example:</p> + + <p><code class="highlighter-rouge">ACCUMULO-2428 throw exception when rename fails after compaction</code></p> + + <p>Consider following the git log message format described in + <a href="https://zachholman.com/talk/more-git-and-github-secrets/">Zach Holmanâs talk</a> + (specifically slides 78-98, beginning at 15:20 into the video). Essentially, + leave a short descriptive message in the first line, skip a line, and write + more detailed stuff there, if you need to. For example:</p> + + <p><code class="highlighter-rouge">ACCUMULO-2194 Add delay for randomwalk Security teardown</code></p> + + <p><code class="highlighter-rouge">If two Security randomwalk tests run back-to-back, the second test may see that the + table user still exists even though it was removed when the first test was torn down. + This can happen if the user drop does not propagate through Zookeeper quickly enough. + This commit adds a delay to the end of the Security test to give ZK some time.</code></p> + </li> + <li> + <p>Assuming others are developing against the version you also are, as you +work, or before you create your patch, rebase your branch against the remote +to lift your changes to the top of your branch. The branch specified here should be the same one you used in step 4.</p> + + <p><code class="highlighter-rouge">git pull --rebase origin 1.5</code></p> + </li> + <li> + <p>At this point, you can create a patch file from the upstream branch to +attach to the ACCUMULO-12345 Jira issue. The branch specified here should be teh same one you used in step 4.</p> + + <p><code class="highlighter-rouge">git format-patch --stdout origin/1.5 > ACCUMULO-12345.patch</code></p> + </li> +</ol> + +<p>An alternative to creating a patch is submitting a request to pull your changes +from some repository, e.g. Github. Please include the repository and branch +name merge in the notice to the Jira issue, e.g.</p> + +<div class="highlighter-rouge"><pre class="highlight"><code>repo=git://github.com/<username>/accumulo.git branch=ACCUMULO-12345 +</code></pre> +</div> + +<p>A second alternative is to use Githubâs âPull Requestsâ feature against the +<a href="https://github.com/apache/accumulo">Apache Accumulo account</a>. Notifications of +new pull-requests from Github should automatically be sent to +<a href="mailto:dev@accumulo.apache.org">dev@accumulo.apache.org</a>.</p> + +<p>Ignoring specifics, contributors should be sure to make their changes against +the earlier version in which the fix is intended, <code class="highlighter-rouge">git-rebase</code>âing their +changes against the upstream branch so as to keep their changes co-located and +free of unnecessary merges.</p> + +<h2 id="developers">Developers</h2> + +<h3 id="primary-development">Primary Development</h3> + +<p>Primary development should take place in <code class="highlighter-rouge">master</code> which is to contain the most +recent, un-released version of Apache Accumulo. Branches exist for minor releases +for each previously released major version.</p> + +<p>Using long-lived branches that track a major release line simplifies management and +release practices. Developers are encouraged to make branches for their own purposes, +for large features, release candidates or whatever else is deemed useful.</p> + +<h3 id="reviewing-contributor-changes">Reviewing contributor changes</h3> + +<p>It is always the responsibility of committers to determine that a patch is +intended and able to be contributed. From the +<a href="https://www.apache.org/dev/new-committers-guide#cla">new committerâs guide</a>: +âPlease take care to ensure that patches are original works which have been +clearly contributed to the ASF in public. In the case of any doubt (or when a +contribution with a more complex history is presented) please consult your +project PMC before committing it.â</p> + +<p>Extra diligence may be necessary when code is contributed via a pull request. +Committers should verify that the contributor intended to submit the code as a +Contribution under the <a href="https://www.apache.org/licenses/LICENSE-2.0.txt">Apache License</a>. +When pulling the code, committers should also verify that the commits pulled match the +list of commits sent to the Accumulo dev list in the pull request.</p> + +<h4 id="patches">Patches</h4> + +<p>Developers should use the following steps to apply patches from +contributors:</p> + +<ol> + <li> + <p>Checkout the branch for the major version which the patch is intended:</p> + + <p><code class="highlighter-rouge">git checkout 1.5</code></p> + </li> + <li> + <p>Verify the changes introduced by the patch:</p> + + <p><code class="highlighter-rouge">git apply --stat ACCUMULO-12345.patch</code></p> + </li> + <li> + <p>Verify that the patch applies cleanly:</p> + + <p><code class="highlighter-rouge">git apply --check ACCUMULO-12345.patch</code></p> + </li> + <li> + <p>If all is well, apply the patch:</p> + + <p><code class="highlighter-rouge">git am --signoff < ACCUMULO-12345.patch</code></p> + </li> + <li> + <p>When finished, push the changes:</p> + + <p><code class="highlighter-rouge">git push origin 1.5</code></p> + </li> + <li> + <p>Merge where appropriate:</p> + + <p><code class="highlighter-rouge">git checkout master && git merge 1.5</code></p> + </li> +</ol> + +<h4 id="github-pull-requests">Github Pull-Requests</h4> + +<p>If the contributor submits a repository and branch to pull +from, the steps are even easier:</p> + +<ol> + <li> + <p>Add their repository as a remote to your repository</p> + + <p><code class="highlighter-rouge">git remote add some_name ${repository}</code></p> + </li> + <li> + <p>Fetch the refs from the given repository</p> + + <p><code class="highlighter-rouge">git fetch ${repository}</code></p> + </li> + <li> + <p>Merge in the given branch to your local branch</p> + + <p><code class="highlighter-rouge">git merge some_name/${branch}</code></p> + </li> + <li> + <p>Delete the remote:</p> + + <p><code class="highlighter-rouge">git remote remove some_name</code></p> + </li> +</ol> + +<p>If the branch doesnât fast-forward merge, you likely want to inform the +contributor to update their branch to avoid the conflict resolution and merge +commit. See the <a href="https://git-scm.com/book/en/Git-Branching-Basic-Branching-and-Merging">Git +manual</a> +for more information on merging. When merging a pull-request, itâs best to <strong>not</strong> +include a signoff on the commit(s) as it changes the final commit ID in the +Accumulo repository. This also has the negative of not automatically closing +the Pull-Request when the changes are made public.</p> + +<h3 id="feature-branches">Feature Branches</h3> + +<p>Ease in creating and using feature branches is a desirable merit which Git +provides with little work. Feature branches are a great way in which developers +to work on multiple, long-running features concurrently, without worry of +mixing code ready for public-review and code needing more internal work. +Additionally, this creates an easily consumable series of commits in which +other developers can track changes, and see how the feature itself evolved.</p> + +<p>To prevent developersâ feature branches from colliding with one another, it was +suggested to impose a âhierarchyâ in which shared feature branches are prefixed +with <code class="highlighter-rouge"><apache_id>/ACCUMULO-<issue#>[-description]</code>.</p> + +<ol> + <li> + <p>Create a branch off of <code class="highlighter-rouge">master</code>.</p> + + <p><code class="highlighter-rouge">git checkout <apache_id>/ACCUMULO-<issue#> master</code></p> + </li> + <li> + <p>Create the feature, commiting early and often to appropriately outline the +âstoryâ behind the feature and itâs implementation.</p> + </li> + <li> + <p>As long as you have not collaborating with others, <code class="highlighter-rouge">git-rebase</code> your feature +branch against upstream changes in <code class="highlighter-rouge">master</code></p> + + <p><code class="highlighter-rouge">git fetch && git rebase origin/master</code></p> + </li> + <li> + <p>If you are actively collaborating with others, you should be nice and not +change their history. Use <code class="highlighter-rouge">git-merge</code> instead.</p> + + <p><code class="highlighter-rouge">git fetch && git merge origin/master</code></p> + </li> + <li> + <p>Continue steps 2 through 4 until the feature is complete.</p> + </li> + <li> + <p>Depending on the nature, duration and history of the changes in your feature +branch, you can choose to:</p> + + <ul> + <li> + <p><strong>âSimpleâ Merge</strong>:</p> + + <p><code class="highlighter-rouge">git checkout master && git merge <apache_id>/ACCUMULO-<issue#></code></p> + </li> + <li> + <p><strong>Rebase and merge</strong> â keeps all feature-branch commits +co-located:</p> + + <p><code class="highlighter-rouge">git fetch && git rebase origin/master && git checkout master && git merge <apache_id>/ACCUMULO-<issue#></code></p> + </li> + <li> + <p><strong>Merge with squash</strong> â feature branch history is a mess, just make one commit +with the lump-sum of your feature branch changes:</p> + + <p><code class="highlighter-rouge">git checkout master && git merge --squash <apache_id>/ACCUMULO-<issue#></code></p> + </li> + </ul> + </li> +</ol> + +<h3 id="changes-which-affect-multiple-versions-aka-merging">Changes which affect multiple versions (a.k.a. merging)</h3> + +<p>Merging can be a very confusing topic for users switching to Git, but it can be +summarized fairly easily.</p> + +<ol> + <li> + <p><strong>Precondition</strong>: choose the right branch to start! (lowest, applicable version +for the change)</p> + </li> + <li> + <p>Get your changes fixed for that earliest version.</p> + </li> + <li> + <p>Switch to the next highest version which future minor versions will be +released (non-EOL major release series).</p> + </li> + <li> + <p><code class="highlighter-rouge">git-merge</code> the branch from #1 into the current.</p> + </li> + <li> + <p>In the face of conflicts, use options from <code class="highlighter-rouge">git-merge</code> to help you.</p> + + <ul> + <li><code class="highlighter-rouge">git checkout new-version && git merge --stat old-version</code></li> + <li><code class="highlighter-rouge">git checkout new-version && git merge --no-commit old-version</code></li> + </ul> + </li> + <li> + <p>Treat your current branch as the branch from #2, and repeat from #2.</p> + </li> +</ol> + +<p>When merging changes across major releases, there is always the possibility of +changes which are applicable/necessary in one release, but not in any future +releases, changes which are different in implementation due to API changes, or +any number of other cases. Whatever the actual case is, the developer who made +the first set of changes (you) is the one responsible for performing the merge +through the rest of the active versions. Even when the merge may results in a +zero-length change in content, this is incredibly important to record as you +are the one who knows that this zero-length change in content is correct!</p> + +<h2 id="release-management">Release Management</h2> + +<p>Releases, although not a day to day task, have their own unique steps which are +to be followed. Releases can be categorized in to minor and major releases.</p> + +<h3 id="a-minor-release">A minor release</h3> + +<p>A minor release is some set of changes <code class="highlighter-rouge">z'</code> on top of a version <code class="highlighter-rouge">x.y.z</code>. +Typically, <code class="highlighter-rouge">z'</code> is simply <code class="highlighter-rouge">z + 1</code>, e.g. given a release named â1.6.0â, and the +next minor release is â1.6.1â. These changes for <code class="highlighter-rouge">z'</code> should not break any +client code which works against <code class="highlighter-rouge">z</code> and should absolutely not change the public +API.</p> + +<p>By convention, the branch containing the changes <code class="highlighter-rouge">z'</code> should be named +<code class="highlighter-rouge">x.y</code> (where the changes for <code class="highlighter-rouge">z'</code> are commits since <code class="highlighter-rouge">x.y.z</code>. The steps to take are as follows:</p> + +<ol> + <li>Prepare the release candidate. <a href="/governance/releasing">Release +Guide</a>, <a href="/releasing">Maven +Instructions</a></li> + <li>Create a branch for the release candidate from the <code class="highlighter-rouge">x.y</code> branch, +named something like <code class="highlighter-rouge">x.y.z'-RCN</code>.</li> + <li>Test and Vote</li> + <li>Create a GPG-signed tag with the correct final name: <code class="highlighter-rouge">x.y.z'</code></li> + <li>Push a delete of the remote branch <code class="highlighter-rouge">x.y.z'-RCN</code></li> +</ol> + +<p>This process is not firm and should not be viewed as requirements for making a release. +The release manager is encouraged to make use branches/tags in whichever way is best.</p> + +<h3 id="a-major-release">A major release</h3> + +<p>A major release is a release in which multiple new features are introduced +and/or the public API are modified. The major release <code class="highlighter-rouge">y'</code>, even when the +client API is not modified, will typically contain many new features and +functionality above the last release series <code class="highlighter-rouge">y</code>. A major release also resets +the <code class="highlighter-rouge">z</code> value back to <code class="highlighter-rouge">0</code>.</p> + +<p>The steps to create a new major release are very similar to a minor release:</p> + +<ol> + <li>Prepare the release candidate. <em>reference release instructions</em></li> + <li>Create a tag of the release candidate from the <code class="highlighter-rouge">x.y</code> branch, +named something like <code class="highlighter-rouge">x.y.0-RCN</code>.</li> + <li>Test and Vote</li> + <li>Create a GPG-signed tag with the correct final name: <code class="highlighter-rouge">x.y.0</code></li> + <li>Push a delete of the remote branch <code class="highlighter-rouge">x.y.0-RCN</code></li> +</ol> + +<h1 id="the-infrastructure">The infrastructure</h1> + +<p>This section deals with the changes that must be requested through INFRA. As +with any substantial INFRA request, the VOTE and result from the mailing should +be referenced so INFRA knows that the request has been acknowledged. Likely, a +PMC member should be the one to submit the request.</p> + +<h2 id="repositories">Repositories</h2> + +<p>I believe that we will need multiple repositories to best align ourselves with +how we currently track âAccumuloâ projects. The repositories follow:</p> + +<ol> + <li> + <p>The main source tree. This will track the standard trunk, branches, tags +structure from Subversion for Apache Accumulo.</p> + </li> + <li> + <p>One repository for every project in +<a href="https://svn.apache.org/repos/asf/accumulo/contrib">contrib</a>: Accumulo-BSP, +Instamo Archetype, and the Wikisearch project. Each of these +are considered disjoint from one another, and the main source tree, so they +each deserve their own repository.</p> + </li> +</ol> + +<p>Given the list of repositories that currently exist on the <a href="https://git-wip-us.apache.org/repos/asf">ASF +site</a> and a brief search over INFRA +tickets, multiple repositories for a single Apache project is not an issue. +Having this list when making the initial ticket will likely reduce the amount +of work necessary in opening multiple INFRA tickets.</p> + +<h2 id="mirroring">Mirroring</h2> + +<p>It should be noted in the INFRA requst that each repository will also need to +be configured to properly mirror to the <a href="https://github.com/apache">ASF Github</a> +account to provide the same functionality with current have via the git+svn +mirror. This should be noted in the INFRA request. Same change needs to be +applied for the <a href="https://git.apache.org">Apache hosted</a> mirrorâing.</p> + +<h2 id="mailing-lists">Mailing lists</h2> + +<p>It should be noted in the INFRA request that commit messages should be sent to +<a href="mailto:commits@accumulo.apache.org">commits@accumulo.apache.org</a>. The subject +can be decided on using the <a href="https://git-wip-us.apache.org/docs/switching-to-git#contents">provided +variables</a>.</p> + +<h1 id="examples">Examples</h1> + +<p>For the sake of clarity, some examples of common situations are included below.</p> + +<h2 id="releasing-160">Releasing 1.6.0</h2> + +<ol> + <li> + <p>Branch from <code class="highlighter-rouge">master</code> to <code class="highlighter-rouge">1.6</code></p> + + <p><code class="highlighter-rouge">git checkout master && git branch 1.6</code></p> + </li> + <li> + <p>Tag <code class="highlighter-rouge">1.6.0-RC1</code> from the just created <code class="highlighter-rouge">1.6</code> branch</p> + + <p><code class="highlighter-rouge">git tag 1.6.0-RC1 1.6</code></p> + </li> + <li> + <p>Test, vote, etc. and tag from 1.6.0-RC1</p> + + <p><code class="highlighter-rouge">git -s tag 1.6.0 1.6.0-RC1</code></p> + </li> + <li> + <p>Delete the RC tag, if desired.</p> + + <p><code class="highlighter-rouge">git tag -d 1.6.0-RC1 && git push --delete origin 1.6.0-RC1</code></p> + </li> + <li> + <p>Ensure <code class="highlighter-rouge">master</code> contains all features and fixes from <code class="highlighter-rouge">1.6.0</code></p> + + <p><code class="highlighter-rouge">git checkout master && git merge 1.6</code></p> + </li> + <li> + <p>Update the project version in <code class="highlighter-rouge">master</code> to 1.7.0-SNAPSHOT</p> + </li> +</ol> + + + </div> + + +<footer> + + <p><a href="https://www.apache.org"><img src="/images/feather-small.gif" alt="Apache Software Foundation" id="asf-logo" height="100" /></a></p> + + <p>Copyright © 2011-2016 The Apache Software Foundation. Licensed under the <a href="https://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a>.</p> + +</footer> + + + </div> + </div> + </div> +</body> +</html> http://git-wip-us.apache.org/repos/asf/accumulo-website/blob/59a6d65d/contributor/index.html ---------------------------------------------------------------------- diff --git a/contributor/index.html b/contributor/index.html new file mode 100644 index 0000000..a8dd20b --- /dev/null +++ b/contributor/index.html @@ -0,0 +1,185 @@ +<!DOCTYPE html> +<html lang="en"> +<head> +<!-- + Licensed to the Apache Software Foundation (ASF) under one or more + contributor license agreements. See the NOTICE file distributed with + this work for additional information regarding copyright ownership. + The ASF licenses this file to You under the Apache License, Version 2.0 + (the "License"); you may not use this file except in compliance with + the License. You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +--> +<meta charset="utf-8"> +<meta http-equiv="X-UA-Compatible" content="IE=edge"> +<meta name="viewport" content="width=device-width, initial-scale=1"> +<link href="https://maxcdn.bootstrapcdn.com/bootswatch/3.3.7/paper/bootstrap.min.css" rel="stylesheet" integrity="sha384-awusxf8AUojygHf2+joICySzB780jVvQaVCAt1clU3QsyAitLGul28Qxb2r1e5g+" crossorigin="anonymous"> +<link href="//netdna.bootstrapcdn.com/font-awesome/4.0.3/css/font-awesome.css" rel="stylesheet"> +<link rel="stylesheet" type="text/css" href="https://cdn.datatables.net/v/bs/jq-2.2.3/dt-1.10.12/datatables.min.css"> +<link href="/css/accumulo.css" rel="stylesheet" type="text/css"> + +<title>Contributor Guide</title> + +<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.2.4/jquery.min.js"></script> +<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js" integrity="sha384-Tc5IQib027qvyjSMfHjOMaLkfuWVxZxUPnCJA7l2mCWNIpG9mGCD8wGNIcPD7Txa" crossorigin="anonymous"></script> +<script type="text/javascript" src="https://cdn.datatables.net/v/bs/jq-2.2.3/dt-1.10.12/datatables.min.js"></script> +<script> + // show location of canonical site if not currently on the canonical site + $(function() { + var host = window.location.host; + if (typeof host !== 'undefined' && host !== 'accumulo.apache.org') { + $('#non-canonical').show(); + } + }); + + $(function() { + // decorate section headers with anchors + return $("h2, h3, h4, h5, h6").each(function(i, el) { + var $el, icon, id; + $el = $(el); + id = $el.attr('id'); + icon = '<i class="fa fa-link"></i>'; + if (id) { + return $el.append($("<a />").addClass("header-link").attr("href", "#" + id).html(icon)); + } + }); + }); + + // configure Google Analytics + (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){ + (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o), + m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m) + })(window,document,'script','//www.google-analytics.com/analytics.js','ga'); + + if (ga.hasOwnProperty('loaded') && ga.loaded === true) { + ga('create', 'UA-50934829-1', 'apache.org'); + ga('send', 'pageview'); + } +</script> + +</head> +<body style="padding-top: 100px"> + + <nav class="navbar navbar-default navbar-fixed-top"> + <div class="container"> + <div class="navbar-header"> + <button type="button" class="navbar-toggle" data-toggle="collapse" data-target="#navbar-items"> + <span class="sr-only">Toggle navigation</span> + <span class="icon-bar"></span> + <span class="icon-bar"></span> + <span class="icon-bar"></span> + </button> + <a href="/"><img id="nav-logo" alt="Apache Accumulo" class="img-responsive" src="/images/accumulo-logo.png" width="200"/></a> + </div> + <div class="collapse navbar-collapse" id="navbar-items"> + <ul class="nav navbar-nav"> + <li class="nav-link"><a href="/downloads">Download</a></li> + <li class="dropdown"> + <a class="dropdown-toggle" data-toggle="dropdown" href="#">Releases<span class="caret"></span></a> + <ul class="dropdown-menu"> + <li><a href="/release/accumulo-1.8.0/">1.8.0 (Latest)</a></li> + <li><a href="/release/accumulo-1.7.2/">1.7.2</a></li> + <li><a href="/release/accumulo-1.6.6/">1.6.6</a></li> + <li><a href="/release/">Archive</a></li> + </ul> + </li> + <li class="dropdown"> + <a class="dropdown-toggle" data-toggle="dropdown" href="#">Documentation<span class="caret"></span></a> + <ul class="dropdown-menu"> + <li><a href="/1.8/accumulo_user_manual.html">User Manual (1.8)</a></li> + <li><a href="/1.8/apidocs">Javadocs (1.8)</a></li> + <li><a href="/1.8/examples">Examples (1.8)</a></li> + <li><a href="/features">Features</a></li> + <li><a href="/papers">Papers & Presentations</a></li> + <li><a href="/glossary">Glossary</a></li> + <li><a href="/docs-archive/">Archive</a></li> + </ul> + </li> + <li class="dropdown"> + <a class="dropdown-toggle" data-toggle="dropdown" href="#">Community<span class="caret"></span></a> + <ul class="dropdown-menu"> + <li><a href="/get_involved">Get Involved</a></li> + <li><a href="/mailing_list">Mailing Lists</a></li> + <li><a href="/people">People</a></li> + <li><a href="/projects">Related Projects</a></li> + <li><a href="/contributor/">Contributor Guide</a></li> + <li><a href="/governance/">Governance</a></li> + </ul> + </li> + </ul> + <ul class="nav navbar-nav navbar-right"> + <li class="dropdown"> + <a class="dropdown-toggle" data-toggle="dropdown" href="#">Apache Software Foundation<span class="caret"></span></a> + <ul class="dropdown-menu"> + <li><a href="https://www.apache.org">Apache Homepage <i class="fa fa-external-link"></i></a></li> + <li><a href="https://www.apache.org/licenses/LICENSE-2.0">License <i class="fa fa-external-link"></i></a></li> + <li><a href="https://www.apache.org/foundation/sponsorship">Sponsorship <i class="fa fa-external-link"></i></a></li> + <li><a href="https://www.apache.org/security">Security <i class="fa fa-external-link"></i></a></li> + <li><a href="https://www.apache.org/foundation/thanks">Thanks <i class="fa fa-external-link"></i></a></li> + <li><a href="https://www.apache.org/foundation/policies/conduct">Code of Conduct <i class="fa fa-external-link"></i></a></li> + </ul> + </li> + </ul> + </div> + </div> +</nav> + + + <div class="container"> + <div class="row"> + <div class="col-md-12"> + + <div id="non-canonical" style="display: none; background-color: #F0E68C; padding-left: 1em;"> + Visit the official site at: <a href="https://accumulo.apache.org">https://accumulo.apache.org</a> + </div> + <div id="content"> + + <h1 class="title">Contributor Guide</h1> + + <p>This page contains resources and documentation for Accumulo contributors.</p> + +<p>Any documentation that is helpful to Accumulo users should be placed in the <a href="/1.8/accumulo_user_manual.html">user manual</a>.</p> + +<ul> + <li><a href="https://issues.apache.org/jira/browse/ACCUMULO">JIRA</a> - Accumuloâs Issue Tracker</li> + <li><a href="https://github.com/apache/accumulo/pulls">GitHub</a> - Pull requests can be made on GitHub</li> + <li><a href="https://builds.apache.org/view/A/view/Accumulo">Jenkins</a> & <a href="https://travis-ci.org/apache/accumulo">TravisCI</a> - Accumulo build servers</li> + <li><a href="/contributor/source">Source Guide</a></li> + <li><a href="/contributor/git">Git Workflow</a></li> + <li><a href="/contributor/versioning">Versioning</a></li> + <li><a href="/contributor/contrib-projects">Contrib Projects</a></li> + <li><a href="/contributor/rb">Review Board</a></li> +</ul> + +<p>Below are resources for Accumulo committers which may also be helpful to contributors.</p> + +<ul> + <li><a href="/contributor/releasing">Making Releases</a></li> + <li><a href="/contributor/verifying_releases">Verifying Releases</a></li> +</ul> + + + </div> + + +<footer> + + <p><a href="https://www.apache.org"><img src="/images/feather-small.gif" alt="Apache Software Foundation" id="asf-logo" height="100" /></a></p> + + <p>Copyright © 2011-2016 The Apache Software Foundation. Licensed under the <a href="https://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a>.</p> + +</footer> + + + </div> + </div> + </div> +</body> +</html> http://git-wip-us.apache.org/repos/asf/accumulo-website/blob/59a6d65d/contributor/rb.html ---------------------------------------------------------------------- diff --git a/contributor/rb.html b/contributor/rb.html new file mode 100644 index 0000000..855f311 --- /dev/null +++ b/contributor/rb.html @@ -0,0 +1,267 @@ +<!DOCTYPE html> +<html lang="en"> +<head> +<!-- + Licensed to the Apache Software Foundation (ASF) under one or more + contributor license agreements. See the NOTICE file distributed with + this work for additional information regarding copyright ownership. + The ASF licenses this file to You under the Apache License, Version 2.0 + (the "License"); you may not use this file except in compliance with + the License. You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +--> +<meta charset="utf-8"> +<meta http-equiv="X-UA-Compatible" content="IE=edge"> +<meta name="viewport" content="width=device-width, initial-scale=1"> +<link href="https://maxcdn.bootstrapcdn.com/bootswatch/3.3.7/paper/bootstrap.min.css" rel="stylesheet" integrity="sha384-awusxf8AUojygHf2+joICySzB780jVvQaVCAt1clU3QsyAitLGul28Qxb2r1e5g+" crossorigin="anonymous"> +<link href="//netdna.bootstrapcdn.com/font-awesome/4.0.3/css/font-awesome.css" rel="stylesheet"> +<link rel="stylesheet" type="text/css" href="https://cdn.datatables.net/v/bs/jq-2.2.3/dt-1.10.12/datatables.min.css"> +<link href="/css/accumulo.css" rel="stylesheet" type="text/css"> + +<title>Using Review Board</title> + +<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.2.4/jquery.min.js"></script> +<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js" integrity="sha384-Tc5IQib027qvyjSMfHjOMaLkfuWVxZxUPnCJA7l2mCWNIpG9mGCD8wGNIcPD7Txa" crossorigin="anonymous"></script> +<script type="text/javascript" src="https://cdn.datatables.net/v/bs/jq-2.2.3/dt-1.10.12/datatables.min.js"></script> +<script> + // show location of canonical site if not currently on the canonical site + $(function() { + var host = window.location.host; + if (typeof host !== 'undefined' && host !== 'accumulo.apache.org') { + $('#non-canonical').show(); + } + }); + + $(function() { + // decorate section headers with anchors + return $("h2, h3, h4, h5, h6").each(function(i, el) { + var $el, icon, id; + $el = $(el); + id = $el.attr('id'); + icon = '<i class="fa fa-link"></i>'; + if (id) { + return $el.append($("<a />").addClass("header-link").attr("href", "#" + id).html(icon)); + } + }); + }); + + // configure Google Analytics + (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){ + (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o), + m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m) + })(window,document,'script','//www.google-analytics.com/analytics.js','ga'); + + if (ga.hasOwnProperty('loaded') && ga.loaded === true) { + ga('create', 'UA-50934829-1', 'apache.org'); + ga('send', 'pageview'); + } +</script> + +</head> +<body style="padding-top: 100px"> + + <nav class="navbar navbar-default navbar-fixed-top"> + <div class="container"> + <div class="navbar-header"> + <button type="button" class="navbar-toggle" data-toggle="collapse" data-target="#navbar-items"> + <span class="sr-only">Toggle navigation</span> + <span class="icon-bar"></span> + <span class="icon-bar"></span> + <span class="icon-bar"></span> + </button> + <a href="/"><img id="nav-logo" alt="Apache Accumulo" class="img-responsive" src="/images/accumulo-logo.png" width="200"/></a> + </div> + <div class="collapse navbar-collapse" id="navbar-items"> + <ul class="nav navbar-nav"> + <li class="nav-link"><a href="/downloads">Download</a></li> + <li class="dropdown"> + <a class="dropdown-toggle" data-toggle="dropdown" href="#">Releases<span class="caret"></span></a> + <ul class="dropdown-menu"> + <li><a href="/release/accumulo-1.8.0/">1.8.0 (Latest)</a></li> + <li><a href="/release/accumulo-1.7.2/">1.7.2</a></li> + <li><a href="/release/accumulo-1.6.6/">1.6.6</a></li> + <li><a href="/release/">Archive</a></li> + </ul> + </li> + <li class="dropdown"> + <a class="dropdown-toggle" data-toggle="dropdown" href="#">Documentation<span class="caret"></span></a> + <ul class="dropdown-menu"> + <li><a href="/1.8/accumulo_user_manual.html">User Manual (1.8)</a></li> + <li><a href="/1.8/apidocs">Javadocs (1.8)</a></li> + <li><a href="/1.8/examples">Examples (1.8)</a></li> + <li><a href="/features">Features</a></li> + <li><a href="/papers">Papers & Presentations</a></li> + <li><a href="/glossary">Glossary</a></li> + <li><a href="/docs-archive/">Archive</a></li> + </ul> + </li> + <li class="dropdown"> + <a class="dropdown-toggle" data-toggle="dropdown" href="#">Community<span class="caret"></span></a> + <ul class="dropdown-menu"> + <li><a href="/get_involved">Get Involved</a></li> + <li><a href="/mailing_list">Mailing Lists</a></li> + <li><a href="/people">People</a></li> + <li><a href="/projects">Related Projects</a></li> + <li><a href="/contributor/">Contributor Guide</a></li> + <li><a href="/governance/">Governance</a></li> + </ul> + </li> + </ul> + <ul class="nav navbar-nav navbar-right"> + <li class="dropdown"> + <a class="dropdown-toggle" data-toggle="dropdown" href="#">Apache Software Foundation<span class="caret"></span></a> + <ul class="dropdown-menu"> + <li><a href="https://www.apache.org">Apache Homepage <i class="fa fa-external-link"></i></a></li> + <li><a href="https://www.apache.org/licenses/LICENSE-2.0">License <i class="fa fa-external-link"></i></a></li> + <li><a href="https://www.apache.org/foundation/sponsorship">Sponsorship <i class="fa fa-external-link"></i></a></li> + <li><a href="https://www.apache.org/security">Security <i class="fa fa-external-link"></i></a></li> + <li><a href="https://www.apache.org/foundation/thanks">Thanks <i class="fa fa-external-link"></i></a></li> + <li><a href="https://www.apache.org/foundation/policies/conduct">Code of Conduct <i class="fa fa-external-link"></i></a></li> + </ul> + </li> + </ul> + </div> + </div> +</nav> + + + <div class="container"> + <div class="row"> + <div class="col-md-12"> + + <div id="non-canonical" style="display: none; background-color: #F0E68C; padding-left: 1em;"> + Visit the official site at: <a href="https://accumulo.apache.org">https://accumulo.apache.org</a> + </div> + <div id="content"> + + <h1 class="title">Using Review Board</h1> + + <p>The Apache Software Foundation provides an <a href="https://reviews.apache.org">instance</a> of +<a href="https://www.reviewboard.org">Review Board</a> (RB) for projects to use in code reviews. Here is how RB can +be used to support development in the context of the +<a href="/governance/bylaws">Apache Accumulo bylaws</a>.</p> + +<p>Contributors to Accumulo are encouraged to use RB for non-trivial patches and +any time feedback is desired. No one is required to use RB, but its ready +availability and better interface for feedback can help with reviews. Committers +seeking review prior to pushing changes can also benefit similarly.</p> + +<h2 id="roles-for-review-board">Roles for Review Board</h2> + +<h3 id="optional-pre-commit-review">Optional Pre-Commit Review</h3> + +<p>Accumulo operates under the <a href="https://www.apache.org/foundation/glossary#CommitThenReview">Commit-Then-Review</a> (CtR) policy, so code +review does not need to occur prior to commit. However, a committer may opt to +hold a code review before commit for changes that, in their opinion, would +benefit from additional attention. RB can be used to conduct such code reviews.</p> + +<h3 id="consensus-approval-after-a-code-change-veto">Consensus Approval after a Code Change Veto</h3> + +<p>Code changes are approved by lazy approval, with consensus approval following +a veto (see the <a href="/governance/bylaws#actions">Actions</a> section of the bylaws). RB can be used +to coordinate a consensus approval vote by providing a convenient view of the +code change under consideration. The vote itself must still be held on the +developer mailing list.</p> + +<h2 id="guidelines-for-posting-a-review">Guidelines for Posting a Review</h2> + +<ul> + <li>It is best to post a git-generated patch as the basis for a review. RB does +not support patches containing multiple commits, so either squash commits +first, or submit a diff spanning the changeset. The <code class="highlighter-rouge">rbt</code> and <code class="highlighter-rouge">post-review</code> +tools generate diffs.</li> + <li>Strive to make your changes small. Reviewers are less likely to want to +trudge through a review with lots of changes, and are more likely to miss +problems.</li> + <li>Begin the summary of the review with a JIRA issue number. A review must +always be associated with a JIRA issue. The issue number should also be +entered in the âBugsâ field of the review, providing a link to JIRA.</li> + <li>The âBranchâ field should contain the name of the branch that the code change +is based on (e.g., the base of your git feature branch).</li> + <li>Include the âaccumuloâ user group as reviewers. Also include specific people +as individual reviewers, even if they are in the âaccumuloâ group, if you +deem them of primary importance for the review (e.g., you have been working +out problems with the review with them, they are expert in the area).</li> + <li>Use the description to summarize the change under review. Include helpful +instructions to the reviewers here.</li> + <li>Describe any testing done on the change. It is not expected that reviewers +will do their own testing, and they may reject the review if you have not +done sufficient testing yourself.</li> + <li>Avoid submitting generated code for review if it can be reproduced by a +reviewer.</li> +</ul> + +<p>After the review is published, set the status of the associated JIRA issue to +âPatch Availableâ as a signal to reviewers. Also, link to the review from the +issue (More -> Link -> Web Link) to help viewers of the issue find the review +and assess its progress.</p> + +<h2 id="guidelines-for-reviewing-code">Guidelines for Reviewing Code</h2> + +<ul> + <li>Try to associate comments with relevant lines of code in the review.</li> + <li>By default, each comment opens a review issue. If a comment pertains to +something that should not block the review from completing successfully, then +clear the âOpen an issueâ checkbox before saving your feedback. Examples that +might qualify as non-issues: minor formatting/whitespace issues, spelling +mistakes, general background questions.</li> + <li>If a review looks good, be sure to âShip Itâ by either using the âShip It!â +button or by submitting a general review with the âShip Itâ checkbox checked.</li> +</ul> + +<h2 id="guidelines-for-completing-a-review">Guidelines for Completing a Review</h2> + +<p>These guidelines do not apply to consensus approval votes, since the vote +completion depends on the votes registered in the developer mailing list.</p> + +<ul> + <li>Use your judgement for the number of âShip Itâs you want to receive to +consider a review passed. Usually, getting one âShip Itâ is enough to proceed +with a commit. It is recommended that the âShip Itâ be from a committer who +is a neutral party not involved in the change under review.</li> + <li>Use your judgement for the minimum time length you set for the review. Simple +changes can be up for just a day, while complex ones should take up to seven.</li> + <li>Review time should be extended in the face of problems discovered in the +review. Update the review with improved code instead of discarding (i.e., +closing unsuccessfully) it and beginning a new one.</li> + <li>A review should not be âsubmittedâ (i.e., closed successfully) unless there +are no outstanding issues. Check with reviewers to ensure that their issues +are resolved satisfactorily.</li> + <li>A review should be âdiscardedâ if the code requires major rework or it +becomes obvious it should never be committed (due to design changes, +becoming overcome by events, being back-burnered, etc.).</li> + <li>Donât leave a review open indefinitely. Once you have received sufficient +feedback to submit or discard it, do so. If there has been no activity for +some time, discard the review. A new one can always be created later.</li> +</ul> + +<p>Once youâve closed a review as submitted, if you are unable to commit your +changes yourself, attach the final version of them to the relevant JIRA issue. +They should be in the form of a patch containing a single commit, +<a href="/contributor/git#contributors">per the final steps of the contribution process</a>.</p> + + + </div> + + +<footer> + + <p><a href="https://www.apache.org"><img src="/images/feather-small.gif" alt="Apache Software Foundation" id="asf-logo" height="100" /></a></p> + + <p>Copyright © 2011-2016 The Apache Software Foundation. Licensed under the <a href="https://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a>.</p> + +</footer> + + + </div> + </div> + </div> +</body> +</html> http://git-wip-us.apache.org/repos/asf/accumulo-website/blob/59a6d65d/contributor/releasing.html ---------------------------------------------------------------------- diff --git a/contributor/releasing.html b/contributor/releasing.html new file mode 100644 index 0000000..9eec7f2 --- /dev/null +++ b/contributor/releasing.html @@ -0,0 +1,303 @@ +<!DOCTYPE html> +<html lang="en"> +<head> +<!-- + Licensed to the Apache Software Foundation (ASF) under one or more + contributor license agreements. See the NOTICE file distributed with + this work for additional information regarding copyright ownership. + The ASF licenses this file to You under the Apache License, Version 2.0 + (the "License"); you may not use this file except in compliance with + the License. You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +--> +<meta charset="utf-8"> +<meta http-equiv="X-UA-Compatible" content="IE=edge"> +<meta name="viewport" content="width=device-width, initial-scale=1"> +<link href="https://maxcdn.bootstrapcdn.com/bootswatch/3.3.7/paper/bootstrap.min.css" rel="stylesheet" integrity="sha384-awusxf8AUojygHf2+joICySzB780jVvQaVCAt1clU3QsyAitLGul28Qxb2r1e5g+" crossorigin="anonymous"> +<link href="//netdna.bootstrapcdn.com/font-awesome/4.0.3/css/font-awesome.css" rel="stylesheet"> +<link rel="stylesheet" type="text/css" href="https://cdn.datatables.net/v/bs/jq-2.2.3/dt-1.10.12/datatables.min.css"> +<link href="/css/accumulo.css" rel="stylesheet" type="text/css"> + +<title>Making a Release</title> + +<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.2.4/jquery.min.js"></script> +<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js" integrity="sha384-Tc5IQib027qvyjSMfHjOMaLkfuWVxZxUPnCJA7l2mCWNIpG9mGCD8wGNIcPD7Txa" crossorigin="anonymous"></script> +<script type="text/javascript" src="https://cdn.datatables.net/v/bs/jq-2.2.3/dt-1.10.12/datatables.min.js"></script> +<script> + // show location of canonical site if not currently on the canonical site + $(function() { + var host = window.location.host; + if (typeof host !== 'undefined' && host !== 'accumulo.apache.org') { + $('#non-canonical').show(); + } + }); + + $(function() { + // decorate section headers with anchors + return $("h2, h3, h4, h5, h6").each(function(i, el) { + var $el, icon, id; + $el = $(el); + id = $el.attr('id'); + icon = '<i class="fa fa-link"></i>'; + if (id) { + return $el.append($("<a />").addClass("header-link").attr("href", "#" + id).html(icon)); + } + }); + }); + + // configure Google Analytics + (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){ + (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o), + m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m) + })(window,document,'script','//www.google-analytics.com/analytics.js','ga'); + + if (ga.hasOwnProperty('loaded') && ga.loaded === true) { + ga('create', 'UA-50934829-1', 'apache.org'); + ga('send', 'pageview'); + } +</script> + +</head> +<body style="padding-top: 100px"> + + <nav class="navbar navbar-default navbar-fixed-top"> + <div class="container"> + <div class="navbar-header"> + <button type="button" class="navbar-toggle" data-toggle="collapse" data-target="#navbar-items"> + <span class="sr-only">Toggle navigation</span> + <span class="icon-bar"></span> + <span class="icon-bar"></span> + <span class="icon-bar"></span> + </button> + <a href="/"><img id="nav-logo" alt="Apache Accumulo" class="img-responsive" src="/images/accumulo-logo.png" width="200"/></a> + </div> + <div class="collapse navbar-collapse" id="navbar-items"> + <ul class="nav navbar-nav"> + <li class="nav-link"><a href="/downloads">Download</a></li> + <li class="dropdown"> + <a class="dropdown-toggle" data-toggle="dropdown" href="#">Releases<span class="caret"></span></a> + <ul class="dropdown-menu"> + <li><a href="/release/accumulo-1.8.0/">1.8.0 (Latest)</a></li> + <li><a href="/release/accumulo-1.7.2/">1.7.2</a></li> + <li><a href="/release/accumulo-1.6.6/">1.6.6</a></li> + <li><a href="/release/">Archive</a></li> + </ul> + </li> + <li class="dropdown"> + <a class="dropdown-toggle" data-toggle="dropdown" href="#">Documentation<span class="caret"></span></a> + <ul class="dropdown-menu"> + <li><a href="/1.8/accumulo_user_manual.html">User Manual (1.8)</a></li> + <li><a href="/1.8/apidocs">Javadocs (1.8)</a></li> + <li><a href="/1.8/examples">Examples (1.8)</a></li> + <li><a href="/features">Features</a></li> + <li><a href="/papers">Papers & Presentations</a></li> + <li><a href="/glossary">Glossary</a></li> + <li><a href="/docs-archive/">Archive</a></li> + </ul> + </li> + <li class="dropdown"> + <a class="dropdown-toggle" data-toggle="dropdown" href="#">Community<span class="caret"></span></a> + <ul class="dropdown-menu"> + <li><a href="/get_involved">Get Involved</a></li> + <li><a href="/mailing_list">Mailing Lists</a></li> + <li><a href="/people">People</a></li> + <li><a href="/projects">Related Projects</a></li> + <li><a href="/contributor/">Contributor Guide</a></li> + <li><a href="/governance/">Governance</a></li> + </ul> + </li> + </ul> + <ul class="nav navbar-nav navbar-right"> + <li class="dropdown"> + <a class="dropdown-toggle" data-toggle="dropdown" href="#">Apache Software Foundation<span class="caret"></span></a> + <ul class="dropdown-menu"> + <li><a href="https://www.apache.org">Apache Homepage <i class="fa fa-external-link"></i></a></li> + <li><a href="https://www.apache.org/licenses/LICENSE-2.0">License <i class="fa fa-external-link"></i></a></li> + <li><a href="https://www.apache.org/foundation/sponsorship">Sponsorship <i class="fa fa-external-link"></i></a></li> + <li><a href="https://www.apache.org/security">Security <i class="fa fa-external-link"></i></a></li> + <li><a href="https://www.apache.org/foundation/thanks">Thanks <i class="fa fa-external-link"></i></a></li> + <li><a href="https://www.apache.org/foundation/policies/conduct">Code of Conduct <i class="fa fa-external-link"></i></a></li> + </ul> + </li> + </ul> + </div> + </div> +</nav> + + + <div class="container"> + <div class="row"> + <div class="col-md-12"> + + <div id="non-canonical" style="display: none; background-color: #F0E68C; padding-left: 1em;"> + Visit the official site at: <a href="https://accumulo.apache.org">https://accumulo.apache.org</a> + </div> + <div id="content"> + + <h1 class="title">Making a Release</h1> + + <p>This is a guide for the creation of a release of Apache Accumulo.</p> + +<h2 id="setup">Setup</h2> + +<p>There are number of things that are required before attempting to build a release.</p> + +<ol> + <li>Use gpg-agent, and be sure to increase the gpg-agent cache timeout (via .gnupg/gpg-agent.conf) to ensure that the agent doesnât require re-authentication mid-build, as it will cause things to fail. For example, you can add <code class="highlighter-rouge">default-cache-ttl 6000</code> to increase the timeout from the default of 10 minutes to over an hour. If you do not have a GPG key, reference the very thorough <a href="https://www.apache.org/dev/release-signing">ASF release signing documentation</a>.</li> + <li>Ensure that youâre using the correct major release of Java (check javadoc too).</li> + <li>Ensure that youâre building Apache Accumulo with a username that has the same name as your Apache ID (this is due to +the maven-release-plugin and staging the release candidate).</li> + <li>Update the CHANGES file so that itâs in sync with Jira (manual process).</li> + <li>Ensure that you have a texlive distribution installed so you are able to build the documentation.</li> + <li>Have a clean workspace before starting.</li> +</ol> + +<p>Given all of this, itâs recommended that you only attempt making a release from a GNU/Linux machine.</p> + +<h2 id="create-the-candidate">Create the candidate</h2> + +<p><strong>TL;DR</strong></p> + +<ul> + <li><code class="highlighter-rouge">./assemble/build.sh --create-release-candidate</code> to make the release candidate</li> + <li><code class="highlighter-rouge">git tag $version $version-rcN</code> to create an RC tag from the actual tag</li> + <li><code class="highlighter-rouge">git tag -d $version</code> make sure you donât accidentally push a âreleaseâ tag</li> + <li><code class="highlighter-rouge">git push origin $version-rcN</code> push the RC tag</li> + <li><code class="highlighter-rouge">git checkout -b $version-rcN-branch</code> save off the branch from the Maven release plugin</li> + <li><strong>VOTE</strong></li> + <li><em>If vote fails</em>, fix the original branch and start over.</li> + <li><em>If vote passes</em>, <code class="highlighter-rouge">git merge $version-rcN-branch</code> back into the original branch you released from.</li> + <li><code class="highlighter-rouge">git tag -s $version-rcN $version</code> make a GPG-signed tag</li> + <li><code class="highlighter-rouge">git push origin $version</code> push the signed tag.</li> +</ul> + +<p><strong>Long-winded explanation</strong></p> + +<p>You should use the provided script assemble/build.sh to create the release candidate. This script is +desirable as it activates all necessary maven profiles in addition to verifying that certain preconditions +are met, like RPM signing availablilty and the ability to sign files using GPG. The âtest option can +be used as a dry run for creating a release candidate. The âcreate-release-candidate option should be +used to create the actual release candidate.</p> + +<p>When invoking build.sh with the âcreate-release-candidate option, the majority of the work will be performed +by the maven-release-plugin, invoking <em>release:clean</em>, <em>release:prepare</em>, and <em>release:perform</em>. These will +guide you through choosing the correct versions. The default options provided should be what you choose. +It is highly recommended that an âRCâ suffix is <em>not</em> appended to the release version the plugin prompts +you for, as that will result in that version string being placed into the poms, which then would require +voting to occur on artifacts that cannot be directly promoted. After the build.sh script finishes (this will +likely take at least 15 minutes, even on recent hardware), your current branch will be on the ânextâ version +that you provided to the release plugin.</p> + +<p>One unwanted side-effect of this approach is that after creating this branch, but <em>before invoking release:perform</em>, +you must edit the release.properties to add the <em>-rcN</em> suffix to the value of scm.tag. Otherwise, the release +plugin will complain that it cannot find the branch for the release. With a successful invocation of <em>mvn release:perform</em>, +a staging repository will be made for you on the <a href="https://repository.apache.org">ASF Nexus server</a> which you can log into with your ASF +credentials.</p> + +<p>After you log into Nexus, click on <em>Staging Repositories</em> in the <em>Build Promotion</em> toolbar on the left side of +the screen. Assuming your build went according to plan, you should have a new staging repository made for +you. At this point, you should inspect the artifacts that were staged to ensure that they are as you expect +them to be. When youâre ready to present those artifacts for voting, you need to close that repository which +will make it publicly available for other members to inspect.</p> + +<h2 id="vote">Vote</h2> + +<p>At this point, you should have a closed repository thatâs ready to vote on. Send a message to <a href="mailto:dev@accumulo.apache.org">the dev +list</a> and get the ball rolling. If the vote ultimately fails, you delete +the staged repository, clean up the branch you created (or wait until the release ultimately passes if you +choose), and fix what needs fixing.</p> + +<p>If the vote passes, huzzah, youâre almost done.</p> + +<h2 id="promote-the-artifacts">Promote the artifacts</h2> + +<p>Promote that staged repository using Nexus which you can do with the click of a button. This will trigger +a process to get the release out to all of the mirrors.</p> + +<h2 id="create-the-final-git-tag">Create the final Git tag</h2> + +<p>The Git repository should also contain a tag which refers to the final commit which made up a release. This tag +should also be signed with your GPG key. To ensure proper retention on release (stemming from ASF policy +requirements), This final tag <em>must</em> being with ârel/â. For example, a release of 1.7.0 should have a corresponding +tag name of ârel/1.7.0â.</p> + +<h2 id="copy-artifacts-to-distapacheorg">Copy artifacts to dist.apache.org</h2> + +<p>An SVN server is running at https://dist.apache.org/repos/dist/release/accumulo. You need to upload the release +tarballs, the GPG signatures and checksum files to the correct directory (based on the release number). If you +are releasing a bug-fix release, be sure to delete the previous release in the same line (e.g. if you release +1.6.2, remove 1.6.1). The old tarballs removed from dist.apache.org will still be preserved in archive.apache.org +automatically.</p> + +<h2 id="update-projectsapacheorg">Update projects.apache.org</h2> + +<p>Fill out the <a href="https://reporter.apache.org/addrelease?accumulo">add release</a> form to update the projects website.</p> + +<h2 id="update-the-website">Update the Website</h2> + +<p>After a successful vote, this website needs to be updated with the new artifacts.</p> + +<ul> + <li>Copy Accumulo User Manual (HTML version exists in >=1.7.0)</li> + <li>Update downloads page</li> + <li>Create release notes (ensure notes contain link to JIRA changes for that version)</li> + <li>Remove previous bug-fix release (if applicable)</li> + <li>Update examples README files</li> + <li>Update doap_Accumulo.rdf</li> +</ul> + +<h3 id="javadocs">Javadocs</h3> + +<p>Javadocs are easy to update. Using the latest JDK7 or later (at least JDK 7u21 +to avoid known <a href="https://www.kb.cert.org/vuls/id/225657">vulnerabilities</a>), follow these steps:</p> + +<ol> + <li>Unpack the source release tarball and change to its root directory, or checkout the SCM tag for the release</li> + <li>Build the javadocs with <code class="highlighter-rouge">mvn clean package javadoc:aggregate -DskipTests -Paggregate-javadocs</code></li> + <li>Take note that the javadocs you will need to copy are the entire contents of <code class="highlighter-rouge">./target/site/apidocs/</code></li> + <li>Checkout the <code class="highlighter-rouge">gh-pages</code> branch (you may need to move the contents of <code class="highlighter-rouge">./target/site/apidocs</code> outside your git workspace to switch branches)</li> + <li>Remove any existing apidocs from the appropriate version folder (e.g. 1.6/apidocs for a 1.6.x release)</li> + <li>Copy the entire contents of the new apidocs directory (identified in step 3) to the destination (e.g. to 1.6/apidocs)</li> + <li>Continue updating the site content, as needed</li> + <li>Commit the changes</li> + <li>Update the site using jekyll with <code class="highlighter-rouge">./_devtools/git-hooks/post-commit</code> (if you donât have the commit hook already configured)</li> + <li>Donât forget to push both the <code class="highlighter-rouge">gh-pages</code> and <code class="highlighter-rouge">asf-site</code> branches</li> + <li>Verify that javadocs have been updated on the production site (e.g. https://accumulo.apache.org/1.6/apidocs/)</li> +</ol> + +<h2 id="references">References</h2> + +<p>Some good references that explain a few things:</p> + +<ul> + <li><a href="https://mail-archives.apache.org/mod_mbox/accumulo-dev/201305.mbox/raw/%3CCAL5zq9bH8y0FyjXmmfXhWPj8axosn9dZ7%2Bu-R1DK4Y-WM1YoWg%40mail.gmail.com%3E">Christopher talks about making releases</a></li> + <li><a href="https://www.apache.org/dev/publishing-maven-artifacts">Publishing Maven Artifacts</a></li> + <li><a href="https://www.apache.org/dev/release-publishing">Publishing Releases</a></li> + <li><a href="/governance/releasing">Accumulo Release Guide</a></li> +</ul> + + + </div> + + +<footer> + + <p><a href="https://www.apache.org"><img src="/images/feather-small.gif" alt="Apache Software Foundation" id="asf-logo" height="100" /></a></p> + + <p>Copyright © 2011-2016 The Apache Software Foundation. Licensed under the <a href="https://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a>.</p> + +</footer> + + + </div> + </div> + </div> +</body> +</html>
