-
-
Notifications
You must be signed in to change notification settings - Fork 1.2k
How to make a release
Andrew Bauer edited this page Aug 6, 2016
·
72 revisions
This document details the steps required to be taken in order for a new release to be made. I've made this as basic as possible because sometimes I forget the steps and need reminding.
The ZoneMinder project uses the following triple dotted notation for release names:
- 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.
- Release candidates shall append the suffix "-rcX" where "X" is the next available integer, starting with 1.
- Install github-changelog-generator https://github.com/skywinder/github-changelog-generator
- Generate your own github token https://github.com/settings/tokens/new
- The ZoneMinder github project is already on your local drive and "upstream" points to the main repository.
- Create a new forum topic titled "ZoneMinder a.bb.c"
- Review existing forums topics and consider archiving the oldest
- Create a new Issue topic titled "Release a.bb.c"
- Identify any remaining issues that must be resolved before release
- Attempt to assign developers to each remaining issue
- Invite others to discuss
- 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.
- Make sure you are in the master branch
git checkout master
- Make sure your local master branch is up to date
git pull upstream master
- Bump the file "version" in the root project folder to a.bb.c
vi version
- 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 in the above step (e.g. v1.26.4)
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