1 # Release Workflow <a id="release-workflow"></a>
5 - [1. Preparations](#preparations)
6 - [1.1. Issues](#issues)
7 - [1.2. Backport Commits](#backport-commits)
8 - [1.3. Authors](#authors)
9 - [2. Version](#version)
10 - [3. Changelog](#changelog)
11 - [4. Git Tag](#git-tag)
12 - [5. Package Builds](#package-builds)
13 - [5.1. RPM Packages](#rpm-packages)
14 - [5.2. DEB Packages](#deb-packages)
15 - [6. Build Server](#build-server)
16 - [7. Release Tests](#release-tests)
17 - [8. GitHub Release](#github-release)
18 - [9. Chocolatey](#chocolatey)
19 - [10. Post Release](#post-release)
20 - [10.1. Online Documentation](#online-documentation)
21 - [10.2. Announcement](#announcement)
22 - [10.3. Project Management](#project-management)
24 ## Preparations <a id="preparations"></a>
26 Specify the release version.
32 Add your signing key to your Git configuration file, if not already there.
38 email = michael.friedrich@icinga.com
39 name = Michael Friedrich
43 ### Issues <a id="issues"></a>
45 Check issues at https://github.com/Icinga/icinga2
47 ### Backport Commits <a id="backport-commits"></a>
49 For minor versions you need to manually backports any and all commits from the
50 master branch which should be part of this release.
52 ### Authors <a id="authors"></a>
54 Update the [.mailmap](.mailmap) and [AUTHORS](AUTHORS) files:
58 git log --use-mailmap | grep '^Author:' | cut -f2- -d' ' | sort | uniq > AUTHORS
61 ## Version <a id="version"></a>
63 Update the version in the version file:
66 sed -i "s/Version: .*/Version: $VERSION/g" VERSION
69 ## Changelog <a id="changelog"></a>
71 Update the [CHANGELOG.md](CHANGELOG.md) file.
73 Export these environment variables:
76 export ICINGA_GITHUB_AUTH_USERNAME='user'
77 export ICINGA_GITHUB_AUTH_TOKEN='token'
78 export ICINGA_GITHUB_PROJECT='icinga/icinga2'
81 Run the script which updates the [CHANGELOG.md](CHANGELOG.md) file.
88 ## Git Tag <a id="git-tag"></a>
90 > **Major Releases**: Commit these changes to the `master` branch.
92 > **Minor Releases**: Commit changes to the `support` branch.
95 git commit -v -a -m "Release version $VERSION"
98 Create a signed tag (tags/v<VERSION>) on the `master` branch (for major
99 releases) or the `support` branch (for minor releases).
102 git tag -s -m "Version $VERSION" v$VERSION
111 **For major releases:** Create a new `support` branch:
115 git checkout -b support/2.9
116 git push -u origin support/2.9
119 **For minor releases:** Push the support branch, cherry-pick the release commit
120 into master and merge the support branch:
123 git push -u origin support/2.8
125 git cherry-pick support/2.8
126 git merge --strategy=ours support/2.8
127 git push origin master
130 ## Package Builds <a id="package-builds"></a>
132 ### RPM Packages <a id="rpm-packages"></a>
135 git clone git@github.com:icinga/rpm-icinga2.git && cd rpm-icinga2
140 **Major releases** are branched off `master`.
143 git checkout master && git pull
146 **Bugfix releases** are created in the `release` branch and later merged to master.
149 git checkout release && git pull
154 Set the `Version`, `Revision` and `changelog` inside the spec file.
157 sed -i "s/Version: .*/Version: $VERSION/g" icinga2.spec
162 * Tue Apr 24 2018 Jean Flach <jean.flach@icinga.com> 2.8.3-1
167 git commit -av -m "Release 2.8.3-1"
171 **Note for major releases**: Update release branch to latest.
172 `git checkout release && git pull && git merge master && git push`
174 **Note for minor releases**: Cherry-pick the release commit into master.
175 `git checkout master && git pull && git cherry-pick release && git push`
178 ### DEB Packages <a id="deb-packages"></a>
181 git clone git@github.com:icinga/deb-icinga2.git && cd deb-icinga2
186 **Major releases** are branched off `master`.
189 git checkout master && git pull
192 **Bugfix releases** are created in the `release` branch and later merged to master.
195 git checkout release && git pull
200 Set the `Version`, `Revision` and `changelog` inside the spec file.
203 ./dch 2.8.3-1 "Update to 2.8.3"
207 git commit -av -m "Release 2.8.3-1"
212 git commit -av -m "Release 2.8.3-1"
215 **Note for major releases**: Update release branch to latest.
216 `git checkout release && git pull && git merge master && git push`
218 **Note for minor releases**: Cherry-pick the release commit into master.
219 `git checkout master && git pull && git cherry-pick release && git push`
222 #### DEB with dch on macOS
225 docker run -v `pwd`:/mnt/packaging -ti ubuntu:xenial bash
228 apt-get install git dev-tools vim
231 git config --global user.name "Michael Friedrich"
232 git config --global user.email "michael.friedrich@icinga.com"
234 ./dch 2.8.3-1 "Update to 2.8.3"
238 ## Build Server <a id="build-server"></a>
240 * Verify package build changes for this version.
241 * Test the snapshot packages for all distributions beforehand.
242 * Build the newly created Git tag for Debian/RHEL/SuSE.
243 * Build the newly created Git tag for Windows.
245 ## Release Tests <a id="release-tests"></a>
247 * Test DB IDO with MySQL and PostgreSQL.
248 * Provision the vagrant boxes and test the release packages.
249 * Test the [setup wizard](https://packages.icinga.com/windows/) inside a Windows VM.
250 * Start a new docker container and install/run icinga2.
255 docker run -ti centos:latest bash
257 yum -y install https://packages.icinga.com/epel/icinga-rpm-release-7-latest.noarch.rpm
258 yum -y install icinga2
262 ## GitHub Release <a id="github-release"></a>
264 Create a new release for the newly created Git tag: https://github.com/Icinga/icinga2/releases
266 ## Chocolatey <a id="chocolatey"></a>
268 Navigate to the git repository on your Windows box which
269 already has chocolatey installed. Pull/checkout the release.
271 Create the nupkg package:
277 Install the created icinga2 package locally:
280 choco install icinga2 -version 2.8.3 -fdv "%cd%" -source "'%cd%;https://chocolatey.org/api/v2/'"
283 Upload the package to [chocolatey](https://chocolatey.org/packages/upload).
285 ## Post Release <a id="post-release"></a>
287 ### Online Documentation <a id="online-documentation"></a>
289 Ask @bobapple to update the documentation at docs.icinga.com.
291 ### Announcement <a id="announcement"></a>
293 * Create a new blog post on www.icinga.com/blog
294 * 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)
295 * Update IRC channel topic
297 ### Project Management <a id="project-management"></a>
299 * Add new minor version on [GitHub](https://github.com/Icinga/icinga2/milestones).
300 * Close the released version on [GitHub](https://github.com/Icinga/icinga2/milestones).