| <!DOCTYPE HTML> |
| <html lang="en-US"> |
| <head> |
| <meta charset="UTF-8"> |
| <title>How To Release ORC</title> |
| <meta name="viewport" content="width=device-width,initial-scale=1"> |
| <meta name="generator" content="Jekyll v4.3.4"> |
| <link rel="stylesheet" href="//fonts.googleapis.com/css?family=Lato:300,300italic,400,400italic,700,700italic,900"> |
| <link rel="stylesheet" href="/css/screen.css"> |
| <link rel="icon" type="image/x-icon" href="/favicon.ico"> |
| <!--[if lt IE 9]> |
| <script src="/js/html5shiv.min.js"></script> |
| <script src="/js/respond.min.js"></script> |
| <![endif]--> |
| <!-- Matomo --> |
| <script> |
| var _paq = window._paq = window._paq || []; |
| /* tracker methods like "setCustomDimension" should be called before "trackPageView" */ |
| _paq.push(["setDoNotTrack", true]); |
| _paq.push(["disableCookies"]); |
| _paq.push(['trackPageView']); |
| _paq.push(['enableLinkTracking']); |
| (function() { |
| var u="https://analytics.apache.org/"; |
| _paq.push(['setTrackerUrl', u+'matomo.php']); |
| _paq.push(['setSiteId', '68']); |
| var d=document, g=d.createElement('script'), s=d.getElementsByTagName('script')[0]; |
| g.async=true; g.src=u+'matomo.js'; s.parentNode.insertBefore(g,s); |
| })(); |
| </script> |
| <!-- End Matomo Code --> |
| </head> |
| |
| |
| <body class="wrap"> |
| <header role="banner"> |
| <nav class="mobile-nav show-on-mobiles"> |
| <ul> |
| <li class=""> |
| <a href="/">Home</a> |
| </li> |
| <li class=""> |
| <a href="/releases/"><span class="show-on-mobiles">Rel</span> |
| <span class="hide-on-mobiles">Releases</span></a> |
| </li> |
| <li class=""> |
| <a href="/docs/"><span class="show-on-mobiles">Doc</span> |
| <span class="hide-on-mobiles">Documentation</span></a> |
| </li> |
| <li class=""> |
| <a href="/talks/"><span class="show-on-mobiles">Talk</span> |
| <span class="hide-on-mobiles">Talks</span></a> |
| </li> |
| <li class=""> |
| <a href="/news/">News</a> |
| </li> |
| <li class="current"> |
| <a href="/develop/"><span class="show-on-mobiles">Dev</span> |
| <span class="hide-on-mobiles">Develop</span></a> |
| </li> |
| <li class=""> |
| <a href="/help/">Help</a> |
| </li> |
| </ul> |
| |
| </nav> |
| <div class="grid"> |
| <div class="unit one-quarter center-on-mobiles"> |
| <h1> |
| <a href="/"> |
| <span class="sr-only">Apache ORC</span> |
| <img src="/img/logo.png" width="249" height="101" alt="ORC Logo"> |
| </a> |
| </h1> |
| </div> |
| <nav class="main-nav unit three-quarters hide-on-mobiles"> |
| <ul> |
| <li class=""> |
| <a href="/">Home</a> |
| </li> |
| <li class=""> |
| <a href="/releases/"><span class="show-on-mobiles">Rel</span> |
| <span class="hide-on-mobiles">Releases</span></a> |
| </li> |
| <li class=""> |
| <a href="/docs/"><span class="show-on-mobiles">Doc</span> |
| <span class="hide-on-mobiles">Documentation</span></a> |
| </li> |
| <li class=""> |
| <a href="/talks/"><span class="show-on-mobiles">Talk</span> |
| <span class="hide-on-mobiles">Talks</span></a> |
| </li> |
| <li class=""> |
| <a href="/news/">News</a> |
| </li> |
| <li class="current"> |
| <a href="/develop/"><span class="show-on-mobiles">Dev</span> |
| <span class="hide-on-mobiles">Develop</span></a> |
| </li> |
| <li class=""> |
| <a href="/help/">Help</a> |
| </li> |
| </ul> |
| |
| </nav> |
| </div> |
| </header> |
| |
| |
| <section class="standalone"> |
| <div class="grid"> |
| |
| <div class="unit whole"> |
| <article> |
| <h1>How To Release ORC</h1> |
| <h2 id="preparing-for-release">Preparing for release</h2> |
| |
| <p>Set version so that it isn’t a SNAPSHOT.</p> |
| |
| <div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>% git checkout branch-X.Y |
| % edit CMakeLists.txt |
| % (mkdir build; cd build; cmake ..) |
| </code></pre></div></div> |
| |
| <p>Commit the changes back to Apache along with a tag for the release candidate.</p> |
| |
| <div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>% git commit -s -S -am 'Preparing for release X.Y.Z' |
| % git remote add apache https://gitbox.apache.org/repos/asf/orc.git |
| % git push apache branch-X.Y |
| % git tag release-X.Y.Zrc0 |
| % git push apache release-X.Y.Zrc0 |
| </code></pre></div></div> |
| |
| <p>Generate the source tarball and checksums for the release.</p> |
| |
| <div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>% wget https://github.com/apache/orc/archive/release-X.Y.Zrc0.tar.gz |
| % tar xzf release-X.Y.Zrc0.tar.gz |
| % mv orc-release-X.Y.Zrc0 orc-X.Y.Z |
| % tar czf orc-X.Y.Z.tar.gz orc-X.Y.Z |
| % mkdir orc-X.Y.Z-rc0 |
| % mv orc-X.Y.Z.tar.gz orc-X.Y.Z-rc0 |
| % cd orc-X.Y.Z-rc0 |
| % shasum -a 256 orc-X.Y.Z.tar.gz > orc-X.Y.Z.tar.gz.sha256 |
| % gpg --detach-sig --armor orc-X.Y.Z.tar.gz |
| </code></pre></div></div> |
| |
| <p>Verify the artifacts</p> |
| |
| <div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>% shasum -a256 orc-X.Y.Z.tar.gz | diff - orc-X.Y.Z.tar.gz.sha256 |
| % gpg --verify orc-X.Y.Z.tar.gz.asc |
| % cd .. |
| </code></pre></div></div> |
| |
| <p>Upload the artifacts into Apache dev distribution website.</p> |
| |
| <div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>% svn co --depth=files "https://dist.apache.org/repos/dist/dev/orc" svn-orc |
| % mv orc-X.Y.Z-rc0 svn-orc |
| % cd svn-orc |
| % svn add orc-X.Y.Z-rc0 |
| % svn commit -m "Upload Apache ORC X.Y.Z RC0" |
| </code></pre></div></div> |
| |
| <p>Make sure your GPG key is present in <a href="https://id.apache.org">Apache |
| LDAP</a> and the ORC <a href="https://dist.apache.org/repos/dist/release/orc/KEYS">svn dist |
| area</a>. That will |
| be necessary for others to verify the signatures on the release |
| candidate.</p> |
| |
| <p>Click the version to release (X.Y.Z) <a href="https://issues.apache.org/jira/projects/ORC?selectedItem=com.atlassian.jira.jira-projects-plugin:release-page">here</a> |
| to get the list of jiras that are fixed in X.Y.Z</p> |
| |
| <p>Send email with the vote:</p> |
| |
| <div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>To: dev@orc.apache.org |
| Subject: [VOTE] Release Apache ORC X.Y.Z (RC0) |
| |
| Please vote on releasing the following candidate as Apache ORC version X.Y.Z. |
| |
| [ ] +1 Release this package as Apache ORC X.Y.Z |
| [ ] -1 Do not release this package because ... |
| |
| TAG: |
| https://github.com/apache/orc/releases/tag/release-X.Y.Zrc0 |
| |
| RELEASE FILES: |
| https://dist.apache.org/repos/dist/dev/orc/orc-X.Y.Z-rc0 |
| |
| LIST OF ISSUES: |
| https://issues.apache.org/jira/projects/ORC/versions/<fixid> |
| |
| This vote will be open for 72 hours. |
| |
| Thanks! |
| </code></pre></div></div> |
| |
| <h2 id="to-promote-a-release-candidate-rc-to-a-real-release">To promote a release candidate (RC) to a real release.</h2> |
| |
| <p>Update the final tag and remove the rc tag.</p> |
| |
| <div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>% git tag rel/release-X.Y.Z -s |
| % git push apache rel/release-X.Y.Z |
| % git push apache :release-X.Y.Zrc0 |
| </code></pre></div></div> |
| |
| <p>Publish the artifacts to Maven central staging. Make sure to have this <a href="http://www.apache.org/dev/publishing-maven-artifacts.html#dev-env">setup</a> for Apache releases</p> |
| |
| <div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>% cd java |
| % ./mvnw -Papache-release clean deploy |
| </code></pre></div></div> |
| |
| <p>Publish from the staging area:</p> |
| |
| <ul> |
| <li>login to <a href="https://repository.apache.org/index.html#stagingRepositories">Maven staging</a></li> |
| <li>find your staging repository (search for org.apache.orc)</li> |
| <li>close it</li> |
| <li>release it</li> |
| </ul> |
| |
| <p>Publish the artifacts to Apache’s dist area.</p> |
| |
| <div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>In a svn clone of https://dist.apache.org/repos/dist/release/orc |
| % mkdir orc-X.Y.Z |
| % cd orc-X.Y.Z |
| copy release artifacts with a rename from orc-X.Y.Zrc0* to orc-X.Y.Z* |
| % svn add . |
| % svn commit ---username <apacheid> -m "ORC X.Y.Z Release" |
| |
| We keep the latest patch release for each of the last two branches, so remove |
| extra releases (say I.J.K) from the Apache dist area. |
| |
| % cd .. |
| % svn rm orc-I.J.K |
| % svn commit --username <apacheid> -m "Removed old release ORC I.J.K" |
| </code></pre></div></div> |
| |
| <p>Update the release branch with the version for the next release.</p> |
| |
| <div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>edit CMakeLists.txt to change version to X.Y.(Z+1)-SNAPSHOT |
| % cd build |
| % cmake .. |
| % git commit -a -s -S -am 'Preparing branch for post X.Y.Z development' |
| % git push apache branch-X.Y |
| </code></pre></div></div> |
| |
| <p>Update the site with the new release.</p> |
| |
| <ul> |
| <li>Check out the main branch (git checkout apache/main)</li> |
| </ul> |
| |
| <div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>Change directory in to site. |
| % pwd |
| <path-to-main-src> |
| % cd site |
| Set up site/target to be a separate git workspace that tracks the asf-site branch. |
| % git clone git@github.com:apache/orc.git -b asf-site target |
| </code></pre></div></div> |
| <ul> |
| <li>edit site/_data/releases.yml to add new release |
| <ul> |
| <li>update the state for the releases to match the changes in the Apache dist |
| <ul> |
| <li>latest = new release (only one of these!)</li> |
| <li>stable = other release still in dist</li> |
| <li>archived = removed from dist</li> |
| </ul> |
| </li> |
| </ul> |
| </li> |
| <li>create a new file _posts/YYYY-MM-DD-ORC-X.Y.Z.md for the news section</li> |
| <li>Run <code class="language-plaintext highlighter-rouge">docker build -t orc-site .</code></li> |
| <li>Run <code class="language-plaintext highlighter-rouge">CONTAINER=$(docker run -d -p 4000:4000 orc-site)</code></li> |
| <li>Check the website on <a href="http://0.0.0.0:4000/">http://0.0.0.0:4000/</a></li> |
| <li>If it looks good, copy the results out of docker: |
| <ul> |
| <li>Run <code class="language-plaintext highlighter-rouge">docker cp $CONTAINER:/home/orc/site/target .</code></li> |
| <li>Run <code class="language-plaintext highlighter-rouge">docker stop $CONTAINER</code></li> |
| </ul> |
| </li> |
| </ul> |
| |
| <div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>% git commit -am "Update site for X.Y.Z" |
| % git push origin main |
| </code></pre></div></div> |
| |
| <ul> |
| <li>Change directory into site/target for publishing the site.</li> |
| <li>Add the new files that you just generated. |
| <ul> |
| <li>This assumes you’ve set up site/target to be a separate git workspace that tracks the asf-site branch.</li> |
| </ul> |
| </li> |
| <li>Commit to asf-site to publish the updated site. |
| <div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>% cd target |
| % git commit -am "Publish site for X.Y.Z" |
| % git push origin asf-site |
| </code></pre></div> </div> |
| </li> |
| </ul> |
| |
| <p>Update ORC’s jira to reflect the released version.</p> |
| |
| <ul> |
| <li>Select the resolved issues and bulk transition them to closed with following query <a href="https://issues.apache.org/jira/issues/?filter=-1">here</a>. |
| <ul> |
| <li>query: project = ORC AND fixVersion = X.Y.Z and status = Resolved ORDER BY created desc</li> |
| </ul> |
| </li> |
| <li>Mark the version as released and set the date <a href="https://issues.apache.org/jira/projects/ORC?selectedItem=com.atlassian.jira.jira-projects-plugin:release-page">here</a>.</li> |
| </ul> |
| |
| <p>It usually take up to 24 hours for the apache dist mirrors and maven central to update with the new release.</p> |
| |
| <h2 id="to-release-orc-in-vcpkg">To release ORC in vcpkg.</h2> |
| <p>We could release the latest ORC version in <a href="https://vcpkg.io/en/packages">vcpkg</a>.</p> |
| |
| <p>1.Download the source code of vcpkg:</p> |
| <div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>% git clone git@github.com:microsoft/vcpkg.git |
| </code></pre></div></div> |
| |
| <p>2.Compile vcpkg</p> |
| |
| <p>Configure your vcpkg based on operating system versions. See <a href="https://github.com/microsoft/vcpkg?tab=readme-ov-file#getting-started">Getting Started</a></p> |
| |
| <p>3.Update ORC version</p> |
| |
| <p>Update the <strong>version</strong> field of <a href="https://github.com/microsoft/vcpkg/blob/master/ports/orc/vcpkg.json">vcpkg.json</a>. Run the following command to rebuild ORC:</p> |
| <div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>% ./vcpkg build orc |
| </code></pre></div></div> |
| |
| <p>You will receive an error, which contains a SHA512 value, updating it to the <a href="https://github.com/microsoft/vcpkg/blob/master/ports/orc/portfile.cmake">portfile.cmake</a> file.</p> |
| |
| <blockquote> |
| <p>Expected hash: 141afbd6d83b8c8032df071838e7da61eedb3d22289642f76669b6efd167d7550b200bd3542f012d0b63c9ae2572d83fcb1b7f76537b6fa6f980aebf37e2cde2</p> |
| </blockquote> |
| |
| <blockquote> |
| <p>Actual hash (you should update): 7b9d6f9613f48b41843618465c0c71ed70e5695b4fc4b3db15d0bbfe4c5126e0c6c8f1114d6c450a56b4ddf0357d89bd40cb03c0964275c59761cc0f8fec1291</p> |
| </blockquote> |
| |
| <p>4.Commit current changes</p> |
| <div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>% git commit -m "" |
| </code></pre></div></div> |
| |
| <p>Run ./vcpkg x-add-version –all to auto generate version item in version database.</p> |
| <div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>% ./vcpkg x-add-version --all |
| </code></pre></div></div> |
| |
| <p>Test changes with the following command:</p> |
| <div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>% ./vcpkg build orc |
| </code></pre></div></div> |
| |
| <p>If anything is ok, re-commit changes and send a PR to <a href="https://github.com/microsoft/vcpkg">vcpkg repo</a>.</p> |
| |
| <p>This is an <a href="https://github.com/microsoft/vcpkg/pull/36098/files">example</a> of updating to ORC 1.9.2</p> |
| |
| <blockquote> |
| <p>Note: You will not immediately find the merged PR version on the official website of vcpkg. check <a href="https://github.com/microsoft/vcpkg/releases">vcpkg release</a> to know the latest release progress.</p> |
| </blockquote> |
| |
| <h2 id="to-release-orc-in-conan">To release ORC in Conan.</h2> |
| |
| <p>We could release the latest ORC version in <a href="https://conan.io/center/recipes/orc">conan</a>.</p> |
| |
| <p>1.Install conan</p> |
| |
| <p>Install your conan with the help of the official guide: <a href="https://docs.conan.io/2/installation.html">Install</a></p> |
| |
| <p>2.Download the source code of conan-center-index:</p> |
| <div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>% git clone git@github.com:conan-io/conan-center-index.git |
| </code></pre></div></div> |
| |
| <p>3.Update ORC version</p> |
| |
| <p>Add the new version to <a href="https://github.com/conan-io/conan-center-index/blob/master/recipes/orc/config.yml">config.yml</a> and <a href="https://github.com/conan-io/conan-center-index/blob/master/recipes/orc/all/conandata.yml">conandata.yml</a> locally in your conan-center-index. Run the following command in the conan-center-index/recipes/orc/all directory to build ORC of version X.Y.Z:</p> |
| <div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>% conan create . --version=X.Y.Z |
| </code></pre></div></div> |
| |
| <p>4.Commit current changes</p> |
| |
| <p>If everything is ok, commit the local change and open a pull request to <a href="https://github.com/conan-io/conan-center-index">conan-center-index repo</a>.</p> |
| |
| <p>This is an <a href="https://github.com/conan-io/conan-center-index/pull/23046">example</a> of adding ORC 2.0.0 to it.</p> |
| |
| </article> |
| </div> |
| |
| <div class="clear"></div> |
| |
| </div> |
| </section> |
| |
| |
| <footer role="contentinfo"> |
| <p style="margin-left: 20px; margin-right; 20px; text-align: center">The contents of this website are © 2025 |
| <a href="https://www.apache.org/">Apache Software Foundation</a> |
| under the terms of the <a |
| href="https://www.apache.org/licenses/LICENSE-2.0.html"> |
| Apache License v2</a>. Apache ORC and its logo are trademarks |
| of the Apache Software Foundation.</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> |