/brz/remove-bazaar

To get this branch, use:
bzr branch http://gegoxaren.bato24.eu/bzr/brz/remove-bazaar
3383.2.3 by Martin Pool
Separate out and update the release manager instructions
1
Releasing Bazaar
2
================
3
4
This document describes the processes for making and announcing a Bazaar
5
release, and managing the release process.
6
7
See also: `Bazaar Developer Document Catalog <index.html>`_.
8
9
10
.. contents::
11
12
13
Starting a Release
14
------------------
15
16
To start a new release cycle:
17
18
#. Send mail to the list with the key dates, who will be the release
19
   manager, and the main themes or targetted bugs.  Ask people to nominate
3408.1.1 by Martin Pool
Merge updated release process docs, plus tweaks from igc
20
   objectives, or point out any high-risk things that are best done early,
3383.2.3 by Martin Pool
Separate out and update the release manager instructions
21
   or that interact with other changes.
22
23
#. Add a new "series" in Launchpad at <https://launchpad.net/bzr/+addseries>.  There is one 
24
   series for every *x.y* release.
25
26
Weekly Status Updates
27
---------------------
28
29
TODO: Things to cover:
30
31
* Early communication to downstream teams (e.g. Launchpad) about changes in dependencies.
32
* Reminder re lifecycle and where we're up to right now
33
* Summary of recent successes and pending work
34
* Reminder re release objectives
35
* Reminder re things needing attention, e.g. bug triage, reviews, testing of certain things, etc.
36
37
38
Feature Freeze
39
--------------
40
41
TODO: Get material from http://bazaar-vcs.org/FeatureFreeze.
42
43
44
3383.2.4 by Martin Pool
Trim from the release instructions things that are now automated or unnecessary
45
Preparing the tree for release
46
------------------------------
3383.2.3 by Martin Pool
Separate out and update the release manager instructions
47
48
.. Was previously at http://bazaar-vcs.org/ReleaseChecklist
49
50
.. TODO: Still needs more clarity on what's in a RC versus a final
51
.. release?
52
53
This is the procedure for making a new bzr release:
54
3408.1.1 by Martin Pool
Merge updated release process docs, plus tweaks from igc
55
#. If the release is the first candidate, make a new branch in PQM. 
56
   (Contact Robert Collins for this step).
3383.2.3 by Martin Pool
Separate out and update the release manager instructions
57
58
   Register the branch at https://launchpad.net/products/bzr/+addbranch
59
60
#. Run the automatic test suite and any non-automated tests.  (For example, try a download over http; these should eventually be scripted though not automatically run.). Try to have all optional dependencies installed so that there are no tests skipped. Also make sure that you have the c extensions compiled (``make`` or ``python setup.py build_ext -i``).
61
62
#. In the release branch, update  ``version_info`` in ``./bzrlib/__init__.py``
63
64
#. Add the date and release number to ``./NEWS``.
65
66
#. Commit these changes to the release branch, using a command like::
67
    
68
     bzr commit -m "(jam) Release 0.12rc1." 
69
   
70
   The diff before you commit will be something like::
71
72
       === modified file 'NEWS'
73
       --- NEWS        2006-10-23 13:11:17 +0000
74
       +++ NEWS        2006-10-23 22:50:50 +0000
75
       @@ -1,4 +1,4 @@
76
       -IN DEVELOPMENT
77
       +bzr 0.12rc1  2006-10-23
78
79
          IMPROVEMENTS:
80
81
82
       === modified file 'bzrlib/__init__.py'
83
       --- bzrlib/__init__.py  2006-10-16 01:47:43 +0000
84
       +++ bzrlib/__init__.py  2006-10-23 22:49:46 +0000
85
       @@ -35,7 +35,7 @@
86
        # Python version 2.0 is (2, 0, 0, 'final', 0)."  Additionally we use a
87
        # releaselevel of 'dev' for unreleased under-development code.
88
89
       -version_info = (0, 12, 0, 'dev', 0)
90
       +version_info = (0, 12, 0, 'candidate', 1)
91
92
        if version_info[3] == 'final':
93
            version_string = '%d.%d.%d' % version_info[:3]
94
3383.2.5 by Martin Pool
merge trunk
95
#. Submit those changes to PQM for merge into the appropriate release
96
   branch.
3383.2.3 by Martin Pool
Separate out and update the release manager instructions
97
98
#. When PQM succeeds, pull down the master release branch.
99
3383.2.4 by Martin Pool
Trim from the release instructions things that are now automated or unnecessary
100
Making the source tarball
101
-------------------------
102
103
#. Change into the source directory and run
104
  
105
     make dist
3383.2.3 by Martin Pool
Separate out and update the release manager instructions
106
3383.2.5 by Martin Pool
merge trunk
107
#. Unpack the tarball into a temporary directory and run ``make check`` in
108
   that directory, to check for packaging problems.
109
3383.2.3 by Martin Pool
Separate out and update the release manager instructions
110
111
Publishing the release
112
----------------------
113
114
Now you have the releasable product.  The next step is making it
115
available to the world.
116
117
#. In <https://launchpad.net/bzr/> click the "Release series" for this
118
   series, to take you to e.g. <https://launchpad.net/bzr/1.1>.  Then
119
   click "Register a release", and add information about this release.
120
121
#. Within that release, upload the source tarball and the GPG signature.
122
123
#. Link from http://bazaar-vcs.org/Download to the tarball and signature.
124
125
#. Update http://doc.bazaar-vcs.org/ to have a directory of documentation
126
   for this release.  (Controlled by the ``update-bzr-docs`` script on
127
   escudero, and also update the ``latest`` symlink in
128
   ``/srv/bazaar.canonical.com/doc/``.)
129
130
#. Announce on the `Bazaar home page`__
131
   
132
 __ http://bazaar-vcs.org/
133
134
135
Announcing the release
136
----------------------
137
138
Now that the release is publicly available, tell people about it.
139
140
#. Announce to ``bazaar-announce`` and ``bazaar`` mailing lists. 
141
   The announce mail will look something like this:
142
   
143
    | Subject: bzr 0.11 release candidate 1
144
    | 
145
    | INTRO HERE. Mention the release number and date, and why the release. (i.e. release candidate for testing, final release of a version, backport/bugfix etc).
146
    | 
147
    | Tarballs:
148
    | http://bazaar-vcs.org/releases/src/bzr-VERSION.tar.gz
149
    | and GPG signature:
150
    | http://bazaar-vcs.org/releases/src/bzr-VERSION.tar.gz.sig
151
    | 
152
    | DESCRIBE-CHANGES-IN-OVERVIEW-HERE
153
    | 
154
    | DESCRIBE-when the next release will be (if there is another - i.e. this is a release candidate)
155
    | 
156
    | Many thanks to all the contributors to this release! I've included the
157
    | contents of NEWS for VERSION below:
158
159
   To generate the data from NEWS, just copy and paste the relevant news section and clean it up as appropriate. The main clean-up task is to confirm that all major changes are indeed covered. This can be done by running ``bzr log`` back to the point when the branch was opened and cross checking the changes against the NEWS entries.
160
161
   (RC announcements should remind plugin maintainers to update their plugins.)
162
3408.1.1 by Martin Pool
Merge updated release process docs, plus tweaks from igc
163
     * For point releases (i.e. a release candidate, or an incremental fix
164
       to a released version) take everything in the relevant NEWS section.  For
165
       example, for 0.11rc2 take everything in NEWS from the bzr 0.11rc2 line to the bzr 0.11rc1 line further down.
3383.2.3 by Martin Pool
Separate out and update the release manager instructions
166
167
     * For major releases (i.e. 0.11, 0.12 etc), take all the combined NEWS sections from within that version: for 0.11 take all of the 0.11 specific section, plus 0.11rc2, plus 0.11rc1 etc.
168
169
#. Update the IRC channel topic. Use the ``/topic`` command to do this, ensuring the new topic text keeps the project name, web site link, etc.
170
171
#. Announce on http://freshmeat.net/projects/bzr/
172
   
173
   This should be done for both release candidates and final releases. If you do not have a Freshmeat account yet, ask one of the existing admins.
174
175
#. Update http://en.wikipedia.org/wiki/Bzr -- this should be done for final releases but not Release Candidates.
176
177
#. Package maintainers should update packages when they see the
178
   announcement.
179
180
#. Blog about it.
181
182
#. Post to http://mail.python.org/mailman/listinfo/python-announce-list for major releases
183
184
#. Update the python package index: <http://pypi.python.org/pypi/bzr> - best
185
   done by running ::
186
187
       python setup.py register
188
189
   Remember to check the results afterwards.
190
191
3383.2.5 by Martin Pool
merge trunk
192
Merging the released code back to trunk
193
---------------------------------------
194
195
Merge the release branch back into the trunk.  Check that changes in NEWS
196
were merged into the right sections.  If it's not already done, advance
197
the version number in ``bzr`` and ``bzrlib/__init__.py``.  Submit this
198
back into pqm for bzr.dev.
199
200
201
Updating the PPA for a new release
202
----------------------------------
3383.2.3 by Martin Pool
Separate out and update the release manager instructions
203
204
We build Ubuntu ``.deb`` packages for Bazaar as an important part of the release
205
process.  These packages are hosted in a `Personal Package Archive (PPA)`__ on
206
Launchpad, at <https://launchpad.net/~bzr/+archive>.
207
208
  __ https://help.launchpad.net/PPAQuickStart
209
210
We build packages for every supported Ubuntu release
211
<https://wiki.ubuntu.com/Releases>.  Packages need no longer be updated
3408.1.1 by Martin Pool
Merge updated release process docs, plus tweaks from igc
212
when the release passes end-of-life because all users should
213
updated by then.
3383.2.3 by Martin Pool
Separate out and update the release manager instructions
214
215
The ``debian/`` directory containing the packaging information is kept in
216
branches on Launchpad, named like 
3408.1.1 by Martin Pool
Merge updated release process docs, plus tweaks from igc
217
<https://code.launchpad.net/~bzr/bzrtools/packaging-dapper>.
218
3383.2.3 by Martin Pool
Separate out and update the release manager instructions
219
Preconditions for building these packages:
220
  
221
* You must have a Launchpad account and be a member of the `~bzr`__ team
222
  
223
__ https://edge.launchpad.net/~bzr/+members>
224
225
* You must have a GPG key registered to your Launchpad account.
226
227
* Configure ``dput`` to upload to our PPA with this section in your
228
  ``~/.dput.cf``::
229
230
    [bzr-ppa]
231
    fqdn = ppa.launchpad.net
232
    method = ftp
233
    incoming = ~bzr/ubuntu
234
    login = anonymous
235
    allow_unsigned_uploads = 0
236
237
* You need a Ubuntu (or probably Debian) machine, and ::
238
239
    sudo apt-get install build-essential devscripts dput
240
241
Here is the process; there are some steps which should be automated in
242
future:
243
244
#. You will need a working directory for each supported release, such as
245
   ``~/bzr/Packaging/dapper``
246
247
#. Download the official tarball of the release to e.g. ``~/bzr/Releases``
248
249
#. Copy the original tarball into your per-disto directory, then untar it 
250
   and if necessary rename it::
251
252
     cp -l ~/bzr/Releases/bzrtools-1.3.0.tar.gz bzrtools_1.3.0.orig.tar.gz
253
     tar xfvz bzrtools_1.3.0.orig.tar.gz
254
     mv bzrtools bzrtools-1.3.0
255
256
#. Change into that directory and check out the packaging branch::
257
258
     cd bzrtools
259
     bzr checkout \
260
       bzr+ssh://bazaar.launchpad.net/~bzr/bzrtools/packaging-dapper \
261
       debian
262
263
#. For Bazaar plugins, change the ``debian/control`` file to express a
264
   dependency on the correct version of ``bzr``.
265
266
   For bzrtools this is typically::
267
268
      Build-Depends-Indep: bzr (>= 1.3~), rsync
269
      Depends: ${python:Depends}, bzr (>= 1.3~), bzr (<< 1.4~), patch
270
271
#. Make a new ``debian/changelog`` entry for the new release,
272
   either by using ``dch`` or just editing the file::
273
274
     dch -v '1.3.0-1~bazaar1~dapper1' -D dapper
275
276
   dch will default to the distro you're working in and this isn't checked
277
   against the version number (which is just our conversion), so make sure 
278
   to specify it.
279
280
   **Caution:** Release candidates must insert a tilde to make them sort before the
281
   final release, like this: ``bzr-1.4~rc2-1~bazaar1~dapper1``.
282
283
   Make sure you have the correct email address for yourself, version
284
   number, and distribution.  It should look something like this::
285
286
       bzrtools (1.3.0-1~bazaar1~dapper1) dapper; urgency=low
287
     
288
        * New upstream release.
289
     
290
       -- John Sample <sample@example.com>  Mon, 31 Mar 2008 12:36:27 +1100
291
292
   If you need to upload the package again to fix a problem, normally you
293
   should increment the last number in the version number, following the
294
   distro name.  Make sure not to omit the initial ``-1``, and make sure
295
   that the distro name in the version is consistent with the target name
296
   outside the parenthesis.
297
298
#. Commit these changes into the packaging branch::
299
300
     bzr ci -m '1.3.0-1~bazaar1~dapper1: New upstream release.' debian
301
302
#. Build a source package::
303
304
     debuild -S -sa -i
305
306
   This will create a ``.changes`` file in the per-distro directory,
307
   and should invoke gpg to sign it with your key.
308
   Check that file is reasonable: it should be uploading to the intended
309
   distribution, have a .orig file included, and the right version number.
310
311
#. Upload into the PPA::
312
313
     dput bzr-ppa ../bzrtools__1.3.0-1\~bazaar1\~dapper1_source.changes
314
315
   Don't forget the ``bzr-ppa`` component or dput will try to upload into
316
   the main archive by default.  You can disable this by adding this
317
   section to your ``.dput.cf``::
318
319
     [ubuntu]
320
     fqdn = SPECIFY.A.PPA.NAME
321
322
#. You should soon get an "upload accepted" mail from Launchpad, which
323
   means that your package is waiting to be built.  You can then track its
324
   progress in <https://launchpad.net/~bzr/+archive> and
325
   <https://launchpad.net/~bzr/+archive/+builds>.
326
327