Here you can find guidelines for performing a release. The important thing is that Bootique consists of a number of modules dependent between themselves. Therefore in the process of release it’s necessary to stick to the order of modules described in the appendix Release dependency groups.
Another major point is differentiation of releases: train and hot-fix. The term train is used to refer to a release of all Bootique modules, hot-fix - a release of a module on demand of a highly required fix.
-
Generate a GPG key to sign commits and tags. More info Generating a new GPG key, Adding a new GPG key to your GitHub account
-
Distribute your GPG key. Sent a key to a keyserver (e.g. pgp.mit.edu/) using the command-line. See The GNU Privacy Handbook for details.
-
To connect and to be authenticated on GitHub server, use SSH key.
Look at Generating a new SSH key and adding it to the ssh-agent. -
For deploying of maven artifacts to a remote repository api.bintray.com/maven/bootique/releases,
make sure "bintray-bootique-releases" repository is configured withindistributionManagementelement in the pom.xml and the authentication information for connecting to the repository - in the ~/.m2/settings.xml. See this page for details. Illustrative settings.xml:
<settings>
<servers>
<server>
<id>bintray-bootique-releases</id>
<username>your_bintray_username</username>
<password>your_bintray_API_key</password>
</server>
</servers>
</settings>- JCenter Deployment
- Prepare sources
- Release Maven Artifact
- Maven Central Synchronization
NOTE: The steps prepare sources and release maven artifact are performed cyclically till the last module on the list is released.
- Build the module to reveal issues of incompatibility.
mvn clean install- Fix issues and track them on GitHub if upgrade led to API or serious code changes.
- Edit RELEASE-NOTES.md if there is anything to add there.
- Push changes on GitHub.
The artifact is released in 2 stages: preparing the release and performing the release.
- Preparing the release
mvn release:prepare -Pgpg -Dbootique.version=the release version, e.g. 0.24- Performing the release
mvn release:perform -Pgpg Finally, an artifact is deployed to the local repository and to a remote repository configured the pom.xml. Check info about a new module release on bintray.com/bootique/releases.
When all modules are released and available in JCenter, the last thing is to publish them into Maven Central. Look through all modules and press Maven Central >>Sync.
| Module | Dependencies |
|---|---|
| bootique | |
| bootique-metrics | |
| bootique-curator | |
| bootique-jcache | |
| bootique-logback | |
| bootique-kafka-client | |
| bootique-rabbitmq-client | |
| bootique-undertow | |
| bootique-jdbc | bootique-metrics |
| bootique-jetty | bootique-metrics |
| bootique-cayenne | bootique-jdbc, bootique-jcache |
| bootique-job | bootique-curator, bootique-metrics |
| bootique-flyway | bootique-jdbc, bootique-logback |
| bootique-liquibase | bootique-jdbc |
| bootique-jooq | bootique-jdbc |
| bootique-tapestry | bootique-jetty |
| bootique-jersey | bootique-jetty |
| bootique-linkmove | bootique-jdbc, bootique-cayenne |
| bootique-agrest | bootique-jersey, bootique-cayenne |
| bootique-jersey-client | bootique-jersey, bootique-logback |
| bootique-mvc | bootique-jetty, bootique-jersey |
| bootique-shiro | bootique-jetty, boutique-jersey, bootique-jdbc |
| bootique-swagger | bootique-jetty, bootique-jersey |
| bootique-kotlin | bootique-jetty, bootique-logback |
| bootique-bom | all |
First of all, be cautious with transient dependencies - release of a module requires release of all its dependent modules. It means that if a module is going to be released as "hot-fixed" then its dependent modules must be released too with the same version. The last step must be a release of bootique-bom containing new versions of released modules. Secondarily, hot fixes are expected to be followed one after another, so that you won’t fall into code mess between hot-fix releases.
- Create a new branch at a specific tag with
git checkout -b [branchname] [tagname]E.g. master is 0.25-SNAPSHOT, then create a new branch at a tag for version 0.24.
- Change branch version to 0.24.1-SNAPSHOT.
- Fix issues.
- Perform a release of the branch (and branches for dependent modules).
- Publish artifact into Maven Central.
- Merge the branch into master.