Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Michael Friedrich
committed
May 8, 2018
1 parent
ca7e886
commit 283cf64
Showing
1 changed file
with
199 additions
and
47 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,89 +1,241 @@ | ||
# Quality Assurance | ||
# Release Workflow <a id="release-workflow"></a> | ||
|
||
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 <a id="preparations"></a> | ||
|
||
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 <a id="issues"></a> | ||
|
||
Check issues at https://github.com/Icinga/icingaweb2 | ||
|
||
### Backport Commits <a id="backport-commits"></a> | ||
|
||
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 <a id="authors"></a> | ||
|
||
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 <a id="version"></a> | ||
|
||
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 <a id="changelog"></a> | ||
|
||
Link to the milestone and closed=1 as filter. | ||
|
||
## Git Tag <a id="git-tag"></a> | ||
|
||
``` | ||
git commit -v -a -m "Release version $VERSION" | ||
``` | ||
|
||
Create a signed tag (tags/v<VERSION>) 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 <a id="package-builds"></a> | ||
|
||
vim icingaweb2.spec | ||
### RPM Packages <a id="rpm-packages"></a> | ||
|
||
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 <eric.lippmann@icinga.com> 2.5.3-1 | ||
- Update to 2.5.3 | ||
``` | ||
|
||
$ git commit -v -a -m "Release version <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<VERSION>) 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 <VERSION>" v<VERSION> | ||
|
||
Push the tag. | ||
### DEB Packages <a id="deb-packages"></a> | ||
|
||
$ 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 <a id="build-server"></a> | ||
|
||
* 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 <a id="release-tests"></a> | ||
|
||
* Build the newly created git tag for Debian/RHEL/SuSE. | ||
* Provision the vagrant boxes and test the release packages. | ||
|
||
## Github Release | ||
## GitHub Release <a id="github-release"></a> | ||
|
||
Create a new release for the newly created Git tag: https://github.com/Icinga/icingaweb2/releases | ||
|
||
### Online Documentation <a id="online-documentation"></a> | ||
|
||
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 <a id="announcement"></a> | ||
|
||
* 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 <a id="project-management"></a> | ||
|
||
* Add new minor version on [GitHub](https://github.com/Icinga/icingaweb2/milestones). | ||
* Close the released version on [GitHub](https://github.com/Icinga/icingaweb2/milestones). |