How to make a release - ZoneMinder/zoneminder GitHub Wiki
This document details the steps required to be taken in order for a new release to be made. These steps have been made as basic and as complete 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. Releases must always have a micro release value. Do not neglect this.
- Install github-changelog-generator https://github.com/skywinder/github-changelog-generator
- Generate your own github token https://github.com/settings/tokens/new
This token needs repo:status and public_repo permissions. - 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
- Double check to see if you need to create the file db/zm_update-a.bb.c.sql. If no database changes are required then we do not need this file. Use the contents of db/zm_update-1.30.0.sql as an example.
cp db/zm_update-1.30.0.sql db/zm_update-a.bb.c.sql
vi db/zm_update-a.bb.c.sql
- Bump the file "version" in the root project folder to a.bb.c
echo a.bb.c > version
- Commit changes
git add .
git commit -m "Bump version to a.bb.c"
- Create a new release branch if this is a new major release
git checkout -b release-a.bb.c
- Update the release branch with the new version
git push upstream release-a.bb
- Create a tag before pushing upstream
- To create a new Release:
git tag -a a.bb.c
- Make sure and set the "-a" annotate flag or Steve will bug you
- If the tag already exists, use the "-f" flag to force the update
- Push the new branch with tag to release branch
git push upstream release-a.bb
- Verify the new tag is present on github.com. If it is not, force it with
git push --tags upstream master
- Don't forget to merge the changes to master.
git checkout master
git merge release-a.bb
git push upstream master
- Install github_changelog_generator (required Ruby)
gem install github_changelog_generator
- Run the generator with the following command
github_changelog_generator -u ZoneMinder -p zoneminder -t <your github token> -o CHANGELOG.md --no-issues --since-tag d.ee.f --future-release a.bb.c --release-branch master
- You may have to set
--max-issues NUM
to prevent Github from crying about abuse
- Go to https://github.com/ZoneMinder/ZoneMinder/releases/new
- In the 'Tag version' field, enter the tag created previously. Github will notify you the tag already exists.
- Chose a release title based on a Metallica theme. Verify the title has not already been used.
- Write a short message to describe the significant changes in this release.
- Copy the contents of CHANGELOG.md from the changelog generator and paste it into the github release
- Get Kyle to bump the version at http://update.zoneminder.com/version.txt
- Make a Release announcement on Facebook
- Make a Release announcement on Twitter
- Create a new blog entry on zoneminder.github.io then update zoneminder.com when changes look correct.