]> granicus.if.org Git - icinga2/blob - RELEASE.md
Merge pull request #6440 from Icinga/bugfix/typo
[icinga2] / RELEASE.md
1 # Release Workflow <a id="release-workflow"></a>
2
3 #### Table of Content
4
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)
23
24 ## Preparations <a id="preparations"></a>
25
26 Specify the release version.
27
28 ```
29 VERSION=2.9.0
30 ```
31
32 Add your signing key to your Git configuration file, if not already there.
33
34 ```
35 vim $HOME/.gitconfig
36
37 [user]
38         email = michael.friedrich@icinga.com
39         name = Michael Friedrich
40         signingkey = D14A1F16
41 ```
42
43 ### Issues <a id="issues"></a>
44
45 Check issues at https://github.com/Icinga/icinga2
46
47 ### Backport Commits <a id="backport-commits"></a>
48
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.
51
52 ### Authors <a id="authors"></a>
53
54 Update the [.mailmap](.mailmap) and [AUTHORS](AUTHORS) files:
55
56 ```
57 git checkout master
58 git log --use-mailmap | grep '^Author:' | cut -f2- -d' ' | sort | uniq > AUTHORS
59 ```
60
61 ## Version <a id="version"></a>
62
63 Update the version in the version file:
64
65 ```
66 sed -i "s/Version: .*/Version: $VERSION/g" VERSION
67 ```
68
69 ## Changelog <a id="changelog"></a>
70
71 Update the [CHANGELOG.md](CHANGELOG.md) file.
72
73 Export these environment variables:
74
75 ```
76 export ICINGA_GITHUB_AUTH_USERNAME='user'
77 export ICINGA_GITHUB_AUTH_TOKEN='token'
78 export ICINGA_GITHUB_PROJECT='icinga/icinga2'
79 ```
80
81 Run the script which updates the [CHANGELOG.md](CHANGELOG.md) file.
82
83 ```
84 ./changelog.py
85 git diff
86 ```
87
88 ## Git Tag  <a id="git-tag"></a>
89
90 > **Major Releases**: Commit these changes to the `master` branch.
91 >
92 > **Minor Releases**: Commit changes to the `support` branch.
93
94 ```
95 git commit -v -a -m "Release version $VERSION"
96 ```
97
98 Create a signed tag (tags/v<VERSION>) on the `master` branch (for major
99 releases) or the `support` branch (for minor releases).
100
101 ```
102 git tag -s -m "Version $VERSION" v$VERSION
103 ```
104
105 Push the tag:
106
107 ```
108 git push --tags
109 ```
110
111 **For major releases:** Create a new `support` branch:
112
113 ```
114 git checkout master
115 git checkout -b support/2.9
116 git push -u origin support/2.9
117 ```
118
119 **For minor releases:** Push the support branch, cherry-pick the release commit
120 into master and merge the support branch:
121
122 ```
123 git push -u origin support/2.8
124 git checkout master
125 git cherry-pick support/2.8
126 git merge --strategy=ours support/2.8
127 git push origin master
128 ```
129
130 ## Package Builds  <a id="package-builds"></a>
131
132 ### RPM Packages  <a id="rpm-packages"></a>
133
134 ```
135 git clone git@github.com:icinga/rpm-icinga2.git && cd rpm-icinga2
136 ```
137
138 #### Branch Workflow
139
140 **Major releases** are branched off `master`.
141
142 ```
143 git checkout master && git pull
144 ```
145
146 **Bugfix releases** are created in the `release` branch and later merged to master.
147
148 ```
149 git checkout release && git pull
150 ```
151
152 #### Release Commit
153
154 Set the `Version`, `Revision` and `changelog` inside the spec file.
155
156 ```
157 sed -i "s/Version: .*/Version: $VERSION/g" icinga2.spec
158
159 vim icinga2.spec
160
161 %changelog
162 * Tue Jul 17 2018 Michael Friedrich <michael.friedrich@icinga.com> 2.9.0-1
163 - Update to 2.9.0
164 ```
165
166 ```
167 git commit -av -m "Release 2.9.0-1"
168 git push
169 ```
170
171 **Note for major releases**: Update release branch to latest.
172 `git checkout release && git pull && git merge master && git push`
173
174 **Note for minor releases**: Cherry-pick the release commit into master.
175 `git checkout master && git pull && git cherry-pick release && git push`
176
177
178 ### DEB Packages  <a id="deb-packages"></a>
179
180 ```
181 git clone git@github.com:icinga/deb-icinga2.git && cd deb-icinga2
182 ```
183
184 #### Branch Workflow
185
186 **Major releases** are branched off `master`.
187
188 ```
189 git checkout master && git pull
190 ```
191
192 **Bugfix releases** are created in the `release` branch and later merged to master.
193
194 ```
195 git checkout release && git pull
196 ```
197
198 #### Release Commit
199
200 Set the `Version`, `Revision` and `changelog` inside the spec file.
201
202 ```
203 ./dch 2.9.0-1 "Update to 2.9.0"
204 ```
205
206 ```
207 git commit -av -m "Release 2.9.0-1"
208 git push
209 ```
210
211 ```
212 git commit -av -m "Release 2.9.0-1"
213 ```
214
215 **Note for major releases**: Update release branch to latest.
216 `git checkout release && git pull && git merge master && git push`
217
218 **Note for minor releases**: Cherry-pick the release commit into master.
219 `git checkout master && git pull && git cherry-pick release && git push`
220
221
222 #### DEB with dch on macOS
223
224 ```
225 docker run -v `pwd`:/mnt/packaging -ti ubuntu:xenial bash
226
227 apt-get update
228 apt-get install git ubuntu-dev-tools vim
229 cd /mnt/packaging
230
231 git config --global user.name "Michael Friedrich"
232 git config --global user.email "michael.friedrich@icinga.com"
233
234 ./dch 2.9.0-1 "Update to 2.9.0"
235 ```
236
237
238 ## Build Server <a id="build-server"></a>
239
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.
244
245 ## Release Tests  <a id="release-tests"></a>
246
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.
251
252 Example for CentOS7:
253
254 ```
255 docker run -ti centos:latest bash
256
257 yum -y install https://packages.icinga.com/epel/icinga-rpm-release-7-latest.noarch.rpm
258 yum -y install icinga2
259 icinga2 daemon -C
260 ```
261
262 ## GitHub Release  <a id="github-release"></a>
263
264 Create a new release for the newly created Git tag: https://github.com/Icinga/icinga2/releases
265
266 ## Chocolatey  <a id="chocolatey"></a>
267
268 Navigate to the git repository on your Windows box which
269 already has chocolatey installed. Pull/checkout the release.
270
271 Create the nupkg package:
272
273 ```
274 cpack
275 ```
276
277 Install the created icinga2 package locally:
278
279 ```
280 choco install icinga2 -version 2.9.0 -fdv "%cd%" -source "'%cd%;https://chocolatey.org/api/v2/'"
281 ```
282
283 Upload the package to [chocolatey](https://chocolatey.org/packages/upload).
284
285 ## Post Release  <a id="post-release"></a>
286
287 ### Online Documentation  <a id="online-documentation"></a>
288
289 Ask @bobapple to update the documentation at docs.icinga.com.
290
291 ### Announcement  <a id="announcement"></a>
292
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
296
297 ### Project Management  <a id="project-management"></a>
298
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).