Update release howto.

This commit is contained in:
Gilles Sadowski 2022-12-13 01:36:55 +01:00
parent 780dba1a30
commit f4dfc40142
1 changed files with 36 additions and 25 deletions

View File

@ -71,9 +71,9 @@ Preliminary checks:
* All Java files must contain a license header. The "RAT" maven plugin will * All Java files must contain a license header. The "RAT" maven plugin will
generate a report indicating for which files the license is missing. generate a report indicating for which files the license is missing.
* For a "minor" release, the library must be backward-compatible. Check all * 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. * 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 * Mark all fixed issues as such in the bug-tracking system, and add a
corresponding entry in "src/changes/changes.xml". 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 $ mvn clean site deploy -Prelease -Ptest-deploy
should create the artifacts in the "target/deploy" (note that the "JAVA_HOME" 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) (2)
@ -100,6 +112,7 @@ remembering the binding between the local and remote origin branches:
$ git branch X.Y-release $ git branch X.Y-release
$ git push -u origin X.Y-release $ git push -u origin X.Y-release
(3) (3)
Switch to the release branch: 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: merge master branch or version branch into X.Y-release branch:
$ git merge master $ git merge master
or
$ git rebase master
or, if the version branch is called MATH_3_X or, if the version branch is called MATH_3_X
$ git merge 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 * Estimate a release date (taking into account the release vote delay) and
insert it in the "src/changes/changes.xml" file. insert it in the "src/changes/changes.xml" file.
* Update the "pom.xml" to contain the final version number and not a SNAPSHOT: * 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 "<version>" tag to Assuming that the release version will be "4.0-beta1", modify the "<version>" tag to
read: read:
<version>3.4</version> <version>4.0-beta1</version>
Modify the section of "<properties>" that also refers to version numbers. Modify the section of "<properties>" that also refers to version numbers.
You should uncomment the "<commons.rc.version>" line and indicate the You should uncomment the "<commons.rc.version>" line and indicate the
@ -147,7 +162,7 @@ In particular:
<properties> <properties>
<!-- ... --> <!-- ... -->
<commons.release.version>3.4</commons.release.version> <commons.release.version>4.0-beta1</commons.release.version>
<commons.rc.version>RC1</commons.rc.version> <commons.rc.version>RC1</commons.rc.version>
<!-- ... --> <!-- ... -->
</properties> </properties>
@ -157,7 +172,7 @@ In particular:
The "download" page template is located at "src/site/xdoc/download_math.xml". The "download" page template is located at "src/site/xdoc/download_math.xml".
This file is updated automatically by running the command: This file is updated automatically by running the command:
$ mvn commons:download-page $ mvn commons-build:download-page
(7) (7)
@ -180,7 +195,7 @@ Check you did not forget any file:
$ git status $ git status
Commit the changes: Commit the changes:
$ git commit -m "creating release candidate" $ git commit -m "Create release candidate."
(8) (8)
@ -193,31 +208,27 @@ Then, assuming the first candidate, the suffix will be "RC1" (this should
be the same as in the "<properties>" in the "pom.xml"), and the command be the same as in the "<properties>" in the "pom.xml"), and the command
will be: will be:
$ git tag -s -m "Creating Apache Commons Math v3.4 RC1 tag." MATH_3_4_RC1 $ git tag -u "__Your_key_id__" -m "Create Commons Math v4.0-beta1 RC1 tag." commons-math-4.0-beta1-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.
Check the tag GPG signature: 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: You will get something like:
object cf4a9d70c9ac24dd7196995390171150e4e56451 object 1d862ec8cca30a6b797583ef2f837e54830f658d
type commit type commit
tag MATH_3_4_RC1 tag commons-math-4.0-beta1-RC1
tagger Luc Maisonobe <luc@apache.org> 1418934614 +0100 tagger Gilles Sadowski <gilleseran@gmail.com> 1670895878 +0100
Creating Apache Commons Math v3.4 RC1 tag. Create Commons Math v4.0-beta1 RC1 tag.
gpg: Signature made Thu Dec 18 21:30:14 2014 CET using RSA key ID 02E9F65B gpg: Signature made Tue 13 Dec 2022 02:44:38 AM CET
gpg: Good signature from "Luc Maisonobe (CODE SIGNING KEY) <luc@apache.org>" gpg: using RSA key B39617E095CD748DFE505816703413011E22D5B8
gpg: aka "Luc Maisonobe <Luc.Maisonobe@c-s.fr>" gpg: issuer "erans@apache.org"
gpg: aka "Luc Maisonobe <Luc.Maisonobe@free.fr>" gpg: Good signature from "Gilles Sadowski (ASF code signing) <erans@apache.org>" [ultimate]
gpg: aka "Luc Maisonobe <luc@orekit.org>" gpg: aka "Gilles Sadowski <gilles@harfang.homelinux.org>" [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. as it is the most stable reference for traceability.
Push everything (including the tag!) on the Apache repository: 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: the official tag from the Apache repository:
$ cd /tmp $ 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, 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 so we specify directly the tag here. Git will warn that the resulting workspace