~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to doc/developers/releasing.txt

  • Committer: Andrew Bennetts
  • Date: 2010-01-18 07:00:11 UTC
  • mto: (4973.1.1 integration)
  • mto: This revision was merged to the branch mainline in revision 4975.
  • Revision ID: andrew.bennetts@canonical.com-20100118070011-zu374wvd0lcgai5a
Move news_merge plugin from contrib to bzrlib/plugins, change it to be enabled via a 'news_merge_files' config option, move more code out of the __init__ to minimise overhead, and add lots of docstrings, add NEWS entry.

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
 
52
58
#. Send mail to the list with the key dates, who will be the release
53
59
   manager, and the main themes or targeted bugs.  Ask people to nominate
54
60
   objectives, or point out any high-risk things that are best done early,
61
67
     bzr branch trunk prepare-1.14
62
68
 
63
69
#. 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**
 
70
   x.y is the version to release).
65
71
   ``~/.bazaar/locations.conf``::
66
72
 
67
73
        [/home/mbp/bzr/prepare-x.y]
72
78
        submit_to = bazaar@lists.canonical.com
73
79
        smtp_server = mail.example.com:25
74
80
 
75
 
    Please see <http://doc.bazaar.canonical.com/developers/HACKING.html#an-overview-of-pqm>
 
81
    Please see <http://doc.bazaar-vcs.org/developers/HACKING.html#an-overview-of-pqm>
76
82
    for more details on PQM
77
83
 
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
84
#. In the release branch, update  ``version_info`` in ``./bzrlib/__init__.py``.
104
85
   Make sure the corresponding milestone exists.
105
86
   Double check that ./bzr ``_script_version`` matches ``version_info``. Check
107
88
 
108
89
   For beta releases use::
109
90
 
110
 
       version_info = (2, 1, 0, 'beta', SERIAL)
111
 
 
112
 
   For instance 2.1b1::
113
 
 
114
91
       version_info = (2, 1, 0, 'beta', 1)
115
92
 
 
93
 
116
94
   For release candidates use::
117
95
 
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.
 
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.
133
113
 
134
114
#. To check that all bugs mentioned in ``./NEWS`` are actually marked as
135
115
   closed in Launchpad, you can run ``tools/check-newsbugs.py``::
136
116
 
137
117
     ./tools/check-newsbugs.py NEWS
138
118
 
139
 
   (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
140
120
   flaky <https://bugs.edge.launchpad.net/bzr/+bug/354985>.  Don't let
141
121
   this slow you down too much.)
142
122
 
 
123
#. Summarize into one or two paragraphs what's new in this release.
 
124
 
143
125
#. Commit these changes to the release branch, using a command like::
144
126
 
145
127
     bzr commit -m "Release 1.14."
184
166
 
185
167
     bzr tag bzr-1.14
186
168
 
187
 
#. 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
188
170
   the Internet. PQM will pull from this repository when it attempts to merge
189
171
   your changes. Then submit those changes to PQM for merge into the
190
172
   appropriate release branch::
192
174
     bzr push
193
175
     bzr pqm-submit -m "(mbp) prepare 1.14"
194
176
 
195
 
   Or with hydrazine::
196
 
 
197
 
     bzr lp-propose -m "Release 1.14" --approve lp:bzr/1.14
198
 
     feed-pqm bzr
199
 
 
200
177
#. When PQM succeeds, pull down the master release branch.
201
178
 
202
179
 
218
195
   disable the faulty plugins one by one until you get no more
219
196
   failures.
220
197
 
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
198
 
227
199
Publishing the source tarball
228
200
-----------------------------
229
201
 
230
202
#. Go to the relevant milestone page in Launchpad.
231
203
 
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>
 
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.
239
207
 
240
208
 
241
209
Announcing the source freeze
247
215
   release.
248
216
 
249
217
 
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
218
Publishing the release
260
219
----------------------
261
220
 
264
223
we have a releasable product.  The next step is to make it generally
265
224
available to the world.
266
225
 
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/>`_.
 
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.
 
231
 
 
232
#. Link from http://bazaar-vcs.org/SourceDownloads to the tarball and
 
233
   signature.
 
234
 
 
235
#. Announce on the `Bazaar website <http://bazaar-vcs.org/>`_.
270
236
   This page is edited via the lp:bzr-website branch. (Changes
271
237
   pushed to this branch are refreshed by a cron job on escudero.)
272
238
 
 
239
#. Announce on the `Bazaar wiki <http://bazaar-vcs.org/Welcome>`_.
 
240
 
273
241
#. Check that the documentation for this release is available in
274
 
   <http://doc.bazaar.canonical.com>.  It should be automatically build when the
 
242
   <http://doc.bazaar-vcs.org>.  It should be automatically build when the
275
243
   branch is created, by a cron script ``update-bzr-docs`` on
276
244
   ``escudero``. As of today (2009-08-27) ``igc`` manually updates the
277
245
   pretty version of it.
298
266
 
299
267
   The announce mail will look something like this::
300
268
 
301
 
      Subject: bzr x.y.z released!
 
269
      Subject: bzr x.yy released!
302
270
 
303
271
      <<Summary paragraph from news>>
304
272
 
310
278
      feedback.
311
279
 
312
280
      Bazaar is now available for download from
313
 
      https://launchpad.net/bzr/2.x/2.x/ as a source tarball; packages
 
281
      http://bazaar-vcs.org/Download as a source tarball; packages
314
282
      for various systems will be available soon.
315
283
 
316
284
      <<NEWS section from this release back to the last major release>>
346
314
Merging the released code back to trunk
347
315
---------------------------------------
348
316
 
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
317
Merge the release branch back into the trunk.  Check that changes in NEWS
353
318
were merged into the right sections.  If it's not already done, advance
354
319
the version number in ``bzr`` and ``bzrlib/__init__.py``.  Submit this
358
323
created the corresponding milestone to ensure the continuity in bug
359
324
targeting or nominating. Depending on the change, you may even have to
360
325
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.
 
326
that case go to `Starting a cycle` and follow the instructions from there.
362
327
 
363
328
You should also merge (not pull) the release branch into
364
329
``lp:~bzr/bzr/current``, so that branch contains the current released code
372
337
candidate, you're not finished yet. Another beta or candidate or
373
338
hopefully a final release is still to come.
374
339
 
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
 
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
377
342
between beta, candidate and final releases, but they should be
378
343
documented. If the instructions aren't clear enough, please fix them.
379
344