~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to doc/developers/releasing.txt

  • Committer: Robert Collins
  • Date: 2010-02-27 12:27:33 UTC
  • mto: This revision was merged to the branch mainline in revision 5061.
  • Revision ID: robertc@robertcollins.net-20100227122733-2o3me3fkk3pk36ns
``bzrlib.branchbuilder.BranchBuilder.build_snapshot`` now accepts a
``message_callback`` in the same way that commit does. (Robert Collins)

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
1
Releasing Bazaar
2
 
################
 
2
================
3
3
 
4
4
This document describes the processes for making and announcing a Bazaar
5
5
release, and managing the release process.  This is just one phase of the
19
19
 
20
20
 
21
21
Preconditions
22
 
=============
 
22
-------------
23
23
 
24
24
#. Download the pqm plugin and install it into your ``~/.bazaar/plugins``::
25
25
 
26
26
     bzr branch lp:bzr-pqm ~/.bazaar/plugins/pqm
27
27
 
28
28
 
29
 
At the start of a release cycle
30
 
===============================
 
29
Starting a cycle
 
30
----------------
31
31
 
32
32
To start a new release cycle:
33
33
 
34
 
#. If this is the first release for a given *x.y* then create a new
35
 
   series at <https://launchpad.net/bzr/+addseries>. There is one series
36
 
   for every *x.y* release.
37
 
 
38
 
#. If you made a new series, create a new pqm-controlled branch for this
39
 
   release series, by asking a Canonical sysadmin.  This branch means that
40
 
   from the first release beta or candidate onwards, general development
41
 
   continues on the trunk, and only specifically-targeted fixes go into
42
 
   the release branch.
43
 
 
44
 
#. If you made a new series, add milestones at
45
 
   <https://edge.launchpad.net/bzr/x.y/+addmilestone> to that series for
46
 
   the beta release, release candidate and the final release, and their
47
 
   expected dates.
48
 
 
49
 
#. Create a new milestone <https://edge.launchpad.net/bzr/x.y/+addmilestone>
50
 
   and add information about this release.  We will not use it yet, but it
 
34
#. Create a new series at <https://launchpad.net/bzr/+addseries>. There is one
 
35
   series for every *x.y* release.
 
36
 
 
37
#. Go to the series web page at <https://launchpad.net/bzr/x.y>
 
38
 
 
39
#. Create a new release at
 
40
   <https://launchpad.net/bzr/x.y/+addrelease> and add
 
41
   information about this release. We will not use it yet, but it
51
42
   will be available for targeting or nominating bugs.
52
43
 
 
44
#. We create a new pqm-controlled branch for this release series, by
 
45
   asking a Canonical sysadmin.
 
46
   This branch means that from the first release beta or candidate onwards,
 
47
   general development continues on the trunk, and only
 
48
   specifically-targeted fixes go into the release branch.
 
49
 
 
50
#. Add milestones at <https://edge.launchpad.net/bzr/x.y/+addmilestone> to
 
51
   that series for the beta release, release candidate and the final release,
 
52
   and their expected dates.
 
53
 
 
54
#. Update the version number in the ``bzr`` script, and the
 
55
   ``bzrlib/__init__.py`` file. Make sure there is always a corresponding
 
56
   milestone when you change that version number.
 
57
 
53
58
#. Send mail to the list with the key dates, who will be the release
54
59
   manager, and the main themes or targeted bugs.  Ask people to nominate
55
60
   objectives, or point out any high-risk things that are best done early,
62
67
     bzr branch trunk prepare-1.14
63
68
 
64
69
#. Configure pqm-submit for this branch, with a section like this (where
65
 
   x.y is the version to release). **Or use hydrazine for easy use**
 
70
   x.y is the version to release).
66
71
   ``~/.bazaar/locations.conf``::
67
72
 
68
73
        [/home/mbp/bzr/prepare-x.y]
76
81
    Please see <http://doc.bazaar-vcs.org/developers/HACKING.html#an-overview-of-pqm>
77
82
    for more details on PQM
78
83
 
79
 
#. Update the version number in the ``bzr`` script, and the
80
 
   ``bzrlib/__init__.py`` file::
81
 
   
82
 
       version_info = (x, y, z, 'dev', 0)
83
 
   
84
 
#. Add a new section at the top of ``NEWS`` about the new release,
85
 
   including its version number and the headings from
86
 
   ``NEWS-template.txt``.
87
 
 
88
 
#. Commit this and send it to PQM.
89
 
 
90
 
 
91
 
Doing a particular release
92
 
==========================
93
 
 
94
 
Update the source code
95
 
----------------------
96
 
 
97
 
#. Check that there is a milestone for the release you're doing. If there
98
 
   is no milestone it indicates a process problem - make the milestone but
99
 
   also mail the list to raise this issue in our process. Milestones are
100
 
   found at <https://launchpad.net/bzr/+milestone/x.y.z>.
101
 
 
102
84
#. In the release branch, update  ``version_info`` in ``./bzrlib/__init__.py``.
103
85
   Make sure the corresponding milestone exists.
104
86
   Double check that ./bzr ``_script_version`` matches ``version_info``. Check
106
88
 
107
89
   For beta releases use::
108
90
 
109
 
       version_info = (2, 1, 0, 'beta', SERIAL)
110
 
 
111
 
   For instance 2.1b1::
112
 
 
113
91
       version_info = (2, 1, 0, 'beta', 1)
114
92
 
 
93
 
115
94
   For release candidates use::
116
95
 
117
 
       version_info = (2, 0, 1, 'candidate', SERIAL)
118
 
 
119
 
   For stable releases use::
120
 
 
121
 
       version_info = (2, 1, 2, 'final', 0)
122
 
 
123
 
#. Check the release number in ``./NEWS``
124
 
 
125
 
   Fill out the date and a description of the release under the existing
126
 
   header. If there isn't one, follow the above for using the NEWS
127
 
   template.
128
 
 
129
 
   See *2.1.1* or similar for an example of what this looks like.
 
96
       version_info = (2, 0, 1, 'candidate', 1)
 
97
 
 
98
 
 
99
Starting the release phase
 
100
--------------------------
 
101
 
 
102
#. Create a new milestone at <https://launchpad.net/bzr/x.y/+addmilestone>
 
103
   for the beta release or release candidate if you haven't already.
 
104
 
 
105
#. Add the date and release number to ``./NEWS``
 
106
 
 
107
   Depending on whether you're doing a beta or a bugfix release, you'll
 
108
   have to create a NEWS section for your release in the right
 
109
   place. Most of the time, the new section is at the top of the file
 
110
   (look what have been done for the various 2.0x and 2.1.0bx releases).
 
111
   The rule is to keep the sections sorted by date. You'll need to be
 
112
   cautious when merging back to trunk to respect that.
130
113
 
131
114
#. To check that all bugs mentioned in ``./NEWS`` are actually marked as
132
115
   closed in Launchpad, you can run ``tools/check-newsbugs.py``::
133
116
 
134
117
     ./tools/check-newsbugs.py NEWS
135
118
 
136
 
   (But note there will be many false positives, and this script may be
 
119
   (But note there can be some false positives, and this script may be
137
120
   flaky <https://bugs.edge.launchpad.net/bzr/+bug/354985>.  Don't let
138
121
   this slow you down too much.)
139
122
 
 
123
#. Summarize into one or two paragraphs what's new in this release.
 
124
 
140
125
#. Commit these changes to the release branch, using a command like::
141
126
 
142
127
     bzr commit -m "Release 1.14."
181
166
 
182
167
     bzr tag bzr-1.14
183
168
 
184
 
#. Push those changes to a bzr repository that is public and accessible on
 
169
#. Push those changes to a bzr reposistory that is public and accessible on
185
170
   the Internet. PQM will pull from this repository when it attempts to merge
186
171
   your changes. Then submit those changes to PQM for merge into the
187
172
   appropriate release branch::
189
174
     bzr push
190
175
     bzr pqm-submit -m "(mbp) prepare 1.14"
191
176
 
192
 
   Or with hydrazine::
193
 
 
194
 
     bzr lp-propose -m "Release 1.14" --approve lp:bzr/1.14
195
 
     feed-pqm bzr
196
 
 
197
177
#. When PQM succeeds, pull down the master release branch.
198
178
 
199
179
 
215
195
   disable the faulty plugins one by one until you get no more
216
196
   failures.
217
197
 
218
 
   Remember that PQM has just tested everything too, this step is
219
 
   particularly testing that the pyrex extensions, which are updated
220
 
   by your local pyrex version when you run make dist, are in good
221
 
   shape.
222
 
 
223
198
 
224
199
Publishing the source tarball
225
200
-----------------------------
226
201
 
227
202
#. Go to the relevant milestone page in Launchpad.
228
203
 
229
 
#. Create a release of the milestone, and upload the source tarball and
230
 
   the GPG signature.  Or, if you prefer, use the
231
 
   ``tools/packaging/lp-upload-release`` script to do this. Note that
232
 
   this changes what the download widget on the Launchpad bzr home
233
 
   page shows, so don't stop the release process yet, or platform binary
234
 
   installers won't be made and the download list will stay very small!
235
 
   <https://bugs.edge.launchpad.net/launchpad/+bug/586445>
 
204
#. Within that release, upload the source tarball and the GPG
 
205
   signature.  Or, if you prefer, use the
 
206
   ``tools/packaging/lp-upload-release`` script to do this.
236
207
 
237
208
 
238
209
Announcing the source freeze
244
215
   release.
245
216
 
246
217
 
247
 
Kick off the next cycle
248
 
-----------------------
249
 
 
250
 
#. To let developers work on the next release, do
251
 
   `At the start of a release cycle` now.
252
 
 
253
 
#. Pause for a few days.
254
 
 
255
 
 
256
218
Publishing the release
257
219
----------------------
258
220
 
261
223
we have a releasable product.  The next step is to make it generally
262
224
available to the world.
263
225
 
264
 
#. Go to the release web page at <https://launchpad.net/bzr/x.y/x.y.z>
 
226
go to the release
 
227
 
 
228
#. Within that release, upload the source tarball and zipfile and the GPG
 
229
   signature.  Or, if you prefer, use the
 
230
   ``tools/packaging/lp-upload-release`` script to do this.
265
231
 
266
232
#. Link from http://bazaar-vcs.org/SourceDownloads to the tarball and
267
233
   signature.
300
266
 
301
267
   The announce mail will look something like this::
302
268
 
303
 
      Subject: bzr x.y.z released!
 
269
      Subject: bzr x.yy released!
304
270
 
305
271
      <<Summary paragraph from news>>
306
272
 
348
314
Merging the released code back to trunk
349
315
---------------------------------------
350
316
 
351
 
The rule is to keep ``NEWS`` sections sorted by date. You'll need to
352
 
review the merge and make sure that that is respected.
353
 
 
354
317
Merge the release branch back into the trunk.  Check that changes in NEWS
355
318
were merged into the right sections.  If it's not already done, advance
356
319
the version number in ``bzr`` and ``bzrlib/__init__.py``.  Submit this
360
323
created the corresponding milestone to ensure the continuity in bug
361
324
targeting or nominating. Depending on the change, you may even have to
362
325
create a new series (if your change the major or minor release number), in
363
 
that case go to `At the start of a release cycle` and follow the instructions from there.
 
326
that case go to `Starting a cycle` and follow the instructions from there.
364
327
 
365
328
You should also merge (not pull) the release branch into
366
329
``lp:~bzr/bzr/current``, so that branch contains the current released code
374
337
candidate, you're not finished yet. Another beta or candidate or
375
338
hopefully a final release is still to come.
376
339
 
377
 
The process is the same as for the first release. Goto `Doing a
378
 
particular release`_ and follow the instructions again. Some details change
 
340
The process is the same as for the first release. Goto `Starting the
 
341
release phase`_ and follow the instructions again. Some details change
379
342
between beta, candidate and final releases, but they should be
380
343
documented. If the instructions aren't clear enough, please fix them.
381
344