~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to doc/developers/releasing.txt

  • Committer: Martin Pool
  • Date: 2010-04-21 11:27:04 UTC
  • mto: This revision was merged to the branch mainline in revision 5189.
  • Revision ID: mbp@canonical.com-20100421112704-zijso22b6pdevrxy
Simplify various code to use user_url

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
6
 
`overall development cycle <http://doc.bazaar.canonical.com/developers/cycle.html>`_,
7
 
but it's the most complex part.  This document gives a checklist you can
8
 
follow from start to end in one go.
 
6
`overall development cycle <http://doc.bazaar-vcs.org/developers/cycle.html>`_,
 
7
but it's the most complex part.
 
8
This document gives a checklist you can follow from start to end in one
 
9
go.
9
10
 
10
11
If you're helping the Release Manager (RM) for one reason or another, you
11
12
may notice that he didn't follow that document scrupulously. He may have
18
19
 
19
20
 
20
21
Preconditions
21
 
=============
 
22
-------------
22
23
 
23
24
#. Download the pqm plugin and install it into your ``~/.bazaar/plugins``::
24
25
 
25
26
     bzr branch lp:bzr-pqm ~/.bazaar/plugins/pqm
26
27
 
27
28
 
28
 
At the start of a release cycle
29
 
===============================
 
29
Starting a cycle
 
30
----------------
30
31
 
31
32
To start a new release cycle:
32
33
 
33
 
#. If this is the first release for a given *x.y* then create a new
34
 
   series at <https://launchpad.net/bzr/+addseries>. There is one series
35
 
   for every *x.y* release.
36
 
 
37
 
#. If you made a new series, create a new pqm-controlled branch for this
38
 
   release series, by asking a Canonical sysadmin.  This branch means that
39
 
   from the first release beta or candidate onwards, general development
40
 
   continues on the trunk, and only specifically-targeted fixes go into
41
 
   the release branch.
42
 
 
43
 
#. If you made a new series, add milestones at
44
 
   <https://edge.launchpad.net/bzr/x.y/+addmilestone> to that series for
45
 
   the beta release, release candidate and the final release, and their
46
 
   expected dates.
47
 
 
48
 
#. Create a new milestone <https://edge.launchpad.net/bzr/x.y/+addmilestone>
49
 
   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
50
42
   will be available for targeting or nominating bugs.
51
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
 
52
62
#. Send mail to the list with the key dates, who will be the release
53
63
   manager, and the main themes or targeted bugs.  Ask people to nominate
54
64
   objectives, or point out any high-risk things that are best done early,
61
71
     bzr branch trunk prepare-1.14
62
72
 
63
73
#. Configure pqm-submit for this branch, with a section like this (where
64
 
   x.y is the version to release). **Or use hydrazine for easy use**
 
74
   x.y is the version to release).
65
75
   ``~/.bazaar/locations.conf``::
66
76
 
67
77
        [/home/mbp/bzr/prepare-x.y]
72
82
        submit_to = bazaar@lists.canonical.com
73
83
        smtp_server = mail.example.com:25
74
84
 
75
 
    Please see <http://doc.bazaar.canonical.com/developers/HACKING.html#an-overview-of-pqm>
 
85
    Please see <http://doc.bazaar-vcs.org/developers/HACKING.html#an-overview-of-pqm>
76
86
    for more details on PQM
77
87
 
78
 
#. Update the version number in the ``bzr`` script, and the
79
 
   ``bzrlib/__init__.py`` file::
80
 
   
81
 
       version_info = (x, y, z, 'dev', 0)
82
 
   
83
 
#. Add a new section at the top of ``NEWS`` about the new release,
84
 
   including its version number and the headings from
85
 
   ``NEWS-template.txt``.
86
 
 
87
 
#. Update the "What's New" documents in ``doc/en/whats-new``.
88
 
 
89
 
#. Commit this and send it to PQM.
90
 
 
91
 
 
92
 
Doing a particular release
93
 
==========================
94
 
 
95
 
Update the source code
96
 
----------------------
97
 
 
98
 
#. Check that there is a milestone for the release you're doing. If there
99
 
   is no milestone it indicates a process problem - make the milestone but
100
 
   also mail the list to raise this issue in our process. Milestones are
101
 
   found at <https://launchpad.net/bzr/+milestone/x.y.z>.
102
 
 
103
88
#. In the release branch, update  ``version_info`` in ``./bzrlib/__init__.py``.
104
89
   Make sure the corresponding milestone exists.
105
90
   Double check that ./bzr ``_script_version`` matches ``version_info``. Check
107
92
 
108
93
   For beta releases use::
109
94
 
110
 
       version_info = (2, 1, 0, 'beta', SERIAL)
111
 
 
112
 
   For instance 2.1b1::
113
 
 
114
95
       version_info = (2, 1, 0, 'beta', 1)
115
96
 
 
97
 
116
98
   For release candidates use::
117
99
 
118
 
       version_info = (2, 0, 1, 'candidate', SERIAL)
119
 
 
120
 
   For stable releases use::
121
 
 
122
 
       version_info = (2, 1, 2, 'final', 0)
123
 
 
124
 
#. Update the ``./NEWS`` section for this release.
125
 
 
126
 
   Fill out the date and a description of the release under the existing
127
 
   header. If there isn't one, follow the above for using the NEWS
128
 
   template.
129
 
 
130
 
   See *2.1.1* or similar for an example of what this looks like.
131
 
 
132
 
#. 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.
133
117
 
134
118
#. To check that all bugs mentioned in ``./NEWS`` are actually marked as
135
119
   closed in Launchpad, you can run ``tools/check-newsbugs.py``::
136
120
 
137
121
     ./tools/check-newsbugs.py NEWS
138
122
 
139
 
   (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
140
124
   flaky <https://bugs.edge.launchpad.net/bzr/+bug/354985>.  Don't let
141
125
   this slow you down too much.)
142
126
 
 
127
#. Summarize into one or two paragraphs what's new in this release.
 
128
 
143
129
#. Commit these changes to the release branch, using a command like::
144
130
 
145
131
     bzr commit -m "Release 1.14."
184
170
 
185
171
     bzr tag bzr-1.14
186
172
 
187
 
#. 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
188
174
   the Internet. PQM will pull from this repository when it attempts to merge
189
175
   your changes. Then submit those changes to PQM for merge into the
190
176
   appropriate release branch::
192
178
     bzr push
193
179
     bzr pqm-submit -m "(mbp) prepare 1.14"
194
180
 
195
 
   Or with hydrazine::
196
 
 
197
 
     bzr lp-propose -m "Release 1.14" --approve lp:bzr/1.14
198
 
     feed-pqm bzr
199
 
 
200
181
#. When PQM succeeds, pull down the master release branch.
201
182
 
202
183
 
218
199
   disable the faulty plugins one by one until you get no more
219
200
   failures.
220
201
 
221
 
   Remember that PQM has just tested everything too, this step is
222
 
   particularly testing that the pyrex extensions, which are updated
223
 
   by your local pyrex version when you run make dist, are in good
224
 
   shape.
225
 
 
226
202
 
227
203
Publishing the source tarball
228
204
-----------------------------
229
205
 
230
206
#. Go to the relevant milestone page in Launchpad.
231
207
 
232
 
#. Create a release of the milestone, and upload the source tarball and
233
 
   the GPG signature.  Or, if you prefer, use the
234
 
   ``tools/packaging/lp-upload-release`` script to do this. Note that
235
 
   this changes what the download widget on the Launchpad bzr home
236
 
   page shows, so don't stop the release process yet, or platform binary
237
 
   installers won't be made and the download list will stay very small!
238
 
   <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.
239
211
 
240
212
 
241
213
Announcing the source freeze
247
219
   release.
248
220
 
249
221
 
250
 
Kick off the next cycle
251
 
-----------------------
252
 
 
253
 
#. To let developers work on the next release, do
254
 
   `At the start of a release cycle` now.
255
 
 
256
 
#. Pause for a few days.
257
 
 
258
 
 
259
222
Publishing the release
260
223
----------------------
261
224
 
264
227
we have a releasable product.  The next step is to make it generally
265
228
available to the world.
266
229
 
267
 
#. Go to the release web page at <https://launchpad.net/bzr/x.y/x.y.z>
268
 
 
269
 
#. Announce on the `Bazaar website <http://bazaar.canonical.com/>`_.
 
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.
 
235
 
 
236
#. Link from http://bazaar-vcs.org/SourceDownloads to the tarball and
 
237
   signature.
 
238
 
 
239
#. Announce on the `Bazaar website <http://bazaar-vcs.org/>`_.
270
240
   This page is edited via the lp:bzr-website branch. (Changes
271
241
   pushed to this branch are refreshed by a cron job on escudero.)
272
242
 
 
243
#. Announce on the `Bazaar wiki <http://bazaar-vcs.org/Welcome>`_.
 
244
 
273
245
#. Check that the documentation for this release is available in
274
 
   <http://doc.bazaar.canonical.com>.  It should be automatically build when the
 
246
   <http://doc.bazaar-vcs.org>.  It should be automatically build when the
275
247
   branch is created, by a cron script ``update-bzr-docs`` on
276
248
   ``escudero``. As of today (2009-08-27) ``igc`` manually updates the
277
249
   pretty version of it.
298
270
 
299
271
   The announce mail will look something like this::
300
272
 
301
 
      Subject: bzr x.y.z released!
 
273
      Subject: bzr x.yy released!
302
274
 
303
275
      <<Summary paragraph from news>>
304
276
 
310
282
      feedback.
311
283
 
312
284
      Bazaar is now available for download from
313
 
      https://launchpad.net/bzr/2.x/2.x/ as a source tarball; packages
 
285
      http://bazaar-vcs.org/Download as a source tarball; packages
314
286
      for various systems will be available soon.
315
287
 
316
288
      <<NEWS section from this release back to the last major release>>
346
318
Merging the released code back to trunk
347
319
---------------------------------------
348
320
 
349
 
The rule is to keep ``NEWS`` sections sorted by date. You'll need to
350
 
review the merge and make sure that that is respected.
351
 
 
352
321
Merge the release branch back into the trunk.  Check that changes in NEWS
353
322
were merged into the right sections.  If it's not already done, advance
354
323
the version number in ``bzr`` and ``bzrlib/__init__.py``.  Submit this
358
327
created the corresponding milestone to ensure the continuity in bug
359
328
targeting or nominating. Depending on the change, you may even have to
360
329
create a new series (if your change the major or minor release number), in
361
 
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.
362
331
 
363
332
You should also merge (not pull) the release branch into
364
333
``lp:~bzr/bzr/current``, so that branch contains the current released code
372
341
candidate, you're not finished yet. Another beta or candidate or
373
342
hopefully a final release is still to come.
374
343
 
375
 
The process is the same as for the first release. Goto `Doing a
376
 
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
377
346
between beta, candidate and final releases, but they should be
378
347
documented. If the instructions aren't clear enough, please fix them.
379
348