<!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>
