blob: 4f65013b01502122b28e63aa60850e6bc3d536cd [file] [log] [blame]
<!DOCTYPE html>
<!--
| Generated by Apache Maven Doxia Site Renderer 1.8.1
| Rendered using Apache Maven Fluido Skin 1.6
-->
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<meta http-equiv="Content-Language" content="en" />
<title>Apache Hivemall &#x2013; Release Prerequisites</title>
<link rel="stylesheet" href="./css/apache-maven-fluido-1.6.min.css" />
<link rel="stylesheet" href="./css/site.css" />
<link rel="stylesheet" href="./css/print.css" media="print" />
<script type="text/javascript" src="./js/apache-maven-fluido-1.6.min.js"></script>
</head>
<body class="topBarEnabled">
<a href="https://github.com/apache/incubator-hivemall">
<img style="position: absolute; top: 0; right: 0; border: 0; z-index: 10000;"
src="https://s3.amazonaws.com/github/ribbons/forkme_right_red_aa0000.png"
alt="Fork me on GitHub">
</a>
<div id="topbar" class="navbar navbar-fixed-top navbar-inverse">
<div class="navbar-inner">
<div class="container"><div class="nav-collapse">
<ul class="nav">
<li class="dropdown">
<a href="#" class="dropdown-toggle" data-toggle="dropdown">Project <b class="caret"></b></a>
<ul class="dropdown-menu">
<li><a href="index.html" title="Home">Home</a></li>
<li><a href="download.html" title="Download">Download</a></li>
<li><a href="licenses.html" title="Licenses">Licenses</a></li>
<li><a href="team.html" title="Team">Team</a></li>
<li><a href="poweredby.html" title="Powered By">Powered By</a></li>
<li><a href="http://incubator.apache.org/projects/hivemall.html" title="Incubation Status">Incubation Status</a></li>
</ul>
</li>
<li class="dropdown">
<a href="#" class="dropdown-toggle" data-toggle="dropdown">Documentation <b class="caret"></b></a>
<ul class="dropdown-menu">
<li><a href="userguide/index.html" title="User Guide">User Guide</a></li>
<li><a href="overview.html" title="Overview">Overview</a></li>
<li><a href="https://cwiki.apache.org/confluence/display/HIVEMALL" target="_blank" title="Wiki">Wiki</a></li>
<li><a href="faq.html" title="FAQ">FAQ</a></li>
</ul>
</li>
<li class="dropdown">
<a href="#" class="dropdown-toggle" data-toggle="dropdown">Get Involved <b class="caret"></b></a>
<ul class="dropdown-menu">
<li><a href="mailing-lists.html" title="Mailing Lists">Mailing Lists</a></li>
<li><a href="https://issues.apache.org/jira/browse/HIVEMALL" target="_blank" title="Issues (Jira)">Issues (Jira)</a></li>
<li><a href="repository.html" title="Source (Git)">Source (Git)</a></li>
<li><a href="https://travis-ci.org/apache/incubator-hivemall" target="_blank" title="Travis CI">Travis CI</a></li>
<li><a href="contributing.html" title="Contributing">Contributing</a></li>
<li><a href="release-guide.html" title="Release Guide">Release Guide</a></li>
</ul>
</li>
<li class="dropdown">
<a href="#" class="dropdown-toggle" data-toggle="dropdown">ASF <b class="caret"></b></a>
<ul class="dropdown-menu">
<li><a href="http://www.apache.org/foundation/how-it-works.html" target="_blank" title="How Apache Works">How Apache Works</a></li>
<li><a href="http://www.apache.org/foundation/" target="_blank" title="Foundation">Foundation</a></li>
<li><a href="http://www.apache.org/foundation/sponsorship.html" target="_blank" title="Sponsoring Apache">Sponsoring Apache</a></li>
<li><a href="http://www.apache.org/foundation/thanks.html" target="_blank" title="Thanks">Thanks</a></li>
</ul>
</li>
</ul>
<ul class="nav pull-right"><li>
<a href="https://twitter.com/ApacheHivemall" class="twitter-follow-button" data-show-count="false" data-align="right" data-size="large" data-show-screen-name="true" data-lang="en">Follow ApacheHivemall</a>
<script type="text/javascript">!function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0];if(!d.getElementById(id)){js=d.createElement(s);js.id=id;js.src="//platform.twitter.com/widgets.js";fjs.parentNode.insertBefore(js,fjs);}}(document,"script","twitter-wjs");</script>
</li></ul>
</div>
</div>
</div>
</div>
<div class="container">
<div id="banner">
<div class="pull-left"><div id="bannerLeft"><h2>Apache Hivemall</h2>
</div>
</div>
<div class="pull-right"></div>
<div class="clear"><hr/></div>
</div>
<div id="breadcrumbs">
<ul class="breadcrumb">
<li id="publishDate">Last Published: 2019-10-31<span class="divider">|</span>
</li>
<li id="projectVersion">Version: 0.6.0-incubating-SNAPSHOT</li>
</ul>
</div>
<div id="bodyColumn" >
<!--
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.
--><h1>Release Prerequisites</h1>
<p>This document describes the initial setup procedures for making a release of Apache Hivemall.</p>
<p>If it is your first time doing an Apache release, then there is some initial setup involved. You should read this page before proceeding. </p>
<div class="section">
<h2><a name="Software"></a>Software</h2>
<p>You would need the following softwares for building and making a release:</p>
<ul>
<li>gpg2</li>
<li>md5sum, sha1sum</li>
<li>git client</li>
<li>svn client (<i>svn is still mandatory in the ASF distribution process. Don&#x2019;t ask me why.</i>)</li>
<li>JDK 7 (<i>not JDK 8 nor 9 to support Java 7 or later</i>)</li>
<li>maven (&gt;=v3.3.1)</li>
</ul>
<div class="section">
<h3><a name="Installation"></a>Installation</h3>
<div class="source">
<div class="source"><pre class="prettyprint"># on Mac
$ brew install gpg gpg-agent pinentry-mac
$ brew instal md5sha1sum
$ brew intall svn
$ brew install maven
$ brew install npm
$ npm install gitbook-cli -g
</pre></div></div></div>
<div class="section">
<h3><a name="Java_7_setup_Optional"></a>Java 7 setup (Optional)</h3>
<p>We recommend to use <a class="externalLink" href="http://www.jenv.be/">jEnv</a> for Java 7 environment setup on Mac OS X.</p>
<div class="source">
<div class="source"><pre class="prettyprint">$ /usr/libexec/java_home -v 1.7
/Library/Java/JavaVirtualMachines/jdk1.7.0_80.jdk/Contents/Home
$ jenv add `/usr/libexec/java_home -v 1.7`
$ jenv versions
* system (set by /Users/myui/.jenv/version)
1.7
1.7.0.80
oracle64-1.7.0.80
# configure to use Java 7 for Hivemall
$ cd incubator-hivemall
$ jenv local 1.7
$ java -version
java version &quot;1.7.0_80&quot;
</pre></div></div></div></div>
<div class="section">
<h2><a name="PGP_signing"></a>PGP signing</h2>
<p>To perform a release, you need to add signatures to release packages. See the <a class="externalLink" href="http://www.apache.org/dev/release-signing.html">Signing Releases</a> page for information on how to do this.</p>
<p>In a nutshell, you&#x2019;ll need to follow the instructions at <a class="externalLink" href="http://www.apache.org/dev/openpgp.html#generate-key">How To OpenPGP</a> to generate a new code signing key and publish the public key in various places.</p>
<div class="section">
<h3><a name="Setting_up_signing_keys"></a>Setting up signing keys</h3>
<p>1). Generate a key-pair with gpg using <a class="externalLink" href="http://www.apache.org/dev/openpgp.html#key-gen-generate-key">this instruction</a>. The program&#x2019;s default values should be fine. Please use a signing key with an ASF email address (i.e. <a class="externalLink" href="mailto:your-alias@apache.org)">your-alias@apache.org)</a>. Generated Keys should be RSA with at least 4096 bits.</p>
<div class="source">
<div class="source"><pre class="prettyprint">$ gpg --full-generate-key
</pre></div></div>
<p>Here is my key.</p>
<div class="source">
<div class="source"><pre class="prettyprint">$ gpg --list-key --keyid-format LONG
pub rsa4096/93F4D08DC8CE801B 2017-11-01 [SC]
7A6BA1A10CC6ABF47159152193F4D08DC8CE801B
uid [ultimate] Makoto Yui (CODE SIGNING KEY) &lt;myui@apache.org&gt;
sub rsa4096/C3F1C8E219A64221 2017-11-01 [E]
</pre></div></div>
<p>Public key is <tt>93F4D08DC8CE801B</tt> in the above case.</p>
<p>2). Send your public PGP key to a public keyserver.</p>
<div class="source">
<div class="source"><pre class="prettyprint">$ gpg --keyserver pgp.mit.edu --send-keys &lt;your-public-pgp-key&gt;
</pre></div></div>
<p>3). Update the PGP key fingerprint of your account on <a class="externalLink" href="http://id.apache.org">id.apache.org</a>. Find your PGP key fingerprint by </p>
<div class="source">
<div class="source"><pre class="prettyprint">$ gpg --fingerprint
</pre></div></div>
<p>4). Update KEYS file in the git repo to your public key be listed in it.</p>
<div class="source">
<div class="source"><pre class="prettyprint">$ export YOUR_NAME=&quot;Makoto Yui&quot;
$ (gpg --list-sigs ${YOUR_NAME} &amp;&amp; gpg --armor --export ${YOUR_NAME} &amp;&amp; echo) &gt;&gt; KEYS
# Update git repository
$ git add KEYS
$ git commit -m &quot;Added the public key of YOUR NAME&quot;
$ git push origin master
</pre></div></div>
<p>5). Add your public key to KEYS file in the subversion repository:</p>
<div class="source">
<div class="source"><pre class="prettyprint">- dev: https://dist.apache.org/repos/dist/dev/hivemall/KEYS
- release: https://dist.apache.org/repos/dist/release/hivemall/KEYS
# checkout dist repos
$ svn co --depth immediates https://dist.apache.org/repos/dist dist
$ cd dist
$ svn up --set-depth infinity dev/incubator/hivemall
$ svn up --set-depth infinity release/incubator/hivemall
# edit KEYS files
$ svn add * --force
$ svn ci -m &quot;Updated KEYS file of Incubator Hivemall&quot; &amp;&amp; svn up
</pre></div></div>
<p>6). Once you have followed these instructions, you should have:</p>
<div class="source">
<div class="source"><pre class="prettyprint">* Your public key viewable at https://people.apache.org/keys/committer/your-asf-id.asc
* Your public key also viewable at https://people.apache.org/keys/group/hivemall.asc
</pre></div></div>
<div class="section">
<h4><a name="Configure_PGP_signing_on_git_optional"></a>Configure PGP signing on git (optional)</h4>
<p>After completing this, you should also <a class="externalLink" href="https://git-scm.com/book/en/v2/Git-Tools-Signing-Your-Work">configure git</a> to use your key for signing.</p>
<p>If your signing key is identified by <tt>01234567</tt>, then you can configure git with:</p>
<div class="source">
<div class="source"><pre class="prettyprint">$ git config --global user.signingkey 01234567
</pre></div></div>
<p>If you are using gpg, you&#x2019;ll then need to tell git to use it.</p>
<div class="source">
<div class="source"><pre class="prettyprint">$ git config --global gpg.program gpg
</pre></div></div>
<p>You can enable GPG signing always true on the particular git repository by:</p>
<div class="source">
<div class="source"><pre class="prettyprint">$ git config commit.gpgsign true
</pre></div></div>
<p>To sign all commits by default in any local repository on your computer, run</p>
<div class="source">
<div class="source"><pre class="prettyprint">$ git config --global commit.gpgsign true
</pre></div></div>
<p>Use pientry to omit typing a passphrase for each commit.</p>
<div class="source">
<div class="source"><pre class="prettyprint">$ echo &quot;pinentry-program /usr/local/bin/pinentry-mac&quot; &gt;&gt; ~/.gnupg/gpg-agent.conf
$ echo -e &quot;use-agent\nno-tty&quot; &gt;&gt; ~/.gnupg/gpg.conf
</pre></div></div>
<p>Tips: You may get an error about a passphrase not being provided when signing with git. If this happens try running the command below, which should case the passphrase prompt to show in the terminal.</p>
<div class="source">
<div class="source"><pre class="prettyprint">export GPG_TTY=`tty`
</pre></div></div></div></div></div>
<div class="section">
<h2><a name="Configure_Maven_for_publishing_artifacts"></a>Configure Maven for publishing artifacts</h2>
<p>Update your <tt>~/.m2/settings.xml</tt> following <a class="externalLink" href="http://www.apache.org/dev/publishing-maven-artifacts.html#dev-env">this instructions</a>.</p>
<div class="source">
<div class="source"><pre class="prettyprint">&lt;settings&gt;
...
&lt;servers&gt;
&lt;!-- To publish a snapshot of some part of Maven --&gt;
&lt;server&gt;
&lt;id&gt;apache.snapshots.https&lt;/id&gt;
&lt;username&gt; &lt;!-- YOUR APACHE LDAP USERNAME --&gt; &lt;/username&gt;
&lt;password&gt; &lt;!-- YOUR APACHE LDAP PASSWORD (encrypted) --&gt; &lt;/password&gt;
&lt;/server&gt;
&lt;!-- To stage a release of some part of Maven --&gt;
&lt;server&gt;
&lt;id&gt;apache.releases.https&lt;/id&gt;
&lt;username&gt; &lt;!-- YOUR APACHE LDAP USERNAME --&gt; &lt;/username&gt;
&lt;password&gt; &lt;!-- YOUR APACHE LDAP PASSWORD (encrypted) --&gt; &lt;/password&gt;
&lt;/server&gt;
...
&lt;/servers&gt;
&lt;/settings&gt;
</pre></div></div></div>
</div>
</div>
<hr/>
<footer>
<div class="container">
<div class="row">
<p>
<small>
Apache Hivemall is an effort undergoing incubation at The Apache Software Foundation (ASF), sponsored by <a href="http://incubator.apache.org/">the Apache Incubator</a>.
Incubation is required of all newly accepted projects until a further review indicates that the infrastructure, communications,
and decision making process have stabilized in a manner consistent with other successful ASF projects.
While incubation status is not necessarily a reflection of the completeness or stability of the code,
it does indicate that the project has yet to be fully endorsed by the ASF.
</small>
</p>
</div>
<p id="poweredBy" class="pull-right"> <a href="http://incubator.apache.org/projects/hivemall.html" title="Apache Incubator" class="builtBy"><img class="builtBy" alt="Apache Incubator" src="images/apache-incubator-logo.png" /></a>
</p>
</div>
</footer>
</body>
</html>