| <html> |
| <head> |
| <script type="text/javascript"> |
| WEB_SOCKET_SWF_LOCATION = "/__rack/WebSocketMain.swf"; |
| |
| </script> |
| <script type="text/javascript" src="/__rack/swfobject.js"></script> |
| <script type="text/javascript" src="/__rack/web_socket.js"></script> |
| |
| <script type="text/javascript"> |
| RACK_LIVERELOAD_PORT = 35729; |
| </script> |
| <script type="text/javascript" src="/__rack/livereload.js?host=0.0.0.0&port=35729"></script> |
| |
| |
| <meta charset="utf-8"> |
| <title>Apache Parquet</title> |
| <meta name="viewport" content="width=device-width, initial-scale=1.0"> |
| <meta name="description" content=""> |
| <meta name="author" content=""> |
| |
| <link href="../../assets/css/bootstrap.css" rel="stylesheet"> |
| <link href="../../assets/css/bootstrap-theme.css" rel="stylesheet"> |
| <link href="../../assets/css/font-awesome.css" rel="stylesheet"> |
| |
| <!-- JS --> |
| <script type="text/javascript" src="../../assets/js/jquery-2.1.1.min.js"></script> |
| <script type="text/javascript" src="../../assets/js/bootstrap.js"></script> |
| <!-- Analytics --> |
| <script type="text/javascript"> |
| var _gaq = _gaq || []; |
| _gaq.push(['_setAccount', 'UA-39101739-5']); |
| _gaq.push(['_setDomainName', 'apache.org']); |
| _gaq.push(['_trackPageview']); |
| |
| (function() { |
| var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true; |
| ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js'; |
| var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s); |
| })(); |
| </script> |
| </head> |
| <body> |
| <div class="navbar navbar-custom navbar-static-top" role="navigation"> |
| <div class="container"> |
| <div class="navbar-header"> |
| <button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse"> |
| <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="img-responsive pull-left" href="/"> |
| <img src="../../assets/img/parquet_logo.png" alt="Apache Parquet logo" /> |
| </a> |
| </div> |
| <div class="navbar-collapse collapse"> |
| <ul class="nav navbar-nav"> |
| <li><a href="/documentation/latest/">Documentation</a></li> |
| <li><a href="/downloads">Download</a></li> |
| <li><a href="/presentations">Presentations</a></li> |
| <li><a href="/adopters">Adopters</a></li> |
| <li class="dropdown"> |
| <a href="/community">Get Involved <span class="caret"></span></a> |
| <ul class="dropdown-menu" role="menu" aria-labelledby="drop1"> |
| <li role="presentation"><a role="menuitem" tabindex="-1" href="http://issues.apache.org/jira/browse/parquet"><i class="fa fa-bug"></i> JIRA (Bugs)</a></li> |
| <li role="presentation"><a role="menuitem" tabindex="-1" href="https://gitbox.apache.org/repos/asf?p=parquet-mr.git"><i class="fa fa-code"></i> Source (Apache)</a></li> |
| <li role="presentation"><a role="menuitem" tabindex="-1" href="https://github.com/apache/parquet-mr"><i class="fa fa-github-alt"></i> Source (GitHub)</a></li> |
| <li role="presentation"><a role="menuitem" tabindex="-1" href="/contribute"><i class="fa fa-code-fork"></i> Contributing</a></li> |
| <li role="presentation"><a role="menuitem" tabindex="-1" href="https://twitter.com/ApacheParquet"><i class="fa fa-twitter"></i> @ApacheParquet</a></li> |
| <li role="presentation"><a role="menuitem" tabindex="-1" href="http://stackoverflow.com/questions/tagged/parquet"><i class="fa fa-stack-overflow"></i> StackOverflow</a></li> |
| </ul> |
| </li> |
| </ul> |
| </div><!--/.nav-collapse --> |
| </div> |
| </div> |
| <!-- |
| <div class="navbar navbar-custom navbar-static-top"> |
| <div class="navbar-header"> |
| <a class="img-responsive pull-left" href="/"> |
| <img src="../../assets/img/parquet_logo.png" alt="Apache Parquet logo" /> |
| </a> |
| <div class="container-fluid"> |
| <ul class="nav navbar-nav"> |
| <li><a href="/documentation/latest/">Documentation</a></li> |
| <li><a href="/downloads">Download</a></li> |
| <li><a href="/presentations">Presentations</a></li> |
| <li><a href="/adopters">Adopters</a></li> |
| <li class="dropdown"> |
| <a id="drop1" href="/community">Get Involved <b class="caret"></b></a> |
| <ul class="dropdown-menu" role="menu" aria-labelledby="drop1"> |
| <li role="presentation"><a role="menuitem" tabindex="-1" href="http://issues.apache.org/jira/browse/parquet"><i class="fa fa-bug"></i> JIRA (Bugs)</a></li> |
| <li role="presentation"><a role="menuitem" tabindex="-1" href="https://git-wip-us.apache.org/repos/asf?s=parquet"><i class="fa fa-code"></i> Source (Apache)</a></li> |
| <li role="presentation"><a role="menuitem" tabindex="-1" href="https://github.com/apache/parquet-mr"><i class="fa fa-github-alt"></i> Source (GitHub)</a></li> |
| <li role="presentation"><a role="menuitem" tabindex="-1" href="/contribute"><i class="fa fa-code-fork"></i> Contributing</a></li> |
| <li role="presentation"><a role="menuitem" tabindex="-1" href="https://twitter.com/ApacheParquet"><i class="fa fa-twitter"></i> @ApacheParquet</a></li> |
| <li role="presentation"><a role="menuitem" tabindex="-1" href="http://stackoverflow.com/questions/tagged/parquet"><i class="fa fa-stack-overflow"></i> StackOverflow</a></li> |
| <li role="presentation"><a role="menuitem" tabindex="-1" href="https://plus.google.com/events/c36apc97f7invko9p128hq9e6b8"><i class="fa fa-google"></i> Google Hangout</a></li> |
| </ul> |
| </li> |
| </ul> |
| </div> |
| </div> |
| <hr /> |
| </div> |
| |
| <p>–></p> |
| |
| <div class="container"> |
| <!-- magical breadcrumbs --> |
| <ol class="breadcrumb"> |
| <li> |
| <div class="dropdown"> |
| <a class="dropdown-toggle" data-toggle="dropdown" href="#">Apache Software Foundation <b class="caret"></b></a> |
| <ul class="dropdown-menu" role="menu"> |
| <li><a href="http://www.apache.org">Apache Homepage</a></li> |
| <li><a href="http://www.apache.org/licenses/">Apache License</a></li> |
| <li><a href="http://www.apache.org/foundation/sponsorship.html">Sponsorship</a></li> |
| <li><a href="http://www.apache.org/foundation/thanks.html">Thanks</a></li> |
| <li><a href="http://www.apache.org/security/">Security</a></li> |
| </ul> |
| </div> |
| </li> |
| <li><a href="http://parquet.apache.org">Apache Parquet</a></li> |
| </ol> |
| <!-- /breadcrumb --> |
| </div> |
| |
| <div class="container"> |
| <h2 id="how-to-release">How to release</h2> |
| |
| <h3 id="setup">Setup</h3> |
| |
| <p>You will need: |
| * PGP code signing keys, published in <a href="https://downloads.apache.org/parquet/KEYS">KEYS</a> |
| * Permission to stage artifacts in Nexus</p> |
| |
| <p>Make sure you have permission to deploy Parquet artifacts to Nexus by pushing a snapshot:</p> |
| <div class="highlight"><pre class="highlight plaintext"><code>mvn deploy |
| </code></pre></div> |
| <p>If you have problems, read the <a href="https://www.apache.org/dev/publishing-maven-artifacts.html">publishing Maven artifacts documentation</a></p> |
| |
| <h3 id="release-process">Release process</h3> |
| |
| <p>Parquet uses the maven-release-plugin to tag a release and push binary artifacts to staging in Nexus. Once maven completes the release, the offical source tarball is built from the tag.</p> |
| |
| <p>Before you start the release process:</p> |
| |
| <ol> |
| <li>Verify that the release is finished (no planned JIRAs are pending)</li> |
| <li>Build and test the project</li> |
| <li>Update the change log |
| |
| <ul> |
| <li>Go to the release notes for the release in JIRA</li> |
| <li>Copy the HTML and convert it to markdown with an <a href="https://domchristie.github.io/turndown/">online converter</a></li> |
| <li>Add the content to CHANGES.md and update formatting</li> |
| <li>Commit the update to CHANGES.md</li> |
| </ul></li> |
| </ol> |
| |
| <h4 id="1-run-the-prepare-script">1. Run the prepare script</h4> |
| <div class="highlight"><pre class="highlight plaintext"><code>dev/prepare-release.sh <version> <rc-number> |
| </code></pre></div> |
| <p>This runs maven’s release prepare with a consistent tag name. After this step, the release tag will exist in the git repository.</p> |
| |
| <p>If this step fails, you can roll back the changes by running these commands.</p> |
| <div class="highlight"><pre class="highlight plaintext"><code>find ./ -type f -name '*.releaseBackup' -exec rm {} \; |
| find ./ -type f -name 'pom.xml' -exec git checkout {} \; |
| </code></pre></div> |
| <h4 id="2-run-release-perform-to-stage-binaries">2. Run release:perform to stage binaries</h4> |
| <div class="highlight"><pre class="highlight plaintext"><code>mvn release:perform |
| </code></pre></div> |
| <p>This uploads binary artifacts for the release tag to <a href="https://repository.apache.org/">Nexus</a>.</p> |
| |
| <h4 id="3-in-nexus-close-the-staging-repository">3. In Nexus, close the staging repository</h4> |
| |
| <p>Closing a staging repository makes the binaries available in <a href="https://repository.apache.org/content/groups/staging/org/apache/parquet/">staging</a>, but does not publish them.</p> |
| |
| <ol> |
| <li>Go to <a href="https://repository.apache.org/">Nexus</a>.</li> |
| <li>In the menu on the left, choose “Staging Repositories”.</li> |
| <li>Select the Parquet repository.</li> |
| <li>At the top, click “Close” and follow the instructions. For the comment use “Apache Parquet [Format] <VERSION> <RC>”.</li> |
| </ol> |
| |
| <h4 id="4-run-the-source-tarball-script">4. Run the source tarball script</h4> |
| <div class="highlight"><pre class="highlight plaintext"><code>dev/source-release.sh <version> <rc-number> |
| </code></pre></div> |
| <p>This script builds the source tarball from the release tag’s SHA1, signs it, and uploads the necessary files with SVN.</p> |
| |
| <p>The source release is pushed to <a href="https://dist.apache.org/repos/dist/dev/parquet/">https://dist.apache.org/repos/dist/dev/parquet/</a></p> |
| |
| <p>The last message from the script is the release commit’s SHA1 hash and URL for the VOTE e-mail.</p> |
| |
| <h4 id="5-send-a-vote-e-mail-to-dev-parquet-apache-org">5. Send a VOTE e-mail to <a href="mailto:dev@parquet.apache.org">dev@parquet.apache.org</a></h4> |
| |
| <p>Here is a template you can use. Make sure everything applies to your release.</p> |
| <div class="highlight"><pre class="highlight plaintext"><code>Subject: [VOTE] Release Apache Parquet <VERSION> RC<NUM> |
| </code></pre></div><div class="highlight"><pre class="highlight plaintext"><code>Hi everyone, |
| |
| I propose the following RC to be released as official Apache Parquet <VERSION> release. |
| |
| The commit id is <SHA1> |
| * This corresponds to the tag: apache-parquet-<VERSION>-rc<NUM> |
| * https://github.com/apache/parquet-mr/tree/<SHA1> |
| |
| The release tarball, signature, and checksums are here: |
| * https://dist.apache.org/repos/dist/dev/parquet/<PATH> |
| |
| You can find the KEYS file here: |
| * https://downloads.apache.org/parquet/KEYS |
| |
| Binary artifacts are staged in Nexus here: |
| * https://repository.apache.org/content/groups/staging/org/apache/parquet/ |
| |
| This release includes important changes that I should have summarized here, but I'm lazy. |
| |
| Please download, verify, and test. |
| |
| Please vote in the next 72 hours. |
| |
| [ ] +1 Release this as Apache Parquet <VERSION> |
| [ ] +0 |
| [ ] -1 Do not release this because... |
| |
| </code></pre></div> |
| <h3 id="publishing-after-the-vote-passes">Publishing after the vote passes</h3> |
| |
| <p>After a release candidate passes a vote, the candidate needs to be published as the final release.</p> |
| |
| <h4 id="1-tag-final-release-and-set-development-version">1. Tag final release and set development version</h4> |
| <div class="highlight"><pre class="highlight plaintext"><code>dev/finalize-release <release-version> <rc-num> <new-development-version-without-SNAPSHOT-suffix> |
| </code></pre></div> |
| <p>This will add the final release tag to the RC tag and sets the new development version in the pom files. |
| If everything is fine push the changes and the new tag to github: |
| <code> |
| git push --follow-tags |
| </code></p> |
| |
| <h4 id="2-release-the-binary-repository-in-nexus">2. Release the binary repository in Nexus</h4> |
| |
| <h4 id="3-copy-the-release-artifacts-in-svn-into-releases">3. Copy the release artifacts in SVN into releases</h4> |
| |
| <p>First, check out the candidates and releases locations in SVN:</p> |
| <div class="highlight"><pre class="highlight plaintext"><code>mkdir parquet |
| cd parquet |
| svn co https://dist.apache.org/repos/dist/dev/parquet candidates |
| svn co https://dist.apache.org/repos/dist/release/parquet releases |
| </code></pre></div> |
| <p>Next, copy the directory for the release candidate the passed from candidates to releases and rename it; remove the “-rcN” part of the directory name.</p> |
| <div class="highlight"><pre class="highlight plaintext"><code>cp -r candidates/apache-parquet-<VERSION>-rcN/ releases/apache-parquet-<VERSION> |
| </code></pre></div> |
| <p>Then add and commit the release artifacts:</p> |
| <div class="highlight"><pre class="highlight plaintext"><code>cd releases |
| svn add apache-parquet-<version> |
| svn ci -m "Parquet: Add release <VERSION>" |
| </code></pre></div> |
| <h4 id="4-update-parquet-apache-org">4. Update parquet.apache.org</h4> |
| |
| <p>Update the downloads page on parquet.apache.org. |
| Instructions for updating the site are on the <a href="http://parquet.apache.org/contribute/">contribution page</a>.</p> |
| |
| <h4 id="5-send-an-announce-e-mail-to-announce-apache-org-and-the-dev-list">5. Send an ANNOUNCE e-mail to <a href="mailto:announce@apache.org">announce@apache.org</a> and the dev list</h4> |
| <div class="highlight"><pre class="highlight plaintext"><code>[ANNOUNCE] Apache Parquet release <VERSION> |
| </code></pre></div><div class="highlight"><pre class="highlight plaintext"><code>I'm please to announce the release of Parquet <VERSION>! |
| |
| Parquet is a general-purpose columnar file format for nested data. It uses |
| space-efficient encodings and a compressed and splittable structure for |
| processing frameworks like Hadoop. |
| |
| Changes are listed at: https://github.com/apache/parquet-mr/blob/apache-parquet-<VERSION>/CHANGES.md |
| |
| This release can be downloaded from: https://parquet.apache.org/downloads/ |
| |
| Java artifacts are available from Maven Central. |
| |
| Thanks to everyone for contributing! |
| </code></pre></div> |
| </div> |
| <div class="container"> |
| <hr> |
| <footer class="footer"> |
| <div class="row-fluid"> |
| <div class="span12 text-left"> |
| <div class="span12"> |
| Copyright 2018 <a href="http://www.apache.org/">Apache Software Foundation</a>. Licensed under the <a href="http://www.apache.org/licenses/">Apache License v2.0</a>. Apache Parquet and the Apache feather logo are trademarks of The Apache Software Foundation. |
| </div> |
| </div> |
| |
| </div> |
| |
| </footer> |
| </div> |
| |
| </body> |
| </html> |
| |