From 283cf64337ab0e785e3a3907ec4dea4709d619e8 Mon Sep 17 00:00:00 2001 From: Michael Friedrich Date: Thu, 26 Apr 2018 14:32:31 +0200 Subject: [PATCH] Enhance release documentation --- RELEASE.md | 246 +++++++++++++++++++++++++++++++++++++++++++---------- 1 file changed, 199 insertions(+), 47 deletions(-) diff --git a/RELEASE.md b/RELEASE.md index d41b5bb8b1..ff17acb873 100644 --- a/RELEASE.md +++ b/RELEASE.md @@ -1,89 +1,241 @@ -# Quality Assurance +# Release Workflow -Review and test the changes and issues for this version. -https://github.com/icinga/icingaweb2 +#### Table of Content -# Release Workflow +- [1. Preparations](#preparations) + - [1.1. Issues](#issues) + - [1.2. Backport Commits](#backport-commits) + - [1.3. Authors](#authors) +- [2. Version](#version) +- [3. Changelog](#changelog) +- [4. Git Tag](#git-tag) +- [5. Package Builds](#package-builds) + - [5.1. RPM Packages](#rpm-packages) + - [5.2. DEB Packages](#deb-packages) +- [6. Build Server](#build-server) +- [7. Release Tests](#release-tests) +- [8. GitHub Release](#github-release) +- [9. Post Release](#post-release) + - [9.1. Online Documentation](#online-documentation) + - [9.2. Announcement](#announcement) + - [9.3. Project Management](#project-management) -## Authors +## Preparations + +Specify the release version. + +``` +VERSION=2.6.0 +``` + +Add your signing key to your Git configuration file, if not already there. + +``` +vim $HOME/.gitconfig + +[user] + email = michael.friedrich@icinga.com + name = Michael Friedrich + signingkey = D14A1F16 +``` + +### Issues + +Check issues at https://github.com/Icinga/icingaweb2 + +### Backport Commits + +For minor versions not branched off git master you need +to manually backports any and all commits from the +master branch which should be part of this release. + +### Authors Update the [.mailmap](.mailmap) and [AUTHORS](AUTHORS) files: - $ git log --use-mailmap | grep ^Author: | cut -f2- -d' ' | sort | uniq > AUTHORS +``` +git log --use-mailmap | grep '^Author:' | cut -f2- -d' ' | sort | uniq > AUTHORS +``` -## Version +## Version -Update the version number in the following files: +Update the version in the following files: -* [icingaweb2.spec] (ensure that the revision is properly set) -* [VERSION] -* Application Version: [library/Icinga/Application/Version.php] -* Module Versions in modules/*/module.info +* [VERSION](VERSION) +* Application Version: [library/Icinga/Application/Version.php](library/Icinga/Application/Version.php) +* Module Versions in `modules/*/module.info` Commands: - VERSION=2.0.0 +``` +echo "v$VERSION" > VERSION +sed -i '' "s/const VERSION = '.*'/const VERSION = '$VERSION'/g" library/Icinga/Application/Version.php +find . -type f -name '*.info' -exec sed -i '' "s/Version: .*/Version: $VERSION/g" {} \; +``` + +## Changelog + +Link to the milestone and closed=1 as filter. + +## Git Tag + +``` +git commit -v -a -m "Release version $VERSION" +``` + +Create a signed tag (tags/v) on the `master` branch (for major +releases) or the `support` branch (for minor releases). + +``` +git tag -s -m "Version $VERSION" v$VERSION +``` + +Push the tag: + +``` +git push --tags +``` + +**For major releases:** Create a new `support` branch: + +``` +git checkout master +git checkout -b support/2.6 +git push -u origin support/2.6 +``` + +## Package Builds - vim icingaweb2.spec +### RPM Packages - echo "v$VERSION" > VERSION +``` +git clone git@github.com:icinga/rpm-icingaweb2.git && cd rpm-icingaweb2 +``` - sed -i '' "s/const VERSION = '.*'/const VERSION = '$VERSION'/g" library/Icinga/Application/Version.php +#### Branch Workflow - find . -type f -name '*.info' -exec sed -i '' "s/Version: .*/Version: $VERSION/g" {} \; +**Major releases** are branched off `master`. -## Changelog +``` +git checkout master && git pull +``` -Update the [ChangeLog](ChangeLog) file using -the changelog.py script. +**Bugfix releases** are created in the `release` branch and later merged to master. -Changelog: +``` +git checkout release && git pull +``` - $ ./changelog.py --version 2.0.0 +#### Release Commit -Wordpress: +Set the `Version`, `Revision` and `changelog` inside the spec file. - $ ./changelog.py --version 2.0.0 --html --links +``` +sed -i "s/Version: .*/Version: $VERSION/g" icingaweb2.spec -## Git Tag +vim icingaweb2.spec -Commit these changes to the "master" branch: +%changelog +* Fri Apr 27 2018 Eric.Lippmann 2.5.3-1 +- Update to 2.5.3 +``` - $ git commit -v -a -m "Release version " +``` +git commit -av -m "Release 2.5.3-1" +git push +``` -For minor releases: Cherry-pick this commit into the "support" branch. +**Note for major releases**: Update release branch to latest. +`git checkout release && git pull && git merge master && git push` -Create a signed tag (tags/v) on the "master" branch (for major -releases) or the "support" branch (for minor releases). +**Note for minor releases**: Cherry-pick the release commit into master. +`git checkout master && git pull && git cherry-pick release && git push` - $ git tag -m "Version " v -Push the tag. +### DEB Packages - $ git push --tags +``` +git clone git@github.com:icinga/deb-icingaweb2.git && cd deb-icingaweb2 +``` -For major releases: Create a new "support" branch: +#### Branch Workflow - $ git checkout master - $ git checkout -b support/2.x - $ git push -u origin support/2.x +**Major releases** are branched off `master`. -# External Dependencies +``` +git checkout master && git pull +``` -## Build Server +**Bugfix releases** are created in the `release` branch and later merged to master. -### Linux +``` +git checkout release && git pull +``` + +#### Release Commit + +Set the `Version`, `Revision` and `changelog` inside the spec file. + +``` +./dch 2.5.3-1 "Update to 2.5.3" +``` + +``` +git commit -av -m "Release 2.5.3-1" +git push +``` + +``` +git commit -av -m "Release 2.5.3-1" +``` + +**Note for major releases**: Update release branch to latest. +`git checkout release && git pull && git merge master && git push` + +**Note for minor releases**: Cherry-pick the release commit into master. +`git checkout master && git pull && git cherry-pick release && git push` + + +#### DEB with dch on macOS + +``` +docker run -v `pwd`:/mnt/packaging -ti ubuntu:xenial bash + +apt-get update +apt-get install git dev-tools vim +cd /mnt/packaging + +git config --global user.name "Eric Lippmann" +git config --global user.email "eric.lippmann@icinga.com" + +./dch 2.5.3-1 "Update to 2.5.3" +``` + +## Build Server + +* Verify package build changes for this version. +* Test the snapshot packages for all distributions beforehand. +* Build the newly created Git tag for Debian/RHEL/SuSE. + +## Release Tests -* Build the newly created git tag for Debian/RHEL/SuSE. * Provision the vagrant boxes and test the release packages. -## Github Release +## GitHub Release + +Create a new release for the newly created Git tag: https://github.com/Icinga/icingaweb2/releases + +### Online Documentation -Create a new release from the newly created git tag. -https://github.com/Icinga/icingaweb2/releases +Ask @bobapple to update the documentation at docs.icinga.com. -## Announcement +### Announcement * Create a new blog post on www.icinga.com/blog -* Send announcement mail to icinga-announce@lists.icinga.org -* Social media: [Twitter](https://twitter.com/icinga), [Facebook](https://www.facebook.com/icinga), [G+](http://plus.google.com/+icinga), [Xing](https://www.xing.com/communities/groups/icinga-da4b-1060043), [LinkedIn](https://www.linkedin.com/groups/Icinga-1921830/about) +* Social media: [Twitter](https://twitter.com/icinga), [Facebook](https://www.facebook.com/icinga), [G+](https://plus.google.com/+icinga), [Xing](https://www.xing.com/communities/groups/icinga-da4b-1060043), [LinkedIn](https://www.linkedin.com/groups/Icinga-1921830/about) +* Update IRC channel topic + +### Project Management + +* Add new minor version on [GitHub](https://github.com/Icinga/icingaweb2/milestones). +* Close the released version on [GitHub](https://github.com/Icinga/icingaweb2/milestones).