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