Skip to content

Release guide

Diego Salvi edited this page Mar 18, 2024 · 27 revisions

Release guide

Assume that your git 'origin' remote is http://github.com/diennea/herddb

git remote -v

Set up and cache Github credentials (you need to have committer privileges on this repository):

git checkout master
git status
git push --dry-run

Ensure you have at least JDK11 and Maven 3.6.X

$JAVA_HOME/bin/java -version
mvn -version

Build release branch with -Possrh profile

## on mac execute export GPG_TTY=$(tty)
mvn clean install -DskipTests -Possrh

In case you are performing new major release, for instance you are releasing 0.7.0, so current master should be 0.7.0-SNAPSHOT, new master will be 0.8.0-SNAPSHOT, you will be creating a release/0.7 branch and a v0.7.0 tag

In case you are performing a minor release, for instance you are releasing 0.7.1, you will be starting from release/0.7 branch, with version 0.7.1-SNAPSHOT, new version on that branch will be 0.7.2-SNAPSHOT and at the end you will have a v0.7.1 tag

Cut release branch (for major releases)

BRANCH_NAME=release/0.7
RELEASE_DEVELOPMENT_VERSION=0.7.1-SNAPSHOT
RELEASE_VERSION=0.7.0
MASTER_DEVELOPMENT_VERSION=0.8.0-SNAPSHOT
TAG=v$RELEASE_VERSION


git checkout master
git pull --rebase
git clean -xdf
mvn release:clean
mvn release:branch \
    -DbranchName=$BRANCH_NAME \
    -DdevelopmentVersion=$MASTER_DEVELOPMENT_VERSION

From now you can expect:

  • on master pom.xml version is MASTER_DEVELOPMENT_VERSION
  • you have a release branch named BRANCH_NAME
  • in BRANCH_NAME pom.xml version is RELEASE_DEVELOPMENT_VERSION

Prepare release branch (for minor/point releases)

BRANCH_NAME=release/0.7
RELEASE_DEVELOPMENT_VERSION=0.7.2-SNAPSHOT
RELEASE_VERSION=0.7.1
TAG=v$RELEASE_VERSION


git checkout $BRANCH_NAME
git pull
git push --dry-run

Perform release on the branch

git checkout $BRANCH_NAME
git clean -xdf
mvn release:prepare \
   -DautoVersionSubmodules=true  \
   -DreleaseVersion=$RELEASE_VERSION \
   -Dtag=$TAG  \
   -DdevelopmentVersion=$RELEASE_DEVELOPMENT_VERSION \
   -Darguments='-DskipTests=true' 

From now you can expect:

  • in BRANCH_NAME pom.xml version is RELEASE_DEVELOPMENT_VERSION
  • you have a new tag named TAG
  • in TAG version.xml is RELEASE_VERSION

Deploy artifacts to Maven Central

Checklist:

  • You need to have your OSSRH credentials written in settings.xml
  • You need to have a valid GPG Private Key
export MAVEN_OPTS="--add-opens=java.base/java.util=ALL-UNNAMED --add-opens=java.base/java.lang.reflect=ALL-UNNAMED --add-opens=java.base/java.text=ALL-UNNAMED --add-opens=java.desktop/java.awt.font=ALL-UNNAMED"
## on mac execute export GPG_TTY=$(tty)
mvn release:perform \
       -DreleaseProfiles=ossrh \
       -Darguments='-DskipTests=true' 

Deploy artifacts only to Majordodo Repository

Checklist:

  • You need to have your dev.majordodo.org/nexus credentials written in settings.xml

mvn release:perform \
       -Darguments='-DskipTests=true' 

Create release page on GitHub

On the Releases page upload herddb-services ZIP to the tag and add news and noteworthy for the release

Clone this wiki locally