| <!DOCTYPE html> |
| <html lang="en"> |
| |
| <head> |
| <title>Releases - Apache NiFi</title> |
| <meta charset="utf-8"> |
| <meta name="viewport" content="width=device-width, initial-scale=1"> |
| <meta name="description" content="Apache NiFi is an easy to use, powerful, and reliable system to process and distribute data"> |
| <meta name="keywords" content="apache,nifi,data,distribution"> |
| <title>Releases - Apache NiFi</title> |
| <meta property="og:title" content="Releases"> |
| <meta property="og:type" content="article"> |
| <meta property="og:url" content="https://nifi.apache.org/documentation/guides/releases/"> |
| <meta property="og:description" content="Apache NiFi is an easy to use, powerful, and reliable system to process and distribute data"> |
| <meta property="og:site_name" content="Apache NiFi"> |
| <meta property="og:image" content="https://nifi.apache.org/images/project-brand.jpg?version=1"> |
| <meta name="twitter:title" content="Releases"> |
| <meta name="twitter:description" content="Apache NiFi is an easy to use, powerful, and reliable system to process and distribute data"> |
| <meta name="twitter:card" content="summary_large_image"> |
| <meta name="twitter:creator" content="apachenifi"> |
| <meta name="twitter:image" content="https://nifi.apache.org/images/project-brand.jpg?version=1"> |
| <link rel="icon" href="/images/apache-nifi-drop-logo.svg"> |
| <link rel="stylesheet" href="/uikit/css/uikit.min.css"> |
| <link rel="stylesheet" href="/css/main.css?version=1"> |
| <script> |
| var _paq = window._paq = window._paq || []; |
| _paq.push(['disableCookies']); |
| _paq.push(['trackPageView']); |
| _paq.push(['enableLinkTracking']); |
| (function() { |
| var baseUri = "//matomo.privacy.apache.org/"; |
| _paq.push(['setTrackerUrl', baseUri + 'matomo.php']); |
| _paq.push(['setSiteId', '28']); |
| var trackerElement = document.createElement('script'); |
| var firstScriptElement = document.getElementsByTagName('script')[0]; |
| trackerElement.async = true; |
| trackerElement.src = baseUri + 'matomo.js'; |
| var firstScriptElement = document.getElementsByTagName('script')[0]; |
| if (window.location.host === 'nifi.apache.org') { |
| firstScriptElement.parentNode.insertBefore(trackerElement, firstScriptElement); |
| } |
| })(); |
| </script> |
| </head> |
| <body class="section-background"> |
| <div class="nav-container" uk-sticky="sel-target: .uk-navbar-container; cls-active: uk-navbar-sticky"> |
| <nav class="uk-container uk-navbar-container uk-navbar-transparent" uk-navbar> |
| <div class="uk-navbar-left"> |
| <ul class="uk-navbar-nav"> |
| <li> |
| <a class="uk-navbar-item" href="/"> |
| <img src="/images/apache-nifi-drop-logo.svg" alt="Apache NiFi Logo" class="navbar-logo" width="36" height="48" /> |
| </a> |
| </li> |
| <li class="uk-hidden@s"> |
| <a href="#" class="uk-navbar-toggle" uk-navbar-toggle-icon uk-toggle="target: #mobile-menu"></a> |
| </li> |
| |
| |
| |
| <li class="uk-visible@s uk-active"> |
| <a href="/documentation/">Documentation</a> |
| |
| <ul class="uk-dropdown" uk-dropdown="mode: click; animation: uk-animation-slide-top-small; duration: 300;"> |
| |
| <li class=""> |
| <a href="/documentation/v2/" > |
| NiFi Version 2 Documentation |
| |
| </a> |
| |
| |
| |
| </li> |
| |
| <li class=""> |
| <a href="/documentation/v1/" > |
| NiFi Version 1 Documentation |
| |
| </a> |
| |
| |
| |
| </li> |
| |
| <li class=""> |
| <a href="/documentation/guides/" > |
| Guides |
| |
| </a> |
| |
| |
| |
| </li> |
| |
| <li class=""> |
| <a href="/documentation/security/" > |
| Security Reporting |
| |
| </a> |
| |
| |
| |
| </li> |
| |
| <li class=""> |
| <a href="https://cwiki.apache.org/confluence/display/NIFI" target="_blank" rel="noopener noreferrer"> |
| Wiki |
| <span uk-icon="link"></span> |
| </a> |
| |
| |
| |
| </li> |
| |
| </ul> |
| |
| </li> |
| |
| <li class="uk-visible@s "> |
| <a href="/development/">Development</a> |
| |
| <ul class="uk-dropdown" uk-dropdown="mode: click; animation: uk-animation-slide-top-small; duration: 300;"> |
| |
| <li class=""> |
| <a href="https://cwiki.apache.org/confluence/display/NIFI/Contributor+Guide" target="_blank" rel="noopener noreferrer"> |
| Contributing |
| <span uk-icon="link"></span> |
| </a> |
| |
| |
| |
| </li> |
| |
| <li class=""> |
| <a href="https://issues.apache.org/jira/browse/NIFI" target="_blank" rel="noopener noreferrer"> |
| Issues |
| <span uk-icon="link"></span> |
| </a> |
| |
| |
| |
| </li> |
| |
| <li class=""> |
| <a href="https://github.com/apache/nifi" target="_blank" rel="noopener noreferrer"> |
| Source |
| <span uk-icon="link"></span> |
| </a> |
| |
| |
| |
| </li> |
| |
| </ul> |
| |
| </li> |
| |
| <li class="uk-visible@s "> |
| <a href="/community/">Community</a> |
| |
| <ul class="uk-dropdown" uk-dropdown="mode: click; animation: uk-animation-slide-top-small; duration: 300;"> |
| |
| <li class=""> |
| <a href="/community/contact/" > |
| Contact |
| |
| </a> |
| |
| |
| |
| </li> |
| |
| <li class=""> |
| <a href="/community/powered-by/" > |
| Powered By |
| |
| </a> |
| |
| |
| |
| </li> |
| |
| <li class=""> |
| <a href="/community" > |
| Team |
| |
| </a> |
| |
| |
| |
| </li> |
| |
| </ul> |
| |
| </li> |
| |
| <li class="uk-visible@s "> |
| <a href="/projects/">Projects</a> |
| |
| <ul class="uk-dropdown" uk-dropdown="mode: click; animation: uk-animation-slide-top-small; duration: 300;"> |
| |
| <li class=""> |
| <a href="/projects/minifi/" > |
| MiNiFi |
| |
| </a> |
| |
| |
| |
| </li> |
| |
| <li class=""> |
| <a href="/projects/registry/" > |
| Registry |
| |
| </a> |
| |
| |
| |
| </li> |
| |
| <li class=""> |
| <a href="/projects/fds/" > |
| Flow Design System |
| |
| </a> |
| |
| |
| |
| </li> |
| |
| </ul> |
| |
| </li> |
| |
| <li class="uk-visible@s "> |
| <a href="https://www.apache.org">Apache</a> |
| |
| <ul class="uk-dropdown" uk-dropdown="mode: click; animation: uk-animation-slide-top-small; duration: 300;"> |
| |
| <li class=""> |
| <a href="https://apache.org/events/current-event" target="_blank" rel="noopener noreferrer"> |
| Events |
| <span uk-icon="link"></span> |
| </a> |
| |
| |
| |
| </li> |
| |
| <li class=""> |
| <a href="https://www.apache.org/licenses" target="_blank" rel="noopener noreferrer"> |
| License |
| <span uk-icon="link"></span> |
| </a> |
| |
| |
| |
| </li> |
| |
| <li class=""> |
| <a href="https://privacy.apache.org/policies/privacy-policy-public.html" target="_blank" rel="noopener noreferrer"> |
| Privacy |
| <span uk-icon="link"></span> |
| </a> |
| |
| |
| |
| </li> |
| |
| <li class=""> |
| <a href="https://www.apache.org/security/" target="_blank" rel="noopener noreferrer"> |
| Security |
| <span uk-icon="link"></span> |
| </a> |
| |
| |
| |
| </li> |
| |
| <li class=""> |
| <a href="https://www.apache.org/foundation/sponsorship.html" target="_blank" rel="noopener noreferrer"> |
| Sponsorship |
| <span uk-icon="link"></span> |
| </a> |
| |
| |
| |
| </li> |
| |
| <li class=""> |
| <a href="https://www.apache.org/foundation/thanks.html" target="_blank" rel="noopener noreferrer"> |
| Thanks |
| <span uk-icon="link"></span> |
| </a> |
| |
| |
| |
| </li> |
| |
| </ul> |
| |
| </li> |
| |
| |
| </ul> |
| |
| </div> |
| <div class="uk-navbar-right"> |
| <ul class="uk-navbar-nav"> |
| <li> |
| <div class="uk-navbar-item"> |
| <a class="uk-icon-link navbar-icon" uk-icon="icon: github; ratio: 2" href="https://github.com/apache/nifi"></a> |
| </div> |
| </li> |
| <li> |
| <div class="uk-navbar-item"> |
| <a class="uk-button uk-button-primary uk-icon" href="/download/"> |
| Download |
| </a> |
| </div> |
| </li> |
| </ul> |
| </div> |
| </nav> |
| </div> |
| |
| <div id="mobile-menu" uk-offcanvas class="uk-offcanvas"> |
| <div class="uk-offcanvas-bar"> |
| <ul class="uk-navbar-nav" uk-accordion> |
| |
| |
| |
| <li class="uk-active"> |
| <a class="uk-accordion-title" >Documentation</a> |
| |
| <ul class="uk-accordion-content"> |
| |
| <li class=""> |
| <a href="/documentation/v2/" > |
| NiFi Version 2 Documentation |
| |
| </a> |
| |
| |
| |
| </li> |
| |
| <li class=""> |
| <a href="/documentation/v1/" > |
| NiFi Version 1 Documentation |
| |
| </a> |
| |
| |
| |
| </li> |
| |
| <li class=""> |
| <a href="/documentation/guides/" > |
| Guides |
| |
| </a> |
| |
| |
| |
| </li> |
| |
| <li class=""> |
| <a href="/documentation/security/" > |
| Security Reporting |
| |
| </a> |
| |
| |
| |
| </li> |
| |
| <li class=""> |
| <a href="https://cwiki.apache.org/confluence/display/NIFI" target="_blank" rel="noopener noreferrer"> |
| Wiki |
| <span uk-icon="link"></span> |
| </a> |
| |
| |
| |
| </li> |
| |
| </ul> |
| |
| </li> |
| |
| <li class=""> |
| <a class="uk-accordion-title" >Development</a> |
| |
| <ul class="uk-accordion-content"> |
| |
| <li class=""> |
| <a href="https://cwiki.apache.org/confluence/display/NIFI/Contributor+Guide" target="_blank" rel="noopener noreferrer"> |
| Contributing |
| <span uk-icon="link"></span> |
| </a> |
| |
| |
| |
| </li> |
| |
| <li class=""> |
| <a href="https://issues.apache.org/jira/browse/NIFI" target="_blank" rel="noopener noreferrer"> |
| Issues |
| <span uk-icon="link"></span> |
| </a> |
| |
| |
| |
| </li> |
| |
| <li class=""> |
| <a href="https://github.com/apache/nifi" target="_blank" rel="noopener noreferrer"> |
| Source |
| <span uk-icon="link"></span> |
| </a> |
| |
| |
| |
| </li> |
| |
| </ul> |
| |
| </li> |
| |
| <li class=""> |
| <a class="uk-accordion-title" >Community</a> |
| |
| <ul class="uk-accordion-content"> |
| |
| <li class=""> |
| <a href="/community/contact/" > |
| Contact |
| |
| </a> |
| |
| |
| |
| </li> |
| |
| <li class=""> |
| <a href="/community/powered-by/" > |
| Powered By |
| |
| </a> |
| |
| |
| |
| </li> |
| |
| <li class=""> |
| <a href="/community" > |
| Team |
| |
| </a> |
| |
| |
| |
| </li> |
| |
| </ul> |
| |
| </li> |
| |
| <li class=""> |
| <a class="uk-accordion-title" >Projects</a> |
| |
| <ul class="uk-accordion-content"> |
| |
| <li class=""> |
| <a href="/projects/minifi/" > |
| MiNiFi |
| |
| </a> |
| |
| |
| |
| </li> |
| |
| <li class=""> |
| <a href="/projects/registry/" > |
| Registry |
| |
| </a> |
| |
| |
| |
| </li> |
| |
| <li class=""> |
| <a href="/projects/fds/" > |
| Flow Design System |
| |
| </a> |
| |
| |
| |
| </li> |
| |
| </ul> |
| |
| </li> |
| |
| <li class=""> |
| <a class="uk-accordion-title" >Apache</a> |
| |
| <ul class="uk-accordion-content"> |
| |
| <li class=""> |
| <a href="https://apache.org/events/current-event" target="_blank" rel="noopener noreferrer"> |
| Events |
| <span uk-icon="link"></span> |
| </a> |
| |
| |
| |
| </li> |
| |
| <li class=""> |
| <a href="https://www.apache.org/licenses" target="_blank" rel="noopener noreferrer"> |
| License |
| <span uk-icon="link"></span> |
| </a> |
| |
| |
| |
| </li> |
| |
| <li class=""> |
| <a href="https://privacy.apache.org/policies/privacy-policy-public.html" target="_blank" rel="noopener noreferrer"> |
| Privacy |
| <span uk-icon="link"></span> |
| </a> |
| |
| |
| |
| </li> |
| |
| <li class=""> |
| <a href="https://www.apache.org/security/" target="_blank" rel="noopener noreferrer"> |
| Security |
| <span uk-icon="link"></span> |
| </a> |
| |
| |
| |
| </li> |
| |
| <li class=""> |
| <a href="https://www.apache.org/foundation/sponsorship.html" target="_blank" rel="noopener noreferrer"> |
| Sponsorship |
| <span uk-icon="link"></span> |
| </a> |
| |
| |
| |
| </li> |
| |
| <li class=""> |
| <a href="https://www.apache.org/foundation/thanks.html" target="_blank" rel="noopener noreferrer"> |
| Thanks |
| <span uk-icon="link"></span> |
| </a> |
| |
| |
| |
| </li> |
| |
| </ul> |
| |
| </li> |
| |
| |
| </ul> |
| </div> |
| </div> |
| <main> |
| <div class="uk-container"> |
| <h1 id="apache-hahahugoshortcode-s0-hbhb-releases">Apache <span class="ni">Ni</span><span class="fi">Fi</span> |
| Releases</h1> |
| <p>This document describes the steps required to build and release an official version of the project.</p> |
| <h2 id="objective">Objective</h2> |
| <p>Produce an official Apache NiFi release from a current source branch.</p> |
| <h1 id="background-information">Background Information</h1> |
| <p>Following the release guide requires understanding several important terms and procedures.</p> |
| <h2 id="reference-documentation">Reference Documentation</h2> |
| <ul> |
| <li>Licensing |
| <ul> |
| <li><a href="https://apache.org/licenses/LICENSE-2.0">Apache License V2.0</a></li> |
| <li><a href="https://www.apache.org/legal/resolved.html">Apache Legal License/Resolved</a></li> |
| <li><a href="https://www.apache.org/dev/apply-license.html">Apache How-to Apply License</a></li> |
| </ul> |
| </li> |
| <li>Release Policy and Guidelines |
| <ul> |
| <li><a href="https://www.apache.org/licenses/exports/">Apache Export Classifications</a></li> |
| <li><a href="https://www.apache.org/dev/release.html">Apache Release Policy</a></li> |
| <li><a href="https://www.apache.org/dev/release-publishing">Apache Release Guide</a></li> |
| </ul> |
| </li> |
| <li>Environment Configuration and Release Process |
| <ul> |
| <li><a href="https://www.apache.org/dev/openpgp.html">Apache Cryptography with OpenPGP</a></li> |
| <li><a href="http://www.apache.org/dev/release-signing.html">Apache Signing Releases</a></li> |
| <li><a href="https://www.apache.org/dev/publishing-maven-artifacts.html">Apache Publishing Maven Releases</a></li> |
| </ul> |
| </li> |
| </ul> |
| <h2 id="glossary-of-terms">Glossary of Terms</h2> |
| <ul> |
| <li><strong>Release Manager</strong> (RM) - PMC Member acting as <a href="https://www.apache.org/dev/release-publishing.html#release_manager">Release Manager</a> for a particular version</li> |
| <li><strong>Release Candidate</strong> (RC) - Tagged iteration of the source branch proposed for a vote by the project community</li> |
| <li><strong>Community</strong> - <a href="https://www.apache.org/foundation/glossary.html#Community">Group of people</a> interested in the project, both users and maintainers</li> |
| <li><strong>PMC</strong> - <a href="https://www.apache.org/foundation/glossary.html#PMC">Project Management Committee</a> members who oversee the project</li> |
| <li><strong>Committer</strong> - <a href="https://www.apache.org/foundation/glossary.html#Committer">Committers</a> have the privilege to commit changes to the project repository</li> |
| </ul> |
| <h2 id="variable-references">Variable References</h2> |
| <p>The release guide references names and values that vary for each version. These values have been written as shell |
| variable references.</p> |
| <p>For example, when referencing a variable named <code>${NIFI_VERSION}</code> in a tag such as <code>nifi-${NIFI_VERSION}</code>, the |
| variable reference should be replaced with the current value for the Release Candidate build. When preparing a release |
| of Apache NiFi <code>0.7.0</code>, the tag would be rendered as <code>nifi-0.7.0</code>.</p> |
| <p>The example values reflect the release details for Apache NiFi 0.7.0 Release Candidate 2.</p> |
| <table> |
| <thead> |
| <tr> |
| <th>Variable</th> |
| <th>Example Value</th> |
| <th>Description</th> |
| </tr> |
| </thead> |
| <tbody> |
| <tr> |
| <td>${BRANCH}</td> |
| <td>main</td> |
| <td>Source development branch on which the release is based</td> |
| </tr> |
| <tr> |
| <td>${NIFI_VERSION}</td> |
| <td>0.7.0</td> |
| <td>Version number targeted for release</td> |
| </tr> |
| <tr> |
| <td>${NEXT_VERSION}</td> |
| <td>0.8.0-SNAPSHOT</td> |
| <td>Future version number for development after the release</td> |
| </tr> |
| <tr> |
| <td>${JIRA_TICKET}</td> |
| <td>NIFI-2112</td> |
| <td>Jira issue number for tracking release tasks</td> |
| </tr> |
| <tr> |
| <td>${RC}</td> |
| <td>2</td> |
| <td>Release Candidate number starting with 1 for the first build</td> |
| </tr> |
| <tr> |
| <td>${RC_TAG_COMMIT_ID}</td> |
| <td></td> |
| <td>Hexadecimal Git commit hash of the Release Candidate tag</td> |
| </tr> |
| <tr> |
| <td>${STAGING_REPO_ID}</td> |
| <td>orgapachenifi-1000</td> |
| <td>Nexus Repository identifier for staged Maven artifacts</td> |
| </tr> |
| <tr> |
| <td>${RM_USERID}</td> |
| <td>username</td> |
| <td>Apache account identifier of the Release Manager</td> |
| </tr> |
| <tr> |
| <td>${RELEASE_TAG}</td> |
| <td>rel/nifi-0.7.0</td> |
| <td>Git repository tag associated with the source to be released</td> |
| </tr> |
| <tr> |
| <td>${VOTE_THREAD_URL}</td> |
| <td></td> |
| <td>URL for the Apache Mailing List archive of the release vote thread</td> |
| </tr> |
| </tbody> |
| </table> |
| <h1 id="release-overview">Release Overview</h1> |
| <p>The release process includes steps performed by the Release Manager as well as the project community.</p> |
| <h2 id="process-summary">Process Summary</h2> |
| <ol> |
| <li>Community member suggests a release timeline and initiates a discussion email thread</li> |
| <li>PMC member volunteers to act as the Release Manager for the version</li> |
| <li>RM validates the source branch and stages the code, Maven artifacts, and distributable files for an RC build</li> |
| <li>RM sends a vote email thread for the RC build</li> |
| <li>PMC members and community contributors vote to approve or reject the RC build |
| <ol> |
| <li>RM cancels a vote thread for a rejected RC build</li> |
| <li>RM identifies issues for resolution and prepares a new RC build</li> |
| </ol> |
| </li> |
| <li>RM publishes build artifacts for an approved RC build</li> |
| </ol> |
| <h1 id="release-candidate-preparation">Release Candidate Preparation</h1> |
| <p>The Release Manager is responsible for creating, signing, and staging artifacts for a Release Candidate build.</p> |
| <h2 id="configure-environment">Configure Environment</h2> |
| <ul> |
| <li> |
| <p>Follow the steps outlined in the <a href="https://nifi.apache.org/quickstart.html">Quickstart Guide</a> to prepare the development system</p> |
| </li> |
| <li> |
| <p>Configure Maven <code>settings.xml</code> with a profile named <code>signing</code> profile and a <code>server</code> entry for |
| <code>repository.apache.org</code> as shown. <a href="http://blog.sonatype.com/2009/10/maven-tips-and-tricks-encrypting-passwords">Sonatype</a> provides instructions for encrypting Maven |
| passwords</p> |
| </li> |
| </ul> |
| <div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-xml" data-lang="xml"><span style="color:#f92672"><profile></span> |
| <span style="color:#f92672"><id></span>signing<span style="color:#f92672"></id></span> |
| <span style="color:#f92672"><properties></span> |
| <span style="color:#f92672"><mavenExecutorId></span>forked-path<span style="color:#f92672"></mavenExecutorId></span> |
| <span style="color:#f92672"><gpg.keyname></span>${RM_USERID}@apache.org<span style="color:#f92672"></gpg.keyname></span> |
| <span style="color:#f92672"><gpg.passphrase></span>REPLACE-WITH-ENCRYPTED-GPG-PASSPHRASE<span style="color:#f92672"></gpg.passphrase></span> |
| <span style="color:#f92672"></properties></span> |
| <span style="color:#f92672"></profile></span> |
| |
| <span style="color:#f92672"><servers></span> |
| <span style="color:#f92672"><server></span> |
| <span style="color:#f92672"><id></span>repository.apache.org<span style="color:#f92672"></id></span> |
| <span style="color:#f92672"><username></span>${RM_USERID}<span style="color:#f92672"></username></span> |
| <span style="color:#f92672"><password></span>REPLACE-WITH-ENCRYPTED-REPOSITORY-PASSWORD<span style="color:#f92672"></password></span> |
| <span style="color:#f92672"></server></span> |
| <span style="color:#f92672"></servers></span> |
| </code></pre></div><ul> |
| <li>Confirm that the local Git workspace is configured with an <code>origin</code> remote pointing to a personal fork of the |
| project source, and an <code>upstream</code> remote pointing to the Apache Git Repository</li> |
| </ul> |
| <div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-bash" data-lang="bash">git remote -v |
| |
| upstream https://gitbox.apache.org/repos/asf/nifi.git <span style="color:#f92672">(</span>fetch<span style="color:#f92672">)</span> |
| upstream https://gitbox.apache.org/repos/asf/nifi.git <span style="color:#f92672">(</span>push<span style="color:#f92672">)</span> |
| origin https://github.com/<span style="color:#e6db74">${</span>RM_USERID<span style="color:#e6db74">}</span>/nifi.git <span style="color:#f92672">(</span>fetch<span style="color:#f92672">)</span> |
| origin https://github.com/<span style="color:#e6db74">${</span>RM_USERID<span style="color:#e6db74">}</span>/nifi.git <span style="color:#f92672">(</span>push<span style="color:#f92672">)</span> |
| </code></pre></div><h2 id="update-tracking">Update Tracking</h2> |
| <ul> |
| <li> |
| <p>Create a <a href="https://issues.apache.org/jira/browse/NIFI">Jira issue</a> for tracking the release process with the |
| <code>Fix Version</code> field set to <code>${NIFI_VERSION}</code>. The Jira issue number will be referenced as <code>${JIRA_TICKET}</code> in subsequent |
| steps</p> |
| </li> |
| <li> |
| <p>Create a new version under |
| <a href="https://issues.apache.org/jira/projects/NIFI?selectedItem=com.atlassian.jira.jira-projects-plugin:release-page&status=unreleased">Jira Releases</a> |
| with the <code>Version name</code> set to the next minor release version number</p> |
| </li> |
| <li> |
| <p>Create a new version section in project <a href="https://cwiki.apache.org/confluence/display/NIFI/Release+Notes">Release Notes</a> highlighting notable features and fixes</p> |
| </li> |
| </ul> |
| <h2 id="build-artifacts">Build Artifacts</h2> |
| <ul> |
| <li>Create a new Release Candidate branch from the source development branch named with the Jira issue and RC number</li> |
| </ul> |
| <div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-bash" data-lang="bash">git checkout -b <span style="color:#e6db74">${</span>JIRA_TICKET<span style="color:#e6db74">}</span>-RC<span style="color:#e6db74">${</span>RC<span style="color:#e6db74">}</span> <span style="color:#e6db74">${</span>BRANCH<span style="color:#e6db74">}</span> |
| </code></pre></div><ul> |
| <li>Run Maven build with standard profiles</li> |
| </ul> |
| <div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-bash" data-lang="bash">./mvnw -T 2C -P contrib-check clean install |
| </code></pre></div><h2 id="stage-artifacts">Stage Artifacts</h2> |
| <ul> |
| <li>Set the <code>GPG_TTY</code> environment variable to allow <code>gpg</code> password prompts for artifact signing</li> |
| </ul> |
| <div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-bash" data-lang="bash">export GPG_TTY<span style="color:#f92672">=</span><span style="color:#66d9ef">$(</span>tty<span style="color:#66d9ef">)</span> |
| </code></pre></div><ul> |
| <li>Run Maven release preparation with <code>signing</code> and profile using RC version numbers</li> |
| </ul> |
| <div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-bash" data-lang="bash">./mvnw release:prepare -Psigning <span style="color:#ae81ff">\ |
| </span><span style="color:#ae81ff"></span>-DscmCommentPrefix<span style="color:#f92672">=</span><span style="color:#e6db74">"</span><span style="color:#e6db74">${</span>JIRA_TICKET<span style="color:#e6db74">}</span><span style="color:#e6db74">-RC</span><span style="color:#e6db74">${</span>RC<span style="color:#e6db74">}</span><span style="color:#e6db74"> "</span> <span style="color:#ae81ff">\ |
| </span><span style="color:#ae81ff"></span>-Dtag<span style="color:#f92672">=</span><span style="color:#e6db74">"nifi-</span><span style="color:#e6db74">${</span>NIFI_VERSION<span style="color:#e6db74">}</span><span style="color:#e6db74">-RC</span><span style="color:#e6db74">${</span>RC<span style="color:#e6db74">}</span><span style="color:#e6db74">"</span> <span style="color:#ae81ff">\ |
| </span><span style="color:#ae81ff"></span>-DreleaseVersion<span style="color:#f92672">=</span><span style="color:#e6db74">"</span><span style="color:#e6db74">${</span>NIFI_VERSION<span style="color:#e6db74">}</span><span style="color:#e6db74">"</span> <span style="color:#ae81ff">\ |
| </span><span style="color:#ae81ff"></span>-DdevelopmentVersion<span style="color:#f92672">=</span><span style="color:#e6db74">"</span><span style="color:#e6db74">${</span>NEXT_VERSION<span style="color:#e6db74">}</span><span style="color:#e6db74">"</span> <span style="color:#ae81ff">\ |
| </span><span style="color:#ae81ff"></span>-Darguments<span style="color:#f92672">=</span><span style="color:#e6db74">"-DskipTests"</span> |
| </code></pre></div><ul> |
| <li> |
| <p>Review release preparation results and use <a href="https://maven.apache.org/maven-release/maven-release-plugin/rollback-mojo.html">rollback</a> |
| and <a href="https://maven.apache.org/maven-release/maven-release-plugin/clean-mojo.html">clean</a> commands when necessary to |
| start over when encountering failures</p> |
| </li> |
| <li> |
| <p>Run Maven release with <code>signing</code> and profile to deploy artifacts to the Apache Nexus Repository</p> |
| </li> |
| </ul> |
| <div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-bash" data-lang="bash">./mvnw release:perform -Psigning <span style="color:#ae81ff">\ |
| </span><span style="color:#ae81ff"></span>-DscmCommentPrefix<span style="color:#f92672">=</span><span style="color:#e6db74">"</span><span style="color:#e6db74">${</span>JIRA_TICKET<span style="color:#e6db74">}</span><span style="color:#e6db74">-RC</span><span style="color:#e6db74">${</span>RC<span style="color:#e6db74">}</span><span style="color:#e6db74"> "</span> <span style="color:#ae81ff">\ |
| </span><span style="color:#ae81ff"></span>-Darguments<span style="color:#f92672">=</span><span style="color:#e6db74">"-DskipTests"</span> |
| </code></pre></div><ul> |
| <li>Open the Apache Nexus <a href="https://repository.apache.org/#stagingRepositories">Staging Repository</a> and login to view the staging repository that |
| Maven release created</li> |
| </ul> |
| <h2 id="validate-artifacts">Validate Artifacts</h2> |
| <ul> |
| <li>Create local staging directory</li> |
| </ul> |
| <div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-bash" data-lang="bash">STAGING_DIR<span style="color:#f92672">=</span>~/staging |
| mkdir <span style="color:#e6db74">${</span>STAGING_DIR<span style="color:#e6db74">}</span> |
| cd <span style="color:#e6db74">${</span>STAGING_DIR<span style="color:#e6db74">}</span> |
| </code></pre></div><ul> |
| <li>Download the source release and signature from the Apache Nexus Staging Repository</li> |
| </ul> |
| <div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-bash" data-lang="bash">SOURCE_RELEASE_ZIP<span style="color:#f92672">=</span><span style="color:#e6db74">"https://repository.apache.org/service/local/repositories/</span><span style="color:#e6db74">${</span>STAGING_REPO_ID<span style="color:#e6db74">}</span><span style="color:#e6db74">/content/org/apache/nifi/nifi/</span><span style="color:#e6db74">${</span>NIFI_VERSION<span style="color:#e6db74">}</span><span style="color:#e6db74">/nifi-</span><span style="color:#e6db74">${</span>NIFI_VERSION<span style="color:#e6db74">}</span><span style="color:#e6db74">-source-release.zip"</span> |
| wget <span style="color:#e6db74">${</span>SOURCE_RELEASE_ZIP<span style="color:#e6db74">}</span> |
| wget <span style="color:#e6db74">${</span>SOURCE_RELEASE_ZIP<span style="color:#e6db74">}</span>.asc |
| </code></pre></div><ul> |
| <li>Verify the source release signature using the <code>gpg</code> command</li> |
| </ul> |
| <div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-bash" data-lang="bash">SOURCE_RELEASE_ZIP_FILE<span style="color:#f92672">=</span><span style="color:#e6db74">"nifi-</span><span style="color:#e6db74">${</span>NIFI_VERSION<span style="color:#e6db74">}</span><span style="color:#e6db74">-source-release.zip"</span> |
| gpg --verify <span style="color:#e6db74">${</span>SOURCE_RELEASE_ZIP_FILE<span style="color:#e6db74">}</span>.asc <span style="color:#e6db74">${</span>SOURCE_RELEASE_ZIP_FILE<span style="color:#e6db74">}</span> |
| </code></pre></div><ul> |
| <li>Extract source release archive files</li> |
| </ul> |
| <div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-bash" data-lang="bash">unzip <span style="color:#e6db74">${</span>SOURCE_RELEASE_ZIP_FILE<span style="color:#e6db74">}</span> |
| cd nifi-<span style="color:#e6db74">${</span>NIFI_VERSION<span style="color:#e6db74">}</span> |
| </code></pre></div><ul> |
| <li>Run Maven command to package binaries</li> |
| </ul> |
| <div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-bash" data-lang="bash">./mvnw package -pl <span style="color:#ae81ff">\ |
| </span><span style="color:#ae81ff"></span>:minifi-assembly,<span style="color:#ae81ff">\ |
| </span><span style="color:#ae81ff"></span>:minifi-tookit-assembly,<span style="color:#ae81ff">\ |
| </span><span style="color:#ae81ff"></span>:nifi-assembly,<span style="color:#ae81ff">\ |
| </span><span style="color:#ae81ff"></span>:nifi-kafka-connector-assembly,<span style="color:#ae81ff">\ |
| </span><span style="color:#ae81ff"></span>:nifi-toolkit-assembly,<span style="color:#ae81ff">\ |
| </span><span style="color:#ae81ff"></span>:nifi-registry-assembly,<span style="color:#ae81ff">\ |
| </span><span style="color:#ae81ff"></span>:nifi-registry-toolkit-assembly,<span style="color:#ae81ff">\ |
| </span><span style="color:#ae81ff"></span>:nifi-stateless-assembly |
| </code></pre></div><ul> |
| <li>Copy binaries to local artifacts directory</li> |
| </ul> |
| <div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-bash" data-lang="bash">ARTIFACTS_DIR<span style="color:#f92672">=</span>~/staging/artifacts |
| mkdir <span style="color:#e6db74">${</span>ARTIFACTS_DIR<span style="color:#e6db74">}</span> |
| cp minifi/minifi-assembly/target/minifi-<span style="color:#e6db74">${</span>NIFI_VERSION<span style="color:#e6db74">}</span>-bin.zip <span style="color:#e6db74">${</span>ARTIFACTS_DIR<span style="color:#e6db74">}</span> |
| cp minifi/minifi-toolkit/minifi-toolkit-assembly/target/minifi-toolkit-<span style="color:#e6db74">${</span>NIFI_VERSION<span style="color:#e6db74">}</span>-bin.zip <span style="color:#e6db74">${</span>ARTIFACTS_DIR<span style="color:#e6db74">}</span> |
| cp nifi-assembly/target/nifi-<span style="color:#e6db74">${</span>NIFI_VERSION<span style="color:#e6db74">}</span>-bin.zip <span style="color:#e6db74">${</span>ARTIFACTS_DIR<span style="color:#e6db74">}</span> |
| cp nifi-external/nifi-kafka-connector-assembly/target/nifi-kafka-connector-assembly-<span style="color:#e6db74">${</span>NIFI_VERSION<span style="color:#e6db74">}</span>.zip <span style="color:#e6db74">${</span>ARTIFACTS_DIR<span style="color:#e6db74">}</span> |
| cp nifi-registry/nifi-registry-assembly/target/nifi-registry-<span style="color:#e6db74">${</span>NIFI_VERSION<span style="color:#e6db74">}</span>-bin.zip <span style="color:#e6db74">${</span>ARTIFACTS_DIR<span style="color:#e6db74">}</span> |
| cp nifi-registry/nifi-registry-toolkit/nifi-registry-toolkit-assembly/target/nifi-registry-toolkit-<span style="color:#e6db74">${</span>NIFI_VERSION<span style="color:#e6db74">}</span>-bin.zip <span style="color:#e6db74">${</span>ARTIFACTS_DIR<span style="color:#e6db74">}</span> |
| cp nifi-stateless/nifi-stateless-assembly/target/nifi-stateless-<span style="color:#e6db74">${</span>NIFI_VERSION<span style="color:#e6db74">}</span>-bin.zip <span style="color:#e6db74">${</span>ARTIFACTS_DIR<span style="color:#e6db74">}</span> |
| cp nifi-toolkit/nifi-toolkit-assembly/target/nifi-toolkit-<span style="color:#e6db74">${</span>NIFI_VERSION<span style="color:#e6db74">}</span>-bin.zip <span style="color:#e6db74">${</span>ARTIFACTS_DIR<span style="color:#e6db74">}</span> |
| cp <span style="color:#e6db74">${</span>STAGING_DIR<span style="color:#e6db74">}</span>/nifi-<span style="color:#e6db74">${</span>NIFI_VERSION<span style="color:#e6db74">}</span>-source-release.zip <span style="color:#e6db74">${</span>ARTIFACTS_DIR<span style="color:#e6db74">}</span> |
| cp <span style="color:#e6db74">${</span>STAGING_DIR<span style="color:#e6db74">}</span>/nifi-<span style="color:#e6db74">${</span>NIFI_VERSION<span style="color:#e6db74">}</span>-source-release.zip.asc <span style="color:#e6db74">${</span>ARTIFACTS_DIR<span style="color:#e6db74">}</span> |
| cd <span style="color:#e6db74">${</span>ARTIFACTS_DIR<span style="color:#e6db74">}</span> |
| </code></pre></div><ul> |
| <li>Create OpenPGP signatures for binary files from the cloned repository directory</li> |
| </ul> |
| <div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-bash" data-lang="bash">gpg -a -b --digest-algo<span style="color:#f92672">=</span>SHA512 minifi-<span style="color:#e6db74">${</span>NIFI_VERSION<span style="color:#e6db74">}</span>-bin.zip |
| gpg -a -b --digest-algo<span style="color:#f92672">=</span>SHA512 minifi-toolkit-<span style="color:#e6db74">${</span>NIFI_VERSION<span style="color:#e6db74">}</span>-bin.zip |
| gpg -a -b --digest-algo<span style="color:#f92672">=</span>SHA512 nifi-<span style="color:#e6db74">${</span>NIFI_VERSION<span style="color:#e6db74">}</span>-bin.zip |
| gpg -a -b --digest-algo<span style="color:#f92672">=</span>SHA512 nifi-kafka-connector-assembly-<span style="color:#e6db74">${</span>NIFI_VERSION<span style="color:#e6db74">}</span>.zip |
| gpg -a -b --digest-algo<span style="color:#f92672">=</span>SHA512 nifi-registry-<span style="color:#e6db74">${</span>NIFI_VERSION<span style="color:#e6db74">}</span>-bin.zip |
| gpg -a -b --digest-algo<span style="color:#f92672">=</span>SHA512 nifi-registry-toolkit-<span style="color:#e6db74">${</span>NIFI_VERSION<span style="color:#e6db74">}</span>-bin.zip |
| gpg -a -b --digest-algo<span style="color:#f92672">=</span>SHA512 nifi-stateless-<span style="color:#e6db74">${</span>NIFI_VERSION<span style="color:#e6db74">}</span>-bin.zip |
| gpg -a -b --digest-algo<span style="color:#f92672">=</span>SHA512 nifi-toolkit-<span style="color:#e6db74">${</span>NIFI_VERSION<span style="color:#e6db74">}</span>-bin.zip |
| </code></pre></div><ul> |
| <li>Create SHA-256 hashes for binary files from the cloned repository directory</li> |
| </ul> |
| <div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-bash" data-lang="bash">sh -c <span style="color:#e6db74">'sha256sum $1 | cut -d " " -f 1 > $1.sha256'</span> -- minifi-<span style="color:#e6db74">${</span>NIFI_VERSION<span style="color:#e6db74">}</span>-bin.zip |
| sh -c <span style="color:#e6db74">'sha256sum $1 | cut -d " " -f 1 > $1.sha256'</span> -- minifi-toolkit-<span style="color:#e6db74">${</span>NIFI_VERSION<span style="color:#e6db74">}</span>-bin.zip |
| sh -c <span style="color:#e6db74">'sha256sum $1 | cut -d " " -f 1 > $1.sha256'</span> -- nifi-<span style="color:#e6db74">${</span>NIFI_VERSION<span style="color:#e6db74">}</span>-source-release.zip |
| sh -c <span style="color:#e6db74">'sha256sum $1 | cut -d " " -f 1 > $1.sha256'</span> -- nifi-<span style="color:#e6db74">${</span>NIFI_VERSION<span style="color:#e6db74">}</span>-bin.zip |
| sh -c <span style="color:#e6db74">'sha256sum $1 | cut -d " " -f 1 > $1.sha256'</span> -- nifi-kafka-connector-assembly-<span style="color:#e6db74">${</span>NIFI_VERSION<span style="color:#e6db74">}</span>.zip |
| sh -c <span style="color:#e6db74">'sha256sum $1 | cut -d " " -f 1 > $1.sha256'</span> -- nifi-registry-<span style="color:#e6db74">${</span>NIFI_VERSION<span style="color:#e6db74">}</span>-bin.zip |
| sh -c <span style="color:#e6db74">'sha256sum $1 | cut -d " " -f 1 > $1.sha256'</span> -- nifi-registry-toolkit-<span style="color:#e6db74">${</span>NIFI_VERSION<span style="color:#e6db74">}</span>-bin.zip |
| sh -c <span style="color:#e6db74">'sha256sum $1 | cut -d " " -f 1 > $1.sha256'</span> -- nifi-stateless-<span style="color:#e6db74">${</span>NIFI_VERSION<span style="color:#e6db74">}</span>-bin.zip |
| sh -c <span style="color:#e6db74">'sha256sum $1 | cut -d " " -f 1 > $1.sha256'</span> -- nifi-toolkit-<span style="color:#e6db74">${</span>NIFI_VERSION<span style="color:#e6db74">}</span>-bin.zip |
| </code></pre></div><ul> |
| <li>Create SHA-512 hashes for binary files from the cloned repository directory</li> |
| </ul> |
| <div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-bash" data-lang="bash">sh -c <span style="color:#e6db74">'sha512sum $1 | cut -d " " -f 1 > $1.sha256'</span> -- minifi-<span style="color:#e6db74">${</span>NIFI_VERSION<span style="color:#e6db74">}</span>-bin.zip |
| sh -c <span style="color:#e6db74">'sha512sum $1 | cut -d " " -f 1 > $1.sha256'</span> -- minifi-toolkit-<span style="color:#e6db74">${</span>NIFI_VERSION<span style="color:#e6db74">}</span>-bin.zip |
| sh -c <span style="color:#e6db74">'sha512sum $1 | cut -d " " -f 1 > $1.sha256'</span> -- nifi-<span style="color:#e6db74">${</span>NIFI_VERSION<span style="color:#e6db74">}</span>-source-release.zip |
| sh -c <span style="color:#e6db74">'sha512sum $1 | cut -d " " -f 1 > $1.sha256'</span> -- nifi-<span style="color:#e6db74">${</span>NIFI_VERSION<span style="color:#e6db74">}</span>-bin.zip |
| sh -c <span style="color:#e6db74">'sha512sum $1 | cut -d " " -f 1 > $1.sha256'</span> -- nifi-kafka-connector-assembly-<span style="color:#e6db74">${</span>NIFI_VERSION<span style="color:#e6db74">}</span>.zip |
| sh -c <span style="color:#e6db74">'sha512sum $1 | cut -d " " -f 1 > $1.sha256'</span> -- nifi-registry-<span style="color:#e6db74">${</span>NIFI_VERSION<span style="color:#e6db74">}</span>-bin.zip |
| sh -c <span style="color:#e6db74">'sha512sum $1 | cut -d " " -f 1 > $1.sha256'</span> -- nifi-registry-toolkit-<span style="color:#e6db74">${</span>NIFI_VERSION<span style="color:#e6db74">}</span>-bin.zip |
| sh -c <span style="color:#e6db74">'sha512sum $1 | cut -d " " -f 1 > $1.sha256'</span> -- nifi-stateless-<span style="color:#e6db74">${</span>NIFI_VERSION<span style="color:#e6db74">}</span>-bin.zip |
| sh -c <span style="color:#e6db74">'sha512sum $1 | cut -d " " -f 1 > $1.sha256'</span> -- nifi-toolkit-<span style="color:#e6db74">${</span>NIFI_VERSION<span style="color:#e6db74">}</span>-bin.zip |
| </code></pre></div><h2 id="publish-artifacts">Publish Artifacts</h2> |
| <ul> |
| <li>Push the Release Candidate branch to the Apache Git Repository</li> |
| </ul> |
| <div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-bash" data-lang="bash">git push upstream <span style="color:#e6db74">${</span>JIRA_TICKET<span style="color:#e6db74">}</span>-RC<span style="color:#e6db74">${</span>RC<span style="color:#e6db74">}</span> |
| </code></pre></div><ul> |
| <li>Push the Release Candidate tag to the Apache Git Repository</li> |
| </ul> |
| <div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-bash" data-lang="bash">git push upstream nifi-<span style="color:#e6db74">${</span>NIFI_VERSION<span style="color:#e6db74">}</span>-RC<span style="color:#e6db74">${</span>RC<span style="color:#e6db74">}</span> |
| </code></pre></div><ul> |
| <li>Checkout Apache Distribution Repository using Subversion</li> |
| </ul> |
| <div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-bash" data-lang="bash">cd <span style="color:#e6db74">${</span>STAGING_DIR<span style="color:#e6db74">}</span> |
| svn checkout https://dist.apache.org/repos/dist/dev/nifi |
| cd nifi |
| </code></pre></div><ul> |
| <li>Copy and commit binaries to Apache Distribution Repository</li> |
| </ul> |
| <div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-bash" data-lang="bash">cp -r <span style="color:#e6db74">${</span>ARTIFACTS_DIR<span style="color:#e6db74">}</span> nifi-<span style="color:#e6db74">${</span>NIFI_VERSION<span style="color:#e6db74">}</span> |
| svn add nifi-<span style="color:#e6db74">${</span>NIFI_VERSION<span style="color:#e6db74">}</span> |
| svn commit -m <span style="color:#e6db74">"</span><span style="color:#e6db74">${</span>JIRA_TICKET<span style="color:#e6db74">}</span><span style="color:#e6db74"> Uploaded NiFi </span><span style="color:#e6db74">${</span>NIFI_VERSION<span style="color:#e6db74">}</span><span style="color:#e6db74">-RC</span><span style="color:#e6db74">${</span>RC<span style="color:#e6db74">}</span><span style="color:#e6db74"> artifacts"</span> |
| </code></pre></div><h2 id="release-candidate-voting">Release Candidate Voting</h2> |
| <p>The release vote process should take place for <strong>72 hours</strong> under standard circumstances.</p> |
| <p>The Release Manager is responsible for sending the initial vote thread and tabulating results.</p> |
| <p>The Release Manager sends an email to the NiFi Developers Mailing List calling for a vote on the Release Candidate.</p> |
| <pre tabindex="0"><code>TO: dev@nifi.apache.org |
| SUBJECT: [VOTE] Release Apache NiFi ${NIFI_VERSION} |
| </code></pre><pre tabindex="0"><code>Team, |
| |
| I am pleased to be calling this vote for the source release of Apache NiFi ${NIFI_VERSION}. |
| |
| Please review the following guide for how to verify a release candidate build: |
| |
| https://cwiki.apache.org/confluence/display/NIFI/Release+Candidate+Verification |
| |
| The source being voted on and the convenicen binaries are available in the Apache Repository: |
| |
| https://dist.apache.org/repos/dist/dev/nifi/nifi-${NIFI_VERSION} |
| |
| The build artifacts are available in the Apache Nexus Repository: |
| |
| https://repository.apache.org/content/repositories/${STAGING_REPO_ID} |
| |
| Git Tag: nifi-${NIFI_VERSION}-RC${RC} |
| Git Commit ID: ${RC_TAG_COMMIT_ID} |
| GitHub Commit: https://github.com/apache/nifi/commit/${RC_TAG_COMMIT_ID} |
| |
| Checksums of nifi-${NIFI_VERSION}-source-release.zip: |
| |
| SHA256: ${SHA256_HASH} |
| SHA512: ${SHA512_HASH} |
| |
| Release artifacts are signed with the following key: |
| |
| https://people.apache.org/keys/committer/${RM_USERID}.asc |
| |
| KEYS file is available in the Apache Repository: |
| |
| https://dist.apache.org/repos/dist/release/nifi/KEYS |
| |
| Issues resolved in this version: ${ISSUES_RESOLVED} |
| |
| https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12316020&version=12329307 |
| |
| Release note highlights can be found on the project wiki: |
| |
| https://cwiki.apache.org/confluence/display/NIFI/Release+Notes |
| |
| The vote will be open for 72 hours. |
| |
| Please download the release candidate and evaluate the necessary items including checking |
| hashes, signatures, build from source, and test. |
| |
| Please vote: |
| |
| [ ] +1 Release this package as nifi-${NIFI_VERSION} |
| [ ] +0 no opinion |
| [ ] -1 Do not release this package because... |
| </code></pre><p>PMC members can cast <strong>binding</strong> votes. Committers and community members can cast <strong>non-binding</strong> votes.</p> |
| <p>The Release Manager can cancel a vote in response to negative findings. Canceling a vote requires sending an email with |
| <code>[CANCEL]</code> in the subject line as follows:</p> |
| <pre tabindex="0"><code>SUBJECT: [CANCEL][VOTE] Release Apache NiFi ${NIFI_VERSION}-RC${RC} |
| </code></pre><p>Approving a Release Candidate build requires at least <strong>3 binding</strong> positive votes from project PMC members and more |
| positive votes than negative votes.</p> |
| <p>The Release Manager sends an email to the NiFi Developers Mailing List with the vote results.</p> |
| <pre tabindex="0"><code>TO: dev@nifi.apache.org |
| SUBJECT: [RESULT][VOTE] Release Apache NiFi ${NIFI_VERSION}-RC${RC} |
| </code></pre><pre tabindex="0"><code>Apache NiFi Community, |
| |
| I am pleased to announce that the ${NIFI_VERSION} release of Apache NiFi passes: |
| |
| X +1 (binding) votes |
| Y +1 (non-binding) votes |
| 0 0 votes |
| 0 -1 votes |
| |
| Thanks to all who helped make this release possible! |
| |
| Here is the vote thread: ${VOTE_THREAD_URL} |
| </code></pre><h2 id="release-artifacts">Release Artifacts</h2> |
| <ul> |
| <li> |
| <p>Release Maven artifacts contained in Staging Repository on the <a href="https://repository.apache.org/#stagingRepositories">Apache Nexus Repository</a></p> |
| </li> |
| <li> |
| <p>Move source and binary artifacts to the release directory on the Apache Distribution Repository</p> |
| </li> |
| </ul> |
| <div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-bash" data-lang="bash">DIST_DEV_URL<span style="color:#f92672">=</span>https://dist.apache.org/repos/dist/dev/nifi/nifi-<span style="color:#e6db74">${</span>NIFI_VERSION<span style="color:#e6db74">}</span> |
| DIST_RELEASE_URL<span style="color:#f92672">=</span>https://dist.apache.org/repos/dist/release/nifi/<span style="color:#e6db74">${</span>NIFI_VERSION<span style="color:#e6db74">}</span> |
| svn move -m <span style="color:#e6db74">"</span><span style="color:#e6db74">${</span>JIRA_TICKET<span style="color:#e6db74">}</span><span style="color:#e6db74">"</span> <span style="color:#e6db74">${</span>DIST_DEV_URL<span style="color:#e6db74">}</span> <span style="color:#e6db74">${</span>DIST_RELEASE_URL<span style="color:#e6db74">}</span> |
| </code></pre></div><ul> |
| <li>Merge the Release Candidate branch into the source development branch</li> |
| </ul> |
| <div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-bash" data-lang="bash">git checkout <span style="color:#e6db74">${</span>BRANCH<span style="color:#e6db74">}</span> |
| git merge --no-ff <span style="color:#e6db74">${</span>JIRA_TICKET<span style="color:#e6db74">}</span>-RC<span style="color:#e6db74">${</span>RC<span style="color:#e6db74">}</span> |
| git push upstream <span style="color:#e6db74">${</span>BRANCH<span style="color:#e6db74">}</span> |
| </code></pre></div><ul> |
| <li>Create signed Git tag for the release version</li> |
| </ul> |
| <div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-bash" data-lang="bash">export GPG_TTY<span style="color:#f92672">=</span><span style="color:#66d9ef">$(</span>tty<span style="color:#66d9ef">)</span> |
| COMMIT_ID<span style="color:#f92672">=</span><span style="color:#e6db74">`</span>git rev-list -n <span style="color:#ae81ff">1</span> nifi-<span style="color:#e6db74">${</span>NIFI_VERSION<span style="color:#e6db74">}</span>-RC<span style="color:#e6db74">${</span>RC<span style="color:#e6db74">}</span><span style="color:#e6db74">`</span> |
| RELEASE_TAG<span style="color:#f92672">=</span><span style="color:#e6db74">"rel/nifi-</span><span style="color:#e6db74">${</span>NIFI_VERSION<span style="color:#e6db74">}</span><span style="color:#e6db74">"</span> |
| git tag -s <span style="color:#e6db74">${</span>RELEASE_TAG<span style="color:#e6db74">}</span> -m <span style="color:#e6db74">"</span><span style="color:#e6db74">${</span>JIRA_TICKET<span style="color:#e6db74">}</span><span style="color:#e6db74"> Tagged NiFi </span><span style="color:#e6db74">${</span>NIFI_VERSION<span style="color:#e6db74">}</span><span style="color:#e6db74"> </span><span style="color:#e6db74">${</span>COMMIT_ID<span style="color:#e6db74">}</span><span style="color:#e6db74">"</span> |
| </code></pre></div><ul> |
| <li>Push Git tag to the Apache Git Repository</li> |
| </ul> |
| <div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-bash" data-lang="bash">git push upstream <span style="color:#e6db74">${</span>RELEASE_TAG<span style="color:#e6db74">}</span> |
| </code></pre></div><ul> |
| <li>Delete previous release version from the Apache Distribution Repository</li> |
| </ul> |
| <div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-bash" data-lang="bash">PREVIOUS_VERSION<span style="color:#f92672">=</span><span style="color:#e6db74">"0.6.0"</span> |
| PREVIOUS_RELEASE_URL<span style="color:#f92672">=</span><span style="color:#e6db74">"https://dist.apache.org/repos/dist/release/nifi/</span><span style="color:#e6db74">${</span>PREVIOUS_VERSION<span style="color:#e6db74">}</span><span style="color:#e6db74">"</span> |
| svn delete -m <span style="color:#e6db74">"</span><span style="color:#e6db74">${</span>JIRA_TICKET<span style="color:#e6db74">}</span><span style="color:#e6db74">"</span> <span style="color:#e6db74">${</span>PREVIOUS_RELEASE_URL<span style="color:#e6db74">}</span> |
| </code></pre></div><ul> |
| <li> |
| <p>Update Docker files with the next release version</p> |
| </li> |
| <li> |
| <p>Commit and push Docker version changes to the Apache Git Repository</p> |
| </li> |
| </ul> |
| <div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-bash" data-lang="bash">git commit -m <span style="color:#e6db74">"</span><span style="color:#e6db74">${</span>JIRA_TICKET<span style="color:#e6db74">}</span><span style="color:#e6db74"> Updated Docker version to </span><span style="color:#e6db74">${</span>NEXT_VERSION<span style="color:#e6db74">}</span><span style="color:#e6db74">"</span> |
| git push upstream <span style="color:#e6db74">${</span>BRANCH<span style="color:#e6db74">}</span> |
| </code></pre></div><h2 id="update-documentation">Update Documentation</h2> |
| <ul> |
| <li> |
| <p>Follow the <a href="https://cwiki.apache.org/confluence/display/NIFI/Website+Publishing">website publishing</a> instructions for |
| generating and updating project documentation</p> |
| </li> |
| <li> |
| <p>Clone the <a href="https://github.com/apache/nifi-site/">Apache NiFi Website</a> repository</p> |
| </li> |
| </ul> |
| <div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-bash" data-lang="bash">git clone https://gitbox.apache.org/repos/asf/nifi-site.git |
| cd nifi-site |
| </code></pre></div><ul> |
| <li> |
| <p>Update the current and previous version variables in |
| <a href="https://github.com/apache/nifi-site/blob/main/config.toml">config.toml</a></p> |
| </li> |
| <li> |
| <p>Update the documentation <code>RewriteRule</code> to the new released version in |
| <a href="https://github.com/apache/nifi-site/blob/main/static/.htaccess">.htaccess</a></p> |
| </li> |
| <li> |
| <p>Push changes to the <code>main</code> branch for automated build and publication</p> |
| </li> |
| </ul> |
| <div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-bash" data-lang="bash">git push origin main |
| </code></pre></div><h2 id="update-notes">Update Notes</h2> |
| <ul> |
| <li> |
| <p>Update |
| <a href="https://issues.apache.org/jira/projects/NIFI?selectedItem=com.atlassian.jira.jira-projects-plugin:release-page&status=unreleased">Jira Releases</a> |
| using the <code>Actions</code> button to <code>Release</code> the selected version</p> |
| </li> |
| <li> |
| <p>Update the <a href="https://cwiki.apache.org/confluence/display/NIFI/Migration+Guidance">Migration Guide</a> instructions</p> |
| </li> |
| <li> |
| <p>Update project <a href="https://cwiki.apache.org/confluence/display/NIFI/Release+Notes">Release Notes</a> with the date of the release</p> |
| </li> |
| </ul> |
| <h2 id="announce-release">Announce Release</h2> |
| <p>The Release Manager sends an email to the Apache Announcements List as well as project mailing lists.</p> |
| <pre tabindex="0"><code>TO: announce@apache.org, users@nifi.apache.org, dev@nifi.apache.org |
| SUBJECT: [ANNOUNCE] Apache NiFi ${NIFI_VERSION} Released |
| </code></pre><pre tabindex="0"><code>The Apache NiFi Team is pleased to announce the release of Apache NiFi ${NIFI_VERSION}. |
| |
| Apache NiFi is an easy to use, powerful, and reliable system to process and distribute |
| data. |
| |
| https://nifi.apache.org |
| |
| The release artifacts can be downloaded from the project website. |
| |
| https://nifi.apache.org/download/ |
| |
| Maven artifacts have been released and mirrored according to Apache distribution processes. |
| |
| Issues resolved in Apache NiFi ${NIFI_VERSION} are listed in Jira Release Notes. |
| |
| https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12316020&version=12329373 |
| |
| Highlights of the release are available on the project wiki. |
| |
| https://cwiki.apache.org/confluence/display/NIFI/Release+Notes |
| |
| Thank you, |
| The Apache NiFi Team |
| </code></pre> |
| </div> |
| </main> |
| <footer> |
| <div class="uk-container"> |
| <div class="uk-flex uk-grid uk-grid-large"> |
| <div class="uk-width-1-2@m"> |
| <p> |
| <a class="uk-link-reset" href="/"> |
| <img src="/images/apache-nifi-logo.svg" class="footer-logo" alt="Apache NiFi Logo"/> |
| </a> |
| <a class="uk-link-reset" href="https://apache.org"> |
| <img src="/images/apache-logo.svg" class="footer-logo uk-margin-left" alt="Apache Software Foundation Logo"/> |
| </a> |
| </p> |
| <p> |
| Copyright © 2024 The Apache Software Foundation under the terms of the |
| <a href="https://www.apache.org/licenses/LICENSE-2.0.html">Apache License, Version 2.0</a> |
| </p> |
| <p> |
| Apache NiFi, NiFi, and the NiFi logo are trademarks of |
| <a href="https://apache.org/">The Apache Software Foundation</a> |
| </p> |
| </div> |
| <div class="uk-width-1-4@m"> |
| <h3><a href="/">Project</a></h3> |
| <ul> |
| <li><a href="https://issues.apache.org/jira/browse/NIFI">Issues</a></li> |
| <li><a href="https://github.com/apache/nifi">Source</a></li> |
| <li><a href="https://www.linkedin.com/company/apache-nifi/">LinkedIn</a></li> |
| <li><a href="https://join.slack.com/t/apachenifi/shared_invite/zt-2ccusmst2-l2KrTzJLrGcHOO0V7~XD4g">Slack</a></li> |
| </ul> |
| </div> |
| <div class="uk-width-1-4@m"> |
| <h3><a href="https://www.apache.org/">Apache</a></h3> |
| <ul> |
| <li><a href="https://www.apache.org/licenses/">License</a></li> |
| <li><a href="https://privacy.apache.org/policies/privacy-policy-public.html">Privacy</a></li> |
| <li><a href="https://www.apache.org/foundation/sponsorship.html">Sponsorship</a></li> |
| <li><a href="https://www.apache.org/security/">Security</a></li> |
| <li><a href="https://www.apache.org/foundation/thanks.html">Thanks</a></li> |
| </ul> |
| </div> |
| </div> |
| </div> |
| </footer> |
| <script src="/uikit/js/uikit.min.js"></script> |
| <script src="/uikit/js/uikit-icons.min.js"></script> |
| </body> |
| </html> |