Skip to content

How to make a release

Andrew Bauer edited this page Aug 7, 2016 · 72 revisions

CURRENTLY UNDER CONSTRUCTION

Overview

This document details the steps required to be taken in order for a new release to be made. I've made this as basic and as complete as possible because sometimes I forget the steps and need reminding.

Release Naming Conventions

The ZoneMinder project uses the following triple dotted notation for release names:

  1. a.bb.c where "a" is the major release, "bb" is the minor release, and "c" is the micro release. Important: Releases must always have a micro release value. Do not neglect this.
  2. Release candidates shall append the suffix "-rcX" where "X" is the next available integer, starting with 1.

Prerequisites

  1. Install github-changelog-generator https://github.com/skywinder/github-changelog-generator
  2. Generate your own github token https://github.com/settings/tokens/new
  3. The ZoneMinder github project is already on your local drive and "upstream" points to the main repository.

User Forum

  1. Create a new forum topic titled "ZoneMinder a.bb.c"
  2. Review existing forums topics and consider archiving the oldest

Github Forum

  1. Create a new Issue topic titled "Release a.bb.c"
  2. Identify any remaining issues that must be resolved before release
  3. Attempt to assign developers to each remaining issue
  4. Invite others to discuss
  5. Make a reminder that any issue not discussed in this thread shall be considered not eligible for the next release and will be dealt with following release.

Create a local release branch

  1. Make sure you are in the master branch
    git checkout master
  2. Make sure your local master branch is up to date
    git pull upstream master
  3. Bump the file "version" in the root project folder to a.bb.c
    vi version
  4. Commit changes
   git commit -m "Bump version to a.bb.c"```
1. Update the master branch with the new version  
```   git push upstream master```
1. Create a new release branch  
```   git checkout -b release-a.bb.c```
1. Create a tag **before** pushing upstream  

### Create a new tag
1. To create a new Release Candidate:  
```   git tag -a va.bb.c-rcX```
1. To create a new Release:  
```   git tag -a va.bb.c```
1. Make sure and set the "-a" annotate flag or Steve will bug you
1. If the tag already exists, use the "-f" flag to force the update
1. Push the new branch with tag upstream  
```   git push upstream release-a.bb.c```

### Generate the Release Notes
1. Clone the github-changelog-generator project  
```   git clone https://github.com/skywinder/github-changelog-generator```
1. Change into the bin subfolder  
``` cd github-changelog-generator/bin```
1. Run the generator with the following command  
```   github_changelog_generator -o ../CHANGELOG.md -t <your github token> --no-issues --future-release a.bb.c --release-branch master ZoneMinder/ZoneMinder```

### Create a new Release on the github site
1. Go to https://github.com/ZoneMinder/ZoneMinder/releases/new
1. In the 'Tag version' field, enter the tag created previously. Github will notify you the tag already exists.
1. Chose a release title based on a Metallica theme. [Verify the title](https://github.com/ZoneMinder/ZoneMinder/wiki/ZoneMinder-Release-Titles) has not already been used.
1. Write a short message to describe the significant changes in this release.  
1. Copy the contents of CHANGELOG.md from the changelog generator and paste it into the github release
1. Create ZoneMinder-_a_._bb_._c_.tar.gz. The name is case sensitive and it is very important to exclude the hidden .git folder. The contents in the tarball must all be under a folder with the same name as the tarball! Rpm packagers will curse your name if you get this wrong. The tar command looks like this:  
```tar -cvzf ZoneMinder-a.bb.c.tar.gz ZoneMinder-a.bb.c/*```

### Follow-Up Tasks
1. Get Kyle to bump the version at http://update.zoneminder.com/version.txt
1. Make a Release announcement on Facebook
1. Make a Release announcement on Twitter

Clone this wiki locally