You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@datasketches.apache.org by le...@apache.org on 2023/12/06 02:24:52 UTC

(datasketches-website) branch master updated: Update Java Release Process Document

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

leerho pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/datasketches-website.git


The following commit(s) were added to refs/heads/master by this push:
     new 76d2bae7 Update Java Release Process Document
76d2bae7 is described below

commit 76d2bae71623b2d68687d18dceba36bb78496bdd
Author: Lee Rhodes <le...@users.noreply.github.com>
AuthorDate: Tue Dec 5 18:24:42 2023 -0800

    Update Java Release Process Document
---
 docs/Community/ReleaseProcessForJavaComponents.md | 224 ++++++++++++----------
 1 file changed, 122 insertions(+), 102 deletions(-)

diff --git a/docs/Community/ReleaseProcessForJavaComponents.md b/docs/Community/ReleaseProcessForJavaComponents.md
index db58fe53..2cbb8438 100644
--- a/docs/Community/ReleaseProcessForJavaComponents.md
+++ b/docs/Community/ReleaseProcessForJavaComponents.md
@@ -27,75 +27,82 @@ __NOTES:__
 * Some of these operations can be performed either on the Command-Line or in your IDE, whatever you prefer.
 
 ## Preparation
-* Confirm correctness for
-    * LICENSE
-    * NOTICE -- check for copyright dates
-    * README.md
-    * .asf.yaml
-    * .travis.yml (if used)
-    * .gitattributes -- used to exclude files from release zip, assumes .gitignore
-    * .github/workflows
-    * .gitignore -- used to exclude files from origin
-    * pom.xml / apache-rat-plugin -- checks for license headers, assumes .gitignore
-    * pom.xml
-         
-* From Command Line or IDE:
-    * Run Unit tests
-    * Run Code Coverage > 90%
-    * Run SpotBugs checks (is it properly configured?)
-    * Run Checkstyle (is it properly configured?)
-    * Confirm that all __temporary__ branches are checked into master and/or deleted, both local and remote.
-    * Confirm any new bug fixes have corresponding tests
 
+### Check for Code Completeness
+* Confirm that all __temporary__ branches are checked into master and/or deleted, both local and remote.
+* Confirm any new bug fixes have corresponding tests
+* At major version releases, search for deprecated code and remove at __Major Versions__ only.
+    * `find . -name "*.java" -type f -print | xargs grep -i -n -s -A0 "deprecated"`
+    * **Note:** When first marking a segment of code deprecated, please add the current version number. This will make it easier to know when to remove the deprecated code.
+
+### Check Maven Plugin, Dependency, Property Versions of the POM:
+* `mvn versions:display-plugin-updates`
+* `mvn versions:display-dependency-updates`
+* `mvn versions:display-property-updates`
+
+### Visual Checks for Correctness
+* LICENSE
+* NOTICE -- check for copyright dates
+* README.md
+* .asf.yaml
+* .travis.yml (if used)
+* .gitattributes -- used to exclude files from release zip, assumes .gitignore
+* .github/workflows
+* .gitignore -- used to exclude files from origin
+* pom.xml / apache-rat-plugin config -- checks for license headers, assumes .gitignore
+* pom.xml
+
+### Run Maven Tests
+* `mvn apache-rat:check`
+* `mvn clean test`
+* `mvn clean test -P strict`
+* `mvn clean test -P check-cpp-files`
+* `mvn clean javadoc:javadoc`
+* `mvn clean install -DskipTests=true`
+* Check that the /target/ directory has 5 jars: (may need to refresh)
+    * datasketches-\<component\>-SNAPSHOT-javadoc.jar
+    * datasketches-\<component\>-SNAPSHOT-sources.jar
+    * datasketches-\<component\>-SNAPSHOT-test-sources.jar
+    * datasketches-\<component\>-SNAPSHOT-tests.jar
+    * datasketches-\<component\>-SNAPSHOT.jar
+* Check your local Maven local repository
+    * _~/.m2/repository/org/apache/datasketches/datasketches-\<component\>/A.B.0-SNAPSHOT/_ 
+    * It should have 5 new jars and a .pom file. 
+
+### Run IDE Checks
+* Run Code Coverage > 90%
+* SpotBugs checks (is it properly configured?)
+* Checkstyle (is it properly configured?)
+
+## Create Permanent Release Branch & Update POM Version
+
+### Make sure GPG-Agent is running and GitHub is clean
 * From Command Line at Component root:
-  * To confirm *gpg-agent* is running type:
-      * `eval $(gpg-agent --daemon)`
-          * if it is not running it will start it.
-          * if it is already running you will see something like:
-          * `gpg-agent: a gpg-agent is already running - not starting a new one`  
+    * `eval $(gpg-agent --daemon)`
+        * if it is not running it will start it.
+        * if it is already running you will see something like:
+        * `gpg-agent: a gpg-agent is already running - not starting a new one`  
 
-  * Confirm GitHub repository is current and git status is clean:
-      * `git status` # should return:
-      * "On branch master, your branch is up to date with 'origin/master', nothing to commit, working tree clean."
-  * At major version releases, search for deprecated code and remove at __Major Versions__ only.
-      * `find . -name "*.java" -type f -print | xargs grep -i -n -s -A0 "deprecated"`
-      * **Note:** When first marking a segment of code deprecated, please add the current version number. This will make it easier to know when to remove the deprecated code.
-  * Check Maven Plugin, Dependency, Property Versions of the POM:
-      * `mvn versions:display-plugin-updates`
-      * `mvn versions:display-dependency-updates`
-      * `mvn versions:display-property-updates`
-  * Maven Tests:
-      * `mvn apache-rat:check`
-      * `mvn clean test`
-      * `mvn clean test -P strict`
-      * `mvn clean javadoc:javadoc`
-      * `mvn clean install -DskipTests=true`
-      * Check that the /target/ directory has 5 jars: (may need to refresh)
-          * datasketches-\<component\>-SNAPSHOT-javadoc.jar
-          * datasketches-\<component\>-SNAPSHOT-sources.jar
-          * datasketches-\<component\>-SNAPSHOT-test-sources.jar
-          * datasketches-\<component\>-SNAPSHOT-tests.jar
-          * datasketches-\<component\>-SNAPSHOT.jar
-
-      * Check your local Maven repository
-          * _~/.m2/repository/org/apache/datasketches/datasketches-\<component\>/A.B.0-SNAPSHOT/_ 
-          * It should have 5 new jars and a .pom file. 
- 
-
-## Create Permanent Release Branch & POM Version Preparation
+    * Confirm GitHub repository is current and git status is clean:
+        * `git status` # should return:
+        * "On branch master, your branch is up to date with 'origin/master', nothing to commit, working tree clean."
+     
+### Create New Release Branch
 * Assume current master POM version = A.B.0-SNAPSHOT
-* From IDE or Command Line: 
-    * Switch from Master to new __Permanent Branch__: "A.B.X"
-        * Note: This assumes a normal progression of release numbers. However, when moving to a new major release the current A.B.0-SNAPSHOT will be followed by a new __Permanent Branch__: A'.0.X, where A' = A + 1.   
-    * Edit pom.xml version to A.B.0 (remove -SNAPSHOT, do not change A or B) in case of normal progression, or A'.0.0 in the case of a new major release.
-    * Commit the change. __DO NOT PUSH!__
-    * Create Annotated TAG: A.B.0-RC1 (or RCn) or A'.0.0-RC1
-    * Write down the Git hash : example: 40c6f4f
-    * Now Push Branch  "A.B.X" with edited pom.xml to origin
-    * __DO NOT MERGE THIS PERMANENT BRANCH INTO MASTER__
-* From IDE or Command-line: 
-    * Do explicit push of tags on new branch A.B.X (or A'.0.X) to origin:
-        * `git push origin --tags`
+* Create new __Permanent Branch__: "A.B.X"
+    * Note: This assumes a normal progression of release numbers. However, when moving to a new major release the current A.B.0-SNAPSHOT will be followed by a new __Permanent Branch__: A'.0.X, where A' = A + 1.
+
+### Edit Release Branch POM Version to Target Release Version 
+* Switch to new Release Branch
+* Edit pom.xml version to A.B.0 (remove -SNAPSHOT, do not change A or B) in case of normal progression, or A'.0.0 in the case of a new major release.
+* Commit the change. __DO NOT PUSH!__
+* Create Annotated TAG for this commit: A.B.0-RC1 (or RCn) or A'.0.0-RC1
+* Write down the Git hash : example: 40c6f4f (you will need it later)
+* __Now Push__ Branch  "A.B.X" with edited pom.xml to origin __NEVER MERGE THIS PERMANENT BRANCH INTO MASTER__
+* Do explicit push of tags on new branch A.B.X (or A'.0.X) to origin:
+    * `git push origin --tags`
+
+### Confirm new Release Branch, Tag and Git hash
 * From a web browser at origin web site: github.com/apache/datasketches-\<component\>
     * Select the A.B.X branch or A'.0.X
     * Confirm that the tag: A.B.0-RC1 (or A'.0.0-RC1) exists and that the tag is on the latest commit and with the correct Git hash.
@@ -104,12 +111,15 @@ __NOTES:__
     * Confirm that the tag A.B.0-RC1 and the branch A.B.X, (or A'.0.0-RC1 and the branch A'.0.X) and HEAD coincide with the correct Git hash.
     * Confirm that there are no unstaged or staged changes.
     * Return to master branch
-    * Edit master pom.xml to A'.B'.0-SNAPSHOT where A' or B' will be incremented by 1. (Bug fix releases will change the 3rd digit)
-    * Commit and Push this change to origin/master with the comment "Release Process: Change pom version to A'.B'.0-SNAPSHOT."
-    * Create a tag A'.B'.0-SNAPSHOT on master at the HEAD.
-    * Push the tag to origin: `git push origin --tags`
-    * Return to release branch A.B.X (or A'.0.X)
-    * You may minimize your IDE, pointing at the release branch.
+
+### Edit Master Branch with the SNAPSHOT Version of the Next Release
+* Edit master pom.xml to A'.B'.0-SNAPSHOT where A' or B' will be incremented by 1. (Bug fix releases will change the 3rd digit)
+* Commit and Push this change to origin/master with the comment "Release Process: Change pom version to A'.B'.0-SNAPSHOT."
+    * This may require changing to a temparary branch and creating a PR to be approved if master branch is restricted. 
+* Create a tag A'.B'.0-SNAPSHOT on master at the HEAD.
+* Push the tag to origin: `git push origin --tags`
+* Return to release branch A.B.X (or A'.0.X)
+* You may minimize your IDE, pointing at the release branch.
 
 ## Create and/or Checkout Local *dist/dev* directories on your system
 * If you have not already, on your system create the two directory structures that mirror the dist.apache.org/repos/ directories:
@@ -124,19 +134,19 @@ __NOTES:__
         * `svn status`    # make sure it is clean
 
 ## Create the Candidate Apache Release Distribution on *dist/dev*
-### Create primary zip files & signatures
+### Create Primary Zip Files & Signatures/Hashes
 * You will need the following arguments:
   * Absolute path of target project.basedir on your system
   * Project.artifactId : datasketches-\<component\> where component is e.g., java, pig, hive,...
   * GitHub Tag: A.B.0-RC1 (or RCn)
-  * Have your GPG passphrase handy -- you have only a few seconds to enter it!
+  * Have your GPG passphrase handy -- you may have only a few seconds to enter it!
 * Start a new terminal in the above dist/dev/datasketches/scripts directory on your system:
-  * To confirm *gpg-agent* is running type:
+  * Confirm *gpg-agent* is running:
       * `eval $(gpg-agent --daemon)`
           * if it is not running it will start it
           * if it is already running you will see something like:
           * `gpg-agent: a gpg-agent is already running - not starting a new one`  
-  * Run something like:
+  * Run something like (you need to edit this):
     * `./bashDeployToDist.sh /Users/\<name\>/dev/git/Apache/datasketches-\<component\> datasketches-\<component\> A.B.0-RC1`
     * Follow the instructions.
     * NOTE: if you get the error "gpg: signing failed: No pinentry":
@@ -145,46 +155,58 @@ __NOTES:__
         * reload the gpg agent in the terminal: `gpg-connect-agent reloadagent /bye` 
         * restart the *./bashDeployToDist* script
     * Close the terminal
+
+### Check Primary Zip Files & Signatures/Hashes
 * Check this web URL ~ *https://dist.apache.org/repos/dist/dev/datasketches/\<component\>/A.B.0-RC1/*
     * There should be 3 files: \*-src.zip, \*-src.zip.asc, \*-src.zip.sha512
     * Copy the URL for later.
 
-### Java: Push Jars to Nexus (Maven Central) Staging
+## Java Only: Push Jars to Nexus (Maven Central) Staging
 * Return to original terminal at the project.basedir, still in the A.B.X branch.
 * If starting new terminal make sure GPG is running:
-  * To confirm *gpg-agent* is running type:
+  * Confirm *gpg-agent* is running:
       * `eval $(gpg-agent --daemon)`
           * if it is not running it will start it
           * if it is already running you will see something like:
           * `gpg-agent: a gpg-agent is already running - not starting a new one`  
 * `git status` # make sure you are still on the release branch: A.B.X
-* TRIAL-RUN:
-  * **Have your GPG passphrase handy -- you have only a few seconds to enter it!**
-  * `mvn clean install -Pnexus-jars -DskipTests=true`
-      * Check target/ that jars & pom have .asc signatures
-* DEPLOY
-  * **Have your GPG passphrase handy -- you have only a few seconds to enter it, but it may be automatic!**
-  * `mvn clean deploy -Pnexus-jars -DskipTests=true`
-      * Login to [repository.apache.org](https://repository.apache.org/) / Staging Repositories for orgapachedatasketches-XXXX
-      * Click Content and search to the end.  Each jar & pom should have .asc, .md5, .sha1 signatures
-      * [CLOSE] the Staging Repository with a comment: "\<component\> A.B.0"
-      * Confirm its existance under Repositories/Staging web-site URL (in the summary window)
-      * Grab its URL while there. You will need it for the Vote Letter.
-      * Check your local Maven repository
-          * _~/.m2/repository/org/apache/datasketches/datasketches-\<component\>/A.B.0/_ 
-          * It should have 5 new jars and a .pom file each with .asc, .md5, and .sha1 signatures
+
+### TRIAL-RUN:
+* **Have your GPG passphrase handy -- you may have only a few seconds to enter it!**
+* `mvn clean install -Pnexus-jars -DskipTests=true`
+    * Check target/ that jars & pom have .asc signatures
+
+### DEPLOY
+* **Have your GPG passphrase handy -- you may have only a few seconds to enter it, but it may be automatic!**
+* `mvn clean deploy -Pnexus-jars -DskipTests=true`
+
+### DEPLOY-CHECK
+* Login to [repository.apache.org](https://repository.apache.org/) / Staging Repositories for orgapachedatasketches-XXXX
+* Click __Content__ and search to the end.  Each jar & pom should have .asc, .md5, .sha1 signatures
+
+### CLOSE (Very Important)
+* [CLOSE] the Staging Repository with a comment: "\<component\> A.B.0"
+
+### CHECK CLOSE
+* Confirm its existance under Repositories/Staging web-site URL (in the summary window)
+* Grab its URL while there. You will need it for the Vote Letter.
+
+### CHECK Local Maven Repo
+* Check your local Maven repository
+    * _~/.m2/repository/org/apache/datasketches/datasketches-\<component\>/A.B.0/_ 
+    * It should have 5 new jars and a .pom file each with .asc, .md5, and .sha1 signatures
 
 ### Create Copy of External Artifact Distributions
-#### JAVA
+#### JAVA ONLY
 * Place copies of the artifact jars deployed to Nexus under a "maven" directory.  For example see <https://dist.apache.org/repos/dist/dev/datasketches/memory/1.3.0-RC1/>
 * Note that the `jar` files with their `asc`, `md5` and `sha1` signature are all together in the .md2 archive 
 * Add a `maven` directory under the `dist/dev/datasketches/\<component\>/A.B.0/`
 * Bulk copy the `jar, asc, md5` and `sha1` files into the `maven` directory.
-* Do: `svn status` # check to see if it is ready to add
-* Do: `svn add . --force`
-* Do: `svn ci -m "add nexus jars to dist/dev/datasketches"`
+* `svn status` # check to see if it is ready to add
+* `svn add . --force`
+* `svn ci -m "add nexus jars to dist/dev/datasketches"`
 
-#### Non-Java
+#### NON-JAVA
 * For external artifacts such as Python or Docker the subdirectory name should be relevant to the type.
 * These must be signed with GPG (.asc) and SHA512 (.sha512)
 
@@ -198,7 +220,7 @@ __NOTES:__
 * Declare that the vote is closed.
 * Summarize vote results
 
-## Finalize the Release
+## If Successful, Finalize the Release
 
 ### Copy files from *dist/dev* to *dist/release*
 * In local *dist/__dev__/datasketches/*
@@ -229,14 +251,14 @@ __NOTES:__
     * Using local file system
         * Delete the prior X.Y.0 directory if necessary.
 
-### Java: Release Jars on Nexus Staging
+### Java Only: Release Jars on Nexus Staging
 * On Nexus [repository.apache.org](https://repository.apache.org/) click on Staging Repositories
 * Select "orgapachedatasketches-XXXX" (If more than one make sure you select the right one!)
 * At the top of the window, select "Release"
 * Confirm that the attributes have moved to the "Releases" repository under "Repositories"
     * Browse to *Releases/org/apache/datasketches/...*
 
-### Java: Drop any previous Release Candidates that were not used.
+### Java Only: Drop any previous Release Candidates that were not used.
 * On Nexus [repository.apache.org](https://repository.apache.org/) click on Staging Repositories
 * Select "orgapachedatasketches-XXXX" (If more than one make sure you select the right one!)
 * At the top of the window, select "Drop"
@@ -267,8 +289,6 @@ reflected in the master. Use the **git cherry-pick** command for this.
     * `./createDownloadsInclude.sh /Users/\<name\>/ ... /datasketches-website`
 * When this is done, be sure to commit the changes to the website.
 
-### Update Javadocs (or Equivalent) on Website
-
 ### Update Website Documentation (if new functionality)
 
 ### Prepare Announce Letter to dev@


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@datasketches.apache.org
For additional commands, e-mail: commits-help@datasketches.apache.org