]> granicus.if.org Git - icinga2/blob - RELEASE.md
7a2c1d114ee04d3a503eb031c94d8455d29a1f59
[icinga2] / RELEASE.md
1 # Release Workflow
2
3 Print this document.
4
5 Specify the release version.
6
7     VERSION=2.6.1
8
9 ## Issues
10
11 Check issues at https://github.com/Icinga/icinga2
12
13 ## Backport Commits
14
15     $ git checkout master
16     $ ./pick.py -V $VERSION
17
18 The script creates a new branch 'auto-merged-<VERSION>' which is based on the
19 current support branch. It then merges all commits from the 'master' branch which
20 reference a ticket for the version that was specified.
21
22 If there are any merge commits you will need to manually fix them and continue the
23 rebase until no commits are left:
24
25     $ git rebase --continue
26
27 After finishing the rebase the branch needs to be merged into the support branch:
28
29     $ git checkout support/2.6
30     $ git merge --ff-only auto-merged-2.6.1
31
32 ## Authors
33
34 Update the [.mailmap](.mailmap) and [AUTHORS](AUTHORS) files:
35
36     $ git checkout master
37     $ git log --use-mailmap | grep ^Author: | cut -f2- -d' ' | sort | uniq > AUTHORS
38
39 ## Version
40
41 Update the version number in the following file:
42
43 * [icinga2.spec]: Version: (.*)
44
45 Example:
46
47     gsed -i "s/Version: .*/Version: $VERSION/g" icinga2.spec
48
49 ## Changelog
50
51 Update the [ChangeLog](ChangeLog), [doc/1-about.md](doc/1-about.md) files using
52 the changelog.py script. Also generate HTML for the wordpress release announcement.
53 You need to copy and paste the output manually.
54
55 Changelog:
56
57     $ ./changelog.py -V $VERSION
58
59 Docs:
60
61     $ ./changelog.py -V $VERSION -l
62
63 Wordpress:
64
65     $ ./changelog.py -V $VERSION -H -l
66
67 ## Git Tag
68
69 Commit these changes to the "master" branch:
70
71     $ git commit -v -a -m "Release version $VERSION"
72
73 For minor releases: Cherry-pick this commit into the "support" branch.
74
75 Create a signed tag (tags/v<VERSION>) on the "master" branch (for major
76 releases) or the "support" branch (for minor releases).
77
78 GB:
79
80     $ git tag -u EE8E0720 -m "Version $VERSION" v$VERSION
81
82 MF:
83
84     $ git tag -u D14A1F16 -m "Version $VERSION" v$VERSION
85
86 Push the tag.
87
88     $ git push --tags
89
90 For major releases: Create a new "support" branch:
91
92     $ git checkout master
93     $ git checkout -b support/2.6
94     $ git push -u origin support/2.6
95
96 For minor releases: Push the support branch, cherry-pick the release commit
97 into master and merge the support branch:
98
99     $ git push -u origin support/2.6
100     $ git checkout master
101     $ git cherry-pick support/2.6
102     $ git merge --strategy=ours support/2.6
103     $ git push origin master
104
105 # External Dependencies
106
107 ## Build Server
108
109 * Verify package build changes for this version.
110 * Test the snapshot packages for all distributions beforehand.
111 * Build the newly created Git tag for Debian/RHEL/SuSE.
112 * Build the newly created Git tag for Windows.
113
114 ## Release Tests
115
116 * Test DB IDO with MySQL and PostgreSQL.
117 * Provision the vagrant boxes and test the release packages.
118 * Test the [setup wizard](http://packages.icinga.com/windows/) inside a Windows VM.
119
120 * Start a new docker container and install/run icinga2.
121
122 Example for CentOS7:
123
124     $ docker run -ti centos:latest bash
125
126     # yum -y install http://packages.icinga.com/epel/7/release/noarch/icinga-rpm-release-7-1.el7.centos.noarch.rpm
127     # yum -y install icinga2
128     # icinga2 daemon -C
129
130     # systemctl start icinga2
131     # tail -f /var/log/icinga2/icinga2.log
132
133 ## GitHub Release
134
135 Create a new release for the newly created Git tag.
136 https://github.com/Icinga/icinga2/releases
137
138 ## Chocolatey
139
140 Navigate to the git repository on your Windows box which
141 already has chocolatey installed. Pull/checkout the release.
142
143 Create the nupkg package:
144
145     cpack
146
147 Install the created icinga2 package locally:
148
149     choco install icinga2 -version 2.6.1 -fdv "%cd%" -source "'%cd%;https://chocolatey.org/api/v2/'"
150
151 Upload the package to [chocolatey](https://chocolatey.org/packages/upload).
152
153 ## Online Documentation
154
155 SSH into the web box, navigate into `icinga2-latest/module/icinga2`
156 and pull the current support branch.
157
158 ## Announcement
159
160 * Create a new blog post on www.icinga.com/blog
161 * Send announcement mail to icinga-announce@lists.icinga.org
162 * 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)
163 * Update IRC channel topic
164
165 # After the release
166
167 * Add new minor version
168 * Close the released version
169 * Update Redmine filters for the next major/minor version