/brz/remove-bazaar

To get this branch, use:
bzr branch http://gegoxaren.bato24.eu/bzr/brz/remove-bazaar

« back to all changes in this revision

Viewing changes to doc/developers/releasing.txt

  • Committer: Robert Collins
  • Date: 2010-05-06 11:08:10 UTC
  • mto: This revision was merged to the branch mainline in revision 5223.
  • Revision ID: robertc@robertcollins.net-20100506110810-h3j07fh5gmw54s25
Cleaner matcher matching revised unlocking protocol.

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
 
 
58
#. Add a new section at the top of ``NEWS`` about the new release,
 
59
   including its version number and the headings from
 
60
   ``NEWS-template.txt``.
 
61
 
53
62
#. Send mail to the list with the key dates, who will be the release
54
63
   manager, and the main themes or targeted bugs.  Ask people to nominate
55
64
   objectives, or point out any high-risk things that are best done early,
62
71
     bzr branch trunk prepare-1.14
63
72
 
64
73
#. 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**
 
74
   x.y is the version to release).
66
75
   ``~/.bazaar/locations.conf``::
67
76
 
68
77
        [/home/mbp/bzr/prepare-x.y]
76
85
    Please see <http://doc.bazaar-vcs.org/developers/HACKING.html#an-overview-of-pqm>
77
86
    for more details on PQM
78
87
 
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
88
#. In the release branch, update  ``version_info`` in ``./bzrlib/__init__.py``.
103
89
   Make sure the corresponding milestone exists.
104
90
   Double check that ./bzr ``_script_version`` matches ``version_info``. Check
106
92
 
107
93
   For beta releases use::
108
94
 
109
 
       version_info = (2, 1, 0, 'beta', SERIAL)
110
 
 
111
 
   For instance 2.1b1::
112
 
 
113
95
       version_info = (2, 1, 0, 'beta', 1)
114
96
 
 
97
 
115
98
   For release candidates use::
116
99
 
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.
 
100
       version_info = (2, 0, 1, 'candidate', 1)
 
101
 
 
102
 
 
103
Starting the release phase
 
104
--------------------------
 
105
 
 
106
#. Create a new milestone at <https://launchpad.net/bzr/x.y/+addmilestone>
 
107
   for the beta release or release candidate if you haven't already.
 
108
 
 
109
#. Add the date and release number to ``./NEWS``
 
110
 
 
111
   Depending on whether you're doing a beta or a bugfix release, you'll
 
112
   have to create a NEWS section for your release in the right
 
113
   place. Most of the time, the new section is at the top of the file
 
114
   (look what have been done for the various 2.0x and 2.1.0bx releases).
 
115
   The rule is to keep the sections sorted by date. You'll need to be
 
116
   cautious when merging back to trunk to respect that.
130
117
 
131
118
#. To check that all bugs mentioned in ``./NEWS`` are actually marked as
132
119
   closed in Launchpad, you can run ``tools/check-newsbugs.py``::
133
120
 
134
121
     ./tools/check-newsbugs.py NEWS
135
122
 
136
 
   (But note there will be many false positives, and this script may be
 
123
   (But note there can be some false positives, and this script may be
137
124
   flaky <https://bugs.edge.launchpad.net/bzr/+bug/354985>.  Don't let
138
125
   this slow you down too much.)
139
126
 
 
127
#. Summarize into one or two paragraphs what's new in this release.
 
128
 
140
129
#. Commit these changes to the release branch, using a command like::
141
130
 
142
131
     bzr commit -m "Release 1.14."
181
170
 
182
171
     bzr tag bzr-1.14
183
172
 
184
 
#. Push those changes to a bzr repository that is public and accessible on
 
173
#. Push those changes to a bzr reposistory that is public and accessible on
185
174
   the Internet. PQM will pull from this repository when it attempts to merge
186
175
   your changes. Then submit those changes to PQM for merge into the
187
176
   appropriate release branch::
189
178
     bzr push
190
179
     bzr pqm-submit -m "(mbp) prepare 1.14"
191
180
 
192
 
   Or with hydrazine::
193
 
 
194
 
     bzr lp-propose -m "Release 1.14" --approve lp:bzr/1.14
195
 
     feed-pqm bzr
196
 
 
197
181
#. When PQM succeeds, pull down the master release branch.
198
182
 
199
183
 
215
199
   disable the faulty plugins one by one until you get no more
216
200
   failures.
217
201
 
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
202
 
224
203
Publishing the source tarball
225
204
-----------------------------
226
205
 
227
206
#. Go to the relevant milestone page in Launchpad.
228
207
 
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>
 
208
#. Within that release, upload the source tarball and the GPG
 
209
   signature.  Or, if you prefer, use the
 
210
   ``tools/packaging/lp-upload-release`` script to do this.
236
211
 
237
212
 
238
213
Announcing the source freeze
244
219
   release.
245
220
 
246
221
 
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
222
Publishing the release
257
223
----------------------
258
224
 
261
227
we have a releasable product.  The next step is to make it generally
262
228
available to the world.
263
229
 
264
 
#. Go to the release web page at <https://launchpad.net/bzr/x.y/x.y.z>
 
230
go to the release
 
231
 
 
232
#. Within that release, upload the source tarball and zipfile and the GPG
 
233
   signature.  Or, if you prefer, use the
 
234
   ``tools/packaging/lp-upload-release`` script to do this.
265
235
 
266
236
#. Link from http://bazaar-vcs.org/SourceDownloads to the tarball and
267
237
   signature.
300
270
 
301
271
   The announce mail will look something like this::
302
272
 
303
 
      Subject: bzr x.y.z released!
 
273
      Subject: bzr x.yy released!
304
274
 
305
275
      <<Summary paragraph from news>>
306
276
 
348
318
Merging the released code back to trunk
349
319
---------------------------------------
350
320
 
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
321
Merge the release branch back into the trunk.  Check that changes in NEWS
355
322
were merged into the right sections.  If it's not already done, advance
356
323
the version number in ``bzr`` and ``bzrlib/__init__.py``.  Submit this
360
327
created the corresponding milestone to ensure the continuity in bug
361
328
targeting or nominating. Depending on the change, you may even have to
362
329
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.
 
330
that case go to `Starting a cycle` and follow the instructions from there.
364
331
 
365
332
You should also merge (not pull) the release branch into
366
333
``lp:~bzr/bzr/current``, so that branch contains the current released code
374
341
candidate, you're not finished yet. Another beta or candidate or
375
342
hopefully a final release is still to come.
376
343
 
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
 
344
The process is the same as for the first release. Goto `Starting the
 
345
release phase`_ and follow the instructions again. Some details change
379
346
between beta, candidate and final releases, but they should be
380
347
documented. If the instructions aren't clear enough, please fix them.
381
348