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>
66 sed -i "s/Version: .*/Version: $VERSION/g" VERSION
67 sed -i "s/VERSION=.*/VERSION=$VERSION/g" RELEASE.md
70 ## Changelog <a id="changelog"></a>
72 Update the [CHANGELOG.md](CHANGELOG.md) file.
74 Export these environment variables:
77 export ICINGA_GITHUB_AUTH_USERNAME='user'
78 export ICINGA_GITHUB_AUTH_TOKEN='token'
79 export ICINGA_GITHUB_PROJECT='icinga/icinga2'
82 Run the script which updates the [CHANGELOG.md](CHANGELOG.md) file.
89 ## Git Tag <a id="git-tag"></a>
91 > **Major Releases**: Commit these changes to the `master` branch.
93 > **Minor Releases**: Commit changes to the `support` branch.
96 git commit -v -a -m "Release version $VERSION"
99 Create a signed tag (tags/v<VERSION>) on the `master` branch (for major
100 releases) or the `support` branch (for minor releases).
103 git tag -s -m "Version $VERSION" v$VERSION
112 **For major releases:** Create a new `support` branch:
116 git checkout -b support/2.9
117 git push -u origin support/2.9
120 **For minor releases:** Push the support branch, cherry-pick the release commit
121 into master and merge the support branch:
124 git push -u origin support/2.8
126 git cherry-pick support/2.8
127 git merge --strategy=ours support/2.8
128 git push origin master
131 ## Package Builds <a id="package-builds"></a>
133 ### RPM Packages <a id="rpm-packages"></a>
136 git clone git@github.com:icinga/rpm-icinga2.git && cd rpm-icinga2
141 **Major releases** are branched off `master`.
144 git checkout master && git pull
147 **Bugfix releases** are created in the `release` branch and later merged to master.
150 git checkout release && git pull
155 Set the `Version`, `Revision` and `changelog` inside the spec file.
158 sed -i "s/Version: .*/Version: $VERSION/g" icinga2.spec
163 * Tue Jul 17 2018 Michael Friedrich <michael.friedrich@icinga.com> 2.9.0-1
168 git commit -av -m "Release 2.9.0-1"
172 **Note for major releases**: Update release branch to latest.
173 `git checkout release && git pull && git merge master && git push`
175 **Note for minor releases**: Cherry-pick the release commit into master.
176 `git checkout master && git pull && git cherry-pick release && git push`
179 ### DEB Packages <a id="deb-packages"></a>
182 git clone git@github.com:icinga/deb-icinga2.git && cd deb-icinga2
187 **Major releases** are branched off `master`.
190 git checkout master && git pull
193 **Bugfix releases** are created in the `release` branch and later merged to master.
196 git checkout release && git pull
201 Set the `Version`, `Revision` and `changelog` inside the spec file.
204 ./dch 2.9.0-1 "Update to 2.9.0"
208 git commit -av -m "Release 2.9.0-1"
213 git commit -av -m "Release 2.9.0-1"
216 **Note for major releases**: Update release branch to latest.
217 `git checkout release && git pull && git merge master && git push`
219 **Note for minor releases**: Cherry-pick the release commit into master.
220 `git checkout master && git pull && git cherry-pick release && git push`
223 #### DEB with dch on macOS
226 docker run -v `pwd`:/mnt/packaging -ti ubuntu:xenial bash
229 apt-get install git ubuntu-dev-tools vim
232 git config --global user.name "Michael Friedrich"
233 git config --global user.email "michael.friedrich@icinga.com"
235 ./dch 2.9.0-1 "Update to 2.9.0"
239 ## Build Server <a id="build-server"></a>
241 * Verify package build changes for this version.
242 * Test the snapshot packages for all distributions beforehand.
243 * Build the newly created Git tag for Debian/RHEL/SuSE.
244 * Build the newly created Git tag for Windows.
246 ## Release Tests <a id="release-tests"></a>
248 * Test DB IDO with MySQL and PostgreSQL.
249 * Provision the vagrant boxes and test the release packages.
250 * Test the [setup wizard](https://packages.icinga.com/windows/) inside a Windows VM.
251 * Start a new docker container and install/run icinga2.
256 docker run -ti centos:latest bash
258 yum -y install https://packages.icinga.com/epel/icinga-rpm-release-7-latest.noarch.rpm
259 yum -y install icinga2
263 ## GitHub Release <a id="github-release"></a>
265 Create a new release for the newly created Git tag: https://github.com/Icinga/icinga2/releases
267 ## Chocolatey <a id="chocolatey"></a>
269 Navigate to the git repository on your Windows box which
270 already has chocolatey installed. Pull/checkout the release.
272 Create the nupkg package:
278 Install the created icinga2 package locally:
281 choco install icinga2 -version 2.9.0 -fdv "%cd%" -source "'%cd%;https://chocolatey.org/api/v2/'"
284 Upload the package to [chocolatey](https://chocolatey.org/packages/upload).
286 ## Post Release <a id="post-release"></a>
288 ### Online Documentation <a id="online-documentation"></a>
290 Ask @bobapple to update the documentation at docs.icinga.com.
292 ### Announcement <a id="announcement"></a>
294 * Create a new blog post on www.icinga.com/blog
295 * 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)
296 * Update IRC channel topic
298 ### Project Management <a id="project-management"></a>
300 * Add new minor version on [GitHub](https://github.com/Icinga/icinga2/milestones).
301 * Close the released version on [GitHub](https://github.com/Icinga/icinga2/milestones).