Skip to content


Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?

Latest commit


Git stats


Failed to load latest commit information.
Latest commit message
Commit time


Releases artefacts from release candidates with one command. For use as part of a continuous delivery pipeline in which users can create a release from a development commit and create a tag in Github with one command. This automates numerous manual steps required to release an artefact with the existing release scripts.

The release candidate is a published artefact in a Bintray HMRC release candidate repository. Releaser works by taking a release candidate, modifying the verion numbers in the Manifest and file names and uploading files back to Bintray. All compiled files are not touched in this process.

There are release and release candidate repositories in Bintray HMRC for standard (maven) projects and sbt-plugins which are in the Ivy style.


sbt assembly will place releaser-assembly-x.x.x.jar in your target/scala-2.11/ directory


java -jar target/scala-2.11/releaser-assembly-x.x.x.jar artifact release-candidate-version release-version

Extra flags
  • -d | --dryRun: perform a dry run of a release. Downloads files and transforms but does not upload or create releases on Useful during development
  • --github-name-override: provide a different github repository to the bintray package. The default is to assume the github repository has the same name as the Bintry repository and this flag allows the user to provide a different repository name.
  • --release-notes: custom release notes appended at the bottom of the default

Configuration Parameters

You can specify custom timeouts to be passed to the libraries that this project uses with the following System properties (

wsclient.timeout.connection - Connection timeout (seconds) wsclient.timeout.idle - Idle timeout (seconds) wsclient.timeout.request - Request timeout (seconds)

Supported Artifacts

Releaser will release:

####Naming conventions Artefacts supplied to the releaser need to follow the following naming convention:

<artefact-name>_<scala-version>-<version>.<extension> E.g: catalogue-frontend_2.11-4.77.0-5-g8d3e2c5.jar

####Supported File Types

The releaser will handle the following file types found in release candidates:

  • .pom (mandatory)
  • .jar
  • .tgz

The following files will be specifically ignored if present:

  • *-sources.jar
  • *-javadoc.jar

The releaser will modify .jar and .tgz files in order to update instances of version numbers contained within. All other files will be ignored and will not be copied to the released artefact.

####Additional files/non-standard artefacts

The releaser also supports files that do not match the naming conventions above. The following additional filenames are supported:

  • .jar
  • .tgz
  • .zip

Any JAR files present will be modified to update instances of version numbers contained within. Any other files will be renamed if the filenames contain a release candidate version string, but otherwise no transformations will be applied.

If the artefact does NOT contain a JAR matching the naming conventions, you must supply a file instead. This file tells the releaser which commit to tag when making the release. An example is as follows:


All artefacts must contain a .POM file, this is mandatory and cannot be omitted.

Coding in the Open

Release is an integral part of how we release code in the open, more information can be found in the Coding in the Open Manual


This code is open source software licensed under the Apache 2.0 License.