Generating application release notes using SBT

Scala
Helper

Who likes writing application release notes?

The answer to this question is nobody. Why? It is often difficult to find out what changes have been made in an app since the last release. If there are application releases every two weeks, somebody must sit down and write what the whole team did for the last two weeks. It is a boring job for developers but nobody else can do it properly. Being developers, we have written code to generate such release notes.

What are "application release notes" at leveris?

What does the concept of application release notes mean in your company? Everybody has a different definition. And we at leveris have our own as well. We want to have the same release notes for each application technology and so we have written an SBT plugin for the application written in Scala and we build our release notes using SBT (Simple Build Tool).

At leveris, application release notes are understood as follows:

  • Version build date and time and version identification - Because the version only is not the only identifier for development releases, we add the build date and time. Perhaps we should include the build number as well. This is what is planned.
  • Listing of all changes made in code - Where are all the changes? They're in the version control application. We use Git, as most application development teams nowadays do. As a result, all the changes are securely listed in the Git log.
  • Relation to requirements - We manage all requirements using Atlassian Jira. This is an excellent tool for tasks and it is compatible with Scrum methodology. All released app versions after sprint end have the related tasks fixed in the release and we can extract them using the Jira REST API.

Why plugin in SBT?

SBT is a great tool for developers. Among other features, it offers application release from the command line. All tasks related to release activity can be declaratively defined or even scripted. A good time to generate release notes is immediately following the completion of the release process for an application version. Because it was not possible to declaratively specify release note generation, and because it is too complex for scripting, we have developed a custom plugin for leveris release note generation. The plugin generates a markdown file that is subsequently converted to HTML or PDF using the sbt-site plugin. The site plugin is configured to use gitbook.com tools, which create very attractive websites.

First, a markdown file is generated with the version date and the time of build plus the version identification. The second step is to compile the lists of all GIT repos from all related modules. The Git log is extracted from each module and all the logs are merged into a single markdown file. The third step is connect to Jira and extract all the tasks related to the component-version combination in the build. This lists all the requirements fixed in the build release. leveris release notes consist of the three markdown files converted to HTML using the sbt-site plugin/gitbook. All generated HTML content is published on a simple web server.

Generating release notes in this manner guarantees that the changes made correspond directly with the set business requirements, with no threat of human error.

Dive deeper into
our

challenges