~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to doc/developers/releasing.txt

  • Committer: Michael Ellerman
  • Date: 2006-02-28 14:45:51 UTC
  • mto: (1558.1.18 Aaron's integration)
  • mto: This revision was merged to the branch mainline in revision 1586.
  • Revision ID: michael@ellerman.id.au-20060228144551-3d9941ecde4a0b0a
Update contrib/pwk for -p1 diffs from bzr

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
Releasing Bazaar
2
 
================
3
 
 
4
 
This document describes the processes for making and announcing a Bazaar
5
 
release, and managing the release process.  This is just one phase of the 
6
 
`overall development cycle <cycle.html>`_, but it's the most complex part.
7
 
This document gives a checklist you can follow from start to end in one
8
 
go.
9
 
 
10
 
.. contents::
11
 
 
12
 
 
13
 
Preconditions
14
 
-------------
15
 
 
16
 
#. Download the pqm plugin and install it into your ``~/.bazaar/plugins``::
17
 
 
18
 
     bzr branch lp:bzr-pqm ~/.bazaar/plugins/pqm
19
 
 
20
 
 
21
 
Starting a cycle
22
 
----------------
23
 
 
24
 
To start a new release cycle:
25
 
 
26
 
#. Create a new series at <https://launchpad.net/bzr/+addseries>. There is one
27
 
   series for every *x.y* release.
28
 
 
29
 
#. Go to the series web page at <https://launchpad.net/bzr/x.y>
30
 
 
31
 
#. Create a new release at
32
 
   <https://launchpad.net/bzr/x.y/+addrelease> and add
33
 
   information about this release. We will not use it yet, but it
34
 
   will be available for targeting or nominating bugs.
35
 
 
36
 
#. We create a new pqm-controlled branch for this release series, by
37
 
   asking a Canonical sysadmin.  
38
 
   This branch means that from the first release beta or candidate onwards,
39
 
   general development continues on the trunk, and only
40
 
   specifically-targeted fixes go into the release branch.
41
 
 
42
 
#. Add milestones at <https://edge.launchpad.net/bzr/x.y/+addmilestone> to
43
 
   that series for the beta release, release candidate and the final release,
44
 
   and their expected dates.
45
 
 
46
 
#. Update the version number in the ``bzr`` script, and the
47
 
   ``bzrlib/__init__.py`` file.
48
 
 
49
 
#. Send mail to the list with the key dates, who will be the release
50
 
   manager, and the main themes or targeted bugs.  Ask people to nominate
51
 
   objectives, or point out any high-risk things that are best done early,
52
 
   or that interact with other changes. This is called the metronome mail
53
 
   and as RM you're supposed to send other metronome mails at your rythm.
54
 
 
55
 
 
56
 
Starting the release phase
57
 
--------------------------
58
 
 
59
 
When it's time to make the first beta release or release candidate:
60
 
 
61
 
#. Make a beta release or release candidate. The milestone for this
62
 
   candidate will already exist (see Starting a cycle above).
63
 
 
64
 
Preparing the tree for release
65
 
------------------------------
66
 
 
67
 
#. Make a local branch for preparing this release.  (Only for the first 
68
 
   release in a series, otherwise you should already have a branch.) ::
69
 
 
70
 
     bzr branch trunk prepare-1.14
71
 
 
72
 
#. Configure pqm-submit for this branch, with a section like this in
73
 
   ``~/.bazaar/locations.conf``::
74
 
 
75
 
        [/home/mbp/bzr/prepare-1.14]
76
 
        pqm_email = Canonical PQM <pqm@bazaar-vcs.org>
77
 
        submit_branch = lp:bzr/2.0
78
 
        public_branch = http://bazaar.example.com/prepare-2.0
79
 
        submit_to = bazaar@lists.canonical.com
80
 
        smtp_server = mail.example.com:25
81
 
 
82
 
    Please see <http://doc.bazaar-vcs.org/latest/developers/HACKING.html#an-overview-of-pqm>
83
 
    for more details on PQM
84
 
 
85
 
#. In the release branch, update  ``version_info`` in ``./bzrlib/__init__.py``.
86
 
   Double check that ./bzr ``_script_version`` matches ``version_info``. Check
87
 
   the output of ``bzr --version``.
88
 
 
89
 
   For beta releases use::
90
 
 
91
 
       version_info = (2, 1, 0, 'beta', 1)
92
 
 
93
 
 
94
 
   For release candidates use::
95
 
 
96
 
       version_info = (2, 0, 1, 'candidate', 1)
97
 
 
98
 
 
99
 
#. Add the date and release number to ``./NEWS``
100
 
 
101
 
#. To check that all bugs mentioned in ``./NEWS`` are actually marked as
102
 
   closed in Launchpad, you can run ``tools/check-newsbugs.py``::
103
 
 
104
 
     ./tools/check-newsbugs.py NEWS
105
 
 
106
 
   (But note there can be some false positives, and this script may be
107
 
   flaky <https://bugs.edge.launchpad.net/bzr/+bug/354985>.  Don't let
108
 
   this slow you down too much.)
109
 
 
110
 
#. Summarize into one or two paragraphs what's new in this release.
111
 
 
112
 
#. Commit these changes to the release branch, using a command like::
113
 
    
114
 
     bzr commit -m "Release 1.14." 
115
 
   
116
 
   The diff before you commit will be something like::
117
 
 
118
 
     === modified file 'NEWS'
119
 
     --- NEWS        2008-09-17 23:09:18 +0000
120
 
     +++ NEWS        2008-09-23 16:14:54 +0000
121
 
     @@ -4,6 +4,23 @@
122
 
     
123
 
      .. contents::
124
 
     
125
 
     +bzr 1.7 2008-09-23
126
 
     +------------------
127
 
     +
128
 
     +This release includes many bug fixes and a few performance and feature
129
 
     +improvements.  ``bzr rm`` will now scan for missing files and remove them,
130
 
     +like how ``bzr add`` scans for unknown files and adds them. A bit more
131
 
     +polish has been applied to the stacking code. The b-tree indexing code has
132
 
     +been brought in, with an eye on using it in a future repository format.
133
 
     +There are only minor installer changes since bzr-1.7rc2.
134
 
     +
135
 
      bzr 1.7rc2 2008-09-17
136
 
      ---------------------
137
 
     
138
 
     
139
 
     === modified file 'bzrlib/__init__.py'
140
 
     --- bzrlib/__init__.py  2008-09-16 21:39:28 +0000
141
 
     +++ bzrlib/__init__.py  2008-09-23 16:14:54 +0000
142
 
     @@ -41,7 +41,7 @@
143
 
      # Python version 2.0 is (2, 0, 0, 'final', 0)."  Additionally we use a
144
 
      # releaselevel of 'dev' for unreleased under-development code.
145
 
     
146
 
     -version_info = (1, 7, 0, 'candidate', 2)
147
 
     +version_info = (1, 7, 0, 'final', 0)
148
 
     
149
 
     
150
 
      # API compatibility version: bzrlib is currently API compatible with 1.7.
151
 
      
152
 
#. Tag the new release::
153
 
 
154
 
     bzr tag bzr-1.14
155
 
 
156
 
#. Push those changes to a bzr reposistory that is public and accessible on
157
 
   the Internet. PQM will pull from this repository when it attempts to merge
158
 
   your changes. Then submit those changes to PQM for merge into the
159
 
   appropriate release branch::
160
 
 
161
 
     bzr push
162
 
     bzr pqm-submit -m "(mbp) prepare 1.14"
163
 
 
164
 
#. When PQM succeeds, pull down the master release branch.
165
 
 
166
 
 
167
 
Making the source tarball
168
 
-------------------------
169
 
 
170
 
#. Change into the source directory and run ::
171
 
  
172
 
     make dist
173
 
 
174
 
   This also makes a zip file, which is easier to access on Microsoft
175
 
   Windows.
176
 
 
177
 
#. Now we'll try expanding this tarball and running the test suite
178
 
   to check for packaging problems::
179
 
 
180
 
     make check-dist-tarball
181
 
 
182
 
   You may encounter failures while running the test suite caused
183
 
   by your locally installed plugins. Use your own judgment to
184
 
   decide if you can release with these failures. When in doubt,
185
 
   disable the faulty plugins one by one until you get no more
186
 
   failures.
187
 
 
188
 
 
189
 
Publishing the release
190
 
----------------------
191
 
 
192
 
Now you have the beta or releasable product.  The next step is making it
193
 
available to the world.
194
 
 
195
 
go to the release
196
 
 
197
 
#. Within that release, upload the source tarball and zipfile and the GPG
198
 
   signature.  Or, if you prefer, use the
199
 
   ``tools/packaging/lp-upload-release`` script to do this.
200
 
 
201
 
#. Link from http://bazaar-vcs.org/Download to the tarball and signature.
202
 
 
203
 
#. Announce on the `Bazaar home page <http://bazaar-vcs.org/>`_.
204
 
 
205
 
#. Check that the documentation for this release is available in
206
 
   <http://doc.bazaar-vcs.org>.  It should be automatically build when the
207
 
   branch is created, by a cron script ``update-bzr-docs`` on
208
 
   ``escudero``. As of today (2009-08-27) ``igc`` manually updates the
209
 
   pretty version of it.
210
 
 
211
 
 
212
 
Announcing the release
213
 
----------------------
214
 
 
215
 
Now that the release is publicly available, tell people about it.
216
 
 
217
 
#. Make an announcement mail.
218
 
 
219
 
   For release candidates or beta releases, this is sent to the ``bazaar``
220
 
   list only to inform plugin authors and package or installer managers.
221
 
 
222
 
   Once the installers are available, the mail can be sent to the
223
 
   ``bazaar-announce`` list too.
224
 
 
225
 
   For final releases, it should also be cc'd to ``info-gnu@gnu.org``,
226
 
   ``python-announce-list@python.org``, ``bug-directory@gnu.org``.  
227
 
 
228
 
   In all cases, it is good to set ``Reply-To: bazaar@lists.canonical.com``,
229
 
   so that people who reply to the announcement don't spam other lists.
230
 
 
231
 
   The announce mail will look something like this::
232
 
   
233
 
      Subject: bzr x.yy released!
234
 
      
235
 
      <<Summary paragraph from news>>
236
 
     
237
 
      The Bazaar team is happy to announce availability of a new 
238
 
      release of the bzr adaptive version control system.
239
 
      Bazaar is part of the GNU system <http://gnu.org/>.
240
 
     
241
 
      Thanks to everyone who contributed patches, suggestions, and
242
 
      feedback.
243
 
      
244
 
      Bazaar is now available for download from 
245
 
      http://bazaar-vcs.org/Download as a source tarball; packages 
246
 
      for various systems will be available soon.
247
 
      
248
 
      <<NEWS section from this release back to the last major release>>
249
 
 
250
 
   Feel free to tweak this to your taste.
251
 
 
252
 
#. Make an announcement through <https://launchpad.net/bzr/+announce>
253
 
 
254
 
#. Update the IRC channel topic. Use the ``/topic`` command to do this,
255
 
   ensuring the new topic text keeps the project name, web site link, etc.
256
 
 
257
 
#. Announce on http://freshmeat.net/projects/bzr/
258
 
   
259
 
   This should be done for beta releases, release candidates and final
260
 
   releases. If you do not have a Freshmeat account yet, ask one of the
261
 
   existing admins.
262
 
 
263
 
#. Update `<http://en.wikipedia.org/wiki/Bazaar_(software)>`_ -- this should
264
 
   be done for final releases but not for beta releases or Release Candidates.
265
 
 
266
 
#. Update the python package index: <http://pypi.python.org/pypi/bzr> - best
267
 
   done by running ::
268
 
 
269
 
       python setup.py register
270
 
 
271
 
   Remember to check the results afterwards.
272
 
 
273
 
   To be able to register the release you must create an account on
274
 
   <http://pypi.python.org/pypi> and have one of the existing owners of
275
 
   the project add you to the group.
276
 
 
277
 
 
278
 
Merging the released code back to trunk
279
 
---------------------------------------
280
 
 
281
 
Merge the release branch back into the trunk.  Check that changes in NEWS
282
 
were merged into the right sections.  If it's not already done, advance
283
 
the version number in ``bzr`` and ``bzrlib/__init__.py``.  Submit this
284
 
back into pqm for bzr.dev.
285
 
 
286
 
You should also merge (not pull) the release branch into
287
 
``lp:~bzr/bzr/current``, so that branch contains the current released code
288
 
at any time.
289
 
 
290
 
 
291
 
See also
292
 
--------
293
 
 
294
 
* `Packaging into the bzr PPA <ppa.html>`_ to make and publish Ubuntu
295
 
  packages.
296
 
* `Bazaar Developer Document Catalog <index.html>`_
297
 
* `Development cycles <cycle.html>`_: things that happen during the cycle
298
 
  before the actual release.
299
 
 
300
 
..
301
 
   vim: filetype=rst textwidth=74 ai shiftwidth=4