Creating a release
==================

This document is documentation intednded for maintainers of Barrier.
It documents the release process of Barrier.

Step 1: Setup environment variables
-----------------------------------

Setup the following environment variable that will be used throughout the rest of the steps.

    export VERSION=X.Y.Z

Step 2: Release notes PR
------------------------

Open a new branch (e.g. `release`) and run the following:

    towncrier --version ${VERSION} --date `date -u  +%F`

This collects the release notes using the `towncrier` tool. Please commit the collected release
notes afterwards.

Certain file names are not properly supported by the `towncrier` tool and it ignores them.
Check `newsfragments` directory for any forgotten release notes

Step 3: Merge the release notes PR
----------------------------------

Step 4: Push git tag
--------------------

Pull the merge commit created on the `master` branch during the step 2.

Create a tag:

    git tag -s v${VERSION} -m v${VERSION}

Push the tag:

    git push origin master --tags


Step 5: Draft a new release on Github
-------------------------------------

Go to https://github.com/buildbot/buildbot/releases and draft a new release.

Use git tag as the title of the release: `vX.Y.Z`.

Use the release notes generated by the `towncrier` tool as the description of the releases.

Upload the artifacts created by Azure pipelines as the binaries of the release. The following
artifacts should be uploaded to Github:

 - the Barrier-X.Y.Z-release.dmg created by the oldest Mac OS task (artifact name is
   "Mac Release Disk Image and App XYZ").

 - the BarrierSetup-X.Y.Z-release.exe (artifact name is Windows Release Installer).
