Merge pull request #6254 from Icinga/feature/docs-release

Enhance release documentation
This commit is contained in:
Michael Friedrich 2018-04-24 15:44:00 +02:00 committed by GitHub
commit 8fe50ef816
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 169 additions and 62 deletions

View File

@ -1,21 +1,44 @@
# Release Workflow # Release Workflow <a id="release-workflow"></a>
#### Table of Content
- [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. Chocolatey](#chocolatey)
- [10. Post Release](#post-release)
- [10.1. Online Documentation](#online-documentation)
- [10.2. Announcement](#announcement)
- [10.3. Project Management](#project-management)
## Preparations <a id="preparations"></a>
Specify the release version. Specify the release version.
``` ```
VERSION=2.7.2 VERSION=2.8.3
``` ```
## Issues ### Issues <a id="issues"></a>
Check issues at https://github.com/Icinga/icinga2 Check issues at https://github.com/Icinga/icinga2
## Backport Commits ### Backport Commits <a id="backport-commits"></a>
For minor versions you need to manually backports any and all commits from the For minor versions you need to manually backports any and all commits from the
master branch which should be part of this release. master branch which should be part of this release.
## Authors ### Authors <a id="authors"></a>
Update the [.mailmap](.mailmap) and [AUTHORS](AUTHORS) files: Update the [.mailmap](.mailmap) and [AUTHORS](AUTHORS) files:
@ -24,15 +47,15 @@ git checkout master
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 in the spec file: Update the version in the version file:
``` ```
gsed -i "s/Version: .*/Version: $VERSION/g" VERSION sed -i "s/Version: .*/Version: $VERSION/g" VERSION
``` ```
## Changelog ## Changelog <a id="changelog"></a>
Update the [CHANGELOG.md](CHANGELOG.md) file. Update the [CHANGELOG.md](CHANGELOG.md) file.
@ -51,47 +74,25 @@ Run the script which updates the [CHANGELOG.md](CHANGELOG.md) file.
git diff git diff
``` ```
## Git Tag ## Git Tag <a id="git-tag"></a>
Commit these changes to the "master" branch: > **Major Releases**: Commit these changes to the `master` branch.
>
> **Minor Releases**: Commit changes to the `support` branch.
``` ```
git commit -v -a -m "Release version $VERSION" git commit -v -a -m "Release version $VERSION"
``` ```
For minor releases: Cherry-pick this commit into the "support" branch: Create a signed tag (tags/v<VERSION>) on the `master` branch (for major
releases) or the `support` branch (for minor releases).
``` Developer | Tag command
git checkout support/2.7 -----------------|-----------------------
git cherry-pick master @gunnarbeutner | `git tag -u EE8E0720 -m "Version $VERSION" v$VERSION`
``` @dnsmichi | `git tag -u D14A1F16 -m "Version $VERSION" v$VERSION`
@Crunsher | `git tag -u 9E0B003C -m "Version $VERSION" v$VERSION`
Create a signed tag (tags/v<VERSION>) on the "master" branch (for major @N-o-X | `git tag -u 630F89D9 -m "Version $VERSION" v$VERSION`
releases) or the "support" branch (for minor releases).
GB:
```
git tag -u EE8E0720 -m "Version $VERSION" v$VERSION
```
MF:
```
git tag -u D14A1F16 -m "Version $VERSION" v$VERSION
```
NH:
```
git tag -u 630F89D9 -m "Version $VERSION" v$VERSION
```
JF:
```
git tag -u 9E0B003C -m "Version $VERSION" v$VERSION
```
Push the tag: Push the tag:
@ -99,40 +100,145 @@ Push the tag:
git push --tags git push --tags
``` ```
For major releases: Create a new "support" branch: **For major releases:** Create a new `support` branch:
``` ```
git checkout master git checkout master
git checkout -b support/2.7 git checkout -b support/2.9
git push -u origin support/2.7 git push -u origin support/2.9
``` ```
For minor releases: Push the support branch, cherry-pick the release commit **For minor releases:** Push the support branch, cherry-pick the release commit
into master and merge the support branch: into master and merge the support branch:
``` ```
git push -u origin support/2.7 git push -u origin support/2.8
git checkout master git checkout master
git cherry-pick support/2.7 git cherry-pick support/2.8
git merge --strategy=ours support/2.7 git merge --strategy=ours support/2.8
git push origin master git push origin master
``` ```
# External Dependencies ## Package Builds <a id="package-builds"></a>
## Build Server ### RPM Packages <a id="rpm-packages"></a>
```
git clone git@github.com:icinga/rpm-icinga2.git && cd rpm-icinga2
```
#### Branch Workflow
**Major releases** are branched off `master`.
```
git checkout master && git pull
```
**Bugfix releases** are created in the `release` branch and later merged to master.
```
git checkout release && git pull
```
#### Release Commit
Set the `Version`, `Revision` and `changelog` inside the spec file.
```
sed -i "s/Version: .*/Version: $VERSION/g" icinga2.spec
vim icinga2.spec
%changelog
* Tue Apr 24 2018 Jean Flach <jean.flach@icinga.com> 2.8.3-1
- Update to 2.8.3
```
```
git commit -av -m "Release 2.8.3-1"
git push
```
**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 Packages <a id="deb-packages"></a>
```
git clone git@github.com:icinga/deb-icinga2.git && cd deb-icinga2
```
#### Branch Workflow
**Major releases** are branched off `master`.
```
git checkout master && git pull
```
**Bugfix releases** are created in the `release` branch and later merged to master.
```
git checkout release && git pull
```
#### Release Commit
Set the `Version`, `Revision` and `changelog` inside the spec file.
```
./dch 2.8.3-1 "Update to 2.8.3"
```
```
git commit -av -m "Release 2.8.3-1"
git push
```
```
git commit -av -m "Release 2.8.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 "Michael Friedrich"
git config --global user.email "michael.friedrich@icinga.com"
./dch 2.8.3-1 "Update to 2.8.3"
```
## Build Server <a id="build-server"></a>
* Verify package build changes for this version. * Verify package build changes for this version.
* Test the snapshot packages for all distributions beforehand. * Test the snapshot packages for all distributions beforehand.
* Build the newly created Git tag for Debian/RHEL/SuSE. * Build the newly created Git tag for Debian/RHEL/SuSE.
* Build the newly created Git tag for Windows. * Build the newly created Git tag for Windows.
## Release Tests ## Release Tests <a id="release-tests"></a>
* Test DB IDO with MySQL and PostgreSQL. * Test DB IDO with MySQL and PostgreSQL.
* Provision the vagrant boxes and test the release packages. * Provision the vagrant boxes and test the release packages.
* Test the [setup wizard](https://packages.icinga.com/windows/) inside a Windows VM. * Test the [setup wizard](https://packages.icinga.com/windows/) inside a Windows VM.
* Start a new docker container and install/run icinga2. * Start a new docker container and install/run icinga2.
Example for CentOS7: Example for CentOS7:
@ -145,12 +251,11 @@ yum -y install icinga2
icinga2 daemon -C icinga2 daemon -C
``` ```
## GitHub Release ## GitHub Release <a id="github-release"></a>
Create a new release for the newly created Git tag. Create a new release for the newly created Git tag: https://github.com/Icinga/icinga2/releases
https://github.com/Icinga/icinga2/releases
## Chocolatey ## Chocolatey <a id="chocolatey"></a>
Navigate to the git repository on your Windows box which Navigate to the git repository on your Windows box which
already has chocolatey installed. Pull/checkout the release. already has chocolatey installed. Pull/checkout the release.
@ -164,22 +269,24 @@ cpack
Install the created icinga2 package locally: Install the created icinga2 package locally:
``` ```
choco install icinga2 -version 2.7.0 -fdv "%cd%" -source "'%cd%;https://chocolatey.org/api/v2/'" choco install icinga2 -version 2.8.3 -fdv "%cd%" -source "'%cd%;https://chocolatey.org/api/v2/'"
``` ```
Upload the package to [chocolatey](https://chocolatey.org/packages/upload). Upload the package to [chocolatey](https://chocolatey.org/packages/upload).
## Online Documentation ## Post Release <a id="post-release"></a>
### Online Documentation <a id="online-documentation"></a>
Ask @bobapple to update the documentation at docs.icinga.com. 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 * Create a new blog post on www.icinga.com/blog
* 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) * 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 * Update IRC channel topic
# After the release ### Project Management <a id="project-management"></a>
* Add new minor version on [GitHub](https://github.com/Icinga/icinga2/milestones). * Add new minor version on [GitHub](https://github.com/Icinga/icinga2/milestones).
* Close the released version on [GitHub](https://github.com/Icinga/icinga2/milestones). * Close the released version on [GitHub](https://github.com/Icinga/icinga2/milestones).