From f4dfc40142bb4e24d92ad62d3bec8afe9a931e7f Mon Sep 17 00:00:00 2001 From: Gilles Sadowski Date: Tue, 13 Dec 2022 01:36:55 +0100 Subject: [PATCH] Update release howto. --- doc/release/release.howto.txt | 61 +++++++++++++++++++++-------------- 1 file changed, 36 insertions(+), 25 deletions(-) diff --git a/doc/release/release.howto.txt b/doc/release/release.howto.txt index 0096f58ad..1c3d31c23 100644 --- a/doc/release/release.howto.txt +++ b/doc/release/release.howto.txt @@ -71,9 +71,9 @@ Preliminary checks: * All Java files must contain a license header. The "RAT" maven plugin will generate a report indicating for which files the license is missing. * For a "minor" release, the library must be backward-compatible. Check all - the errors reported by the "Clirr" plugin. + the errors reported by the "Clirr" and/or "Revapi" plugin. * Clear all "CheckStyle" warnings. - * Make sure that the construct reported by "FindBugs" are intentional. + * Make sure that the construct reported by "SpotBugs" are intentional. * Mark all fixed issues as such in the bug-tracking system, and add a corresponding entry in "src/changes/changes.xml". @@ -86,7 +86,19 @@ that the build process can create all the necessary artifacts. The commands $ mvn clean site deploy -Prelease -Ptest-deploy should create the artifacts in the "target/deploy" (note that the "JAVA_HOME" -environment variable msut be defined to point to a valid JDK installation). +environment variable must be defined to point to a valid JDK installation). + +Note: If running from a remote terminal, you might need to tune the "gpg-agent" +configuration file + ~/.gnupg/gpg-agent.conf +to contain the following statements: + ---CUT--- + enable-ssh-support + pinentry-program /usr/bin/pinentry-tty + ---CUT--- +and execute + $ export GPG_TTY=$(tty) +in order to set up the environment for entering the passphrase. (2) @@ -100,6 +112,7 @@ remembering the binding between the local and remote origin branches: $ git branch X.Y-release $ git push -u origin X.Y-release + (3) Switch to the release branch: @@ -115,6 +128,8 @@ branch since the creation of the release branch, there are two cases: merge master branch or version branch into X.Y-release branch: $ git merge master + or + $ git rebase master or, if the version branch is called MATH_3_X $ git merge MATH_3_X @@ -134,10 +149,10 @@ In particular: * Estimate a release date (taking into account the release vote delay) and insert it in the "src/changes/changes.xml" file. * Update the "pom.xml" to contain the final version number and not a SNAPSHOT: - Assuming that the release version will be "3.4", modify the "" tag to + Assuming that the release version will be "4.0-beta1", modify the "" tag to read: - 3.4 + 4.0-beta1 Modify the section of "" that also refers to version numbers. You should uncomment the "" line and indicate the @@ -147,7 +162,7 @@ In particular: - 3.4 + 4.0-beta1 RC1 @@ -157,7 +172,7 @@ In particular: The "download" page template is located at "src/site/xdoc/download_math.xml". This file is updated automatically by running the command: - $ mvn commons:download-page + $ mvn commons-build:download-page (7) @@ -180,7 +195,7 @@ Check you did not forget any file: $ git status Commit the changes: - $ git commit -m "creating release candidate" + $ git commit -m "Create release candidate." (8) @@ -193,31 +208,27 @@ Then, assuming the first candidate, the suffix will be "RC1" (this should be the same as in the "" in the "pom.xml"), and the command will be: - $ git tag -s -m "Creating Apache Commons Math v3.4 RC1 tag." MATH_3_4_RC1 - -If you have several GPG keys, you may prefer to use "-u keyId" to select a specific -key for signing the tag instead of "-s" which select automatically one key -from the configured e-mail address. + $ git tag -u "__Your_key_id__" -m "Create Commons Math v4.0-beta1 RC1 tag." commons-math-4.0-beta1-RC1 Check the tag GPG signature: - $ git tag -v MATH_3_4_RC1 + $ git tag -v commons-math-4.0-beta1-RC1 You will get something like: - object cf4a9d70c9ac24dd7196995390171150e4e56451 + object 1d862ec8cca30a6b797583ef2f837e54830f658d type commit - tag MATH_3_4_RC1 - tagger Luc Maisonobe 1418934614 +0100 + tag commons-math-4.0-beta1-RC1 + tagger Gilles Sadowski 1670895878 +0100 - Creating Apache Commons Math v3.4 RC1 tag. - gpg: Signature made Thu Dec 18 21:30:14 2014 CET using RSA key ID 02E9F65B - gpg: Good signature from "Luc Maisonobe (CODE SIGNING KEY) " - gpg: aka "Luc Maisonobe " - gpg: aka "Luc Maisonobe " - gpg: aka "Luc Maisonobe " + Create Commons Math v4.0-beta1 RC1 tag. + gpg: Signature made Tue 13 Dec 2022 02:44:38 AM CET + gpg: using RSA key B39617E095CD748DFE505816703413011E22D5B8 + gpg: issuer "erans@apache.org" + gpg: Good signature from "Gilles Sadowski (ASF code signing) " [ultimate] + gpg: aka "Gilles Sadowski " [ultimate] -Remember the commit ID listed in the object line (here cf4a9d70c9ac24dd7196995390171150e4e56451), +Remember the commit ID listed in the object line (here: 1d862ec8cca30a6b797583ef2f837e54830f658d), as it is the most stable reference for traceability. Push everything (including the tag!) on the Apache repository: @@ -229,7 +240,7 @@ Switch to a new directory out of your regular workspace, and retrieve the official tag from the Apache repository: $ cd /tmp - $ git clone https://gitbox.apache.org/repos/asf/commons-math.git --branch MATH_3_4_RC1 + $ git clone https://gitbox.apache.org/repos/asf/commons-math.git --branch commons-math-4.0-beta1-RC1 In the command above, the --branch option accepts both branch names and tags names, so we specify directly the tag here. Git will warn that the resulting workspace