1<chapter xmlns="http://docbook.org/ns/docbook"
2 xmlns:xlink="http://www.w3.org/1999/xlink"
3 xmlns:xi="http://www.w3.org/2001/XInclude"
4 version="5.0"
5 xml:id="ch-releases">
6 <title>Releases</title>
7 <section xml:id="release-process">
8 <title>Release process</title>
9
10 <para>
11 Going through an example of releasing NixOS 17.09:
12 </para>
13
14 <section xml:id="one-month-before-the-beta">
15 <title>One month before the beta</title>
16
17 <itemizedlist spacing="compact">
18 <listitem>
19 <para>
20 Send an email to the nix-devel mailinglist as a warning about upcoming
21 beta "feature freeze" in a month.
22 </para>
23 </listitem>
24 <listitem>
25 <para>
26 Discuss with Eelco Dolstra and the community (via IRC, ML) about what
27 will reach the deadline. Any issue or Pull Request targeting the release
28 should be included in the release milestone.
29 </para>
30 </listitem>
31 </itemizedlist>
32 </section>
33
34 <section xml:id="at-beta-release-time">
35 <title>At beta release time</title>
36
37 <itemizedlist spacing="compact">
38 <listitem>
39 <para>
40 <link xlink:href="https://github.com/NixOS/nixpkgs/issues/13559">Create
41 an issue for tracking Zero Hydra Failures progress. ZHF is an effort to
42 get build failures down to zero.</link>
43 </para>
44 </listitem>
45 <listitem>
46 <para>
47 <literal>git tag -a -s -m "Release 17.09-beta" 17.09-beta
48 && git push --tags</literal>
49 </para>
50 </listitem>
51 <listitem>
52 <para>
53 From the master branch run <literal>git checkout -B
54 release-17.09</literal>.
55 </para>
56 </listitem>
57 <listitem>
58 <para>
59 <link xlink:href="https://github.com/NixOS/nixos-org-configurations/pull/18">
60 Make sure a channel is created at http://nixos.org/channels/. </link>
61 </para>
62 </listitem>
63 <listitem>
64 <para>
65 <link xlink:href="https://github.com/NixOS/nixpkgs/settings/branches">
66 Let a GitHub nixpkgs admin lock the branch on github for you. (so
67 developers can’t force push) </link>
68 </para>
69 </listitem>
70 <listitem>
71 <para>
72 <link xlink:href="https://github.com/NixOS/nixpkgs/compare/bdf161ed8d21...6b63c4616790">
73 Bump the <literal>system.defaultChannel</literal> attribute in
74 <literal>nixos/modules/misc/version.nix</literal> </link>
75 </para>
76 </listitem>
77 <listitem>
78 <para>
79 <link xlink:href="https://github.com/NixOS/nixpkgs/commit/d6b08acd1ccac0d9d502c4b635e00b04d3387f06">
80 Update <literal>versionSuffix</literal> in
81 <literal>nixos/release.nix</literal></link>, use <literal>git log
82 --format=%an|wc -l</literal> to get the commit count
83 </para>
84 </listitem>
85 <listitem>
86 <para>
87 <literal>echo -n "18.03" > .version</literal> on master.
88 </para>
89 </listitem>
90 <listitem>
91 <para>
92 <link xlink:href="https://github.com/NixOS/nixpkgs/commit/b8a4095003e27659092892a4708bb3698231a842">
93 Pick a new name for the unstable branch. </link>
94 </para>
95 </listitem>
96 <listitem>
97 <para>
98 Create a new release notes file for the upcoming release + 1, in this
99 case <literal>rl-1803.xml</literal>.
100 </para>
101 </listitem>
102 <listitem>
103 <para>
104 Create two Hydra jobsets: release-17.09 and release-17.09-small with
105 <literal>stableBranch</literal> set to false.
106 </para>
107 </listitem>
108 <listitem>
109 <para>
110 Edit changelog at
111 <literal>nixos/doc/manual/release-notes/rl-1709.xml</literal> (double
112 check desktop versions are noted)
113 </para>
114 <itemizedlist spacing="compact">
115 <listitem>
116 <para>
117 Get all new NixOS modules <literal>git diff
118 release-17.03..release-17.09 nixos/modules/module-list.nix|grep
119 ^+</literal>
120 </para>
121 </listitem>
122 <listitem>
123 <para>
124 Note systemd, kernel, glibc and Nix upgrades.
125 </para>
126 </listitem>
127 </itemizedlist>
128 </listitem>
129 </itemizedlist>
130 </section>
131
132 <section xml:id="during-beta">
133 <title>During Beta</title>
134
135 <itemizedlist spacing="compact">
136 <listitem>
137 <para>
138 Monitor the master branch for bugfixes and minor updates and cherry-pick
139 them to the release branch.
140 </para>
141 </listitem>
142 </itemizedlist>
143 </section>
144
145 <section xml:id="before-the-final-release">
146 <title>Before the final release</title>
147
148 <itemizedlist spacing="compact">
149 <listitem>
150 <para>
151 Re-check that the release notes are complete.
152 </para>
153 </listitem>
154 <listitem>
155 <para>
156 Release Nix (currently only Eelco Dolstra can do that).
157 <link xlink:href="https://github.com/NixOS/nixpkgs/commit/53710c752a85f00658882531bc90a23a3d1287e4">
158 Make sure fallback is updated. </link>
159 </para>
160 </listitem>
161 <listitem>
162 <para>
163 <link xlink:href="https://github.com/NixOS/nixpkgs/commit/40fd9ae3ac8048758abdcfc7d28a78b5f22fe97e">
164 Update README.md with new stable NixOS version information. </link>
165 </para>
166 </listitem>
167 <listitem>
168 <para>
169 Change <literal>stableBranch</literal> to true and wait for channel to
170 update.
171 </para>
172 </listitem>
173 </itemizedlist>
174 </section>
175
176 <section xml:id="at-final-release-time">
177 <title>At final release time</title>
178
179 <itemizedlist spacing="compact">
180 <listitem>
181 <para>
182 <literal>git tag -s -a -m "Release 15.09" 15.09</literal>
183 </para>
184 </listitem>
185 <listitem>
186 <para>
187 Update http://nixos.org/nixos/download.html and
188 http://nixos.org/nixos/manual in
189 https://github.com/NixOS/nixos-org-configurations
190 </para>
191 </listitem>
192 <listitem>
193 <para>
194 Get number of commits for the release: <literal>git log
195 release-14.04..release-14.12 --format=%an|wc -l</literal>
196 </para>
197 </listitem>
198 <listitem>
199 <para>
200 Commits by contributor: <literal>git log release-14.04..release-14.12
201 --format=%an|sort|uniq -c|sort -rn</literal>
202 </para>
203 </listitem>
204 <listitem>
205 <para>
206 Send an email to nix-dev to announce the release with above information.
207 Best to check how previous email was formulated to see what needs to be
208 included.
209 </para>
210 </listitem>
211 </itemizedlist>
212 </section>
213 </section>
214 <section xml:id="release-schedule">
215 <title>Release schedule</title>
216
217 <informaltable>
218 <tgroup cols="2">
219 <colspec align="left" />
220 <colspec align="left" />
221 <thead>
222 <row>
223 <entry>
224 Date
225 </entry>
226 <entry>
227 Event
228 </entry>
229 </row>
230 </thead>
231 <tbody>
232 <row>
233 <entry>
234 2016-07-25
235 </entry>
236 <entry>
237 Send email to nix-dev about upcoming branch-off
238 </entry>
239 </row>
240 <row>
241 <entry>
242 2016-09-01
243 </entry>
244 <entry><literal>release-16.09</literal> branch and corresponding jobsets are created,
245 change freeze
246 </entry>
247 </row>
248 <row>
249 <entry>
250 2016-09-30
251 </entry>
252 <entry>
253 NixOS 16.09 released
254 </entry>
255 </row>
256 </tbody>
257 </tgroup>
258 </informaltable>
259 </section>
260</chapter>