blob: 9efc28fddd89ffd01bef4ade06e089cef3ec1d74 [file] [log] [blame]
<html lang="en"><head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<!-- The above 3 meta tags *must* come first in the head; any other head content must come *after* these tags -->
<meta name="description" content="Apex is an enterprise grade native YARN big data-in-motion platform that unifies stream processing as well as batch processing.">
<meta name="author" content="Apache Software Foundation">
<link rel="icon" href="favicon.ico">
<title>Apache Apex</title>
<!-- Main Stylesheet -->
<link href="css/main.css" rel="stylesheet">
<script>
(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','https://www.google-analytics.com/analytics.js','ga');
ga('create', 'UA-85540278-1', 'auto');
ga('send', 'pageview');
</script>
</head>
<body>
<nav class="navbar navbar-default navbar-static-top" id="main-nav">
<div class="container">
<div class="navbar-header">
<button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#bs-example-navbar-collapse-1" aria-expanded="false">
<span class="sr-only">Toggle navigation</span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
<a class="navbar-brand" href="/">
<img src="images/apex-logo.svg" class="logo" alt="Apache Apex Logo">
Apache Apex<span class="trademark">&trade;</span>
</a>
</div>
<div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1">
<ul class="nav navbar-right navbar-nav">
<li class="nav-item">
<a class="nav-link " href="/">Home</a>
</li>
<li class="nav-item">
<a class="nav-link " href="/docs.html">Documentation</a>
</li>
<li class="nav-item">
<a class="nav-link " href="/powered-by-apex.html">Powered By Apex</a>
</li>
<li class="nav-item">
<a class="nav-link " href="/roadmap.html">Roadmap</a>
</li>
<li class="nav-item nav-mouseover">
<ul class="dropdown-menu">
<li class=""><a href="/community.html#mailing-lists">Mailing Lists</a></li>
<li class=""><a href="/community.html#issue-tracking">Issue Tracking</a></li>
<li class=""><a href="http://stackoverflow.com/questions/tagged/apache-apex">Stack Overflow</a></li>
<li class=""><a href="/community.html#events">Events</a></li>
<li class=""><a href="/community.html#contributing">Contributing</a></li>
<li class=""><a href="http://www.apache.org/foundation/how-it-works.html">Apache Foundation</a></li>
</ul>
<a href="/community.html" class="nav-link">Community</a>
</li>
<li class="nav-item nav-mouseover">
<ul class="dropdown-menu">
<li class=""><a href="https://github.com/apache/apex-core">Apex Core</a></li>
<li class=""><a href="https://github.com/apache/apex-malhar">Apex Malhar</a></li>
<li class=""><a href="https://github.com/apache/apex-site">Apex Site</a></li>
</ul>
<a href="https://github.com/apache/apex-core" class="nav-link">Github</a>
</li>
<li class="nav-item">
<a class="nav-link btn btn-success btn-download" href="/downloads.html">Download</a>
</li>
</ul>
</div>
</nav>
<div class="container">
<h1 id="how-to-verify-apache-apex-release-candidate-builds">How to verify Apache Apex release candidate builds</h1>
<h2 id="prerequisites">Prerequisites</h2>
<p>Download the KEYS file and import it. Verify that the key just imported is correct.</p>
<pre><code class="lang-bash">wget https://dist.apache.org/repos/dist/release/apex/KEYS
gpg --import KEYS
gpg --fingerprint &lt;key-id&gt;
</code></pre>
<p>The &lt;key-id&gt; of the release manager can be found out in the <em>PGP key</em> link in the mail. It would be alphanumric number like D920A98Cbb. The above step can be skipped if you have already imported key of the current release manager.</p>
<p>More about key verification at <a href="http://www.apache.org/info/verification.html">http://www.apache.org/info/verification.html</a></p>
<p>You can also create your own key which is required if you would like to sign the build. This step is optional.</p>
<pre><code class="lang-bash">gpg --gen-key
</code></pre>
<p>Please provide 4096 as keysize while generating the key.</p>
<h2 id="file-integrity-check">File integrity check</h2>
<p>Download all files present in staging directory of the RC build. Staging directory link is shared in VOTE thread of the release candidate. It is recommended that these files are downloaded in a clean directory.</p>
<pre><code class="lang-bash">wget -r -np -nd &lt;staging-area-link&gt;/
</code></pre>
<p>Note the link should end with &quot;/&quot;.</p>
<p>Define the apex release candidate variable. We will use <em>apache-apex-core-3.6.0</em> as an example.</p>
<pre><code class="lang-bash">APEX_RELEASE_CANDIDATE=apache-apex-core-3.6.0
</code></pre>
<p>Verify integrity of tar.gz file:</p>
<pre><code class="lang-bash">gpg --verify $APEX_RELEASE_CANDIDATE-source-release.tar.gz.asc
md5sum --check $APEX_RELEASE_CANDIDATE-source-release.tar.gz.md5
shasum -a 512 --check $APEX_RELEASE_CANDIDATE-source-release.tar.gz.sha512
</code></pre>
<p>Verify integrity of .zip file:</p>
<pre><code class="lang-bash">gpg --verify $APEX_RELEASE_CANDIDATE-source-release.zip.asc
md5sum --check $APEX_RELEASE_CANDIDATE-source-release.zip.md5
shasum -a 512 --check $APEX_RELEASE_CANDIDATE-source-release.zip.sha512
</code></pre>
<h2 id="source-code-verification">Source code verification</h2>
<p>You can extract source either using .tar.gz file or .zip file.</p>
<h3 id="using-tar-gz-source">Using .tar.gz source</h3>
<p>Extract source using .tar.gz:</p>
<pre><code class="lang-bash">tar -zxvf $APEX_RELEASE_CANDIDATE-source-release.tar.gz
</code></pre>
<h3 id="using-zip-source">Using .zip source</h3>
<pre><code class="lang-bash">unzip $APEX_RELEASE_CANDIDATE-source-release.zip
</code></pre>
<p>Any of the two commands above will create a directory named after <em>apex release candidate</em>.</p>
<p>Change directory:</p>
<pre><code class="lang-bash">cd $APEX_RELEASE_CANDIDATE
</code></pre>
<h3 id="miscellaneous-checks-part-i-pre-compilation-">Miscellaneous checks: Part I (Pre Compilation)</h3>
<p>Existence of LICENSE, NOTICE, README.md and CHANGELOG.md files.
Please make sure these files are present in the parent folder after extracting the zip or tar. The CHANGELOG.md file should contain change log for the current release.</p>
<p>No unexpected binary files in the sources.
The extracted directory should not contain any binary. Need to test this before compiling the source code.</p>
<pre><code class="lang-bash">find . -type f -name &#39;*.*&#39; | sed &#39;s|.*\.||&#39; | sort -u
</code></pre>
<p>Please make sure no binary extension is listed here. Likely candidates are .jar files. Additionally, for Malhar, demo package files, i.e. .apa files.</p>
<h3 id="check-for-compilation-license-headers-etc-">Check for compilation, license headers, etc.</h3>
<p>For Apex Core:</p>
<pre><code class="lang-bash">mvn clean apache-rat:check verify -Dlicense.skip=false install
</code></pre>
<p>For Apex Malhar:</p>
<pre><code class="lang-bash">mvn clean apache-rat:check verify -Dlicense.skip=false -Pall-modules install
</code></pre>
<p>Jars should be installed in your maven repository, typically in <em>~/.m2/repository/org/apache/apex/</em> directory</p>
<p>Following step is optional and needs the key generated by you as in prerequisite section given above.</p>
<pre><code class="lang-bash">mvn verify -Papache-release -DskipTests
</code></pre>
<h2 id="launch-demos">Launch demos</h2>
<p>For verification of Apex build, check backward compatibility with respect to Malhar. Locally update <em>apex.core.version</em> in Malhar to point to <em>to-be released</em> version of apex-core and recompile Malhar.</p>
<p>Launch a few demos to make sure everything is working fine using <em>apex</em> utility. The apex script is present at <apex-core-folder>/engine/src/main/scripts/apex . If apex-core is being verified, then simply use engine/src/main/scripts/apex to launch the script. Otherwise, prefix it with apex-core folder path.</p>
<pre><code class="lang-bash">engine/src/main/scripts/apex
</code></pre>
<p>You will get apex prompt, where demos can be launched.</p>
<pre><code class="lang-bash">apex&gt; launch &lt;demo-apa-file&gt;
</code></pre>
<p>Demo apa files are typically in apex-malhar/demos directory.</p>
<h2 id="miscellaneous-checks-part-ii-post-compilation-">Miscellaneous checks: Part II (Post compilation)</h2>
<p>Correct artifact names:
All the apex artifacts generated in local maven build directory should contain classs jar, sources jars, javadocs jar. All the artifacts are under <em>~/.m2/repository/org/apache/apex/</em> directory on your local machine.</p>
</div>
<hr>
<div class="container">
<footer id="main-footer">
<p>
Copyright &copy; <span id="copyright-year">2015</span> <a href="http://apache.org">The Apache Software Foundation</a>,
Licensed under the Apache License, Version 2.0<br>
Apache and the Apache feather logo are trademarks of The Apache Software Foundation. | <a href="/privacy.html">Privacy Policy</a><br>
<a class="footer-link-img" href="http://apache.org"><img src="/images/asf_logo.svg" alt="The Apache Software Foundation"></a>
</p>
</footer>
</div> <!-- /container -->
<!-- Placed at the end of the document so the pages load faster -->
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script>
<script src="/js/bootstrap.min.js"></script>
<script src="js/docs.js"></script>
<script>
$('#copyright-year').text((new Date()).getFullYear());
$('.btn-download').click(function(e){
ga('send', {
hitType: 'event',
eventCategory: 'Download Button',
eventAction: 'Button Click',
eventLabel: 'Page Header'
});
});
</script>
</body>
</html>