This is an automated email from the ASF dual-hosted git repository.

exceptionfactory pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/nifi-site.git


The following commit(s) were added to refs/heads/main by this push:
     new 9306ff5  NIFI-11736 Added NAR Maven Plugin Release Guidelines
9306ff5 is described below

commit 9306ff531d4b0257a059096f74a47b8a9196c0ef
Author: Nandor Soma Abonyi <[email protected]>
AuthorDate: Wed Jun 21 22:03:56 2023 +0200

    NIFI-11736 Added NAR Maven Plugin Release Guidelines
    
    This closes #74
    
    Signed-off-by: David Handermann <[email protected]>
---
 layouts/partials/topbar.html       |   5 +-
 source/nifi-maven-release-guide.md | 466 +++++++++++++++++++++++++++++++++++++
 2 files changed, 469 insertions(+), 2 deletions(-)

diff --git a/layouts/partials/topbar.html b/layouts/partials/topbar.html
index 9e121c4..5cea7bd 100644
--- a/layouts/partials/topbar.html
+++ b/layouts/partials/topbar.html
@@ -54,11 +54,12 @@
                     <a href="#">Development</a>
                     <ul class="dropdown">
                         <li><a href="quickstart.html">Quickstart</a></li>
-                        <li><a href="release-guide.html">Release Guide</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="developer-guide.html">Developer 
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>
diff --git a/source/nifi-maven-release-guide.md 
b/source/nifi-maven-release-guide.md
new file mode 100644
index 0000000..eca2034
--- /dev/null
+++ b/source/nifi-maven-release-guide.md
@@ -0,0 +1,466 @@
+---
+title: Apache NiFi NAR Maven Plugin Release Guidelines
+containerEnabled: true
+---
+
+# Apache NiFi NAR Maven Plugin Release Guidelines
+
+The purpose of this document is to capture and describe the steps involved in 
producing
+an official release of Apache NiFi NAR Maven Plugin. It is written 
specifically to someone acting in the
+capacity of a [Release Manager][apache-release-manager] (RM).  
+
+## The objective
+
+Our aim is to produce an official Apache release from an existing release 
branch.  
+
+## Background Material
+
+  - These documents are necessary for all committers to be familiar with
+    - [Apache License V2.0][apache-license]
+    - [Apache Legal License/Resolved][apache-legal-resolve]
+    - [Apache How-to Apply License][apache-license-apply]
+
+  - These documents are necessary for someone acting as the RM
+    - [Apache Encryption Software / ECCN Info][apache-encryption]
+    - [Apache Release Policy][apache-release-policy]
+    - [Apache Release Guide][apache-release-guide]
+
+  - These documents are helpful for general environmental setup to perform 
releases
+    - [Apache PGP Info][apache-pgp]
+    - [Apache Release Signing][apache-release-signing]
+    - [Apache Guide to publish Maven Artifacts][apache-guide-publish-maven]
+
+## Terms
+
+ * **Release Manager** (RM) - the Apache NiFi PMC Member or Committer acting 
as [Release Manager][apache-release-manager]
+ for a particular release of Apache NiFi.
+ * **Release Candidate** (RC) - an iteration of the release process that is 
proposed for a vote by the Apache NiFi
+ Community.
+ * **Community** - the [community][apache-glossary-community] of people with 
an interest
+ in the improvement and advancement of Apache NiFi, including end-users, 
developers, evangelists, and advisers.
+ * **PMC** - within the Apache NiFi community, members of the 
[PMC][apache-glossary-pmc] oversee the ongoing project.
+ * **Committer** - within the Apache NiFi community, 
[committers][apache-glossary-committer] have gained the privilege to commit 
changes to the Apache NiFi codebase.
+
+## High level flow of a release
+
+  - The Apache NiFi community is constantly contributing to JIRA tickets 
assigned to the next release.
+  - At some point the number of tickets open/remaining for the next release 
begins to approach zero.
+  - A member of the community suggests a release and initiates a discussion.
+  - Someone volunteers to perform the Release Manager (RM) role for the 
release.  (This can be a committer but Apache
+  guides indicate a preference for a PMC member.)
+  - The RM validates the proposed release and stages the source code, Maven 
artifacts, and distributable files for a
+  Release Candidate (RC).
+  - The RM initiates a vote on the RC by the NiFi community.
+  - If the NiFi community rejects the RC, the issues noted are resolved and 
another RC is generated.
+  - If the NiFi community accepts the RC, the staged source code, artifacts, 
and distribution files are moved to the
+  appropriately locations for public release.
+
+## Variable reference substitutions
+
+This guide is written to be generic for any release. As such, where string 
literals, code snippets,
+or parameter/argument values are used, placeholders will be used for values 
that are specific for each release.
+
+ * Substitutions used in tasks and email templates
+    | Reference                 | Example value                                
| Description                                                                   
                                                                                
     |
+    
|---------------------------|----------------------------------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------|
+    | ${BRANCH}                 | main                                         
| the development branch on which the release is based                          
                                                                                
     |
+    | ${VERSION}                | 1.5.1                                        
| the version being released (typically based off dropping the "-SNAPSHOT" 
suffix for the current development branch that is being released to mark a 
stable version |
+    | ${NEXT_VERSION}           | 1.5.2-SNAPSHOT                               
| the next development version that will being after the release is completed. 
Typically the next bugfix version with the "-SNAPSHOT" suffix                   
      |
+    | ${JIRA_TICKET}            | NIFI-11688                                   
| the JIRA ticket created by the release manager for the release tasks.         
                                                                                
     |
+    | ${JIRA_VERSION_URL}       | [jira version page][jira-version-url]        
| the link to the version in Jira that corresponds to this release and contains 
all the tickets                                                                 
     |
+    | ${JIRA_RELEASE_NOTES_URL} | [jira release notes][jira-release-notes-url] 
| the link to the JIRA auto-generated release notes based on the Jira version   
                                                                                
     |
+    | ${RC}                     | 1                                            
| the Release Candidate index start at 1 for the first release candidate.       
                                                                                
     |
+    | ${RC_TAG_COMMIT_ID}       | 39fc959426ea405df6360969b55ae2adad47e1aa     
| the 40 byte commit ID of the RC tag created during the Maven release process. 
                                                                                
     |
+    | ${STAGING_REPO_ID}        | orgapachenifi-1229                           
| the temporary Apache Nexus repository ID where staged artifacts have been 
placed                                                                          
         |
+    | ${RM_USERID}              | johndoe                                      
| the Apache account ID of Release Manager.                                     
                                                                                
     |
+    | ${RELEASE_TAG}            | rel/nifi-nar-maven-plugin-1.5.1              
| the Git repository tag for the source code as released.                       
                                                                                
     |
+    | ${VOTE_THREAD_URL}        | [1.5.1 vote thread][151-rc1-vote]            
| the URL for the Apache Pony Mail archive of the release vote thread.          
                                                                                
     |
+
+    _To be practical but avoid confusion with future release details, these 
example values reflect the previous release
+NiFi NAR Maven Plugin 1.5.1 RC1 release details._
+
+    _NOTE: The next version should be the next hotfix version since NAR Maven 
Plugin is released infrequently and releases are
+mostly bugfix releases._
+
+## What to validate and how to validate a release
+
+The following is a list of the sorts of things that will be validated and are 
the basics to check
+when evaluating a release for a vote.
+
+  - Verify the contents contain a good README, NOTICE, and LICENSE.
+  - Verify the git commit ID is correct
+  - Verify the RC was branched off the correct git commit ID
+  - Verify that NiFi can build NARs correctly using the plugin:
+    - Update NiFi's root pom to use version 1.5.1 of the plugin: 
https://github.com/apache/nifi/blob/main/pom.xml#L101
+    - Perform a build of NiFi, optionally clear out local .m2 repo mvn clean 
install
+    - Ensure that NiFi starts and loads all processors, controller services, 
and reporting tasks
+    - Spot check a few NARs to ensure they include 
META-INF/docs/extension-manifest.xml
+      - cp NIFI_HOME/lib/nifi-xyz-bundle.nar /tmp
+      - cd /tmp unzip nifi-xyz-bundle.nar
+      - cat META-INF/docs/extension-manifest.xml
+
+This list is reflected in the Release Vote and Release Helper Guide emails 
that are sent once the release has been
+staged in the Git and Nexus repositories.
+
+## The Release Process
+
+The release process includes steps to be performed by the Release Manager as 
well as the
+Apache NiFi developer community.
+
+### Step 1. Configure the build environment (RM and community)
+
+1. Follow the steps outlined in the [Quickstart Guide][nifi-quickstart-guide] 
to prepare the development system.
+1. Confirm that the local Git workspace is configured with an origin remote 
pointing to the RM's personal fork of the
+NiFi source and an "ASF" remote pointing to the Apache Git Repository for NiFi.
+    ```
+    $ git remote -v
+    asf        https://gitbox.apache.org/repos/asf/nifi-maven.git (fetch)
+    asf        https://gitbox.apache.org/repos/asf/nifi-maven.git (push)
+    origin     https://github.com/${RM_USERID}/nifi-maven.git (fetch)
+    origin     https://github.com/${RM_USERID}/nifi-maven.git (push)
+    ```
+    Additional remotes will not cause a problem if these two are correct.  
Other configurations are perfectly
+    acceptable but the appropriate adjustments to the steps in this guide must 
be made by the release manager.
+1. Confirm that source code can be checked out for the branch being released.
+    ```
+    git checkout ${BRANCH}
+    ```
+1. Confirm that the entire application builds correctly in the build 
environment.
+
+### Step 2. Prepare and stage the release (RM)
+
+1. Create a JIRA ticket for the release tasks for version ${VERSION}.  
+    ___The resulting JIRA ticket number is referred to as ${JIRA\_TICKET} in 
this guide.___
+1. Create the next version in JIRA, if it doesn't already exist, so work can 
continue towards that release.
+1. Create meaningful release notes for this version if not already created. 
[Enter them here][nifi-release-notes] on
+the NiFi wiki. A good starting point is reviewing the Jira generated release 
notes from the
+[NiFi Versions management 
page](https://issues.apache.org/jira/projects/NIFI?selectedItem=com.atlassian.jira.jira-projects-plugin%3Arelease-page&status=unreleased)
+or this JQL filter: project = NIFI and fixVersion = ${VERSION}
+1. Create a new branch off 'main' named after the JIRA ticket.
+    ```bash
+    $ git checkout -b ${JIRA_TICKET}-RC${RC} ${BRANCH}
+    ```
+1. Verify that Maven has sufficient heap space to perform the build tasks. 
Some plugins and parts of the build
+consumes a surprisingly large amount of space. These settings have been shown 
to work for Java 8 for NiFi NAR Maven Plugin version 1.5.1 and later.
+    ```bash
+    $ export MAVEN_OPTS="-Xms1024m -Xmx3076m"
+    ```
+1. Ensure your settings.xml has been updated to include a `signed_release` 
profile and a `<server>` entry for
+"repository.apache.org" as shown below. [Steps to configure and encrypt Maven 
passwords][sonatype-maven-password].
+There are  other ways to ensure your PGP key is available for signing as well. 
 
+    ```XML
+        <profile>
+            <id>signed_release</id>
+            <properties>
+                <mavenExecutorId>forked-path</mavenExecutorId>
+                <gpg.keyname>${RM_USERID}@apache.org</gpg.keyname>
+                <gpg.passphrase>ENCRYPTED_GPG_PASSPHRASE_HERE</gpg.passphrase>
+            </properties>
+        </profile>
+
+        <servers>
+            <server>
+                <id>repository.apache.org</id>
+                <username>${RM_USERID}</username>
+                <password>ENCRYPTED_PASSWORD_HERE</password>
+            </server>
+        </servers>
+    ```
+_NOTE: `gpg` will be invoked during this step, which will need to prompt you 
for a password.  From the command line, use
+`export GPG_TTY=$(tty)` to allow `gpg` to prompt you._
+
+_NOTE: It is not mandatory but it is advised to sign all commits created 
during the release. Since the commits are created
+automatically, the best way is to enable gpg sign for all commits: `git config 
commit.gpgsign true`_
+
+1. Ensure the the full application builds and all tests work by executing a 
parallel (multi-threaded) build.
+Checkstyle is part of the build, there is no need to explicitly trigger it.
+    ```
+    $ mvn -T 2.5C clean install
+    ```
+2. Ensure that `nifi-nar-maven-plugin-${VERSION}.jar` is present in the target 
directory.
+3. Evaluate and ensure the appropriate license headers are present on all 
source files.
+4. Ensure LICENSE and NOTICE files are complete and accurate. (Developers 
should always be keeping these up to date as
+    they go along adding source and modifying dependencies to keep this burden 
manageable.)
+5. Go through the steps described in "What to validate and how to validate a 
release" section
+
+### Step 3. Perform the release (RM)
+
+1. Use the Maven Release Plugin to prepare the release with this command.
+    ```
+    $ mvn --batch-mode release:prepare \
+        -Psigned_release \
+        -DscmCommentPrefix="${JIRA_TICKET}-RC${RC} " \
+        -Dtag="nifi-nar-maven-plugin-${VERSION}-RC${RC}" \
+        -DreleaseVersion="${VERSION}" \
+        -DdevelopmentVersion="${NEXT_VERSION}" \
+        -Darguments="-DskipTests"
+    ```
+2. Review the release preparation results.  If problems are found `$ mvn 
release:rollback` will reset the changes, or
+it may be necessary to run `$ mvn release:clean` to get the project to a state 
where it can be rebuilt.
+
+3. If the release preparation completed without problems, perform the release 
and deploy artifacts to staging.
+    ```
+    $ mvn release:perform \
+        -Psigned_release \
+        -DscmCommentPrefix="${JIRA_TICKET}-RC${RC} " \
+        -Darguments="-DskipTests"
+    ```
+    When this completes the artifacts have been released to the Apache Nexus 
staging repository at https://repository.apache.org. 
+    and there should the staging repository ID returned in a log entry like 
this:
+    ```
+    [INFO]  * Closing staging repository with ID "orgapachenifi-1229"
+    ```
+    ___This staging repository ID is referred to by ${STAGING_REPO_ID} in this 
release guide.___
+    ___Example staging repo url: 
https://repository.apache.org/content/repositories/orgapachenifi-1229/org/apache/nifi/nifi-nar-maven-plugin/1.5.1/___
+
+4. Browse to the Apache [Staging Repository][apache-staging-repositories] and
+login with your Apache committer credentials and you should see the newly 
created staging repository listed.  If you
+click on that you can inspect the various staged artifacts.
+
+5. Validate that all the various aspects of the staged artifacts appear correct
+    - Download the source-release and signature at the following URL. Do they 
compile cleanly?
+       `wget 
https://repository.apache.org/content/repositories/orgapachenifi-1229/org/apache/nifi/nifi-nar-maven-plugin/${VERSION}/nifi-nar-maven-plugin-${VERSION}-source-release.zip`
+       `wget 
https://repository.apache.org/content/repositories/orgapachenifi-1229/org/apache/nifi/nifi-nar-maven-plugin/${VERSION}/nifi-nar-maven-plugin-${VERSION}-source-release.zip.asc`
+    - Validate the signature and hashes. [Verifying a release 
signature](https://nifi.apache.org/gpg.html#verifying-a-release-signature).
+    - Validate that the sources contain no unexpected binaries.
+    - Validate the LICENSE/NOTICE/Headers.  
+    - Validate that the README is present and provides sufficient information 
to build and if necessary execute.
+
+6. If the validated artifacts all look good then push the local git branch and 
tag to the ASF repository.
+    ```
+    $ git push asf ${JIRA_TICKET}-RC${RC}
+    $ git push asf nifi-nar-maven-plugin-${VERSION}-RC${RC}  # Note this tag 
is created as part of the maven release plugin
+    ```
+    ___From this branch, the ${RC_TAG_COMMIT_ID} will be the 40 byte commit 
hash with the comment: ${JIRA_TICKET}-RC${RC} prepare release 
nifi-${NIFI_VERSION}-RC${RC}___
+
+7. Create the signature and hashes for the source-release. During the vote 
process we only use the source-release, so we only need that file. 
+    1. ASCII armored GPG signatures (`--digest-algo=SHA512` select the SHA512 
hash algorithm). [Configure GPG to always prefer stronger 
hashes](https://www.apache.org/dev/openpgp.html#key-gen-avoid-sha1).
+    Technically you can include the .asc file from the release build, but our 
practice is to generate the .asc file locally again. (based on the downloaded 
.zip)
+        ```
+        $ gpg -a -b --digest-algo=SHA512 
nifi-nar-maven-plugin-${VERSION}-source-release.zip
+        ```
+    2. Generate SHA256 and SHA512 hash summaries. The automation only creates 
the sha1 and md5 hashes. However we use sha256 and sha512 hashes during the
+    vote process that we need to generate locally:
+        ```
+        $ shasum -a 256 nifi-nar-maven-plugin-1.5.1-source-release.zip | cut 
-d" " -f1 > nifi-nar-maven-plugin-${VERSION}-source-release.zip.sha256
+        $ shasum -a 512 nifi-nar-maven-plugin-1.5.1-source-release.zip | cut 
-d" " -f1 > nifi-nar-maven-plugin-${VERSION}-source-release.zip.sha512
+        ```
+
+8. For reviewing of the release candidate, commit the source release and 
convenience binaries files along with their
+hashes and signatures to 
`https://dist.apache.org/repos/dist/dev/nifi/nifi-nar-maven-plugin-${VERSION}`. 
There should be in total 4 files (1 source-release.zip, 1 signature, 1 sha256, 
1 sha512).
+```
+svn checkout https://dist.apache.org/repos/dist/dev/nifi dist-dev-nifi
+ 
+cd dist-dev-nifi/
+ 
+mkdir nifi-nar-maven-plugin-${VERSION}
+# Add source release to nifi-nar-maven-plugin-${VERSION}, along with their 
corresponding signature and hash files
+ 
+svn update
+svn add nifi-nar-maven-plugin-${VERSION}
+svn commit -m "${JIRA_TICKET} Staging artifacts for 
nifi-nar-maven-plugin-${VERSION}-RC${RC}" nifi-nar-maven-plugin-${VERSION}
+```
+
+### Step 4. Error recovery (RM)
+
+If anything isn't correct about the staged artifacts you can drop the staged 
repo from repository.apache.org and delete
+the local tag in git.  If you also delete the local branch and clear your 
local maven repository under org/apache/nifi
+then it is as if the release never happened.  Before doing that though try to 
figure out what went wrong so the Release
+Guide can be updated or corrected if necessary.
+
+So, as has been described here you can test the release process until you get 
it right.  The `mvn versions:set` and
+`mvn versions:commit` commands can come in handy to help do this so you can 
set versions to something clearly release
+test related.
+
+### Step 5. Release Vote (RM and community)
+
+After the release source and artifacts are staged in the repositories, the RM 
sends a release vote to the community.
+
+Once the release vote is called for, members of the NiFi developer community 
have 72 hours to evaluate the RC and
+cast their vote by replying to the "[VOTE] Release ..." email sent by the RM.
+
+_NOTE:  The release vote is majority rule vote that must include at least 3 
binding +1 votes Apache NiFi PMC members
+and more positive than negative binding votes._
+
+1. RM sends a vote request email to the NiFi Developers Mailing List.
+    - TO: `[email protected]`
+    - FROM: `${RM_USERID}@apache.org`
+    - SUBJECT: `[VOTE] Release Apache NiFi NAR Maven Plugin ${VERSION}`
+    ```
+    Hello Apache NiFi Community,
+
+    I am pleased to be calling this vote for the source release of Apache NiFi 
NAR Maven Plugin ${VERSION}
+
+    The source being voted upon, including signatures, digests, etc. can be 
found at:
+    
https://dist.apache.org/repos/dist/dev/nifi/nifi-nar-maven-plugin-${VERSION}/
+
+    A helpful reminder on how the release candidate verification process works:
+    
https://cwiki.apache.org/confluence/display/NIFI/How+to+help+verify+an+Apache+NiFi+NAR+Maven+Plugin+release+candidate
+
+    The Git tag is nifi-nar-maven-plugin-${VERSION}-rc${VERSION}
+    The Git commit ID is ${RC_TAG_COMMIT_ID}
+    
https://gitbox.apache.org/repos/asf?p=nifi-maven.git;a=commit;h=${RC_TAG_COMMIT_ID}
+
+    Checksums of nifi-nar-maven-plugin-${VERSION}-source-release.zip:
+    SHA256: <64-CHAR-SHA256SUM-HASH>
+    SHA512: <128-CHAR-SHA512SUM-HASH>
+
+    Release artifacts are signed with the following key:
+    https://people.apache.org/keys/committer/${RM_USERID}.asc
+
+    KEYS file available here:
+    https://dist.apache.org/repos/dist/release/nifi/KEYS
+
+    3 issues were closed/resolved for this release:
+    ${JIRA_RELEASE_NOTES_URL}
+
+    Release note highlights can be found here:
+    
https://cwiki.apache.org/confluence/display/NIFI/Release+Notes#ReleaseNotes-NiFiNARMavenPluginVersion${VERSION}
+
+    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. Then please vote:
+
+    [ ] +1 Release this package as nifi-nar-maven-plugin-${VERSION}
+    [ ] +0 no opinion
+    [ ] -1 Do not release this package because ...
+    ```
+
+1. Developers in the community review the release candidate and reply to the 
vote email with their vote.
+
+1. After 72 hours if
+    - at least 3 binding (PMC members) cast +1 votes, and
+    - the positive binding votes out number any negative binding votes
+
+   the vote passes and the release candidate is officially released. If the 
vote does not pass, corrections are made
+   on the release branch and a new release candidate is put forward for a new 
vote.
+
+1. RM sends vote result email.
+    - TO: `[email protected]`
+    - FROM: `${RM_USERID}@apache.org`
+    - SUBJECT: `[RESULT][VOTE] Release Apache NiFi NAR Maven Plugin ${VERSION}`
+    ```
+    Apache NiFi Community,
+
+    I am pleased to announce that the ${VERSION} release of Apache NiFi NAR 
Maven Plugin passes with
+        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 PMC vote thread: ${VOTE_THREAD_URL}
+    ```
+
+### Step 6. Finalize the Release
+
+After the vote is complete and the release is approved, these steps complete 
the release process.
+
+1. Move convenience binaries and related artifacts from dist/dev to 
dist/release:  
+ _NOTE: the release branch requires PMC access_
+    ```
+    $ svn move -m "${JIRA_TICKET}" 
https://dist.apache.org/repos/dist/dev/nifi/nifi-nar-maven-plugin-${VERSION} 
https://dist.apache.org/repos/dist/release/nifi/nifi-nar-maven-plugin-${VERSION}
+    ```
+1. At https://repository.apache.org, login with your Apache ID credentials, go 
to Staging Repositories, select Release and follow the instructions on the site.
+
+1. Merge the release branch into main. (this will result in a merge commit)
+    ```
+    $ git checkout main
+    $ git merge --no-ff ${JIRA_TICKET}-RC${RC}
+    $ git push asf main
+    ```
+
+1. Delete the previous version release artifacts from the dist/release repo. 
Confirm the artifacts you deleted are present in apache archive where ASF keeps 
all releases forever http://archive.apache.org/dist/nifi/
+    ```
+    $ svn delete -m "${JIRA_TICKET} Removing old release dir" 
https://dist.apache.org/repos/dist/release/nifi/nifi-nar-maven-plugin-${OLD_VERSION}
+    ```
+
+1. In Jira, mark the ${JIRA_TICKET} resolved. All tickets for the Jira release 
version should now be resolved or closed. Mark the release version for 
${VERSION} as 'Released' using the NiFi Versions management page.
+This may also be a good time to create a Jira version for the next planned 
release of ${NEXT_VERSION} (usually the next hotfix version in case of NAR 
Maven Plugin).
+
+1. Ensure the release artifacts are successfully mirrored to the archive, 
specifically 
https://archive.apache.org/dist/nifi/nifi-nar-maven-plugin-${VERSION}.jar.  
+This convenience binary file will be used as a dependency in NiFi and will be 
mirrored to Maven Central.  If there were any 
+issues with the above listed file not being available, it may be necessary to 
reach out to the ASF Infra team. This step might take a long time (even an 
overnight) so
+it can be skipped.
+
+1. Create a proper signed tag of the released codebase based on the RC Tag 
created during the Maven release process.  
+_NOTE: `gpg` will be invoked during this step, which will need to prompt you 
for a password.  From the command line, use
+`export GPG_TTY=$(tty)` to allow `gpg` to prompt you._
+   ```
+   $ git tag -s rel/nifi-nar-maven-plugin-${VERSION} -m "${JIRA_TICKET} signed 
release tag for approved release of NiFi NAR Maven Plugin ${VERSION}" 
${RC_TAG_COMMIT_ID}
+   ```
+   For instructions on setting up to sign your tag see 
[here][git-sign-tag-instructs].      
+
+1. Push the release tag to the official ASF repository.
+   ```
+   $ git push asf rel/nifi-nar-maven-plugin-${VERSION}
+   ```
+
+1. Update the release notes with the final date of the release.
+
+1. After the release has been complete for an hour send the release 
announcement.
+  + See [here][apache-release-announce] for an understanding of why you need 
to wait
+  + The email must be in pure-text format otherwise the email sent to the 
announce list will be rejected. If you are using Gmail, just click the 
"vertical 3 spots" icon, and choose "pure text".
+  + The announcement should addressed as follows.
+    - TO: `[email protected]`, `[email protected]`
+    - REPLY-TO: `[email protected]`
+    - FROM: `${RM_USERID}@apache.org` (this is crucial announce list doesn't 
accept addresses outside of apache.org)
+    - SUBJECT: `[ANNOUNCE] Apache NiFi NAR Maven Plugin ${VERSION} release`.
+    ```
+    Hello
+
+    The Apache NiFi team would like to announce the release of Apache NiFi NAR 
Maven Plugin ${VERSION}.
+
+    Apache NiFi is an easy to use, powerful, and reliable system to process 
and distribute
+    data. Apache NiFi was made for dataflow. It supports highly configurable 
directed graphs
+    of data routing, transformation, and system mediation logic.
+
+    Nar Maven Plugin is a release artifact used for supporting the NiFi 
classloader isolation model.
+
+    More details on Apache NiFi can be found here:
+    https://nifi.apache.org/
+
+    The release artifacts can be downloaded from here:
+    
https://repository.apache.org/content/groups/public/org/apache/nifi/nifi-nar-maven-plugin/${VERSION}/
+
+    Maven artifacts have been made available and mirrored as per normal ASF 
artifact processes.
+
+    Issues closed/resolved for this list can be found here:
+    ${JIRA_RELEASE_NOTES_URL}
+
+    Release note highlights can be found here:
+    
https://cwiki.apache.org/confluence/display/NIFI/Release+Notes#ReleaseNotes-NiFiNARMavenPluginVersion${VERSION}
+
+    Thank you
+    The Apache NiFi team
+    ```
+
+[nifi-quickstart-guide]: https://nifi.apache.org/quickstart.html
+[nifi-release-notes]: 
https://cwiki.apache.org/confluence/display/NIFI/Release+Notes
+[nifi-migration-guide]: 
https://cwiki.apache.org/confluence/display/NIFI/Migration+Guidance
+
+[apache-encryption]: https://www.apache.org/licenses/exports/
+[apache-glossary-committer]: 
https://www.apache.org/foundation/glossary.html#Committer
+[apache-glossary-community]: 
https://www.apache.org/foundation/glossary.html#Community
+[apache-glossary-pmc]: https://www.apache.org/foundation/glossary.html#PMC
+[apache-guide-publish-maven]: 
https://www.apache.org/dev/publishing-maven-artifacts.html
+[apache-legal-resolve]: https://www.apache.org/legal/resolved.html
+[apache-license]: https://apache.org/licenses/LICENSE-2.0
+[apache-license-apply]: https://www.apache.org/dev/apply-license.html
+[apache-pgp]: https://www.apache.org/dev/openpgp.html
+[apache-release-announce]: 
https://www.apache.org/dev/release.html#release-announcements
+[apache-release-guide]: https://www.apache.org/dev/release-publishing
+[apache-release-manager]: 
https://www.apache.org/dev/release-publishing.html#release_manager
+[apache-release-policy]: https://www.apache.org/dev/release.html
+[apache-release-signing]: http://www.apache.org/dev/release-signing.html
+[apache-signature-verify]: 
https://www.apache.org/dev/release-signing.html#verifying-signature
+[apache-staging-repositories]: 
https://repository.apache.org/#stagingRepositories
+
+[git-sign-tag-instructs]: 
http://gitready.com/advanced/2014/11/02/gpg-sign-releases.html
+[sonatype-maven-password]: 
http://blog.sonatype.com/2009/10/maven-tips-and-tricks-encrypting-passwords
+
+[jira-version-url]: 
https://issues.apache.org/jira/projects/NIFI/versions/12353009
+[jira-release-notes-url]: 
https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12316020&version=12353009
+
+[151-rc1-vote]: 
https://lists.apache.org/thread/vrr3ndjh2wd9f4c8slb82232yglbfysd

Reply via email to