| <!DOCTYPE html> |
| <html class="no-js" lang="en"> |
| <head> |
| <title>Apache NiFi Release Guidelines</title> |
| <meta charset="utf-8" /> |
| <meta name="viewport" content="width=device-width, initial-scale=1.0" /> |
| <link rel="shortcut icon" href="/assets/images/nifi16.ico"/> |
| <link rel="stylesheet" href="/stylesheets/app.min.27f785d2dfa83c24896261ad5106f3c19ee004c4d04b8a1c4b22e03a3a9fcb2a.css"> |
| <link rel="stylesheet" href="/assets/stylesheets/font-awesome.min.css"> |
| <script src="/assets/js/modernizr.js"></script> |
| <script src="/assets/js/webfontloader.js"></script> |
| <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><div class="sticky contain-to-grid"> |
| <nav class="top-bar" data-topbar role="navigation"> |
| <ul class="title-area"> |
| <li class="name"> |
| <h1> |
| <a href="index.html"> |
| <img id="logo-top-bar" src="/assets/images/nifi-drop-white.svg" alt="Apache NiFi"/> |
| </a> |
| </h1> |
| </li> |
| |
| <li class="toggle-topbar menu-icon"><a href="#"><span></span></a></li> |
| </ul> |
| |
| <section class="top-bar-section"> |
| |
| <ul class="right"> |
| <li class="has-dropdown"> |
| <a href="#">Documentation</a> |
| <ul class="dropdown"> |
| <li><a href="project-documentation.html">Project Documentation 2.0.0-M1</a></li> |
| <li><a href="docs.html">Project Documentation 1.24.0</a></li> |
| <li><a href="security.html">Security Reporting</a></li> |
| <li><a href="faq.html">FAQ</a></li> |
| <li><a href="videos.html">Videos</a></li> |
| <li><a href="https://cwiki.apache.org/confluence/display/NIFI"><i class="fa fa-external-link external-link"></i>Wiki</a></li> |
| </ul> |
| </li> |
| <li class="has-dropdown"> |
| <a href="#">Downloads</a> |
| <ul class="dropdown"> |
| <li><a href="download.html">Download NiFi</a></li> |
| <li><a href="https://cwiki.apache.org/confluence/display/NIFI/Release+Notes"><i class="fa fa-external-link external-link"></i>Release Notes</a></li> |
| </ul> |
| </li> |
| <li class="has-dropdown"> |
| <a href="#">Community</a> |
| <ul class="dropdown"> |
| <li><a href="https://cwiki.apache.org/confluence/display/NIFI/Contributor+Guide"><i class="fa fa-external-link external-link"></i>Contributor Guide</a></li> |
| <li><a href="mailing_lists.html">Mailing Lists & Chat</a></li> |
| <li><a href="people.html">People</a></li> |
| <li><a href="powered-by-nifi.html">Powered by NiFi</a></li> |
| </ul> |
| </li> |
| <li class="has-dropdown"> |
| <a href="#">Development</a> |
| <ul class="dropdown"> |
| <li><a href="quickstart.html">Quickstart</a></li> |
| <li><a href="developer-guide.html">Developer Guide</a></li> |
| <li><a href="gpg.html">GPG Guide</a></li> |
| <li><a href="release-guide.html">Release Guide</a></li> |
| <li><a href="nifi-maven-release-guide.html">NAR Maven Plugin Release Guide</a></li> |
| <li><a href="fds-release-guide.html">FDS Release Guide</a></li> |
| <li><a href="licensing-guide.html">Licensing Guide</a></li> |
| <li><a href="https://gitbox.apache.org/repos/asf/nifi.git"><i class="fa fa-external-link external-link"></i>Source</a></li> |
| <li><a href="https://issues.apache.org/jira/browse/NIFI"><i class="fa fa-external-link external-link"></i>Issues</a></li> |
| <li><a href="https://github.com/apache/nifi"><i class="fa fa-external-link external-link"></i>GitHub</a></li> |
| </ul> |
| </li> |
| <li class="has-dropdown"> |
| <a href="#">Subprojects</a> |
| <ul class="dropdown"> |
| <li><a href="minifi/index.html">MiNiFi</a></li> |
| <li><a href="registry.html">Registry</a></li> |
| <li><a href="fds.html">FDS</a></li> |
| </ul> |
| </li> |
| <li class="has-dropdown"> |
| <a href="#">Apache</a> |
| <ul class="dropdown"> |
| <li><a href="https://www.apache.org"><i class="fa fa-external-link external-link"></i>Apache Software Foundation</a></li> |
| <li><a href="https://www.apache.org/licenses/"><i class="fa fa-external-link external-link"></i>License</a></li> |
| <li><a href="https://privacy.apache.org/policies/privacy-policy-public.html"><i class="fa fa-external-link external-link"></i>Privacy Policy</a></li> |
| <li><a href="https://www.apache.org/foundation/sponsorship.html"><i class="fa fa-external-link external-link"></i>Sponsorship</a></li> |
| <li><a href="https://www.apache.org/security/"><i class="fa fa-external-link external-link"></i>Security</a></li> |
| <li><a href="https://www.apache.org/foundation/thanks.html"><i class="fa fa-external-link external-link"></i>Thanks</a></li> |
| </ul> |
| </li> |
| </ul> |
| </section> |
| </nav> |
| </div> |
| |
| <div class="row"> |
| <div class="large-12 columns"> |
| <div class="large-space"></div> |
| <h1 id="apache-nifi-release-guidelines">Apache NiFi Release Guidelines</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="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-xml" data-lang="xml"><span style="color:#008000;font-weight:bold"><profile></span> |
| <span style="color:#008000;font-weight:bold"><id></span>signing<span style="color:#008000;font-weight:bold"></id></span> |
| <span style="color:#008000;font-weight:bold"><properties></span> |
| <span style="color:#008000;font-weight:bold"><mavenExecutorId></span>forked-path<span style="color:#008000;font-weight:bold"></mavenExecutorId></span> |
| <span style="color:#008000;font-weight:bold"><gpg.keyname></span>${RM_USERID}@apache.org<span style="color:#008000;font-weight:bold"></gpg.keyname></span> |
| <span style="color:#008000;font-weight:bold"><gpg.passphrase></span>REPLACE-WITH-ENCRYPTED-GPG-PASSPHRASE<span style="color:#008000;font-weight:bold"></gpg.passphrase></span> |
| <span style="color:#008000;font-weight:bold"></properties></span> |
| <span style="color:#008000;font-weight:bold"></profile></span> |
| |
| <span style="color:#008000;font-weight:bold"><servers></span> |
| <span style="color:#008000;font-weight:bold"><server></span> |
| <span style="color:#008000;font-weight:bold"><id></span>repository.apache.org<span style="color:#008000;font-weight:bold"></id></span> |
| <span style="color:#008000;font-weight:bold"><username></span>${RM_USERID}<span style="color:#008000;font-weight:bold"></username></span> |
| <span style="color:#008000;font-weight:bold"><password></span>REPLACE-WITH-ENCRYPTED-REPOSITORY-PASSWORD<span style="color:#008000;font-weight:bold"></password></span> |
| <span style="color:#008000;font-weight:bold"></server></span> |
| <span style="color:#008000;font-weight:bold"></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="background-color:#f8f8f8;-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:#666">(</span>fetch<span style="color:#666">)</span> |
| upstream https://gitbox.apache.org/repos/asf/nifi.git <span style="color:#666">(</span>push<span style="color:#666">)</span> |
| origin https://github.com/<span style="color:#b68;font-weight:bold">${</span><span style="color:#b8860b">RM_USERID</span><span style="color:#b68;font-weight:bold">}</span>/nifi.git <span style="color:#666">(</span>fetch<span style="color:#666">)</span> |
| origin https://github.com/<span style="color:#b68;font-weight:bold">${</span><span style="color:#b8860b">RM_USERID</span><span style="color:#b68;font-weight:bold">}</span>/nifi.git <span style="color:#666">(</span>push<span style="color:#666">)</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="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-bash" data-lang="bash">git checkout -b <span style="color:#b68;font-weight:bold">${</span><span style="color:#b8860b">JIRA_TICKET</span><span style="color:#b68;font-weight:bold">}</span>-RC<span style="color:#b68;font-weight:bold">${</span><span style="color:#b8860b">RC</span><span style="color:#b68;font-weight:bold">}</span> <span style="color:#b68;font-weight:bold">${</span><span style="color:#b8860b">BRANCH</span><span style="color:#b68;font-weight:bold">}</span> |
| </code></pre></div><ul> |
| <li>Run Maven build with <code>include-grpc</code> and <code>contrib-check</code> profiles</li> |
| </ul> |
| <div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-bash" data-lang="bash">./mvnw -T 2C -Pinclude-grpc,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="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-bash" data-lang="bash"><span style="color:#a2f">export</span> <span style="color:#b8860b">GPG_TTY</span><span style="color:#666">=</span><span style="color:#a2f;font-weight:bold">$(</span>tty<span style="color:#a2f;font-weight:bold">)</span> |
| </code></pre></div><ul> |
| <li>Run Maven release preparation with <code>signing</code> and <code>include-grpc</code> profiles using RC version numbers</li> |
| </ul> |
| <div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-bash" data-lang="bash">./mvnw release:prepare -Psigning,include-grpc <span style="color:#b62;font-weight:bold">\ |
| </span><span style="color:#b62;font-weight:bold"></span>-DscmCommentPrefix<span style="color:#666">=</span><span style="color:#b44">"</span><span style="color:#b68;font-weight:bold">${</span><span style="color:#b8860b">JIRA_TICKET</span><span style="color:#b68;font-weight:bold">}</span><span style="color:#b44">-RC</span><span style="color:#b68;font-weight:bold">${</span><span style="color:#b8860b">RC</span><span style="color:#b68;font-weight:bold">}</span><span style="color:#b44"> "</span> <span style="color:#b62;font-weight:bold">\ |
| </span><span style="color:#b62;font-weight:bold"></span>-Dtag<span style="color:#666">=</span><span style="color:#b44">"nifi-</span><span style="color:#b68;font-weight:bold">${</span><span style="color:#b8860b">NIFI_VERSION</span><span style="color:#b68;font-weight:bold">}</span><span style="color:#b44">-RC</span><span style="color:#b68;font-weight:bold">${</span><span style="color:#b8860b">RC</span><span style="color:#b68;font-weight:bold">}</span><span style="color:#b44">"</span> <span style="color:#b62;font-weight:bold">\ |
| </span><span style="color:#b62;font-weight:bold"></span>-DreleaseVersion<span style="color:#666">=</span><span style="color:#b44">"</span><span style="color:#b68;font-weight:bold">${</span><span style="color:#b8860b">NIFI_VERSION</span><span style="color:#b68;font-weight:bold">}</span><span style="color:#b44">"</span> <span style="color:#b62;font-weight:bold">\ |
| </span><span style="color:#b62;font-weight:bold"></span>-DdevelopmentVersion<span style="color:#666">=</span><span style="color:#b44">"</span><span style="color:#b68;font-weight:bold">${</span><span style="color:#b8860b">NEXT_VERSION</span><span style="color:#b68;font-weight:bold">}</span><span style="color:#b44">"</span> <span style="color:#b62;font-weight:bold">\ |
| </span><span style="color:#b62;font-weight:bold"></span>-Darguments<span style="color:#666">=</span><span style="color:#b44">"-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 <code>include-grpc</code> profiles to deploy artifacts to the Apache Nexus Repository</p> |
| </li> |
| </ul> |
| <div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-bash" data-lang="bash">./mvnw release:perform -Psigning,include-grpc <span style="color:#b62;font-weight:bold">\ |
| </span><span style="color:#b62;font-weight:bold"></span>-DscmCommentPrefix<span style="color:#666">=</span><span style="color:#b44">"</span><span style="color:#b68;font-weight:bold">${</span><span style="color:#b8860b">JIRA_TICKET</span><span style="color:#b68;font-weight:bold">}</span><span style="color:#b44">-RC</span><span style="color:#b68;font-weight:bold">${</span><span style="color:#b8860b">RC</span><span style="color:#b68;font-weight:bold">}</span><span style="color:#b44"> "</span> <span style="color:#b62;font-weight:bold">\ |
| </span><span style="color:#b62;font-weight:bold"></span>-Darguments<span style="color:#666">=</span><span style="color:#b44">"-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="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-bash" data-lang="bash"><span style="color:#b8860b">STAGING_DIR</span><span style="color:#666">=</span>~/staging |
| mkdir <span style="color:#b68;font-weight:bold">${</span><span style="color:#b8860b">STAGING_DIR</span><span style="color:#b68;font-weight:bold">}</span> |
| <span style="color:#a2f">cd</span> <span style="color:#b68;font-weight:bold">${</span><span style="color:#b8860b">STAGING_DIR</span><span style="color:#b68;font-weight:bold">}</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="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-bash" data-lang="bash"><span style="color:#b8860b">SOURCE_RELEASE_ZIP</span><span style="color:#666">=</span><span style="color:#b44">"https://repository.apache.org/service/local/repositories/</span><span style="color:#b68;font-weight:bold">${</span><span style="color:#b8860b">STAGING_REPO_ID</span><span style="color:#b68;font-weight:bold">}</span><span style="color:#b44">/content/org/apache/nifi/nifi/</span><span style="color:#b68;font-weight:bold">${</span><span style="color:#b8860b">NIFI_VERSION</span><span style="color:#b68;font-weight:bold">}</span><span style="color:#b44">/nifi-</span><span style="color:#b68;font-weight:bold">${</span><span style="color:#b8860b">NIFI_VERSION</span><span style="color:#b68;font-weight:bold">}</span><span style="color:#b44">-source-release.zip"</span> |
| wget <span style="color:#b68;font-weight:bold">${</span><span style="color:#b8860b">SOURCE_RELEASE_ZIP</span><span style="color:#b68;font-weight:bold">}</span> |
| wget <span style="color:#b68;font-weight:bold">${</span><span style="color:#b8860b">SOURCE_RELEASE_ZIP</span><span style="color:#b68;font-weight:bold">}</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="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-bash" data-lang="bash"><span style="color:#b8860b">SOURCE_RELEASE_ZIP_FILE</span><span style="color:#666">=</span><span style="color:#b44">"nifi-</span><span style="color:#b68;font-weight:bold">${</span><span style="color:#b8860b">NIFI_VERSION</span><span style="color:#b68;font-weight:bold">}</span><span style="color:#b44">-source-release.zip"</span> |
| gpg --verify <span style="color:#b68;font-weight:bold">${</span><span style="color:#b8860b">SOURCE_RELEASE_ZIP_FILE</span><span style="color:#b68;font-weight:bold">}</span>.asc <span style="color:#b68;font-weight:bold">${</span><span style="color:#b8860b">SOURCE_RELEASE_ZIP_FILE</span><span style="color:#b68;font-weight:bold">}</span> |
| </code></pre></div><ul> |
| <li>Extract source release archive files</li> |
| </ul> |
| <div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-bash" data-lang="bash">unzip <span style="color:#b68;font-weight:bold">${</span><span style="color:#b8860b">SOURCE_RELEASE_ZIP_FILE</span><span style="color:#b68;font-weight:bold">}</span> |
| <span style="color:#a2f">cd</span> nifi-<span style="color:#b68;font-weight:bold">${</span><span style="color:#b8860b">NIFI_VERSION</span><span style="color:#b68;font-weight:bold">}</span> |
| </code></pre></div><ul> |
| <li>Run Maven command to package binaries</li> |
| </ul> |
| <div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-bash" data-lang="bash">./mvnw package -P include-grpc -pl <span style="color:#b62;font-weight:bold">\ |
| </span><span style="color:#b62;font-weight:bold"></span>:minifi-assembly,<span style="color:#b62;font-weight:bold">\ |
| </span><span style="color:#b62;font-weight:bold"></span>:minifi-c2-assembly,<span style="color:#b62;font-weight:bold">\ |
| </span><span style="color:#b62;font-weight:bold"></span>:minifi-tookit-assembly,<span style="color:#b62;font-weight:bold">\ |
| </span><span style="color:#b62;font-weight:bold"></span>:nifi-assembly,<span style="color:#b62;font-weight:bold">\ |
| </span><span style="color:#b62;font-weight:bold"></span>:nifi-kafka-connector-assembly,<span style="color:#b62;font-weight:bold">\ |
| </span><span style="color:#b62;font-weight:bold"></span>:nifi-toolkit-assembly,<span style="color:#b62;font-weight:bold">\ |
| </span><span style="color:#b62;font-weight:bold"></span>:nifi-registry-assembly,<span style="color:#b62;font-weight:bold">\ |
| </span><span style="color:#b62;font-weight:bold"></span>:nifi-registry-toolkit-assembly,<span style="color:#b62;font-weight:bold">\ |
| </span><span style="color:#b62;font-weight:bold"></span>:nifi-stateless-assembly |
| </code></pre></div><ul> |
| <li>Copy binaries to local artifacts directory</li> |
| </ul> |
| <div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-bash" data-lang="bash"><span style="color:#b8860b">ARTIFACTS_DIR</span><span style="color:#666">=</span>~/staging/artifacts |
| mkdir <span style="color:#b68;font-weight:bold">${</span><span style="color:#b8860b">ARTIFACTS_DIR</span><span style="color:#b68;font-weight:bold">}</span> |
| cp minifi/minifi-assembly/target/minifi-<span style="color:#b68;font-weight:bold">${</span><span style="color:#b8860b">NIFI_VERSION</span><span style="color:#b68;font-weight:bold">}</span>-bin.zip <span style="color:#b68;font-weight:bold">${</span><span style="color:#b8860b">ARTIFACTS_DIR</span><span style="color:#b68;font-weight:bold">}</span> |
| cp minifi/minifi-c2/minifi-c2-assembly/target/minifi-c2-<span style="color:#b68;font-weight:bold">${</span><span style="color:#b8860b">NIFI_VERSION</span><span style="color:#b68;font-weight:bold">}</span>-bin.zip <span style="color:#b68;font-weight:bold">${</span><span style="color:#b8860b">ARTIFACTS_DIR</span><span style="color:#b68;font-weight:bold">}</span> |
| cp minifi/minifi-toolkit/minifi-toolkit-assembly/target/minifi-toolkit-<span style="color:#b68;font-weight:bold">${</span><span style="color:#b8860b">NIFI_VERSION</span><span style="color:#b68;font-weight:bold">}</span>-bin.zip <span style="color:#b68;font-weight:bold">${</span><span style="color:#b8860b">ARTIFACTS_DIR</span><span style="color:#b68;font-weight:bold">}</span> |
| cp nifi-assembly/target/nifi-<span style="color:#b68;font-weight:bold">${</span><span style="color:#b8860b">NIFI_VERSION</span><span style="color:#b68;font-weight:bold">}</span>-bin.zip <span style="color:#b68;font-weight:bold">${</span><span style="color:#b8860b">ARTIFACTS_DIR</span><span style="color:#b68;font-weight:bold">}</span> |
| cp nifi-external/nifi-kafka-connector-assembly/target/nifi-kafka-connector-assembly-<span style="color:#b68;font-weight:bold">${</span><span style="color:#b8860b">NIFI_VERSION</span><span style="color:#b68;font-weight:bold">}</span>.zip <span style="color:#b68;font-weight:bold">${</span><span style="color:#b8860b">ARTIFACTS_DIR</span><span style="color:#b68;font-weight:bold">}</span> |
| cp nifi-registry/nifi-registry-assembly/target/nifi-registry-<span style="color:#b68;font-weight:bold">${</span><span style="color:#b8860b">NIFI_VERSION</span><span style="color:#b68;font-weight:bold">}</span>-bin.zip <span style="color:#b68;font-weight:bold">${</span><span style="color:#b8860b">ARTIFACTS_DIR</span><span style="color:#b68;font-weight:bold">}</span> |
| cp nifi-registry/nifi-registry-toolkit/nifi-registry-toolkit-assembly/target/nifi-registry-toolkit-<span style="color:#b68;font-weight:bold">${</span><span style="color:#b8860b">NIFI_VERSION</span><span style="color:#b68;font-weight:bold">}</span>-bin.zip <span style="color:#b68;font-weight:bold">${</span><span style="color:#b8860b">ARTIFACTS_DIR</span><span style="color:#b68;font-weight:bold">}</span> |
| cp nifi-stateless/nifi-stateless-assembly/target/nifi-stateless-<span style="color:#b68;font-weight:bold">${</span><span style="color:#b8860b">NIFI_VERSION</span><span style="color:#b68;font-weight:bold">}</span>-bin.zip <span style="color:#b68;font-weight:bold">${</span><span style="color:#b8860b">ARTIFACTS_DIR</span><span style="color:#b68;font-weight:bold">}</span> |
| cp nifi-toolkit/nifi-toolkit-assembly/target/nifi-toolkit-<span style="color:#b68;font-weight:bold">${</span><span style="color:#b8860b">NIFI_VERSION</span><span style="color:#b68;font-weight:bold">}</span>-bin.zip <span style="color:#b68;font-weight:bold">${</span><span style="color:#b8860b">ARTIFACTS_DIR</span><span style="color:#b68;font-weight:bold">}</span> |
| cp <span style="color:#b68;font-weight:bold">${</span><span style="color:#b8860b">STAGING_DIR</span><span style="color:#b68;font-weight:bold">}</span>/nifi-<span style="color:#b68;font-weight:bold">${</span><span style="color:#b8860b">NIFI_VERSION</span><span style="color:#b68;font-weight:bold">}</span>-source-release.zip <span style="color:#b68;font-weight:bold">${</span><span style="color:#b8860b">ARTIFACTS_DIR</span><span style="color:#b68;font-weight:bold">}</span> |
| cp <span style="color:#b68;font-weight:bold">${</span><span style="color:#b8860b">STAGING_DIR</span><span style="color:#b68;font-weight:bold">}</span>/nifi-<span style="color:#b68;font-weight:bold">${</span><span style="color:#b8860b">NIFI_VERSION</span><span style="color:#b68;font-weight:bold">}</span>-source-release.zip.asc <span style="color:#b68;font-weight:bold">${</span><span style="color:#b8860b">ARTIFACTS_DIR</span><span style="color:#b68;font-weight:bold">}</span> |
| <span style="color:#a2f">cd</span> <span style="color:#b68;font-weight:bold">${</span><span style="color:#b8860b">ARTIFACTS_DIR</span><span style="color:#b68;font-weight:bold">}</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="background-color:#f8f8f8;-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:#666">=</span>SHA512 minifi-<span style="color:#b68;font-weight:bold">${</span><span style="color:#b8860b">NIFI_VERSION</span><span style="color:#b68;font-weight:bold">}</span>-bin.zip |
| gpg -a -b --digest-algo<span style="color:#666">=</span>SHA512 minifi-c2-<span style="color:#b68;font-weight:bold">${</span><span style="color:#b8860b">NIFI_VERSION</span><span style="color:#b68;font-weight:bold">}</span>-bin.zip |
| gpg -a -b --digest-algo<span style="color:#666">=</span>SHA512 minifi-toolkit-<span style="color:#b68;font-weight:bold">${</span><span style="color:#b8860b">NIFI_VERSION</span><span style="color:#b68;font-weight:bold">}</span>-bin.zip |
| gpg -a -b --digest-algo<span style="color:#666">=</span>SHA512 nifi-<span style="color:#b68;font-weight:bold">${</span><span style="color:#b8860b">NIFI_VERSION</span><span style="color:#b68;font-weight:bold">}</span>-bin.zip |
| gpg -a -b --digest-algo<span style="color:#666">=</span>SHA512 nifi-kafka-connector-assembly-<span style="color:#b68;font-weight:bold">${</span><span style="color:#b8860b">NIFI_VERSION</span><span style="color:#b68;font-weight:bold">}</span>.zip |
| gpg -a -b --digest-algo<span style="color:#666">=</span>SHA512 nifi-registry-<span style="color:#b68;font-weight:bold">${</span><span style="color:#b8860b">NIFI_VERSION</span><span style="color:#b68;font-weight:bold">}</span>-bin.zip |
| gpg -a -b --digest-algo<span style="color:#666">=</span>SHA512 nifi-registry-toolkit-<span style="color:#b68;font-weight:bold">${</span><span style="color:#b8860b">NIFI_VERSION</span><span style="color:#b68;font-weight:bold">}</span>-bin.zip |
| gpg -a -b --digest-algo<span style="color:#666">=</span>SHA512 nifi-stateless-<span style="color:#b68;font-weight:bold">${</span><span style="color:#b8860b">NIFI_VERSION</span><span style="color:#b68;font-weight:bold">}</span>-bin.zip |
| gpg -a -b --digest-algo<span style="color:#666">=</span>SHA512 nifi-toolkit-<span style="color:#b68;font-weight:bold">${</span><span style="color:#b8860b">NIFI_VERSION</span><span style="color:#b68;font-weight:bold">}</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="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-bash" data-lang="bash">sh -c <span style="color:#b44">'sha256sum $1 | cut -d " " -f 1 > $1.sha256'</span> -- minifi-<span style="color:#b68;font-weight:bold">${</span><span style="color:#b8860b">NIFI_VERSION</span><span style="color:#b68;font-weight:bold">}</span>-bin.zip |
| sh -c <span style="color:#b44">'sha256sum $1 | cut -d " " -f 1 > $1.sha256'</span> -- minifi-c2-<span style="color:#b68;font-weight:bold">${</span><span style="color:#b8860b">NIFI_VERSION</span><span style="color:#b68;font-weight:bold">}</span>-bin.zip |
| sh -c <span style="color:#b44">'sha256sum $1 | cut -d " " -f 1 > $1.sha256'</span> -- minifi-toolkit-<span style="color:#b68;font-weight:bold">${</span><span style="color:#b8860b">NIFI_VERSION</span><span style="color:#b68;font-weight:bold">}</span>-bin.zip |
| sh -c <span style="color:#b44">'sha256sum $1 | cut -d " " -f 1 > $1.sha256'</span> -- nifi-<span style="color:#b68;font-weight:bold">${</span><span style="color:#b8860b">NIFI_VERSION</span><span style="color:#b68;font-weight:bold">}</span>-source-release.zip |
| sh -c <span style="color:#b44">'sha256sum $1 | cut -d " " -f 1 > $1.sha256'</span> -- nifi-<span style="color:#b68;font-weight:bold">${</span><span style="color:#b8860b">NIFI_VERSION</span><span style="color:#b68;font-weight:bold">}</span>-bin.zip |
| sh -c <span style="color:#b44">'sha256sum $1 | cut -d " " -f 1 > $1.sha256'</span> -- nifi-kafka-connector-assembly-<span style="color:#b68;font-weight:bold">${</span><span style="color:#b8860b">NIFI_VERSION</span><span style="color:#b68;font-weight:bold">}</span>.zip |
| sh -c <span style="color:#b44">'sha256sum $1 | cut -d " " -f 1 > $1.sha256'</span> -- nifi-registry-<span style="color:#b68;font-weight:bold">${</span><span style="color:#b8860b">NIFI_VERSION</span><span style="color:#b68;font-weight:bold">}</span>-bin.zip |
| sh -c <span style="color:#b44">'sha256sum $1 | cut -d " " -f 1 > $1.sha256'</span> -- nifi-registry-toolkit-<span style="color:#b68;font-weight:bold">${</span><span style="color:#b8860b">NIFI_VERSION</span><span style="color:#b68;font-weight:bold">}</span>-bin.zip |
| sh -c <span style="color:#b44">'sha256sum $1 | cut -d " " -f 1 > $1.sha256'</span> -- nifi-stateless-<span style="color:#b68;font-weight:bold">${</span><span style="color:#b8860b">NIFI_VERSION</span><span style="color:#b68;font-weight:bold">}</span>-bin.zip |
| sh -c <span style="color:#b44">'sha256sum $1 | cut -d " " -f 1 > $1.sha256'</span> -- nifi-toolkit-<span style="color:#b68;font-weight:bold">${</span><span style="color:#b8860b">NIFI_VERSION</span><span style="color:#b68;font-weight:bold">}</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="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-bash" data-lang="bash">sh -c <span style="color:#b44">'sha512sum $1 | cut -d " " -f 1 > $1.sha256'</span> -- minifi-<span style="color:#b68;font-weight:bold">${</span><span style="color:#b8860b">NIFI_VERSION</span><span style="color:#b68;font-weight:bold">}</span>-bin.zip |
| sh -c <span style="color:#b44">'sha512sum $1 | cut -d " " -f 1 > $1.sha256'</span> -- minifi-c2-<span style="color:#b68;font-weight:bold">${</span><span style="color:#b8860b">NIFI_VERSION</span><span style="color:#b68;font-weight:bold">}</span>-bin.zip |
| sh -c <span style="color:#b44">'sha512sum $1 | cut -d " " -f 1 > $1.sha256'</span> -- minifi-toolkit-<span style="color:#b68;font-weight:bold">${</span><span style="color:#b8860b">NIFI_VERSION</span><span style="color:#b68;font-weight:bold">}</span>-bin.zip |
| sh -c <span style="color:#b44">'sha512sum $1 | cut -d " " -f 1 > $1.sha256'</span> -- nifi-<span style="color:#b68;font-weight:bold">${</span><span style="color:#b8860b">NIFI_VERSION</span><span style="color:#b68;font-weight:bold">}</span>-source-release.zip |
| sh -c <span style="color:#b44">'sha512sum $1 | cut -d " " -f 1 > $1.sha256'</span> -- nifi-<span style="color:#b68;font-weight:bold">${</span><span style="color:#b8860b">NIFI_VERSION</span><span style="color:#b68;font-weight:bold">}</span>-bin.zip |
| sh -c <span style="color:#b44">'sha512sum $1 | cut -d " " -f 1 > $1.sha256'</span> -- nifi-kafka-connector-assembly-<span style="color:#b68;font-weight:bold">${</span><span style="color:#b8860b">NIFI_VERSION</span><span style="color:#b68;font-weight:bold">}</span>.zip |
| sh -c <span style="color:#b44">'sha512sum $1 | cut -d " " -f 1 > $1.sha256'</span> -- nifi-registry-<span style="color:#b68;font-weight:bold">${</span><span style="color:#b8860b">NIFI_VERSION</span><span style="color:#b68;font-weight:bold">}</span>-bin.zip |
| sh -c <span style="color:#b44">'sha512sum $1 | cut -d " " -f 1 > $1.sha256'</span> -- nifi-registry-toolkit-<span style="color:#b68;font-weight:bold">${</span><span style="color:#b8860b">NIFI_VERSION</span><span style="color:#b68;font-weight:bold">}</span>-bin.zip |
| sh -c <span style="color:#b44">'sha512sum $1 | cut -d " " -f 1 > $1.sha256'</span> -- nifi-stateless-<span style="color:#b68;font-weight:bold">${</span><span style="color:#b8860b">NIFI_VERSION</span><span style="color:#b68;font-weight:bold">}</span>-bin.zip |
| sh -c <span style="color:#b44">'sha512sum $1 | cut -d " " -f 1 > $1.sha256'</span> -- nifi-toolkit-<span style="color:#b68;font-weight:bold">${</span><span style="color:#b8860b">NIFI_VERSION</span><span style="color:#b68;font-weight:bold">}</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="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-bash" data-lang="bash">git push upstream <span style="color:#b68;font-weight:bold">${</span><span style="color:#b8860b">JIRA_TICKET</span><span style="color:#b68;font-weight:bold">}</span>-RC<span style="color:#b68;font-weight:bold">${</span><span style="color:#b8860b">RC</span><span style="color:#b68;font-weight:bold">}</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="background-color:#f8f8f8;-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:#b68;font-weight:bold">${</span><span style="color:#b8860b">NIFI_VERSION</span><span style="color:#b68;font-weight:bold">}</span>-RC<span style="color:#b68;font-weight:bold">${</span><span style="color:#b8860b">RC</span><span style="color:#b68;font-weight:bold">}</span> |
| </code></pre></div><ul> |
| <li>Checkout Apache Distribution Repository using Subversion</li> |
| </ul> |
| <div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-bash" data-lang="bash"><span style="color:#a2f">cd</span> <span style="color:#b68;font-weight:bold">${</span><span style="color:#b8860b">STAGING_DIR</span><span style="color:#b68;font-weight:bold">}</span> |
| svn checkout https://dist.apache.org/repos/dist/dev/nifi |
| <span style="color:#a2f">cd</span> nifi |
| </code></pre></div><ul> |
| <li>Copy and commit binaries to Apache Distribution Repository</li> |
| </ul> |
| <div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-bash" data-lang="bash">cp -r <span style="color:#b68;font-weight:bold">${</span><span style="color:#b8860b">ARTIFACTS_DIR</span><span style="color:#b68;font-weight:bold">}</span> nifi-<span style="color:#b68;font-weight:bold">${</span><span style="color:#b8860b">NIFI_VERSION</span><span style="color:#b68;font-weight:bold">}</span> |
| svn add nifi-<span style="color:#b68;font-weight:bold">${</span><span style="color:#b8860b">NIFI_VERSION</span><span style="color:#b68;font-weight:bold">}</span> |
| svn commit -m <span style="color:#b44">"</span><span style="color:#b68;font-weight:bold">${</span><span style="color:#b8860b">JIRA_TICKET</span><span style="color:#b68;font-weight:bold">}</span><span style="color:#b44"> Uploaded NiFi </span><span style="color:#b68;font-weight:bold">${</span><span style="color:#b8860b">NIFI_VERSION</span><span style="color:#b68;font-weight:bold">}</span><span style="color:#b44">-RC</span><span style="color:#b68;font-weight:bold">${</span><span style="color:#b8860b">RC</span><span style="color:#b68;font-weight:bold">}</span><span style="color:#b44"> 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="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-bash" data-lang="bash"><span style="color:#b8860b">DIST_DEV_URL</span><span style="color:#666">=</span>https://dist.apache.org/repos/dist/dev/nifi/nifi-<span style="color:#b68;font-weight:bold">${</span><span style="color:#b8860b">NIFI_VERSION</span><span style="color:#b68;font-weight:bold">}</span> |
| <span style="color:#b8860b">DIST_RELEASE_URL</span><span style="color:#666">=</span>https://dist.apache.org/repos/dist/release/nifi/<span style="color:#b68;font-weight:bold">${</span><span style="color:#b8860b">NIFI_VERSION</span><span style="color:#b68;font-weight:bold">}</span> |
| svn move -m <span style="color:#b44">"</span><span style="color:#b68;font-weight:bold">${</span><span style="color:#b8860b">JIRA_TICKET</span><span style="color:#b68;font-weight:bold">}</span><span style="color:#b44">"</span> <span style="color:#b68;font-weight:bold">${</span><span style="color:#b8860b">DIST_DEV_URL</span><span style="color:#b68;font-weight:bold">}</span> <span style="color:#b68;font-weight:bold">${</span><span style="color:#b8860b">DIST_RELEASE_URL</span><span style="color:#b68;font-weight:bold">}</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="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-bash" data-lang="bash">git checkout <span style="color:#b68;font-weight:bold">${</span><span style="color:#b8860b">BRANCH</span><span style="color:#b68;font-weight:bold">}</span> |
| git merge --no-ff <span style="color:#b68;font-weight:bold">${</span><span style="color:#b8860b">JIRA_TICKET</span><span style="color:#b68;font-weight:bold">}</span>-RC<span style="color:#b68;font-weight:bold">${</span><span style="color:#b8860b">RC</span><span style="color:#b68;font-weight:bold">}</span> |
| git push upstream <span style="color:#b68;font-weight:bold">${</span><span style="color:#b8860b">BRANCH</span><span style="color:#b68;font-weight:bold">}</span> |
| </code></pre></div><ul> |
| <li>Create signed Git tag for the release version</li> |
| </ul> |
| <div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-bash" data-lang="bash"><span style="color:#a2f">export</span> <span style="color:#b8860b">GPG_TTY</span><span style="color:#666">=</span><span style="color:#a2f;font-weight:bold">$(</span>tty<span style="color:#a2f;font-weight:bold">)</span> |
| <span style="color:#b8860b">COMMIT_ID</span><span style="color:#666">=</span><span style="color:#b44">`</span>git rev-list -n <span style="color:#666">1</span> nifi-<span style="color:#b68;font-weight:bold">${</span><span style="color:#b8860b">NIFI_VERSION</span><span style="color:#b68;font-weight:bold">}</span>-RC<span style="color:#b68;font-weight:bold">${</span><span style="color:#b8860b">RC</span><span style="color:#b68;font-weight:bold">}</span><span style="color:#b44">`</span> |
| <span style="color:#b8860b">RELEASE_TAG</span><span style="color:#666">=</span><span style="color:#b44">"rel/nifi-</span><span style="color:#b68;font-weight:bold">${</span><span style="color:#b8860b">NIFI_VERSION</span><span style="color:#b68;font-weight:bold">}</span><span style="color:#b44">"</span> |
| git tag -s <span style="color:#b68;font-weight:bold">${</span><span style="color:#b8860b">RELEASE_TAG</span><span style="color:#b68;font-weight:bold">}</span> -m <span style="color:#b44">"</span><span style="color:#b68;font-weight:bold">${</span><span style="color:#b8860b">JIRA_TICKET</span><span style="color:#b68;font-weight:bold">}</span><span style="color:#b44"> Tagged NiFi </span><span style="color:#b68;font-weight:bold">${</span><span style="color:#b8860b">NIFI_VERSION</span><span style="color:#b68;font-weight:bold">}</span><span style="color:#b44"> </span><span style="color:#b68;font-weight:bold">${</span><span style="color:#b8860b">COMMIT_ID</span><span style="color:#b68;font-weight:bold">}</span><span style="color:#b44">"</span> |
| </code></pre></div><ul> |
| <li>Push Git tag to the Apache Git Repository</li> |
| </ul> |
| <div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-bash" data-lang="bash">git push upstream <span style="color:#b68;font-weight:bold">${</span><span style="color:#b8860b">RELEASE_TAG</span><span style="color:#b68;font-weight:bold">}</span> |
| </code></pre></div><ul> |
| <li>Delete previous release version from the Apache Distribution Repository</li> |
| </ul> |
| <div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-bash" data-lang="bash"><span style="color:#b8860b">PREVIOUS_VERSION</span><span style="color:#666">=</span><span style="color:#b44">"0.6.0"</span> |
| <span style="color:#b8860b">PREVIOUS_RELEASE_URL</span><span style="color:#666">=</span><span style="color:#b44">"https://dist.apache.org/repos/dist/release/nifi/</span><span style="color:#b68;font-weight:bold">${</span><span style="color:#b8860b">PREVIOUS_VERSION</span><span style="color:#b68;font-weight:bold">}</span><span style="color:#b44">"</span> |
| svn delete -m <span style="color:#b44">"</span><span style="color:#b68;font-weight:bold">${</span><span style="color:#b8860b">JIRA_TICKET</span><span style="color:#b68;font-weight:bold">}</span><span style="color:#b44">"</span> <span style="color:#b68;font-weight:bold">${</span><span style="color:#b8860b">PREVIOUS_RELEASE_URL</span><span style="color:#b68;font-weight:bold">}</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="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-bash" data-lang="bash">git commit -m <span style="color:#b44">"</span><span style="color:#b68;font-weight:bold">${</span><span style="color:#b8860b">JIRA_TICKET</span><span style="color:#b68;font-weight:bold">}</span><span style="color:#b44"> Updated Docker version to </span><span style="color:#b68;font-weight:bold">${</span><span style="color:#b8860b">NEXT_VERSION</span><span style="color:#b68;font-weight:bold">}</span><span style="color:#b44">"</span> |
| git push upstream <span style="color:#b68;font-weight:bold">${</span><span style="color:#b8860b">BRANCH</span><span style="color:#b68;font-weight:bold">}</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="background-color:#f8f8f8;-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 |
| <span style="color:#a2f">cd</span> 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="background-color:#f8f8f8;-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 pelased 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.html |
| |
| 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> |
| </div> |
| <div class="row"> |
| <div class="large-12 columns footer"> |
| <a href="https://www.apache.org"> |
| <img id="asf-logo" alt="Apache Software Foundation" src="/assets/images/asf_logo.png" width="200" style="margin:0px 10px" /> |
| </a> |
| <a href="https://www.apache.org/events/current-event.html"> |
| <img src="https://www.apache.org/events/current-event-234x60.png" style="margin:0px 10px" /> |
| </a> |
| <div id="copyright"> |
| <p>Copyright © 2023 The Apache Software Foundation, Licensed under the <a |
| href="https://www.apache.org/licenses/">Apache License, Version 2.0</a>.<br/>Apache, the |
| Apache feather logo, NiFi, Apache NiFi and the project logo are trademarks of The Apache Software |
| Foundation.</p> |
| </div> |
| </div> |
| </div> |
| <script src="/assets/js/jquery.min.js"></script> |
| <script src="/assets/js/foundation.js"></script> |
| <script src="/assets/js/app.js"></script> |
| </body> |
| </html> |