/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: Breezy landing bot
  • Author(s): Colin Watson
  • Date: 2020-11-16 21:47:08 UTC
  • mfrom: (7521.1.1 remove-lp-workaround)
  • Revision ID: breezy.the.bot@gmail.com-20201116214708-jos209mgxi41oy15
Remove breezy.git workaround for bazaar.launchpad.net.

Merged from https://code.launchpad.net/~cjwatson/brz/remove-lp-workaround/+merge/393710

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
Releasing Bazaar
 
1
Releasing Breezy
2
2
################
3
3
 
4
 
This document describes the processes for making and announcing a Bazaar
 
4
This document describes the processes for making and announcing a Breezy
5
5
release, and managing the release process.  This is just one phase of the
6
6
`overall development cycle
7
 
<http://doc.bazaar.canonical.com/developers/cycle.html>`_, (go re-read this
 
7
<https://www.breezy-vcs.org/developers/cycle.html>`_, (go re-read this
8
8
document to ensure it hasn't been updated since you last read it) but it's
9
9
the most complex part.
10
10
 
23
23
Preconditions
24
24
=============
25
25
 
26
 
#. PQM access rights (or you won't be able to land any change)
27
 
 
28
 
#. Download the pqm plugin and install it into your ``~/.bazaar/plugins``::
29
 
 
30
 
     bzr branch lp:bzr-pqm ~/.bazaar/plugins/pqm
31
 
 
32
 
#. Alternatively, you can download and install ``lp:hydrazine`` (the main
33
 
   difference is that hydrazine requires the branch to land to be hosted on
34
 
   launchpad).
 
26
#. Be a member of https://launchpad.net/~brz (or you won't be able to land
 
27
   any change)
35
28
 
36
29
What do we release
37
30
==================
39
32
In this document, we're talking about source releases only, packages and
40
33
installers are built from this but we won't talk about them here.
41
34
 
42
 
Every release is part of a series, ``bzr-2.4.1`` is part of series ``2.4``.
 
35
Every release is part of a series, ``brz-3.0.0`` is part of series ``3.0``.
43
36
 
44
37
We do two different kind of releases: the betas releases and the stable
45
38
releases for a given series.
46
39
 
47
 
For a given series, releases will be done to deliver new versions of bzr to
 
40
For a given series, releases will be done to deliver new versions of brz to
48
41
different kinds of users:
49
42
 
50
43
#. beta releases: named ``x.ybn`` where ``x.y`` is the series and ``n``
60
53
Differences in the release process between beta and stable release will be
61
54
mentioned when needed.
62
55
 
63
 
When do we relase ?
64
 
===================
65
 
 
66
 
As of July 2011, we maintain four series (and one that is about to be EOLed).
67
 
Concurrently releasing them all at the same time makes it harder to shorten
68
 
the delay between the source availability and the package building longer
69
 
than necessary (we delay the official announcement until most of our users
70
 
can install the new release).
71
 
 
72
 
In order to continue to do time-based releases, we need to plan the
73
 
releases by series to minimize the collisions. In the end, it's the Release
74
 
Manager call to decide whether he prefers to do all releases at once
75
 
though, so the rules presented here are a conservative approach.
76
 
 
77
 
We want to respect the following rules:
 
56
When do we release ?
 
57
====================
 
58
 
 
59
As of May 2020, we maintain a two series: 3.1 and trunk (3.2).
78
60
 
79
61
#. as much as possible releases should not disturb development, and
80
62
   ongoing development should not disturb releases,
103
85
   Release Manager is free to ignore this (get in touch with packagers
104
86
   though),
105
87
 
106
 
#. the series are aligned with Ubuntu releases for convenience since we
107
 
   create a new series every 6 months. This means that we support the
108
 
   stable series for 18 months. Note that we also propose the most recent
109
 
   stable series via the stable PPA but that the SRU processs allow us to
110
 
   reach a wider audience.
111
 
 
112
88
At the start of a series cycle
113
89
==============================
114
90
 
115
91
To start a new series cycle:
116
92
 
117
 
#. Create a new series ``x.y`` at <https://launchpad.net/bzr/+addseries>.
 
93
#. Create a new series ``x.y`` at <https://launchpad.net/brz/+addseries>.
118
94
 
119
 
#. Add milestones at <https://launchpad.net/bzr/x.y/+addmilestone> to that
 
95
#. Add milestones at <https://launchpad.net/brz/x.y/+addmilestone> to that
120
96
   series for the beta releases and the stable series mentioning their
121
97
   expected dates. Only the milestone associated to the next release in
122
98
   this series should be left active to avoid clutter when targeting bugs.
123
99
 
124
 
#. If you made a new series, you will need to create a new pqm-controlled
125
 
   branch for this release series. This branch will be used only from the
126
 
   first non-beta release onwards. It needs to be created by a Canonical
127
 
   sysadmin (ask the core devs for instructions or to do it for you).
 
100
#. If you made a new series, you will need to create a new branch for this
 
101
   release series. This branch will be used only from the first non-beta
 
102
   release onwards. It needs to be created by a https://launchpad.net/~brz
 
103
   member (ask the core devs for instructions or to do it for you).
128
104
 
129
105
#. Start a new release-notes file::
130
106
 
131
107
       cd doc/en/release-notes
132
 
       cp series-template.txt bzr-x.y.txt  # e.g. bzr-2.3.txt
133
 
       bzr add bzr-x.y.txt
 
108
       brz cp series-template.txt brz-x.y.txt  # e.g. brz-3.1.txt
134
109
 
135
110
#. Start a new whats-new file::
136
111
 
137
112
       cd doc/en/whats-new
138
 
       cp template.txt bzr-x.y.txt  # e.g. bzr-2.6.txt
139
 
       bzr add bzr-x.y.txt
 
113
       brz cp template.txt brz-x.y.txt  # e.g. brz-3.1.txt
140
114
 
141
115
#. Update ``doc/en/index.txt`` to point to the new whats-new file.
142
116
 
153
127
 
154
128
#. Make a local branch to prepare the release::
155
129
 
156
 
        bzr branch lp:bzr/x.y x.y-dev
 
130
       brz branch lp:brz/x.y x.y-dev
157
131
 
158
132
   If you're doing your first beta release, branch from trunk::
159
133
 
160
 
       bzr branch lp:bzr x.y-dev
 
134
       brz branch lp:brz x.y-dev
161
135
 
162
136
   Note that you will generally reuse the same branch for all releases in a
163
137
   given series.
164
138
 
165
 
#. Configure pqm-submit for this branch, with a section like this (where
166
 
   ``x.y`` is the series for your release). **Or use hydrazine for easier
167
 
   setup** ``~/.bazaar/locations.conf``::
168
 
 
169
 
        [/home/mbp/bzr/x.y-dev]
170
 
        pqm_email = Canonical PQM <pqm@bazaar-vcs.org>
171
 
        submit_branch = http://bazaar.launchpad.net/~bzr-pqm/bzr/x.y
172
 
        parent_branch = http://bazaar.launchpad.net/~bzr-pqm/bzr/x.y
173
 
        public_branch = http://bazaar.example.com/x.y-dev
174
 
        submit_to = bazaar@lists.canonical.com
175
 
        smtp_server = mail.example.com:25
176
 
 
177
 
    Please see <http://doc.bazaar.canonical.com/developers/HACKING.html#an-overview-of-pqm>
178
 
    for more details on PQM
179
 
 
180
 
#. Update the version number in the ``bzr`` script, and the
181
 
   ``bzrlib/__init__.py`` file::
 
139
#. Add a landing job for the release branch at https://ci.breezy-vcs.org/
 
140
 
 
141
#. Update the version number in the ``brz`` script, and the
 
142
   ``breezy/__init__.py`` file::
182
143
   
183
144
       version_info = (x, y, z, 'dev', 0)
184
145
   
189
150
#. Update the "What's New" documents in ``doc/en/whats-new``.
190
151
 
191
152
#. Make sure a milestone exists for your release and that it is active,
192
 
   <https://launchpad.net/bzr/x.y> lists the existing milestones,
193
 
   <https://launchpad.net/bzr/x.y/x.y.z/+edit> allows you to toggle the
 
153
   <https://launchpad.net/brz/x.y> lists the existing milestones,
 
154
   <https://launchpad.net/brz/x.y/x.y.z/+edit> allows you to toggle the
194
155
   active flag.
195
156
 
196
 
#. Commit this and send it to PQM.
 
157
#. Commit this and make a proposal against the release branch. Self approve
 
158
   it (you're the release manager).
197
159
 
198
160
 
199
161
Doing a particular release
200
162
==========================
201
163
 
 
164
alpha releases
 
165
--------------
 
166
 
 
167
3.0.0 will start to be released as alpha as integrating plugins and porting
 
168
to python3 (while maintaining python2 compatiblity) desserve to be testing
 
169
in the wild by people understanding the risks.
 
170
 
 
171
That being said, the whole test suite has been preserved and enriched in the
 
172
process.
 
173
 
 
174
Alpha releases will happen as source only (tarballs) and the process is
 
175
simplified.
 
176
 
 
177
Note that the intent is to come back to beta releases as soon as possible so
 
178
the alpha releases won't happen again.
 
179
 
 
180
The process for releasing an alpha release is therefore:
 
181
- upload a tarball to launchpad,
 
182
- upload a tarball to pypi,
 
183
- mail bazaar@lists.ubuntu.com,breezy-vcs@googlegroups.com
 
184
- post an announcement on the home page.
 
185
 
 
186
Uploading tarballs are described below, just use alpha versions (3, 0, 0,
 
187
'alpha', 1) in ``./breezy/__init__.py``
 
188
 
202
189
Update the source code
203
190
----------------------
204
191
 
205
192
#. Check that there is a milestone for the release you're doing. If there
206
193
   is no milestone it indicates a process problem - make the milestone but
207
194
   also mail the list to raise this issue in our process. Milestones are
208
 
   found at <https://launchpad.net/bzr/+milestone/x.y.z>.
 
195
   found at <https://launchpad.net/brz/+milestone/x.y.z>.
209
196
 
210
197
#. Merge into your branch all previous stable series fixes that haven't been
211
 
   merged yet. For example, if you're releasing 2.6.x, make sure the fixes
212
 
   on 2.5, 2.4, 2.3, etc have already been merged up::
 
198
   merged yet. For example, if you're releasing 3.2.x, make sure the fixes
 
199
   on 3.1, 3.0 have already been merged up::
213
200
 
214
 
     bzr merge lp:bzr/2.4
 
201
     brz merge lp:brz/3.1
215
202
 
216
203
   and commit that merge in its own commit. This should happen only if the
217
204
   devs landing changes in previous releases forgot to merge them up. Since
218
205
   this can slow down the freeze, feel free to gently remind them about
219
206
   their duties ;) If you feel unsafe resolving the conflicts or it's too
220
207
   time consuming, contact the related devs and skip this merge.
221
 
 
222
 
#. In the release branch, update  ``version_info`` in ``./bzrlib/__init__.py``.
 
208
     
 
209
   Alternatively, think about automating these merges.
 
210
    
 
211
#. In the release branch, update  ``version_info`` in ``./breezy/__init__.py``.
223
212
   Make sure the corresponding milestone exists.
224
 
   Double check that ./bzr ``_script_version`` matches ``version_info``. Check
225
 
   the output of ``./bzr --version``.
 
213
   Double check that ./brz ``_script_version`` matches ``version_info``. Check
 
214
   the output of ``./brz --version``.
226
215
 
227
216
   For beta releases use::
228
217
 
229
 
       version_info = (2, 6, 0, 'beta', SERIAL)
230
 
 
231
 
   For instance 2.6b1::
232
 
 
233
 
       version_info = (2, 6, 0, 'beta', 1)
 
218
       version_info = (3, 0, 0, 'beta', SERIAL)
 
219
 
 
220
   For instance 3.0b1::
 
221
 
 
222
       version_info = (3, 0, 0, 'beta', 1)
234
223
 
235
224
   For stable releases use::
236
225
 
237
 
       version_info = (2, 6, 0, 'final', 0)
 
226
       version_info = (3, 0, 0, 'final', 0)
238
227
 
239
228
#. Update the ``./doc/en/release-notes/`` section for this release.
240
229
 
241
230
   Check that all news entries related to this release have been added in
242
 
   the right section. For example, if you're releasing 2.6b2, the following
243
 
   command should display a a single chuk diff for the 2.6b2 release::
 
231
   the right section. For example, if you're releasing 3.0b3, the following
 
232
   command should display a a single chuk diff for the 3.0b3 release::
244
233
 
245
 
     bzr diff -rbzr-2.6b2.. doc/en/release-notes/bzr-2.6.txt
 
234
     brz diff -rbrz-3.0b2.. doc/en/release-notes/brz-3.0.txt
246
235
 
247
236
   Fill out the date and a description of the release under the existing
248
237
   header (the diff above will help you summarizing). If there isn't one,
249
238
   follow the instructions above for using the ``release-template.txt`` file
250
239
   and remind people that they should document their changes there ;)
251
240
 
252
 
   See *2.6b1* or similar for an example of what this looks like.
 
241
   See *3.0b1* or similar for an example of what this looks like.
253
242
 
254
243
#. Add or check the summary of the release into the "What's New" document.
255
244
 
259
248
  * the date of this first release,
260
249
  * until when the series is expected to be supported.
261
250
 
262
 
  Looking at ``bzr annotate`` for previous series should give you the right
 
251
  Looking at ``brz annotate`` for previous series should give you the right
263
252
  hints. The ``doc/en/_templates/index.html`` file should also be updated.
264
253
 
265
254
#. To check that all bugs mentioned in the release notes are actually
266
255
   marked as closed in Launchpad, you can run
267
256
   ``tools/check-newsbugs.py``::
268
257
 
269
 
     ./tools/check-newsbugs.py doc/en/release-notes/bzr-x.y.txt
 
258
     ./tools/check-newsbugs.py doc/en/release-notes/brz-x.y.txt
270
259
 
271
260
   As of 2011-07-18, all bugs mentioned in the output of the script requires
272
261
   some sort of intervention (either changing the status if it's not 'Fix
278
267
 
279
268
#. For beta releases update the translation template::
280
269
 
281
 
     BZR_PLUGIN_PATH=-site make po/bzr.pot
 
270
     BRZ_PLUGIN_PATH=-site make po/brz.pot
282
271
 
283
272
   This is especially important for the final beta release which is when
284
273
   translations are frozen and translators are requested (see `The final
286
275
 
287
276
#. For stable releases update the translations::
288
277
 
289
 
     bzr merge lp:~bzr-core/bzr/bzr-translations-export-x.y
 
278
     brz merge lp:~brz-core/brz/brz-translations-export-x.y
290
279
 
291
280
#. Commit these changes to the release branch, using a command like::
292
281
 
293
 
     bzr commit -m "Release 2.3.1"
 
282
     brz commit -m "Release 3.0.0"
294
283
 
295
284
   The diff before you commit will be something like::
296
285
 
297
 
      === modified file 'bzrlib/__init__.py'
298
 
      --- bzrlib/__init__.py    2011-02-09 06:35:00 +0000
299
 
      +++ bzrlib/__init__.py    2011-03-10 10:24:47 +0000
 
286
      === modified file 'breezy/__init__.py'
 
287
      --- breezy/__init__.py    2011-02-09 06:35:00 +0000
 
288
      +++ breezy/__init__.py    2011-03-10 10:24:47 +0000
300
289
      @@ -52,7 +52,7 @@
301
290
       # Python version 2.0 is (2, 0, 0, 'final', 0)."  Additionally we use a
302
291
       # releaselevel of 'dev' for unreleased under-development code.
307
296
       # API compatibility version
308
297
       api_minimum_version = (2, 3, 0)
309
298
      
310
 
      === modified file 'doc/en/release-notes/bzr-2.3.txt'
311
 
      --- doc/en/release-notes/bzr-2.3.txt      2011-03-09 08:30:16 +0000
312
 
      +++ doc/en/release-notes/bzr-2.3.txt      2011-03-10 10:40:47 +0000
 
299
      === modified file 'doc/en/release-notes/brz-2.3.txt'
 
300
      --- doc/en/release-notes/brz-2.3.txt      2011-03-09 08:30:16 +0000
 
301
      +++ doc/en/release-notes/brz-2.3.txt      2011-03-10 10:40:47 +0000
313
302
      @@ -8,23 +8,10 @@
314
 
       bzr 2.3.1
 
303
       brz 2.3.1
315
304
       #########
316
305
       
317
306
      -:2.3.1: NOT RELEASED YET
319
308
      -External Compatibility Breaks
320
309
      -*****************************
321
310
      -
322
 
      -.. These may require users to change the way they use Bazaar.
 
311
      -.. These may require users to change the way they use Breezy.
323
312
      -
324
313
      -New Features
325
314
      -************
344
333
      +++ doc/en/whats-new/whats-new-in-2.3.txt 2011-03-10 11:10:36 +0000
345
334
      @@ -17,8 +17,13 @@
346
335
       improvements made to the core product, it highlights enhancements within the
347
 
       broader Bazaar world of potential interest to those upgrading.
 
336
       broader Breezy world of potential interest to those upgrading.
348
337
       
349
 
      -Bazaar 2.3.0 is fully compatible both locally and on the network with 2.0 2.1,
 
338
      -Breezy 2.3.0 is fully compatible both locally and on the network with 2.0 2.1,
350
339
      -and 2.2, and can read and write repositories generated by all previous
351
 
      +Bazaar 2.3.1 includes all the fixes in the un-released 2.0.7, 2.1.4 and 2.2.5
 
340
      +Breezy 2.3.1 includes all the fixes in the un-released 2.0.7, 2.1.4 and 2.2.5
352
341
      +versions that weren't included in 2.3.0 and fixes some bugs on its own.
353
342
      +
354
343
      +See the :doc:`../release-notes/index` for details.
355
344
      +
356
 
      +Bazaar 2.3 is fully compatible both locally and on the network with 2.0, 2.1,
 
345
      +Breezy 2.3 is fully compatible both locally and on the network with 2.0, 2.1,
357
346
      +and 2.2. It can read and write repositories generated by all previous
358
347
       versions.
359
348
       
362
351
 
363
352
#. Tag the new release::
364
353
 
365
 
     bzr tag bzr-2.6.0
366
 
 
367
 
#. Push those changes to a bzr branch that is public and accessible on the
368
 
   Internet. PQM will pull from this branch when it attempts to merge your
369
 
   changes. Then submit those changes to PQM for merge into the appropriate
370
 
   release branch::
371
 
 
372
 
     bzr push
373
 
     bzr pqm-submit -m "(vila) Release 2.6.0 (Vincent Ladeuil)"
374
 
 
375
 
   Note that ``bzr push`` should mention updating one tag (which you just
 
354
     brz tag brz-3.0.0
 
355
 
 
356
#. Push those changes to a brz branch and make a merge proposal::
 
357
 
 
358
     brz push
 
359
 
 
360
   Use a commit message formatted like::
 
361
  
 
362
     Release 3.0.0
 
363
 
 
364
   Note that ``brz push`` should mention updating one tag (which you just
376
365
   created). If it doesn't, double-check that you created (and pushed) this
377
366
   tag.
378
367
 
379
 
   Or with hydrazine::
380
 
 
381
 
     bzr lp-propose -m "Release 1.14" --approve lp:bzr/1.14
382
 
     feed-pqm bzr
383
 
 
384
 
#. When PQM succeeds, pull down the master release branch.
 
368
#. Once the merge proposal has landed, pull down the master release branch.
385
369
 
386
370
 
387
371
Making the source tarball
400
384
   locally installed plugins. Use your own judgment to decide if you can
401
385
   release with these failures. When in doubt, disable the faulty plugins
402
386
   one by one until you get no more failures. Alternatively, you can use
403
 
   ``BZR_DISABLE_PLUGINS`` or ``BZR_PLUGIN_PATH=-site`` to disable one or
 
387
   ``BRZ_DISABLE_PLUGINS`` or ``BRZ_PLUGIN_PATH=-site`` to disable one or
404
388
   all plugins.
405
389
 
406
 
   Until <http://pad.lv/839461> is fixed, you may encounter issues if you
407
 
   cut a release for old stable branches (<= 2.2) and use a more recent
408
 
   OS/distro. If that's the case, check the bug status and use the following
409
 
   workaround if no fix is available::
410
 
 
411
 
     export TTPATH=<local branch of lp:testtools -r 0.9.2>
412
 
     export SUPATH=<local branch of lp:subunit -r 0.0.6>
413
 
     PYTHONPATH=$TTPATH:$SUPATH/python PATH=$SUPATH/filters:${PATH} BZR_PLUGIN_PATH=-site make check-dist-tarball PYTHON=python2.6 | subunit2pyunit
414
 
 
415
 
   Remember that PQM has just tested everything too, this step is
416
 
   particularly testing that the pyrex extensions, which are updated
417
 
   by your local pyrex version when you run make dist, are in good
418
 
   shape.
 
390
   Remember that this branch has already been tested on
 
391
   https://ci.breezy-vcs.org, this step is particularly testing that the
 
392
   cython extensions, which are updated by your local cython version when
 
393
   you run make dist, are in good shape.
419
394
 
420
395
 
421
396
Publishing the source tarball
422
397
-----------------------------
423
398
 
424
 
#. Go to the relevant <https://launchpad.net/bzr/x.y> series page in Launchpad.
 
399
#. Go to the relevant <https://launchpad.net/brz/x.y> series page in Launchpad.
425
400
 
426
401
#. Create a release of the milestone, and upload the source tarball and
427
402
   the GPG signature.  Or, if you prefer, use the
428
403
   ``tools/packaging/lp-upload-release`` script to do this. Note that
429
 
   this changes what the download widget on the Launchpad bzr home
 
404
   this changes what the download widget on the Launchpad brz home
430
405
   page shows, so don't stop the release process yet, or platform binary
431
406
   installers won't be made and the download list will stay very small!
432
407
   <https://bugs.launchpad.net/launchpad/+bug/586445>
443
418
they do, they either targeted the wrong branch or didn't update the news
444
419
file correctly, so the sooner the branch is opened again, the better.
445
420
 
446
 
This matters more for ``lp:bzr`` than for ``lp:bzr/x.y``, ``lp:bzr`` should
 
421
This matters more for ``lp:brz`` than for ``lp:brz/x.y``, ``lp:brz`` should
447
422
always be open for landing, so you should do `At the start of a release
448
 
cycle`_ as soon as possible (i.e. update the version number in ``bzr`` and
449
 
``bzrlib/__init__``, create/update the news files and create/update the
 
423
cycle`_ as soon as possible (i.e. update the version number in ``brz`` and
 
424
``breezy/__init__``, create/update the news files and create/update the
450
425
milestone for the next relase).
451
426
 
452
427
You may also need to do `At the start of a series cycle`_ if you're starting
457
432
 
458
433
A word of caution: the instructions above works well for all releases but
459
434
there is one special case that requires a bit more care: when you release
460
 
the *last* beta for a given ``x.y`` series (from trunk aka lp:bzr), you need
 
435
the *last* beta for a given ``x.y`` series (from trunk aka lp:brz), you need
461
436
to setup *two* branches for the next cycle:
462
437
 
463
 
#. ``lp:bzr`` needs to be opened for the next *series* ``x.(y+1)``.
464
 
 
465
 
#. ``lp:bzr/x.y`` needs to be opened for the next *release* ``x.y.0`` in the
466
 
   series. Since this is first real use of ``lp:bzr/x.y``, this is also the
467
 
   deadline for the PQM branch to be created.
468
 
 
469
 
Both are important as ``lp:bzr`` should remain open so any change can be
470
 
landed, ``lp:bzr/x.y`` on the other hand should be ready to receive bug
 
438
#. ``lp:brz`` needs to be opened for the next *series* ``x.(y+1)``.
 
439
 
 
440
#. ``lp:brz/x.y`` needs to be opened for the next *release* ``x.y.0`` in the
 
441
   series. Since this is first real use of ``lp:brz/x.y``, this is also the
 
442
   deadline for the https://ci.breezy-vcs.org/ landing job to be created.
 
443
 
 
444
Both are important as ``lp:brz`` should remain open so any change can be
 
445
landed, ``lp:brz/x.y`` on the other hand should be ready to receive bug
471
446
fixes.
472
447
 
473
 
``lp:bzr`` is generally more important as the bug fixes on ``lp:bzr/x.y``
 
448
``lp:brz`` is generally more important as the bug fixes on ``lp:brz/x.y``
474
449
won't be released sooner than a month from now whereas people may already
475
 
been waiting to land on ``lp:bzr``.
 
450
been waiting to land on ``lp:brz``.
476
451
 
477
452
In a nutshell:
478
453
 
479
 
#. Open ``lp:bzr`` for ``x.(y+1)``
480
 
 
481
 
#. Create or update the ``x.y`` PQM branch based on whatever revision you
482
 
   want to release. Since it takes time to create the PQM branch for the new
483
 
   series you should plan to get it created a few days before you need it
484
 
   and seed it with the revision from trunk you want to base your release of
485
 
   (ask a LOSA for pulling this revision from trunk and pushing it to the
486
 
   series branch (``lp:bzr/x.y``) when you're ready).
487
 
 
488
 
#. Release ``x.y.0`` from ``lp:bzr/x.y``
489
 
 
490
 
#. Open ``lp:bzr/x.y`` for bug fixes
 
454
#. Open ``lp:brz`` for ``x.(y+1)``
 
455
 
 
456
#. Create https://ci.breezy-vcs.org/ landing job and/or update the
 
457
   ``lp:brz/x.y`` branch based on whatever revision you want to release.
 
458
 
 
459
#. Release ``x.y.0`` from ``lp:brz/x.y``
 
460
 
 
461
#. Open ``lp:brz/x.y`` for bug fixes
491
462
 
492
463
You also need to ensure Launchpad is set up to import/export translations
493
464
for the new branch and inform translators.
494
465
 
495
466
#. Push the last beta release to a new branch::
496
467
 
497
 
     bzr push lp:~bzr-core/bzr/bzr-translations-export-x.y
 
468
     brz push lp:~brz-core/brz/brz-translations-export-x.y
498
469
 
499
470
#. On the translations series synchronization settings page
500
 
   <https://translations.launchpad.net/bzr/x.y/+translations-settings>
 
471
   <https://translations.launchpad.net/brz/x.y/+translations-settings>
501
472
   turn on ``Import template files`` then for exports click ``Choose a
502
473
   target branch`` and point it at the branch you just pushed.
503
474
 
504
 
#. E-mail translators to announce that the forthcoming stable release of bzr
 
475
#. E-mail translators to announce that the forthcoming stable release of brz
505
476
   is ready for translations.  Send to
506
477
   ``launchpad-translators@lists.launchpad.net`` and
507
478
   ``ubuntu-translators@lists.ubuntu.com``.
512
483
Announcing the source freeze
513
484
----------------------------
514
485
 
515
 
#. Post to the ``bazaar@lists.canonical.com`` and
516
 
   ``bzr-packagers@list.launchpad.net`` lists, saying that the source has
517
 
   been frozen. Be extra clear that this is only a *source* release targeted
518
 
   at packagers and installer builders (see
 
486
#. Post to the ``bazaar@lists.ubuntu.com`` list and
 
487
   ``breezy-vcs@googlegroups.com`` , saying that the source has been
 
488
   frozen. Be extra clear that this is only a *source* release targeted at
 
489
   packagers and installer builders (see
519
490
   <https://bugs.launchpad.net/launchpad/+bug/645084>).  This is the cue for
520
491
   platform maintainers and plugin authors to update their code.  This is
521
492
   done before the general public announcement of the release.
541
512
we have a releasable product.  The next step is to make it generally
542
513
available to the world.
543
514
 
544
 
#. Go to the release web page at <https://launchpad.net/bzr/x.y/x.y.z>
 
515
#. Go to the release web page at <https://launchpad.net/brz/x.y/x.y.z>
545
516
 
546
 
#. Announce on the `Bazaar website <http://bazaar.canonical.com/>`_.  This
547
 
   page is edited in ``build.py`` in the lp:bzr-website branch. (Changes
548
 
   pushed to this branch are refreshed by a cron job on escudero.)
 
517
#. Announce on the Breezy website.
549
518
 
550
519
#. Check that the documentation for this release is available in
551
 
   <http://doc.bazaar.canonical.com>.  It should be automatically build when
552
 
   the branch is created, by a cron script ``update-bzr-docs`` on
 
520
   <https://www.breezy-vcs.org/doc/en/>.  It should be automatically build when
 
521
   the branch is created, by a cron script ``update-brz-docs`` on
553
522
   ``escudero``. When the first release is created in a new series, a branch
554
 
   needs to be created on zhongshan::
 
523
   needs to be created on ``escudero``::
555
524
 
556
 
     ssh zhongshan.canonical.com
557
 
     sudo -u bzr-web -s
 
525
     ssh escudero.canonical.com
 
526
     sudo -u brz-web -s
558
527
     cd /srv/doc.bazaar.canonical.com/
559
 
     bzr branch http://bazaar.launchpad.net/~bzr-pqm/bzr/2.6 bzr/bzr.2.6
560
 
 
561
 
   And the ``bzr/bin/update-bzr-docs`` script needs to refer to it.
562
 
 
563
 
   The ``lp:bzr-alldocs`` branch also needs to be updated when a new series
 
528
     brz branch lp:brz/2.7 brz/brz.2.7
 
529
 
 
530
   And the ``brz/bin/update-brz-docs`` script needs to refer to it.
 
531
 
 
532
   The ``lp:brz-alldocs`` branch also needs to be updated when a new series
564
533
   is introduced, see the ``README`` file there for more instructions
565
534
   (looking at the branch history is also a good way to understand what
566
535
   needs to be done and to document any policy changes).
572
541
 
573
542
#. Make an announcement mail.
574
543
 
575
 
   For beta releases, this is sent to the ``bazaar@lists.canonical.com`` and
576
 
   ``bazaar-announce@lists.canonical.com`` lists.
 
544
   For beta releases, this is sent to the ``bazaar@lists.ubuntu.com`` and
 
545
   ``bazaar-announce@lists.ubuntu.com`` lists.
577
546
 
578
547
   For stable releases (excluding SRUs which are for older stable releases),
579
548
   it should also be cc'd to ``info-gnu@gnu.org``,
580
549
   ``python-announce-list@python.org``, ``bug-directory@gnu.org``.
581
550
 
582
 
   In all cases, it is good to set ``Reply-To: bazaar@lists.canonical.com``,
 
551
   In all cases, it is good to set ``Reply-To: bazaar@lists.ubuntu.com``,
583
552
   so that people who reply to the announcement don't spam other lists.
584
553
 
585
554
   The announce mail will look something like this::
586
555
 
587
 
      Subject: bzr x.y.z released!
588
 
 
589
 
      The Bazaar team is happy to announce availability of a new
590
 
      release of the bzr adaptive version control system.
591
 
 
592
 
      Bazaar <http://bazaar.canonical.com/> is a Canonical project and part
593
 
      of the GNU project <http://gnu.org/> to produce a free operating
594
 
      system.
 
556
      Subject: brz x.y.z released!
 
557
 
 
558
      The Breezy team is happy to announce availability of a new
 
559
      release of the brz adaptive version control system.
 
560
 
 
561
      Breezy is a fork of the Bazaar version control system.
595
562
 
596
563
      <<Summary paragraph from news>>
597
564
 
598
565
      Thanks to everyone who contributed patches, suggestions, and
599
566
      feedback.
600
567
 
601
 
      Bazaar is now available for download from
602
 
      https://launchpad.net/bzr/x.y/x.y.z/ as a source tarball; packages
 
568
      Breezy is now available for download from
 
569
      https://launchpad.net/brz/x.y/x.y.z/ as a source tarball; packages
603
570
      for various systems will be available soon.
604
571
 
605
572
      <<release notes from this release back to the last major release>>
606
573
 
607
574
   Feel free to tweak this to your taste.
608
575
 
609
 
#. Make an announcement through <https://launchpad.net/bzr/+announce>
610
 
   mentioning the milestone URL <https://launchpad.net/bzr/+milestone/x.y.z>
 
576
#. Make an announcement through <https://launchpad.net/brz/+announce>
 
577
   mentioning the milestone URL <https://launchpad.net/brz/+milestone/x.y.z>
611
578
   so people get an easy access to details.
612
579
 
613
 
#. Announce on https://freecode.com/projects/bazaar-vcs
614
 
 
615
 
   This should be done for beta releases and stable releases. If you do not
616
 
   have a Freecode account yet, ask one of the existing admins.
617
 
 
618
 
   The purpose here is to point users to the latest stable release
619
 
   (i.e. SRUs are excluded) while still publishing announcements for beta
620
 
   releases.
621
 
 
622
 
   There are several kinds of modifications that could be done there via the
623
 
   ``Administration`` box in the lower right area of the page:
624
 
 
625
 
   * Edit the project: This is where most of the URLs proposed in the
626
 
     ``Links`` box are edited. This should rarely change except for the URLs
627
 
     related to the latest stable release.
628
 
 
629
 
   * New announcement: When doing a release, put the summary of the release
630
 
     (you can't embed URLs there, the moderation staff remove them). Users
631
 
     can still access the releases notes via the ``Release Notes`` URL in
632
 
     the ``Links`` box in the upper right area of the page. When doing the
633
 
     first stable release in a series, delete the ``Unstable installers``
634
 
     <https://launchpad.net/bzr/x.y/x.ybn> and ``Unstable source tarball``
635
 
     <http://launchpad.net/bzr/x.y/x.ybn/+download/bzr-x.ybn.tar.gz>
636
 
     links. Conversely, when creating the first beta in a development
637
 
     series, create these links again. Check all links when doing other
638
 
     kinds of release.
639
 
 
640
 
#. Update `<http://en.wikipedia.org/wiki/Bazaar_(software)>`_ -- this should
 
580
#. Update `<http://en.wikipedia.org/wiki/Breezy_(software)>`_ -- this should
641
581
   be done for the stable and beta releases.
642
582
 
643
 
#. Update the python package index: <http://pypi.python.org/pypi/bzr> - best
644
 
   done by running ::
645
 
 
646
 
       python setup.py register
 
583
#. Update the python package index: <http://pypi.python.org/pypi/breezy>
 
584
 
 
585
   From the tarball created and tested earlier ::
 
586
 
 
587
     twine upload ../breezy-3.0.0.tar.gz ../breezy-3.0.0.tar.gz.asc
647
588
 
648
589
   Remember to check the results afterward -- this should be done for
649
590
   stable releases but not for beta releases nor SRUs.
650
591
 
651
 
   To be able to register the release you must create an account on
652
 
   <http://pypi.python.org/pypi> and have one of the existing owners of
653
 
   the project add you to the group.
 
592
   The ``twine`` command is provided by the ``twine`` package on Debian and
 
593
   Ubuntu. Beware that you need at least ``twine-1.10``.
 
594
 
 
595
   If in doubt, you can test with <https://testpypi.python.org/pypi> where
 
596
   you can register yourself, register the brz project and upload (and then
 
597
   remove the upload and delete the project so a new release manager can
 
598
   enjoy the same facilities). If the project already exists, have one of
 
599
   the existing owners of the project add you to the group.
 
600
 
 
601
   To use the pypi test site, you need to record your credentials for an
 
602
   existing user (the registration process is manual and starts at
 
603
   <https://testpypi.python.org/pypi?%3Aaction=register_form>.
 
604
 
 
605
   Once registered, you can record your crdentials in your ``~/pypirc`` file
 
606
   with ::
 
607
 
 
608
     [testpypi]
 
609
     username:<login on testpypi>
 
610
     password:<password on testpypi>
 
611
     repository = https://testpypi.python.org/pypi
 
612
 
 
613
   Registering the breezy project if doesn't exist is achieved with::
 
614
 
 
615
     python setup.py -r https://testpypi.python.org/pypi register
 
616
 
 
617
  Uploading is done with::
 
618
 
 
619
    twine upload -r testpypi ../breezy-3.0.0.tar.gz ../breezy-3.0.0.tar.gz.asc
 
620
 
 
621
   To be able to upload the release you must create an account on
 
622
   <http://pypi.python.org/pypi> and have one of the existing owners of the
 
623
   project add you to the group and update your ``[pypi]`` section in your
 
624
   ``~/.pypirc`` file.
654
625
 
655
626
 
656
627
Merging the released code back to trunk
660
631
changes should be merged into the right place because each release series
661
632
has its own release-notes file, but double-check.
662
633
 
663
 
If it's not already done, advance the version number in ``bzr`` and
664
 
``bzrlib/__init__.py``.  Submit this back into pqm for bzr.dev.
 
634
If it's not already done, advance the version number in ``brz`` and
 
635
``breezy/__init__.py``. File a merge proposal against ``lp:brz``.
665
636
 
666
637
As soon as you change the version number in trunk, make sure you have
667
638
created the corresponding milestone to ensure the continuity in bug
687
658
Getting the release into Ubuntu
688
659
-------------------------------
689
660
 
 
661
/!\ Nothing in this section has been validated for breezy yet.
 
662
 
690
663
(Feel free to propose or add new sections here about what we should do to
691
 
get bzr into other places.)
 
664
get brz into other places.)
692
665
 
693
666
For the currently-under-development release of Ubuntu, no special action
694
667
is needed: the release should be picked by Debian and synced from there into
695
668
Ubuntu.
696
669
 
697
 
Releases off stable bzr branches should go in to the ``-updates`` of the
 
670
Releases off stable brz branches should go in to the ``-updates`` of the
698
671
Ubuntu release that originally contained that branch.  (Ubuntu Lucid had
699
 
bzr 2.2.0, so should get every 2.2.x update.)  This means going through
 
672
brz 2.2.0, so should get every 2.2.x update.)  This means going through
700
673
the `SRU (Stable Release Updates)
701
674
<https://wiki.ubuntu.com/StableReleaseUpdates>`__ process.   
702
675
 
703
 
Since September 2010, bzr has received approval by the technical
 
676
Since September 2010, brz has received approval by the technical
704
677
board for the `MicroReleaseExceptions
705
678
<https://wiki.ubuntu.com/StableReleaseUpdates/MicroReleaseExceptions>`__
706
679
category so that whole bugfix releases can more easily be
710
683
<http://wiki.bazaar.canonical.com/UbuntuStableReleaseUpdates>`_
711
684
page.
712
685
 
713
 
**After making a bzr stable-release release, nominate the most serious bug
 
686
**After making a brz stable-release release, nominate the most serious bug
714
687
for the appropriate Ubuntu release and subscribe the `ubuntu-sru` team.**
715
688
 
716
689
This requires a couple of tricks (please reconsider and tweak as things
717
690
evolves from one release to the other):
718
691
 
719
692
 * create a distro task with the ``Also affects distribution`` button and
720
 
   select ``bzr (Ubuntu)``.
 
693
   select ``brz (Ubuntu)``.
721
694
 
722
 
 * change the *URL* to point to ``ubuntu/+source/bzr`` instead of ``bzr``
 
695
 * change the *URL* to point to ``ubuntu/+source/brz`` instead of ``brz``
723
696
   (this is needed if you create the distro task but not if it exists
724
697
   already). You should now be able to click the ``Nominate for release``
725
698
   button and select the right Ubuntu release. As of September 2010, this
744
717
See also
745
718
--------
746
719
 
747
 
* `Packaging into the bzr PPA <ppa.html>`_ to make and publish Ubuntu
 
720
* `Packaging into the brz PPA <ppa.html>`_ to make and publish Ubuntu
748
721
  packages.
749
 
* `Bazaar Developer Document Catalog <index.html>`_
 
722
* `Breezy Developer Document Catalog <index.html>`_
750
723
* `Development cycles <cycle.html>`_: things that happen during the cycle
751
724
  before the actual release.
752
725