blob: da9f7d3fa4aceb4828412d089d759de52e5c5b02 [file] [log] [blame]
Ian Maxon3dffc852015-07-13 20:17:09 -07001<!DOCTYPE html>
2<html lang="en">
3 <head>
4 <meta charset="utf-8">
5 <meta http-equiv="X-UA-Compatible" content="IE=edge">
6 <meta name="viewport" content="width=device-width, initial-scale=1">
7 <!-- The above 3 meta tags *must* come first in the head; any other head content must come *after* these tags -->
8 <meta name="description" content="">
9 <meta name="author" content="">
Ian Maxonf84cb812015-12-07 15:09:45 -080010 <link rel="icon" href="favicon.ico">
Ian Maxon3dffc852015-07-13 20:17:09 -070011
12 <title>Contributing to AsterixDB</title>
13
14 <!-- Bootstrap core CSS -->
Ian Maxonf84cb812015-12-07 15:09:45 -080015 <link href="css/bootstrap.min.css" rel="stylesheet">
Ian Maxon3dffc852015-07-13 20:17:09 -070016 <!-- Bootstrap theme -->
17
18 <!-- Custom styles for this template -->
Ian Maxonf84cb812015-12-07 15:09:45 -080019 <link href="css/theme.css" rel="stylesheet">
Ian Maxon3dffc852015-07-13 20:17:09 -070020
21 <!-- HTML5 shim and Respond.js for IE8 support of HTML5 elements and media queries -->
22 <!--[if lt IE 9]>
23 <script src="https://oss.maxcdn.com/html5shiv/3.7.2/html5shiv.min.js"></script>
24 <script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script>
25 <![endif]-->
26 <link rel="stylesheet" href="//maxcdn.bootstrapcdn.com/font-awesome/4.3.0/css/font-awesome.min.css">
27 </head>
28
29 <div class="container theme-showcase" role="main">
Till Westmann00f9bf22016-03-14 13:59:27 -070030 <div class="masthead">
31 <p class="lead">
32 <a href="index.html">
33 <img src="img/asterixdb_tm.png" style="height:75px; width:auto; vertical-align:bottom; margin-top:10px;"/>
34 </a>
35 </p>
36 </div>
Ian Maxon3dffc852015-07-13 20:17:09 -070037
Till Westmann00f9bf22016-03-14 13:59:27 -070038 <nav class="navbar navbar-default">
Ian Maxon3dffc852015-07-13 20:17:09 -070039 <div class="container">
40 <div class="navbar-header">
41 <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target=".navbar-collapse">
42 <span class="sr-only">Toggle navigation</span>
43 <span class="icon-bar"></span>
44 <span class="icon-bar"></span>
45 <span class="icon-bar"></span>
46 </button>
Ian Maxonf84cb812015-12-07 15:09:45 -080047 <a class="navbar-brand" href="index.html">Overview</a>
Ian Maxon3dffc852015-07-13 20:17:09 -070048 </div>
49 <div class="navbar-collapse collapse">
50 <ul class="nav navbar-nav">
Ian Maxonf84cb812015-12-07 15:09:45 -080051 <li><a href="download.html">Download</a></li>
Ian Maxona9643c82015-09-01 11:15:57 -100052 <li class="dropdown">
53 <a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-expanded="false">Documentation<span class="caret"></span></a>
54 <ul class="dropdown-menu" role="menu">
55 <li class="dropdown-header">Stable release</li>
Till Westmanne617e522016-02-29 12:42:51 -080056 <li><a href="docs/0.8.8-incubating/index.html">Documentation for 0.8.8-incubating<i class="fa fa-external-link fa-sm"></i></a></li>
Ian Maxona9643c82015-09-01 11:15:57 -100057 <li class="divider"></li>
58 <li class="dropdown-header">Snapshot release</li>
Ian Maxona1d49092016-03-25 13:24:08 -070059 <li><a href="https://ci.apache.org/projects/asterixdb/index.html">Documentation for 0.8.9-SNAPSHOT <i class="fa fa-external-link fa-sm"></i></a></li>
Ian Maxona9643c82015-09-01 11:15:57 -100060 </ul>
61 </li>
Ian Maxonf84cb812015-12-07 15:09:45 -080062 <li><a href="about.html">About</a></li>
Till Westmann2a321022016-04-08 08:18:14 -070063 <li class="dropdown">
64 <a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-expanded="false">Community<span class="caret"></span></a>
65 <ul class="dropdown-menu" role="menu">
66 <li><a href="community.html">Mailing Lists</a></li>
67 <li><a href="community.html#irc">IRC</a></li>
68 <li><a href="community.html#asterixdb-team">Team</a></li>
69 <li><a href="https://issues.apache.org/jira/browse/ASTERIXDB">Issue Tracker</a></li>
70 </ul>
71 </li>
Ian Maxon3dffc852015-07-13 20:17:09 -070072 <li class="dropdown">
Michael Blowf93d7f52016-10-07 14:36:30 -040073 <a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-expanded="false">Development<span class="caret"></span></a>
Ian Maxon3dffc852015-07-13 20:17:09 -070074 <ul class="dropdown-menu" role="menu">
75 <li class="dropdown-header">For New Contributors</li>
Ian Maxonf84cb812015-12-07 15:09:45 -080076 <li><a href="dev-setup.html">Development Setup</a></li>
Ian Maxon3dffc852015-07-13 20:17:09 -070077 <li class="divider"></li>
78 <li class="dropdown-header">For Committers</li>
Ian Maxonf84cb812015-12-07 15:09:45 -080079 <li><a href="pushing.html">Pushing changes</a></li>
80 <li><a href="site.html">Editing this site</a></li>
Michael Blowf93d7f52016-10-07 14:36:30 -040081 <li class="dropdown-header">Extensions</li>
82 <li><a href="extension.html">Extending AsterixDB</a></li>
Ian Maxon3dffc852015-07-13 20:17:09 -070083 </ul>
84 </li>
85 </ul>
Till Westmann00f9bf22016-03-14 13:59:27 -070086 <ul class="nav navbar-nav navbar-right">
87 <li class="dropdown">
88 <a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-expanded="false"
89 style="padding-right: 30px">
90 <img src="img/feather.png" style="height:20px"/>Apache Software Foundation<span class="caret"/>
91 </a>
92 <ul class="dropdown-menu dropdown-menu-right" role="menu">
93 <li><a href="http://www.apache.org/"><b>ASF Homepage</b></a></li>
94 <li><a href="http://www.apache.org/licenses/">License</a></li>
95 <li><a href="http://www.apache.org/foundation/sponsorship.html">Donate</a></li>
96 <li><a href="http://www.apache.org/foundation/thanks.html">Thanks</a></li>
97 <li><a href="http://www.apache.org/security/">Security</a></li>
98 </ul>
99 </li>
100 </ul>
Ian Maxon3dffc852015-07-13 20:17:09 -0700101 </div><!--/.nav-collapse -->
102 </div>
103 </nav>
104
105
Till Westmann00f9bf22016-03-14 13:59:27 -0700106 <div class="row">
Ian Maxon3dffc852015-07-13 20:17:09 -0700107<div class="col-md-8 col-centered">
108<h2>Contributing to AsterixDB</h2>
109<hr />
110
111<ul id="markdown-toc">
112 <li><a href="#introduction" id="markdown-toc-introduction">Introduction</a></li>
Ian Maxonacb58492015-10-16 19:12:28 -0700113 <li><a href="#master-snapshots" id="markdown-toc-master-snapshots">Master snapshots</a> <ul>
114 <li><a href="#managix-installer" id="markdown-toc-managix-installer">Managix Installer</a></li>
115 <li><a href="#yarn-installer" id="markdown-toc-yarn-installer">YARN Installer</a></li>
116 </ul>
117 </li>
Ian Maxon7bb6ace2016-07-19 11:53:43 -0700118 <li><a href="#setting-up-an-asterix-development-environment" id="markdown-toc-setting-up-an-asterix-development-environment">Setting up an Asterix Development environment</a> <ul>
Ian Maxon3dffc852015-07-13 20:17:09 -0700119 <li><a href="#prerequisites" id="markdown-toc-prerequisites">Prerequisites</a></li>
120 <li><a href="#steps" id="markdown-toc-steps">Steps</a></li>
121 </ul>
122 </li>
123 <li><a href="#signing-up-for-gerrit" id="markdown-toc-signing-up-for-gerrit">Signing Up for Gerrit</a></li>
124 <li><a href="#configuring-your-local-working-environment-for-gerrit" id="markdown-toc-configuring-your-local-working-environment-for-gerrit">Configuring your local working environment for Gerrit</a> <ul>
125 <li><a href="#one-time-tasks" id="markdown-toc-one-time-tasks">One-time tasks</a></li>
126 <li><a href="#once-per-repository-tasks" id="markdown-toc-once-per-repository-tasks">Once-per-repository tasks</a></li>
127 </ul>
128 </li>
129 <li><a href="#making-changes---working-method" id="markdown-toc-making-changes---working-method">Making Changes - working method</a></li>
130 <li><a href="#making-more-changes" id="markdown-toc-making-more-changes">Making More Changes</a></li>
131 <li><a href="#using-jenkins-with-gerrit" id="markdown-toc-using-jenkins-with-gerrit">Using Jenkins with Gerrit</a> <ul>
132 <li><a href="#verification" id="markdown-toc-verification">Verification</a></li>
133 <li><a href="#retrigggering-builds-and-triggering-builds-manually" id="markdown-toc-retrigggering-builds-and-triggering-builds-manually">Retrigggering builds and triggering builds manually</a></li>
Ian Maxon3dffc852015-07-13 20:17:09 -0700134 </ul>
135 </li>
136</ul>
137
138<hr />
139
140<h2 id="introduction">Introduction</h2>
Till Westmanndadc9b72016-04-26 17:24:34 -0700141<p>We warmly welcome any contributions to the Apache AsterixDB™ or related (Hyracks, Pregelix) projects.
Till Westmann00f9bf22016-03-14 13:59:27 -0700142A great way to start contributing is to pick a bug labelled starter in JIRA and submit a patch for it, to get acquainted with our codebase and development process.</p>
Ian Maxon3dffc852015-07-13 20:17:09 -0700143
144<hr />
145
Ian Maxonacb58492015-10-16 19:12:28 -0700146<h2 id="master-snapshots">Master snapshots</h2>
147<p>If you are a developer simply looking for a snapshot of the latest development version of AsterixDB to test out your application that is based on top of AsterixDB, snapshots from the latest successful push to our master branch are available below. These are non ASF-release, automatic builds.</p>
148
149<h3 id="managix-installer">Managix Installer</h3>
Ian Maxona1d49092016-03-25 13:24:08 -0700150<p><a class="btn btn-md btn-warning" href="https://asterix-jenkins.ics.uci.edu/job/asterix-integration-tests/lastSuccessfulBuild/org.apache.asterix$asterix-installer/artifact/org.apache.asterix/asterix-installer/0.8.9-SNAPSHOT/asterix-installer-0.8.9-SNAPSHOT-binary-assembly.zip" role="button">Download AsterixDB 0.8.9-SNAPSHOT <i class="fa fa-download fa-lg"></i> </a></p>
Ian Maxonacb58492015-10-16 19:12:28 -0700151
152<h3 id="yarn-installer">YARN Installer</h3>
Ian Maxona1d49092016-03-25 13:24:08 -0700153<p><a class="btn btn-md btn-warning" href="https://asterix-jenkins.ics.uci.edu/job/asterix-integration-tests/lastSuccessfulBuild/org.apache.asterix$asterix-yarn/artifact/org.apache.asterix/asterix-yarn/0.8.9-SNAPSHOT/asterix-yarn-0.8.9-SNAPSHOT-binary-assembly.zip" role="button">Download AsterixDB 0.8.9-SNAPSHOT <i class="fa fa-download fa-lg"></i> </a></p>
Ian Maxonacb58492015-10-16 19:12:28 -0700154
155<hr />
156
Ian Maxon7bb6ace2016-07-19 11:53:43 -0700157<h2 id="setting-up-an-asterix-development-environment">Setting up an Asterix Development environment</h2>
Ian Maxon3dffc852015-07-13 20:17:09 -0700158
159<h3 id="prerequisites">Prerequisites</h3>
160<ul>
161 <li>A suitable *nix environment (Linux, OSX)</li>
Ian Maxon1bd67772015-11-12 16:14:20 -0800162 <li>JDK 1.8+</li>
Till Westmann0cb533a2016-07-12 22:17:50 -0700163 <li>Maven 3.3.9 or greater</li>
Till Westmannad8974b2016-07-21 18:12:01 -0700164 <li>Eclipse Juno (or later) or IntelliJ IDEA 15.0 (or later)</li>
Ian Maxon3dffc852015-07-13 20:17:09 -0700165</ul>
166
167<h3 id="steps">Steps</h3>
168
Ian Maxon7bb6ace2016-07-19 11:53:43 -0700169<h4 id="general-setup">General setup</h4>
170
Ian Maxon3dffc852015-07-13 20:17:09 -0700171<ol>
Till Westmann0cf36632015-12-08 21:57:33 -0800172 <li>
Taewoo Kim12b53a22016-07-08 14:02:15 -0700173 <p>Check out AsterixDB master in one folder via git in the command line. Assume that the path is <code>$HOME/workspace</code>.</p>
Ian Maxon3dffc852015-07-13 20:17:09 -0700174
Till Westmann0cb533a2016-07-12 22:17:50 -0700175 <pre><code> git clone https://github.com/apache/asterixdb/
Ian Maxon3dffc852015-07-13 20:17:09 -0700176</code></pre>
177
Taewoo Kim12b53a22016-07-08 14:02:15 -0700178 <p>You will now have <code>$HOME/workspace/asterixdb/</code>.</p>
Till Westmann0cf36632015-12-08 21:57:33 -0800179 </li>
180 <li>
Taewoo Kim12b53a22016-07-08 14:02:15 -0700181 <p>Go to the asterixdb folder and install it’s artifacts to the local Maven repository by executing the following commands:</p>
Ian Maxon3dffc852015-07-13 20:17:09 -0700182
Till Westmann0cb533a2016-07-12 22:17:50 -0700183 <pre><code> cd asterixdb/
184 mvn install -DskipTests
Ian Maxon3dffc852015-07-13 20:17:09 -0700185</code></pre>
Till Westmann0cf36632015-12-08 21:57:33 -0800186 </li>
Ian Maxon7bb6ace2016-07-19 11:53:43 -0700187</ol>
188
189<h4 id="intellij-idea-ide-setup">IntelliJ IDEA IDE Setup</h4>
190
191<ol>
192 <li>In IntelliJ IDEA, import asterixdb as an existing Maven Project.
193 <ul>
194 <li><code>File -&gt; New -&gt; Project from existing sources</code>, or `Import project…’ when on a new install</li>
195 <li>Then, select the ‘pom.xml’ in the root of the checked out git repository.</li>
196 <li>The default options for import should suffice, so just click <code>Next</code></li>
197 <li>Also click <code>Next</code> when selecting for profiles and versions</li>
198 <li>On the JDK Selection screen, be sure to select a JDK &gt; 1.8, OpenJDK or Oracle is fine.</li>
199 <li>Give IntelliJ some time to import the Maven project and its dependencies</li>
200 <li>Once everything is finished, you should see ‘asterixdb’ and ‘hyracks-fullstack’ modules in the “Project” view.</li>
201 </ul>
202 </li>
203 <li>Set up IntelliJ code formatting rules
204 <ul>
205 <li>Download files <a href="https://cwiki.apache.org/confluence/download/attachments/61322291/AsterixCodeFormatProfile.xml">AsterixCodeFormatProfile.xml</a>
206 <a href="https://cwiki.apache.org/confluence/download/attachments/61322291/AsterixCleanupFormatProfile.xml">AsterixCleanupFormatProfile.xml</a></li>
207 <li>Import profiles into IntelliJ</li>
208 <li><code>File -&gt; Settings -&gt; Editor -&gt; Code Style -&gt; Java</code></li>
209 <li>Then, click the <code>Manage...</code> button</li>
210 <li>Click <code>Import</code> and import the <code>AsterixCodeFormatProfile.xml</code> as an Eclipse XML profile.</li>
211 </ul>
212 </li>
213</ol>
214
215<h4 id="eclipse-ide-setup">Eclipse IDE Setup</h4>
216
217<ol>
Taewoo Kim12b53a22016-07-08 14:02:15 -0700218 <li>In Eclipse, import asterixdb as an existing Maven Project.
Ian Maxon3dffc852015-07-13 20:17:09 -0700219 <ul>
220 <li><code>File -&gt; Import -&gt; Maven -&gt; Existing Maven Projects -&gt; Next</code></li>
Taewoo Kim12b53a22016-07-08 14:02:15 -0700221 <li>Specify the Root directory as <code>asterixdb</code> and then click Next until Finish is enabled.</li>
Ian Maxon3dffc852015-07-13 20:17:09 -0700222 <li>If Eclipse tries to install the <code>m2e</code> (Maven To Eclipse) connector, let it do so.</li>
223 <li>There might be some plugin errors; however, that is not a big deal. Wait until the job finishes.</li>
Taewoo Kim12b53a22016-07-08 14:02:15 -0700224 <li>Then, click Finish. Restart Eclipse if asked to do so.</li>
Ian Maxon3dffc852015-07-13 20:17:09 -0700225 </ul>
226 </li>
227 <li>Fix Eclipse’s build path to include compile-time generated sources.
228 <ul>
229 <li>Right click the project where a red X mark is shown(e.g. <code>asterix-algebra</code>. Then resolve by applying the following:
230 <ul>
231 <li>Right click asterix-algebra. Click Build Path and Configure Build Path. Click Add Folder.</li>
Taewoo Kim12b53a22016-07-08 14:02:15 -0700232 <li>Under the <code>target -&gt; generated sources</code>, check the parent folder of the <code>org</code> folder and click OK.</li>
Ian Maxon4baed872015-10-06 19:01:17 -0700233 <li>For example, if the directory structure is “target - generated-sources - javacc - org - apache …”, check the javacc directory and click OK. Then X mark will dissapear.</li>
Ian Maxon3dffc852015-07-13 20:17:09 -0700234 </ul>
235 </li>
236 <li>Repeat this step to all projects which show a red X mark except “asterix-fuzzyjoin” and “asterix-transactions”.</li>
Taewoo Kim12b53a22016-07-08 14:02:15 -0700237 <li>It may be the case that only “asterix-algebra” and “asterix-external-data” will require these steps.</li>
238 <li>If you see “plugin execution not covered by lifecycle configuration” errors such as this one - “Plugin execution not covered by lifecycle configuration: org.apache.asterix:asterix-test-datagenerator-maven-plugin:0.8.9-SNAPSHOT:generate-testdata (execution: replace-template-data, phase: process-test-resources)”, try to resolve it using the quick fix feature. You can call this feature by right click on the error and select “quick fix”. And then choose “Mark goal generate-testdata as ignored in Eclipse build in Eclipse preferences”.</li>
Ian Maxon3dffc852015-07-13 20:17:09 -0700239 </ul>
240 </li>
241 <li>Set up Eclipse code formatting rules
242 <ul>
Till Westmannad8974b2016-07-21 18:12:01 -0700243 <li>Download files <a href="https://cwiki.apache.org/confluence/download/attachments/61322291/AsterixCodeFormatProfile.xml">AsterixCodeFormatProfile.xml</a>
244 <a href="https://cwiki.apache.org/confluence/download/attachments/61322291/AsterixCleanupFormatProfile.xml">AsterixCleanupFormatProfile.xml</a></li>
Ian Maxon3dffc852015-07-13 20:17:09 -0700245 <li>Import profiles into Eclipse
246 <ul>
247 <li>Preferences -&gt; Java -&gt; Code style -&gt; Formatter -&gt; Import -&gt; Select AsterixCodeFormatProfile.xml</li>
248 <li>Preferences -&gt; Java -&gt; Code style -&gt; Clean up -&gt; Import -&gt; Select AsterixCleanupFormatProfile.xml</li>
249 <li>Preferences -&gt; Java -&gt; Editor -&gt; Save actions -&gt; Perform the selected action on save -&gt; Format source code</li>
250 </ul>
251 </li>
252 </ul>
253 </li>
Taewoo Kim12b53a22016-07-08 14:02:15 -0700254 <li>
255 <p>Lastly, go to the asterixdb folder and execute following command again. This is required since Eclipse might have cleaned the projects and rebuilt the them without creating all necessary classes. Currently, some of the class files can be only built using mvn command.</p>
256
Till Westmann0cb533a2016-07-12 22:17:50 -0700257 <pre><code> cd asterixdb/
258 mvn install -DskipTests
Taewoo Kim12b53a22016-07-08 14:02:15 -0700259</code></pre>
260 </li>
Ian Maxon3dffc852015-07-13 20:17:09 -0700261</ol>
262
263<hr />
264
265<h2 id="signing-up-for-gerrit">Signing Up for Gerrit</h2>
266
Ian Maxon4baed872015-10-06 19:01:17 -0700267<p>First, to contribute patches to AsterixDB, you should have an ICLA on file with the Apache Software Foundation.
268For details see the ASF website <a href="https://www.apache.org/dev/new-committers-guide.html#cla">here</a>
269You should only need to perform the following steps once.</p>
Ian Maxon3dffc852015-07-13 20:17:09 -0700270
271<p>Our Gerrit server is <a href="https://asterix-gerrit.ics.uci.edu/">here</a></p>
272
273<ol>
274 <li>Visit the above URL, and click on “Register” in the upper right.</li>
275 <li>Gerrit uses OpenID; you may create an account using any OpenID provider, or with a Yahoo! account.</li>
276 <li>Click on “Sign in with a Yahoo! ID”. You will be taken to a page to log in to Yahoo!.</li>
Till Westmannad8974b2016-07-21 18:12:01 -0700277 <li>From there, you will get a page asking you to allow <code>asterix-gerrit.ics.uci.edu</code> to access your email and basic information. Approve this request.</li>
Ian Maxon3dffc852015-07-13 20:17:09 -0700278 <li>You will be directed back to Gerrit to complete the account signup. Make sure to fill out this page! It is necessary to allow you to push code changes to Gerrit for review.</li>
279 <li>For “Full Name” and “Preferred Email”, enter what you like. If you would like to register a different email address such as an @uci.edu address, you may do so. This is where Gerrit will send you notifications about code review requests, voting, and so on.</li>
280 <li>For “Select a unique username”, choose a short alphanumeric ID. This will be your ssh username for git access. Be sure to click “Select Username” to verify that the name is unique and allowed.</li>
281 <li>Also provide a ssh public key here. There is information on the page on creating one if you do not have one. Click “Add” when done.
Till Westmannad8974b2016-07-21 18:12:01 -0700282Note that you can create a new ssh public key just for Gerrit if you like; if you do so you will need to modify your <code>.ssh/config</code> file to ensure the right key is selected.</li>
Ian Maxon3dffc852015-07-13 20:17:09 -0700283 <li>Click “Continue” at the bottom of the page.</li>
284 <li>
Till Westmannad8974b2016-07-21 18:12:01 -0700285 <p>Finally, verify that you have everything set up: From a command-line, type</p>
Ian Maxon3dffc852015-07-13 20:17:09 -0700286
Till Westmannad8974b2016-07-21 18:12:01 -0700287 <pre><code>ssh -p 29418 username@asterix-gerrit.ics.uci.edu
Ian Maxon3dffc852015-07-13 20:17:09 -0700288</code></pre>
Till Westmannad8974b2016-07-21 18:12:01 -0700289 </li>
290 <li>
291 <p>You should see</p>
292
293 <pre><code>**** Welcome to Gerrit Code Review ****
294
295Hi Full Name, you have successfully connected over SSH.
296
297Unfortunately, interactive shells are disabled.
298To clone a hosted Git repository, use:
299
300git clone ssh://username@asterix-gerrit.ics.uci.edu:29418/REPOSITORY_NAME.git
301</code></pre>
302 </li>
303</ol>
Ian Maxon3dffc852015-07-13 20:17:09 -0700304
305<p>At this point, please send an email to Chris or Ian, specifying the email address of your new account, and ask to be added to the “AsterixDB Devs” group. You may push change proposals to Gerrit, and vote +1/-1 Code Review on any proposals without being in AsterixDB Devs, but you cannot vote +2 on anything to allow a change to be merged.</p>
306
307<hr />
308
309<h2 id="configuring-your-local-working-environment-for-gerrit">Configuring your local working environment for Gerrit</h2>
310
311<h3 id="one-time-tasks">One-time tasks</h3>
312
313<ol>
Till Westmannad8974b2016-07-21 18:12:01 -0700314 <li>
315 <p>At the command-line, run the following. Replace “username” with the user name you chose in step 7 above.</p>
316
317 <pre><code>git config --global gerrit.url ssh://username@asterix-gerrit.ics.uci.edu:29418/
318</code></pre>
319 </li>
320 <li>
321 <p>Download my “git-gerrit” utility library:</p>
322
323 <pre><code>git clone https://github.com/ceejatec/git-gerrit
324</code></pre>
325 </li>
326 <li>
327 <p>Ensure that the <code>git-gerrit/git-gerrit</code> script is on your PATH. You could copy it to somewhere, but it would be best to leave it inside the github clone so you can easily get updates.</p>
328 </li>
Ian Maxon3dffc852015-07-13 20:17:09 -0700329</ol>
330
331<h3 id="once-per-repository-tasks">Once-per-repository tasks</h3>
332
333<ol>
Till Westmann0cf36632015-12-08 21:57:33 -0800334 <li>
335 <p>To work on (say) Asterix, first clone the GitHub mirror or the ASF repository (if you already have a local clone, great!), e.g.</p>
336
Till Westmann0cb533a2016-07-12 22:17:50 -0700337 <pre><code>git clone https://github.com/apache/asterixdb
338</code></pre>
Till Westmann0cf36632015-12-08 21:57:33 -0800339 </li>
340 <li>
341 <p><code>cd</code> into the clone repo directory, and then run the following command to create the “gerrit” remote.</p>
342
Till Westmann0cb533a2016-07-12 22:17:50 -0700343 <pre><code>git gerrit init
344</code></pre>
Till Westmann0cf36632015-12-08 21:57:33 -0800345 </li>
Ian Maxon3dffc852015-07-13 20:17:09 -0700346</ol>
347
348<hr />
349
350<h2 id="making-changes---working-method">Making Changes - working method</h2>
351
352<ol>
Till Westmann0cf36632015-12-08 21:57:33 -0800353 <li>
Till Westmannad8974b2016-07-21 18:12:01 -0700354 <p>When you want to start working on a bug, feature, etc, first make a local <code>git</code> branch. Never work directly on
Till Westmann0cf36632015-12-08 21:57:33 -0800355 <code>master</code>! <code>master</code> should always be a pure mirror of <code>origin/master</code>, i.e., the GitHub mirror or the ASF repository.</p>
Ian Maxon3dffc852015-07-13 20:17:09 -0700356
Till Westmann0cb533a2016-07-12 22:17:50 -0700357 <pre><code>git checkout -b my_branch
Ian Maxon3dffc852015-07-13 20:17:09 -0700358</code></pre>
Till Westmann0cf36632015-12-08 21:57:33 -0800359 </li>
360 <li>
361 <p>Make your changes, test them, etc. Feel free to <code>git commit</code> as often as you like.</p>
362 </li>
363 <li>
364 <p><strong>Optional</strong>: If you like, you can push your branch up to another git repository (e.g. in your own GitHub account), either to share it with others or as a backup. You may do this at whatever point in time you like.</p>
365 </li>
366 <li>
367 <p>Every so often, you should update your local <code>master</code> mirror, and then merge that onto your working branch. This will prevent your branch from falling too far out of date, and ensure that your code review proposals will merge successfully with <code>master</code>. There are a number of ways to do this, but <code>git-gerrit</code> provides a convenience function:</p>
Ian Maxonf84cb812015-12-07 15:09:45 -0800368
Till Westmann0cb533a2016-07-12 22:17:50 -0700369 <pre><code>git gerrit update
Ian Maxon3dffc852015-07-13 20:17:09 -0700370</code></pre>
Till Westmann0cf36632015-12-08 21:57:33 -0800371 </li>
372 <li>
373 <p>When you are ready to submit changes for code review, first ensure that you have committed everything locally that is necessary (<code>git status</code> should report “nothing to commit, working directory clean”). This is also a good time to update (see step 4). Then run:</p>
Ian Maxon3dffc852015-07-13 20:17:09 -0700374
Till Westmann0cb533a2016-07-12 22:17:50 -0700375 <pre><code>git gerrit submit
Ian Maxon3dffc852015-07-13 20:17:09 -0700376</code></pre>
Till Westmann0cf36632015-12-08 21:57:33 -0800377 </li>
Ian Maxon3dffc852015-07-13 20:17:09 -0700378 <li>This will pop open your editor to invite you to create a good commit message. This will be the single commit message which will be the only one to appear in the project’s master git history. Take the time to make it clear. The editor will contain the log messages of everything you committed on your branch as a reminder, but generally you will want to delete all this and replace it with a comprehensive message. Also: As noted in the initial message, the last line of the buffer will contain a <code>Change-Id</code> field. Do not delete that line! It is used by Gerrit to identify this particular merge proposal.</li>
Till Westmann0cf36632015-12-08 21:57:33 -0800379 <li>
380 <p>When you save your commit message, git-gerrit will push all of the changes from your working branch up to Gerrit. Assuming no errors, you should see output similar to the following:</p>
Ian Maxon3dffc852015-07-13 20:17:09 -0700381
Till Westmann0cb533a2016-07-12 22:17:50 -0700382 <pre><code>remote: Resolving deltas: 100% (1/1)
383remote: Processing changes: new: 1, refs: 1, done
384remote:
385remote: New Changes:
386remote: http://fulliautomatix.ics.uci.edu:8443/30
387remote:
388To ssh://ceej@fulliautomatix.ics.uci.edu:29418/ceej-gerrit-test
389 * [new branch] HEAD -&gt; refs/for/master
Ian Maxon3dffc852015-07-13 20:17:09 -0700390</code></pre>
Till Westmann0cf36632015-12-08 21:57:33 -0800391 </li>
Ian Maxon3dffc852015-07-13 20:17:09 -0700392 <li>That URL under “New Changes” is your code review! Send it to others to request reviews.</li>
393 <li>If you get any negative code reviews and need to make changes, you can just repeat steps 2 - 6 of the working method. Your local branch will still have all the history you put there, if you need to revert changes or look back and see what you did, etc.</li>
394 <li>When you repeat step 6, you will notice two things: First, git-gerrit keeps the change message for you, including the Change-Id, so you don’t have to re-invent it every time. Second, the output from <code>git gerrit submit</code> will not include the URL of the review this time. I’m not sure why; I wish it did. But if you re-visit the old URL in your browser, you should see an additional “Patch Set” containing your revised changes for people to review.</li>
395</ol>
396
397<h2 id="making-more-changes">Making More Changes</h2>
398
399<p>You may have as many feature branches as you want locally, and each may be at any point in the review cycle.</p>
400
401<p>Once you are done with a change (that is, it has been Code Reviewed and approved in Gerrit and merged), it is probably best to start work on the next big thing on a new branch. However, git-gerrit attempts to be smart if you choose to re-use a branch. For example, it should notice if the “current” Change-Id for a branch has been merged to master, and it will create a new Change-Id and a new fresh commit message the next time you run <code>git gerrit submit</code>.</p>
402
403<p>In that case, you may notice that the list of changes on the branch still contains older commits which have been merged. That is due to the unfortunate way Gerrit works; it requires squashing to a single git commit for review, which loses the association with the original commits in your history.</p>
404
Till Westmannad8974b2016-07-21 18:12:01 -0700405<p>It is also possible that you may want to re-use a branch and git-gerrit fails to notice that the older change has been merged - or perhaps the change was Abandoned on Gerrit and not merged, and you want to continue working on the same branch to create a new proposal. In this case, run</p>
406
407<pre><code>git gerrit new
408</code></pre>
409
410<p>on your branch. This will force git-gerrit to create a new Change-Id and commit message the next time you run <code>git gerrit submit</code>.</p>
Ian Maxon3dffc852015-07-13 20:17:09 -0700411
412<hr />
413
414<h2 id="using-jenkins-with-gerrit">Using Jenkins with Gerrit</h2>
415
416<h3 id="verification">Verification</h3>
417
Till Westmannad8974b2016-07-21 18:12:01 -0700418<p>As of right now, whenever a patch set is submitted to Gerrit (i.e. whenever a user performs ‘git gerrit submit’) are automatically picked up by Jenkins, which runs <code>mvn verify</code> to test the patch fully.
419Once the build finishes, Jenkins comments on the patchset and votes with the result (+1 for all tests passing, -1 for anything less).
420Ideally, and in most cases, verification of a patchset reqires no intervention.
421However there are a few exceptions to this as detailed below.</p>
Ian Maxon3dffc852015-07-13 20:17:09 -0700422
423<h3 id="retrigggering-builds-and-triggering-builds-manually">Retrigggering builds and triggering builds manually</h3>
424
425<h4 id="retriggering">Retriggering</h4>
Till Westmannad8974b2016-07-21 18:12:01 -0700426<p>Occasionally, there are builds in which tests failed, but perhaps not for a reason that has anything to do with the proposed patch’s changes.
427For example, on occasion the Integration tests can have issues with ports on the build server already being bound.
428The simple work around to this is to try building again.</p>
Ian Maxon3dffc852015-07-13 20:17:09 -0700429
Till Westmannad8974b2016-07-21 18:12:01 -0700430<p>One way to perform this is by simply visiting the link that is posted on Gerrit by Jenkins, and hitting the ‘Retrigger’ link on the left-hand side of the page.
431This will try retesting the build with the exact same parameters as last time, hopefully with a different result.</p>
Ian Maxon3dffc852015-07-13 20:17:09 -0700432
433<h4 id="manual-trigger">Manual Trigger</h4>
Till Westmannad8974b2016-07-21 18:12:01 -0700434<p>Builds of Gerrit patches can also be fully manually triggered from Jenkins.
435This can be desirable if the patch is a draft or is not triggered automatically for any other reason.
436To manually trigger a build of a patchset, visit the Jenkins front-page, and click the ‘Query and Trigger Gerrit patches’ link.
437This should link to a page allowing you to manually trigger Gerrit patches.
438In the search field any query that can be searched in the Gerrit web interface can be used, but the default query of all open patchsets is likely fine.
439Hit the ‘Search’ button, and then click the checkbox that represents the patch that needs to be built.
440Then simply click ‘Trigger Selected’ and the patch will start building.</p>
Ian Maxon3dffc852015-07-13 20:17:09 -0700441
Ian Maxon3dffc852015-07-13 20:17:09 -0700442<hr />
443
444</div>
445</div>
446
447
Till Westmann00f9bf22016-03-14 13:59:27 -0700448 <hr/>
Ian Maxon3dffc852015-07-13 20:17:09 -0700449
Till Westmann00f9bf22016-03-14 13:59:27 -0700450 <footer>
451 <div class="row">
Till Westmann00f9bf22016-03-14 13:59:27 -0700452 <div class="col-md-9 col-centered text-center">
453 <p/>
454 <p>&copy; Copyright 2016 The Apache Software foundation. All Rights Reserved. </p>
455 <p>Apache AsterixDB, the Apache AsterixDB logo, Apache, and the Apache feather logo are trademarks of the
456 Apache Software Foundation</p>
Ian Maxon3dffc852015-07-13 20:17:09 -0700457 </div>
Till Westmann00f9bf22016-03-14 13:59:27 -0700458 </div>
459 </footer>
460 </div> <!-- /container -->
Ian Maxon3dffc852015-07-13 20:17:09 -0700461
462 <!-- Bootstrap core JavaScript
463 ================================================== -->
464 <!-- Placed at the end of the document so the pages load faster -->
465 <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.2/jquery.min.js"></script>
Ian Maxonf84cb812015-12-07 15:09:45 -0800466 <script src="js/bootstrap.min.js"></script>
Ian Maxon3dffc852015-07-13 20:17:09 -0700467 </body>
468</html>