Skip to content

Seedstack Release Guide

Adrien LAUER edited this page Nov 30, 2021 · 8 revisions

Versioning and Release overview

Seedstack version is declared in pom.xml file of distribution module. This project is used as a bom.

Releasing a new version starts with updating the version in this project:

mvn versions:set versions:commit -DnewVersion=19.11-SNAPSHOT

Version numbers are formated as follows: Version number = year.month<.revision> Where month can be:

  • 4 (April)
  • 7 (July)
  • 11 (November)

Release build process itself is triggered by a commit where "-SNAPSHOT" has been removed from version number.

Note: the tag associated with version x.y.z includes pom.xml files with x.y.z-SNAPSHOT versions. (The tag is not on a x.y.z version.)

Release Process

The first step is to identify components to be released, so as to update their version in distribution's pom.xml.

Each component is then released invidually, ending with distribution project

This list can be established with information available on GitHub repositories. Repositories are ordered by latest modification date, starting with the most recent, so you can quickly determine what has changed since last distribution release.

In GitHub, for each component candidate to a new release:

  • Read CHANGELOG.md file to see if a new release is required, and if changes require an update of distribution.

    For example, updates made to test classes do not require a new release.

  • Read pom.xml to see if component depends on -SNAPSHOT dependencies. If yes, dependency must be released first.

If release is required:

  • Update changelog version date.
  • Copy changes.
  • Releases -> Draft a new release
  • Paste version v3.4.8 (start with a "v") as tag, and comment
  • Paste changes in Comment, with starts to get the bullet list, and adding bold (two stars) on change type.

This triggers a build in Travis CI, and pushes the artifacts to bintray

Example:

Draft a new release

Exceptions

Note some projects are updated outside of release process:

  • samples (we build only snapshots of it)
  • website (it is never released but continuously updated)
  • seedstack.github.io (automatically updated by the website build process)