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