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 6c40c5f8 Update Java Release Process
6c40c5f8 is described below
commit 6c40c5f8cc973461922c04fba20b4b9498471023
Author: Lee Rhodes <[email protected]>
AuthorDate: Sat Nov 9 14:58:24 2024 -0800
Update Java Release Process
---
docs/Community/ReleaseProcessForJavaComponents.md | 121 +++++++++++-----------
1 file changed, 60 insertions(+), 61 deletions(-)
diff --git a/docs/Community/ReleaseProcessForJavaComponents.md
b/docs/Community/ReleaseProcessForJavaComponents.md
index 7fad83f0..b58edcbc 100644
--- a/docs/Community/ReleaseProcessForJavaComponents.md
+++ b/docs/Community/ReleaseProcessForJavaComponents.md
@@ -23,14 +23,14 @@ layout: doc_page
# Release Process For Java Components
__NOTES:__
-* This process covers major and minor releases only. Bug-fix releases, which
increment the third digit, are performed on a A.B.X branch and not on master,
but otherwise are similar.
+* This process covers major and minor releases only. Patch-fix releases, which
increment the third digit, are performed on a A.B.X branch and not on
master/main, but otherwise are similar.
* Some of these operations can be performed either on the Command-Line or in
your IDE, whatever you prefer.
-* The Java **datasketches-memory** project has its own specialized release
process. Please consult the README.md file on that project.
+* The Java **datasketches-memory-2.X and 3.X** projects have their own
specialized release process. Please consult the README.md file on those
projects.
## Preparation
-### Check for Code Completeness
-* Confirm that all __temporary__ branches are checked into master and/or
deleted, both local and remote.
+### Check For Code Completeness
+* Confirm that all __temporary__ branches are checked into master/main 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 -n -s -A0 "deprecat"`
<br/> (This will find "deprecated", "Deprecating", "deprecation", etc.)
@@ -52,7 +52,6 @@ For Java 8, the TestNG version must remain at 7.5.1
* `mvn versions:display-plugin-updates`
* `mvn versions:display-property-updates` For all POM properties
-
### Visual Checks for Correctness
* LICENSE
* NOTICE -- check for copyright dates
@@ -72,66 +71,65 @@ Also specifies line separator characters for text files.
* `mvn clean test -P check-cpp-files` (only for ds-java)
* `mvn clean test -P check-cpp-historical-files` (only for ds-java)
* `mvn clean javadoc:javadoc`
-* `mvn clean install -DskipTests=true`
-
-* Check that the /target/ directory has 5 jars: (may need to refresh)
- * datasketches-\<component-version\>-SNAPSHOT-javadoc.jar
- * datasketches-\<component-version\>-SNAPSHOT-sources.jar
- * datasketches-\<component-version\>-SNAPSHOT-test-sources.jar
- * datasketches-\<component-version\>-SNAPSHOT-tests.jar
- * datasketches-\<component-version\>-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:
- * `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."
-
-### Create New Release Branch
-* Assume current master POM version = A.B.0-SNAPSHOT
-* 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
+## Create Permanent Release Branch & Update POM Versions
+
+### Assume Semantic Versioning
+* Current master/main POM version = A.B.0-SNAPSHOT
+* Next anticipated future release of master/main = A.B'.0-SNAPSHOT where B' =
B + 1.
+* Release branch = A.B.X.
+* Target release version = A.B.0.
+ * Except for patch releases where the 3rd digit is modified on the same
release branch A.B.X
+
+### Make Sure Master/Main Branch Is Clean
+* From command line at component root on master/main branch:
+* Confirm master/main branch is current and git status is clean:
+ * `git status` # should return:
+ * "On branch master/main, your branch is up to date with
'origin/master(main)', nothing to commit, working tree clean."
+
+### Edit Master/Main Branch POM with the SNAPSHOT Version of the Anticipated
Next Future Release
+* Edit master/main pom.xml to A'.B'.0-SNAPSHOT where A' or B' will be
incremented by 1.
+* Commit and Push this change to origin/master(main) with the comment "Release
Process: Change master/main pom version to A'.B'.0-SNAPSHOT."
+ * This may require changing to a temparary branch and creating a PR to be
approved if master/main branch is restricted.
+
+### Create And Switch to New __Permanent Release Branch__ "A.B.X"
+
+### Edit Release Branch POM Version to Target Release Version "A.B.0"
+* Note: if major version change, the target release version will be A'.0.0,
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!__
+* Commit the change locally. __DO NOT PUSH YET!__
* 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__
+* __NOW PUSH__ Release Branch "A.B.X" with edited pom.xml to origin __DO NOT
MERGE THIS PERMANENT BRANCH INTO MASTER/MAIN__
* 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
+### Run Maven Install on Release Branch
+* `mvn clean install -DskipTests=true`
+* Check that the /target/ directory has 5 jars: (may need to refresh)
+ * datasketches-\<component-version\>-javadoc.jar
+ * datasketches-\<component-version\>-sources.jar
+ * datasketches-\<component-version\>-test-sources.jar
+ * datasketches-\<component-version\>-tests.jar
+ * datasketches-\<component-version\>.jar
+* Check your local Maven local repository
+ *
_~/.m2/repository/org/apache/datasketches/datasketches-\<component\>/A.B.0/_
+ * It should have 5 new jars and a .pom file.
+
+#### 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.
- * __DO NOT CREATE PR OR MERGE THIS PERMANENT BRANCH INTO MASTER__
+ * __DO NOT CREATE PR OR MERGE THIS PERMANENT BRANCH INTO MASTER/MAIN__
* From IDE or Command Line:
* 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 Branch with the SNAPSHOT Version of the Anticipated Next
Future Release
-* Edit master pom.xml to A'.B'.0-SNAPSHOT where A' or B' will be incremented
by 1.
-* 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.
-* Return to release branch A.B.X (or A'.0.X)
+ * Return to master/main branch
* You may minimize your IDE, pointing at the release branch.
## Push Candidate Release to *dist/dev*
@@ -145,20 +143,21 @@ Also specifies line separator characters for text files.
* Open a terminal in the dist/dev/datasketches directory and do a checkout:
* `svn co https://dist.apache.org/repos/dist/dev/datasketches/ .`
#Note the DOT
* `svn status` # make sure it is clean: does not list any (?) or (!)
files
+ * If any (?) or (!) files exist they must be resolved before
proceding.
### Create & Push Zip Files & Signatures/Hashes to *dist/dev*
* 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)
+ * Absolute system path of target project.basedir pointing to the release
branch
+ * Project.artifactId : "datasketches-\<component\>" where component is e.g.,
java, memory, pig, hive,...
+ * Release GitHub Tag: A.B.0-RC1 (or RCn)
* 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:
* 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 this (you need to copy & edit):
+ * `gpg-agent: a gpg-agent is already running - not starting a new
one`
+ * Run something like this (you must copy & edit):
* `./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":
@@ -166,9 +165,9 @@ Also specifies line separator characters for text files.
* change to: pinentry-program */usr/local/bin/pinentry-tty*
* reload the gpg agent in the terminal: `gpg-connect-agent reloadagent
/bye`
* restart the *./bashDeployToDist* script
- * Close the terminal
+ * Close the terminal
-### Check Primary Zip Files & Signatures/Hashes
+#### Check Primary Zip Files & Signatures/Hashes
* Check this web URL ~
*https://dist.apache.org/repos/dist/dev/datasketches/\<component\>/A.B.0-RC1/*
* Update SVN: `svn up`
* There should be 3 files: \*-src.zip, \*-src.zip.asc, \*-src.zip.sha512
@@ -195,7 +194,7 @@ Also specifies line separator characters for text files.
* **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
+#### DEPLOY-CHECK
* Login to Nexus: [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
* Check target/ & .m2 that jars & pom exist and have .asc signatures
@@ -203,11 +202,11 @@ Also specifies line separator characters for text files.
### CLOSE (Very Important)
* [CLOSE] the Staging Repository with a comment: "\<component\> A.B.0"
-### CHECK CLOSE
+#### 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 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. <br/> Note: Newer versions of the Maven deploy plugin do not
copy the md5 and sha1 signatures into .m2, but they will still exist in Nexus.
md5 and sha1 are obsolete.
@@ -278,9 +277,9 @@ Also specifies line separator characters for text files.
* Select "orgapachedatasketches-XXXX" (If more than one make sure you select
the right one!)
* At the top of the window, select "Drop"
-### If necessary, update branch *master* from branch *A.B.X*
+### If necessary, update branch *master/main* from branch *A.B.X*
If you have gone through more than one Release Candidate, you may have changes
that need to be
-reflected in the master. Use the **git cherry-pick** command for this.
+reflected in the master/main. Use the **git cherry-pick** command for this.
## Finalize Release Documentation
@@ -299,7 +298,7 @@ reflected in the master. Use the **git cherry-pick**
command for this.
### Update Website Downloads.md "Latest Source Zip Files" Table
* This script assumes that the remote *.../dist/release/datasketches/...*
directories are up-to-date with no old releases.
* Start a new terminal in the *../dist/dev/datasketches/scripts* directory on
your system:
-* Make sure your local website directory is pointing to master and up-to-date.
+* Make sure your local website directory is pointing to master/main and
up-to-date.
* Run the following with the argument specifying the location of your local
website directory:
* `./createDownloadsInclude.sh /Users/<name>/ ... /datasketches-website`
* When this is done, be sure to commit the changes to the website.
@@ -307,7 +306,7 @@ reflected in the master. Use the **git cherry-pick**
command for this.
### Update Website Documentation
* From the *github.com/datasketches-\<component\>* website, run JavaDoc
GitHub action for the release tag:
* On the component website (github.com/apache/datasketches-\<component\>),
go to *Actions* and select the *JavaDoc* workflow.
- * Open the *Run workflow* pull-down, then in the *Branch:master*
pull-down, select the correct release tag instead of the branch.
+ * Open the *Run workflow* pull-down, then in the *Branch:master/main*
pull-down, select the correct release tag instead of the branch.
* Run the workflow and check that it finished successfully.
* Return to the component website home, select the *gh-pages* branch and
check that it created *docs/X.Y.Z* directory
* From your local *datasketches-website* directory:
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]