The release process follows in general the Apache guidelines for Release-Publishing. When migrating from svn to git the releases versions went into git tags - this is fine, but to be able to have maintenance releases new releases should be branches. Tags could be created containing 'candidate'.
Find a helpful description of some details in the process here (dbo release instructions).
Git Repositories
Check with
Locale Git environment checkgit config -l
that user.email is the apache.org user e-mail address.
Prepare a RC for voting: Start the Maven Release Process. Assert that you are on the master/trunk/main branch (check with git status or git branch)! Following we assume as an example performing a release turbine-parent pom component. Maven release:prepare adds by default a tag <project-artifact>-<version> = turbine-parent-9. We may want to add to the tag name a postfix "-candidate". If the voting process is done, and it is successfull, we have to rename the tag or if we want rather to have a branch, we name this new branch exactly like the released component to avoid to have a duplicate tag name (which is actually just a named commit). In this case we would keep the candidate tag name or delete it at all (you may want to check all of this with -DdryRun=true).
Maven Releasemvn release:prepare -Papache-release -Dtag=turbine-parent-9-candidate // N.B. mvn release:branch seems not very appropriate, mvn release:perform
Find more details about maven release for multi module projects here (Fulcrum Build)
After voting is successfull, do one of the following steps:
Rename tag for Fulcrum Component foo
Rename git tag after voting// local git tag <foo>-<version><foo>-<version>-candidate git tag -d <foo>-<version>-candidate // remote // add new tag and delete old tag (colon prefix is a shortcut for delete) git push origin <foo>-<version> :<foo>-<version>-candidate // .. output .. // To https://gitbox.apache.org/repos/asf/<foo>.git // - [deleted] <foo>-<version>-candidate // * [new tag] <foo>-<version> -> <foo>-<version> // others have to do this also git pull --prune --tags
Create a release branch a We assume, that the release is created from the master/main/trunk branch and a release branch will be created later for a maintenance release. Explicit git commands for this (with checks):
Release branchgit branch -a git tag -l // tag name = turbine-parent-<version>-candidate git checkout turbine-parent-<version>-candidate // create a branch from tag commit git checkout -b turbine-parent-<version> git push -u origin turbine-parent-<version>