/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
 
#. Update the "What's New" documents in ``doc/en/whats-new``.
89
 
 
90
 
#. Commit this and send it to PQM.
91
 
 
92
 
 
93
 
Doing a particular release
94
 
==========================
95
 
 
96
 
Update the source code
97
 
----------------------
98
 
 
99
 
#. Check that there is a milestone for the release you're doing. If there
100
 
   is no milestone it indicates a process problem - make the milestone but
101
 
   also mail the list to raise this issue in our process. Milestones are
102
 
   found at <https://launchpad.net/bzr/+milestone/x.y.z>.
103
 
 
104
88
#. In the release branch, update  ``version_info`` in ``./bzrlib/__init__.py``.
105
89
   Make sure the corresponding milestone exists.
106
90
   Double check that ./bzr ``_script_version`` matches ``version_info``. Check
108
92
 
109
93
   For beta releases use::
110
94
 
111
 
       version_info = (2, 1, 0, 'beta', SERIAL)
112
 
 
113
 
   For instance 2.1b1::
114
 
 
115
95
       version_info = (2, 1, 0, 'beta', 1)
116
96
 
 
97
 
117
98
   For release candidates use::
118
99
 
119
 
       version_info = (2, 0, 1, 'candidate', SERIAL)
120
 
 
121
 
   For stable releases use::
122
 
 
123
 
       version_info = (2, 1, 2, 'final', 0)
124
 
 
125
 
#. Update the ``./NEWS`` section for this release.
126
 
 
127
 
   Fill out the date and a description of the release under the existing
128
 
   header. If there isn't one, follow the above for using the NEWS
129
 
   template.
130
 
 
131
 
   See *2.1.1* or similar for an example of what this looks like.
132
 
 
133
 
#. Add a summary of the release into the "What's New" document.
 
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.
134
117
 
135
118
#. To check that all bugs mentioned in ``./NEWS`` are actually marked as
136
119
   closed in Launchpad, you can run ``tools/check-newsbugs.py``::
137
120
 
138
121
     ./tools/check-newsbugs.py NEWS
139
122
 
140
 
   (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
141
124
   flaky <https://bugs.edge.launchpad.net/bzr/+bug/354985>.  Don't let
142
125
   this slow you down too much.)
143
126
 
 
127
#. Summarize into one or two paragraphs what's new in this release.
 
128
 
144
129
#. Commit these changes to the release branch, using a command like::
145
130
 
146
131
     bzr commit -m "Release 1.14."
185
170
 
186
171
     bzr tag bzr-1.14
187
172
 
188
 
#. 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
189
174
   the Internet. PQM will pull from this repository when it attempts to merge
190
175
   your changes. Then submit those changes to PQM for merge into the
191
176
   appropriate release branch::
193
178
     bzr push
194
179
     bzr pqm-submit -m "(mbp) prepare 1.14"
195
180
 
196
 
   Or with hydrazine::
197
 
 
198
 
     bzr lp-propose -m "Release 1.14" --approve lp:bzr/1.14
199
 
     feed-pqm bzr
200
 
 
201
181
#. When PQM succeeds, pull down the master release branch.
202
182
 
203
183
 
219
199
   disable the faulty plugins one by one until you get no more
220
200
   failures.
221
201
 
222
 
   Remember that PQM has just tested everything too, this step is
223
 
   particularly testing that the pyrex extensions, which are updated
224
 
   by your local pyrex version when you run make dist, are in good
225
 
   shape.
226
 
 
227
202
 
228
203
Publishing the source tarball
229
204
-----------------------------
230
205
 
231
206
#. Go to the relevant milestone page in Launchpad.
232
207
 
233
 
#. Create a release of the milestone, and upload the source tarball and
234
 
   the GPG signature.  Or, if you prefer, use the
235
 
   ``tools/packaging/lp-upload-release`` script to do this. Note that
236
 
   this changes what the download widget on the Launchpad bzr home
237
 
   page shows, so don't stop the release process yet, or platform binary
238
 
   installers won't be made and the download list will stay very small!
239
 
   <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.
240
211
 
241
212
 
242
213
Announcing the source freeze
248
219
   release.
249
220
 
250
221
 
251
 
Kick off the next cycle
252
 
-----------------------
253
 
 
254
 
#. To let developers work on the next release, do
255
 
   `At the start of a release cycle` now.
256
 
 
257
 
#. Pause for a few days.
258
 
 
259
 
 
260
222
Publishing the release
261
223
----------------------
262
224
 
265
227
we have a releasable product.  The next step is to make it generally
266
228
available to the world.
267
229
 
268
 
#. 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.
269
235
 
270
236
#. Link from http://bazaar-vcs.org/SourceDownloads to the tarball and
271
237
   signature.
304
270
 
305
271
   The announce mail will look something like this::
306
272
 
307
 
      Subject: bzr x.y.z released!
 
273
      Subject: bzr x.yy released!
308
274
 
309
275
      <<Summary paragraph from news>>
310
276
 
352
318
Merging the released code back to trunk
353
319
---------------------------------------
354
320
 
355
 
The rule is to keep ``NEWS`` sections sorted by date. You'll need to
356
 
review the merge and make sure that that is respected.
357
 
 
358
321
Merge the release branch back into the trunk.  Check that changes in NEWS
359
322
were merged into the right sections.  If it's not already done, advance
360
323
the version number in ``bzr`` and ``bzrlib/__init__.py``.  Submit this
364
327
created the corresponding milestone to ensure the continuity in bug
365
328
targeting or nominating. Depending on the change, you may even have to
366
329
create a new series (if your change the major or minor release number), in
367
 
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.
368
331
 
369
332
You should also merge (not pull) the release branch into
370
333
``lp:~bzr/bzr/current``, so that branch contains the current released code
378
341
candidate, you're not finished yet. Another beta or candidate or
379
342
hopefully a final release is still to come.
380
343
 
381
 
The process is the same as for the first release. Goto `Doing a
382
 
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
383
346
between beta, candidate and final releases, but they should be
384
347
documented. If the instructions aren't clear enough, please fix them.
385
348