blob: 911e945a5223436cfd41a6184ef0cbe2c21dd2cd [file] [log] [blame]
<!DOCTYPE HTML>
<html lang="en-US">
<head>
<meta http-equiv="CACHE-CONTROL" content="NO-CACHE">
<meta charset="UTF-8">
<title>Development Setup</title>
<meta name="viewport" content="width=device-width,initial-scale=1">
<meta name="generator" content="Jekyll v2.4.0">
<link rel="stylesheet" href="/css/font-awesome.min.css">
<link rel="stylesheet" href="/css/screen.css">
<link rel="icon" type="image/x-icon" href="/favicon.ico">
<script src="/js/jquery-3.2.1.min.js"></script>
<!--[if lt IE 9]>
<script src="/js/html5shiv.min.js"></script>
<script src="/js/respond.min.js"></script>
<![endif]-->
<script src="/js/screen.js"></script>
<script type="text/javascript" src="/assets/javascripts/bundle.js" charset="utf-8"></script>
</head>
<body>
<header role="banner">
<nav class="mobile-nav show-on-mobiles">
<ul>
<li class="">
<a href="/">Home</a>
</li>
<li class="current">
<a href="/docs/">Doc<span class="show-on-mobiles">s</span><span class="hide-on-mobiles">umentation</span></a>
</li>
</li>
<li class="">
<a href="/downloads/">Downloads</a>
</li>
<li class="">
<a href="/talks/">Talks</a>
</li>
<li class="">
<a href="/news/">News</a>
</li>
<li class="">
<a href="/develop/">Develop</a>
</li>
<li class="">
<a href="/help/">Help</a>
</li>
</ul>
</nav>
<div class="grid">
<div class="unit one-third center-on-mobiles">
<h1>
<a href="/">
<span class="sr-only">Apache Mnemonic</span>
<img src="/img/mnemonic_logo_v2.png" width="289" alt="Mnemonic Logo" class="logo">
</a>
<a href="https://www.apache.org/events/current-event.html">
<img src="https://www.apache.org/events/current-event-234x60.png"/>
</a>
</h1>
</div>
<nav class="main-nav unit two-thirds hide-on-mobiles">
<ul>
<li class="">
<a href="/">Home</a>
</li>
<li class="current">
<a href="/docs/">Doc<span class="show-on-mobiles">s</span><span class="hide-on-mobiles">umentation</span></a>
</li>
</li>
<li class="">
<a href="/downloads/">Downloads</a>
</li>
<li class="">
<a href="/talks/">Talks</a>
</li>
<li class="">
<a href="/news/">News</a>
</li>
<li class="">
<a href="/develop/">Develop</a>
</li>
<li class="">
<a href="/help/">Help</a>
</li>
</ul>
</nav>
</div>
<!-- Return to Top -->
<a href="#top" id="return-to-top"><i class="fa fa-chevron-up"></i></a>
</header>
<section class="docs">
<div class="grid">
<div class="docs-nav-mobile unit whole show-on-mobiles">
<select onchange="if (this.value) window.location.href=this.value">
<option value="">Navigate the docs…</option>
<optgroup label="Overview">
<option value="/docs/arch.html">Architecture</option>
<option value="/docs/features.html">Features</option>
<option value="/docs/modes.html">Mnemonic Modes</option>
<option value="/docs/memsrvcmp.html">Durable Memory Service Comparison</option>
<option value="/docs/integration.html">Integration with other projects</option>
<option value="/docs/domusecases.html">DOM Use Cases</option>
<option value="/docs/dcmusecases.html">DCM Use Cases</option>
<option value="/docs/msusecases.html">MS Use Cases</option>
<option value="/docs/sparkusecases.html">Apache Spark Integration Use Cases</option>
<option value="/docs/hadoopusecases.html">Apache Hadoop Integration Use Cases</option>
<option value="/docs/gcdata.html">Java GC data</option>
<option value="/docs/security.html">Security</option>
</optgroup>
<optgroup label="Usage">
<option value="/docs/getstarted.html">Get Started</option>
<option value="/docs/devsetup.html">Development Setup</option>
<option value="/docs/submitchanges.html">Submit Changes</option>
<option value="/docs/build.html">Project Build</option>
<option value="/docs/runtest.html">Run tests</option>
<option value="/docs/docker.html">Docker usage</option>
</optgroup>
</select>
</div>
<div class="unit four-fifths">
<article>
<h1>Development Setup</h1>
<p>This document provides a best practice for general development setup and code distribution. Please practice on your computer before trying for code contribution.</p>
<hr />
<p>Pre-requisites:</p>
<ul>
<li>
<p>Install Git on your system - <a href="https://git-scm.com/book/en/v2/Getting-Started-Installing-Git" target="_blank">Git-scm.</a></p>
</li>
<li>
<p>Register Github Account if you dont have one already. You can register your Github acocunt <a href="http://github.com" target="_blank">here.</a></p>
</li>
<li>
<p>Obtain Docker on your system. You can get docker from <a href="https://www.docker.com/" target="_blank">here.</a></p>
</li>
<li>
<p>(Optional) Install IDE on your operating system. e.g. <a href="https://code.visualstudio.com/download" target="_blank">Visual Studio Code</a> or <a href="https://www.jetbrains.com/idea/" target="_blank">IntelliJ</a></p>
</li>
</ul>
<hr />
<ul>
<li>
<p>Step 1 - Configure Git tool if you are behind the firewall. <i><a href="https://gist.github.com/evantoli/f8c23a37eb3558ab8765" target="_blank">Show Me How</a></i></p>
</li>
<li>
<p>Step 2 - Fork the following Mnemonic project to your own Github account. <i><a href="https://github.com/apache/mnemonic" target="_blank">Project Link</a></i></p>
</li>
<li>
<p>Step 3 - Clone the forked Mnemonic project from your own Github account by running the command below. <i><a href="https://docs.github.com/en/free-pro-team@latest/github/creating-cloning-and-archiving-repositories/cloning-a-repository" target="_blank">Show Me How</a></i></p>
</li>
</ul>
<p><code>bash
$ git clone git@github.com:[your account id]/mnemonic.git
</code></p>
<ul>
<li>Step 4 - Configure a remote upstream from Github for upstream sync by running the command below. <i><a href="https://docs.github.com/en/free-pro-team@latest/github/collaborating-with-issues-and-pull-requests/configuring-a-remote-for-a-fork" target="_blank">Show Me How</a></i></li>
</ul>
<p><code>bash
$ git remote add upstream https://github.com/apache/mnemonic.git
</code></p>
<ul>
<li>Step 5 - Setting your commit email address and name for local Mnemonic repo by running the command below. <i><a href="https://docs.github.com/en/free-pro-team@latest/github/setting-up-and-managing-your-github-user-account/setting-your-commit-email-address" target="_blank">Show Me How</a></i></li>
</ul>
<p><code>bash
$ cd mnemonic
$ git config user.email “[your apache id]@ email@example.comapache.org”
$ git config user.name “[your name]”
</code></p>
<ul>
<li>Step 6 - Prepare Mnemonic Docker image on your own system by running one of following command below.</li>
</ul>
<p><code>bash
$ # --------- For CentOS ---------
$ docker build -t mnedev https://github.com/apache/mnemonic.git#:docker/docker-CentOS
$ # --------- For Ubuntu ---------
$ docker build -t mnedev https://github.com/apache/mnemonic.git#:docker/docker-Ubuntu
</code></p>
<ul>
<li>Step 7 - Mount your host repository to Docker container, this following command would hide the original Mnemonic project folder in container.</li>
</ul>
<p><code>bash
$ docker run -it -v &lt;mnemonic_project_folder&gt;:/ws/mnemonic mnedev
</code></p>
<p><b>Congratulation!</b> You have successfully completed the development setup. You are now ready to edit the project code on your host while compiling and test in isolated Docker envinroment. Please make sure you have enough space for docker based compiling and testing (&gt;30G for test running).</p>
<p>Please refer to <a href="submitchanges.html" target="_blank">Submit Changes</a> page if you would like to contribute to this project!</p>
<div class="section-nav">
<div class="left align-right">
<a href="/docs/getstarted.html" class="prev">Back</a>
</div>
<div class="right align-left">
<a href="/docs/submitchanges.html" class="next">Next</a>
</div>
</div>
<div class="clear"></div>
</article>
</div>
<div class="unit one-fifth hide-on-mobiles">
<aside>
<h4>Overview</h4>
<ul>
<li class=""><a href="/docs/arch.html">Architecture</a></li>
<li class=""><a href="/docs/features.html">Features</a></li>
<li class=""><a href="/docs/modes.html">Mnemonic Modes</a></li>
<li class=""><a href="/docs/memsrvcmp.html">Durable Memory Service Comparison</a></li>
<li class=""><a href="/docs/integration.html">Integration with other projects</a></li>
<li class=""><a href="/docs/domusecases.html">DOM Use Cases</a></li>
<li class=""><a href="/docs/dcmusecases.html">DCM Use Cases</a></li>
<li class=""><a href="/docs/msusecases.html">MS Use Cases</a></li>
<li class=""><a href="/docs/sparkusecases.html">Apache Spark Integration Use Cases</a></li>
<li class=""><a href="/docs/hadoopusecases.html">Apache Hadoop Integration Use Cases</a></li>
<li class=""><a href="/docs/gcdata.html">Java GC data</a></li>
<li class=""><a href="/docs/security.html">Security</a></li>
</ul>
<h4>Usage</h4>
<ul>
<li class=""><a href="/docs/getstarted.html">Get Started</a></li>
<li class="current"><a href="/docs/devsetup.html">Development Setup</a></li>
<li class=""><a href="/docs/submitchanges.html">Submit Changes</a></li>
<li class=""><a href="/docs/build.html">Project Build</a></li>
<li class=""><a href="/docs/runtest.html">Run tests</a></li>
<li class=""><a href="/docs/docker.html">Docker usage</a></li>
</ul>
</aside>
</div>
<div class="clear"></div>
</div>
</section>
<footer role="contentinfo">
<p><div align="center">Apache Mnemonic, Mnemonic, Apache, and the Mnemonic logo are trademarks of The Apache Software Foundation.</div>
<div align="center"> Copyright &copy;&nbsp;2021 <a href="https://www.apache.org/">The Apache Software Foundation</a></div></p>
</footer>
<script>
var anchorForId = function (id) {
var anchor = document.createElement("a");
anchor.className = "header-link";
anchor.href = "#" + id;
anchor.innerHTML = "<span class=\"sr-only\">Permalink</span><i class=\"fa fa-link\"></i>";
anchor.title = "Permalink";
return anchor;
};
var linkifyAnchors = function (level, containingElement) {
var headers = containingElement.getElementsByTagName("h" + level);
for (var h = 0; h < headers.length; h++) {
var header = headers[h];
if (typeof header.id !== "undefined" && header.id !== "") {
header.appendChild(anchorForId(header.id));
}
}
};
document.onreadystatechange = function () {
if (this.readyState === "complete") {
var contentBlock = document.getElementsByClassName("docs")[0] || document.getElementsByClassName("news")[0];
if (!contentBlock) {
return;
}
for (var level = 1; level <= 6; level++) {
linkifyAnchors(level, contentBlock);
}
}
};
</script>
</body>
</html>