(closes #493) convert remaining GET form to use POST
[buildbot.git] / NEWS
1 User visible changes in Buildbot.             -*- outline -*-
3 *** Password Protection for Force Build and Stop actions
5 It is now possible to require authentication to force build and stop via the
6 WebStatus interface. To use this, set the 'auth' field of WebStatus to a valid
7 IAuth implementation. Current implementations are:
8         BasicAuth with a list of user/passwords
9         HTPasswdAuth with an .htpasswd file
10 By default, the unauthenticated behavior will occur.
12 * Release 0.7.10 (25 Feb 2009)
14 This release is mainly a collection of user-submitted patches since
15 the last release.
17 ** New Features
19 *** Environment variables in a builder (#100)
21 It is useful to be able to pass environment variables to all steps in a
22 builder.  This is now possible by adding { .. 'env': { 'var' : 'value' }, ... }
23 to the builder specification.
25 *** IRC status plugin improvements (#330, #357, #378, #280, #381, #411, #368)
27 *** usePTY specified in master.cfg, defaults to False (#158, #255)
29 Using a pty has some benefits in terms of supporting "Stop Build", but causes
30 numerous problems with simpler jobs which can be killed by a SIGHUP when their
31 standard input is closed.  With this change, PTYs are not used by default,
32 although you can enable them either on slaves (with the --usepty option to
33 create-slave) or on the master.
35 *** More information about buildslaves via the web plugin (#110)
37 A new page, rooted at /buildslave/$SLAVENAME, gives extensive information about
38 the buildslave.
40 *** More flexible merging of requests (#415)
42 The optional c['mergeRequests'] configuration parameter takes a function
43 which can decide whether two requests are mergeable.
45 *** Steps can be made to run even if the build has halted (#414)
47 Adding alwaysRun=True to a step will cause it to run even if some other step
48 has failed and has haltOnFailure=True.
50 *** Compress buildstep logfiles (#26)
52 Logs for each buildstep, which can take a lot of space on a busy buildmaster,
53 are automatically compressed after the step has finished.
55 *** Support for "latent" buildslaves
57 The buildslaves that are started on-demand are called "latent" buildslaves.
58 Buildbot ships with an abstract base class for building latent buildslaves, and
59 a concrete implementation for AWS EC2. 
61 *** Customized MailNotifier messages (#175)
63 MailNotifier now takes an optional function to build the notification message,
64 allowing ultimate site-level control over the format of buildbot's notification
65 emails.
67 *** Nightly scheduler support for building only if changes have occurred
69 With the addition of onlyIfChanged=True, the Nightly scheduler will not schedule
70 a new build if no changes have been made since its last scheduled build.
72 *** Add ATOM/RSS feeds to WebStatus (#372)
74 Two new pages, /atom and /rss, provide feeds of build events to any feed
75 reader.  These paths take the same "category" and "branch" arguments as the
76 waterfall and grid.
78 *** Add categories to Schedulers and Changes (#182)
80 This allows a moderate amount of support for multiple projects built in a
81 single buildmaster.
83 *** Gracefully shut down a buildslave after its build is complete
85 The /buildslaves/$SLAVENAME pages have a "Gracefully Shutdown" button which
86 will cause the corresponding slave to shut itself down when it finishes its
87 current build.  This is a good way to do work on a slave without causing a
88 spurious build failure.
90 *** SVN source steps can send usernames and passwords (#41)
92 Adding username="foo" and/or password="bar" to an SVN step will cause
93 --username and --password arguments to be passed to 'svn' on the slave side.
94 Passwords are suitably obfuscated in logfiles.
96 ** New Steps
98 *** DirectoryUpload (#393)
100 This step uploads an entire directory to the master, and can be useful when a
101 build creates several products (e.g., a client and server package).
103 *** MasterShellCommand
105 This step runs a shell command on the server, and can be useful for
106 post-processing build products, or performing other maintenance tasks on the
107 master.
109 *** PyLint (#259)
111 A PyLint step is available to complement the existing PyFlakes step.
113 ** Bugs Fixed
115 *** Process output from new versions of Test::Harness (#346)
117 *** Fixes to the try client and scheduler
119 *** Remove redundant loop in MailNotifier (#315)
121 *** Display correct $PWD in logfiles (#179)
123 *** Do not assume a particular python version on Windows (#401)
125 *** Sort files in changes (#402)
127 *** Sort buildslaves lexically (#416)
129 *** Send properties to all builds initiated by AnyBranchScheduler
131 *** Dependent Schedulers are more robust to reconfiguration (#35)
133 *** Fix properties handling in triggered buidls (#392)
135 *** Use "call" on Windows to avoid errors (#417)
137 *** Support setDefaultWorkdir in FileUpload and FileDownload (#209)
139 *** Support WithProperties in FileUpload and FileDownload (#210)
141 *** Fix a bug where changes could be lost on a master crash (#202)
143 *** Remove color settings from non-presentation code (#251)
145 *** Fix builders which stopped working after a PING (#349, #85)
147 *** Isolate Python exceptions in status plugins (#388)
149 *** Notify about slaves missing at master startup (#302)
151 *** Fix tracebacks in web display after a reconfig (#176)
153 ** Version-Control Changes
155 *** Many Mercurial fixes
157  - Inrepo branch support finalized (source step + changegroup hook + test case)
158    (#65 #185 #187)
160  - Reduced amount of full clones by separating clone with update into
161    clone/pull/update steps (#186, #227) (see #412 for future work here)
163  - Fixed mercurial changegroup hook to work with Mercurial 1.1 API (#181, #380)
165 *** Many git fixes
167 *** Add got_revision to Perforce support (#127)
169 *** Use "git foo" everywhere instead of deprecated "git-foo"
171 ** Minor Changes
173 *** factory.addSteps (#317)
175 If you have a common list of steps that are included in multiple factories, you
176 can use f.addSteps(steplist) to add them all at once.
178 *** Twisted logfile rotation and cleanup (#108)
180 By default, Buildbot now rotates and cleans up the (potentially voluminous)
181 twistd.log files.
183 *** Prioritize build requests based on the time they wre submitted (#334)
185 Balancing of load is a bit more fair, although not true load balancing.
187 * Release 0.7.9 (15 Sep 2008)
189 ** New Features
191 *** Configurable public_html directory (#162)
193 The public_html/ directory, which provides static content for the WebStatus()
194 HTTP server, is now configurable. The default location is still the
195 public_html/ subdirectory of the buildmaster's base directory, but you can
196 change this by passing a suitable argument when creating the WebStatus()
197 instance in your master.cfg file:
199   c['status'].append( WebStatus(8080, public_html="/var/www/buildbot") )
201 *** Lock access modes (#313)
203 Albert Hofkamp added code to provide two distinct access modes to Locks:
204 "counting" and "exclusive". Locks can accept a configurable number of
205 "counting"-mode users, or a single "exclusive"-mode. For example, a Lock is
206 defined with maxCount=3, and then a 'compile' BuildStep uses this lock in
207 counting mode, while a 'cleanup' BuildStep uses this lock in exclusive mode.
208 Then, there can be one, two, or three simultaneous Builds in the compile step
209 (as long as there are no builds in the cleanup step). Only one build can be
210 in the cleanup step at a time, and if there is such a build in the cleanup
211 step, then the compile steps in other builds will wait for it to finish.
212 Please see the "Interlocks" section of the user's manual for more details.
214 ** Bugs Fixed
216 *** Buildslave missing_timeout= fired too quickly (#211)
218 By providing a missing_timeout= argument when creating the BuildSlave
219 instance, you can ask the buildmaster to send email if a buildslave is
220 disconnected for too long. A bug in the previous version caused this
221 notification to be sent too soon, rather than waiting until the timeout
222 period expired. This should be fixed now.
224 *** Test command display fixed (#332)
226 In the previous version, a steps.shell.Test step would display the parsed
227 test results (in the step's box on the waterfall display) in lieu of any
228 other descriptive text the step might provide. In this release, these two
229 pieces of information are combined.
231 ** Minor Changes
233 The buildmaster's version is logged to its twistd.log file at startup. The
234 buildslave does the same, to its own logfile.
236 Remote commands now record how long each command took. The "elapsedTime="
237 message will appear in the step's main logfile.
239 The "buildbot restart" command no longer fails if the buildbot wasn't already
240 running.
242 The FileUpload and FileDownload steps now create their target directories
243 (and any missing intermediate directories) before writing to the destination
244 file.
246 The per-build and per-step web pages now show the start, finish, and elapsed
247 time of their build or step.
249 If a Subversion-based build is started with a mixture of Changes that specify
250 particular numeric revisions and "HEAD" Changes (which indicate that a trunk
251 checkout is desired), the build will use a trunk checkout. Previously this
252 would probably cause an error. It is not clear how this situation might
253 arise.
255 ** Compability With Other Tools
257 The mercurial commit hook (buildbot.changes.hgbuildbot) in the previous
258 version doesn't work with hg-1.0 or later (it uses an API function that was
259 present in the hg-0.9.5 release, but was removed from hg-1.0). This
260 incompability has been fixed: the new version of buildbot should be
261 compatible with hg-1.0 and newer (and it probably retains compability with
262 hg-0.9.5 and earlier too). (#328)
264 The Git tool has traditionally provided two ways to run each command, either
265 as subcommands of /usr/bin/git (like "git checkout"), or as individual tools
266 (like /usr/bin/git-checkout). The latter form is being removed in the
267 upcoming 1.6 Git release. Previous versions of Buildbot have used the
268 git-checkout form, and will break when Git is upgraded to 1.6 or beyond. The
269 new Buildbot release switches to the subcommand form. Note that this is a
270 change on the buildslave side.
272 The Git checkout command will now use the default branch (as set in the
273 steps.source.Git() step definition) if the changes that it is building do not
274 specify some other branch to build. (#340)
276 ** Deprecation Schedule
278 No features have been deprecated in this release, and no deprecated features
279 have been removed. As a reminder, the following deprecated features are
280 scheduled for removal in an upcoming release:
282 c['sources'] (plural) was replaced by c['change_source'] (singular) in 0.7.6,
283 and will be removed by 0.8.0.
285 c['bots'] was replaced by c['buildslaves'] in 0.7.6, and will be removed by
286 0.8.0 . c['bots'] only accepts BuildSlave instances, not name/passwd tuples.
288 The html.Waterfall status target was replaced by html.WebStatus in 0.7.6, and
289 will be removed by 0.8.0.
292 * Release 0.7.8 (24 Jul 2008)
294 ** New features
296 The IRC bot will respond to three new commands: 'notify' subscribes the
297 channel (or the sender, if the command is sent as a private "/msg") to hear
298 about build events. 'join' tells the bot to join some new IRC channel.
299 'leave' tells it to leave a channel. See the "IRC Bot" section of the User's
300 Manual for details. (#171)
302 Build Steps now have "statistics", in addition to logfiles. These are used to
303 count things like how many tests passed or failed. There are methods to sum
304 these counters across all steps and display the results in the Build status.
305 The Waterfall display now shows the count of failed tests on the top-most box
306 in each column, using this mechanism.
308 The new buildbot.steps.shell.PerlModuleTest step was added, to run Perl unit
309 tests. This is a wrapper around the regular ShellCommand that parses the
310 output of the standard perl unit test system and counts how many tests
311 passed/failed/etc. The results are put into the step's summary text, and a
312 count of tests passed/failed/skipped are tracked in the steps's statistics.
313 The factory.CPAN build factory has been updated to use this, so configuring a
314 Buildbot to test a perl module available from CPAN should be as easy as:
316  s = source.CVS(cvsroot, cvsmodule)
317  f = factory.CPAN(s)
319 Build Properties have been generalized: they remain associated with a single
320 Build, but the properties can be set from a variety of sources. In previous
321 releases, the Build itself would set properties like 'buildername', 'branch',
322 and 'revision' (the latter two indicating which version of the source code it
323 was trying to get), and the source-checkout BuildSteps would set a property
324 named 'got_revision' (to indicate what version of the soruce code it actually
325 got). In this release, the 'scheduler' property is set to indicate which
326 Scheduler caused the build to be started. In addition, the config file can
327 specify properties to be set on all Builds, or on all Builds for a specific
328 Builder. All these properties are available for interpolation into
329 ShellCommands and environment variables by using the WithProperties() marker.
331 It may be easier to implement simple build parameterization (e.g. to upload
332 generated binaries to a specific directory, or to only perform long-running
333 tests on a nightly build instead of upon every checkin) by using these Build
334 Properties than to write custom BuildSteps.
336 ** Other improvements
338 The /buildslaves web page shows which slaves are currently running builds.
339 Offline slaves are displayed in bold.
341 Buildbot's setup.py now provides metadata to setuptools (if installed): an
342 entry_points script was added, and a dependency upon twisted-2.4.x or newer
343 was declared. This makes it more likely that 'easy_install buildbot' will
344 work.
346 The MailNotifier class acquired a mode="passing" flag: in this mode, the
347 buildbot will only send mail about passing builds (versus only on failing
348 builds, or only on builds which failed when the previous build had passed).
350 ** Bugs fixed
352 Don't display force/stop build buttons when build control is disabled (#246)
354 When a build is waiting on a lock, don't claim that it has started (#107)
356 Make SVN mode=copy tolerate symlinks on freebsd, "cp -rp" -> "cp -RPp" (#86)
358 The svnpoller changesource now ignores branch deletion (#261)
360 The Git unit tests should run even if the user has not told Git about their
361 username/email.
363 The WebStatus /xmlrpc server's getStatus() method was renamed to the
364 more-accurate getLastBuildResults().
366 The TinderboxMailNotifier status output acquired an useChangeTime= argument.
368 The bonsaipoller changesource got some fixes.
370 ** Deprecation Schedule
372 No features have been deprecated in this release, and no deprecated features
373 have been removed. As a reminder, the following deprecated features are
374 scheduled for removal in an upcoming release:
376 c['sources'] (plural) was replaced by c['change_source'] (singular) in 0.7.6,
377 and will be removed by 0.8.0.
379 c['bots'] was replaced by c['buildslaves'] in 0.7.6, and will be removed by
380 0.8.0 . c['bots'] only accepts BuildSlave instances, not name/passwd tuples.
382 The html.Waterfall status target was replaced by html.WebStatus in 0.7.6, and
383 will be removed by 0.8.0.
387 * Release 0.7.7 (29 Mar 2008)
389 ** Things You Need To Know
391 *** builder names must not start with an underscore (`_').
393 These are now reserved for internal buildbot purposes, such as the magic
394 "_all" pseudo-builder that the web pages use to allow force-build buttons
395 that start builds on all Builders at once.
397 ** New Features
399 *** "buildbot checkconfig"
401 The "buildbot checkconfig" command will look at your master.cfg file and tell
402 you if there are any problems with it. This can be used to test potential
403 changes to your config file before submitting them to the running
404 buildmaster. This is particularly useful to run just before doing "buildbot
405 restart", since the restart will fail if the config file has an error. By
406 running "buildbot checkconfig master.cfg && buildbot restart", you'll only
407 perform the restart if the config file was ok. Many thanks to Ben Hearsum for
408 the patch.
410 *** Waterfall "?category=FOO" query-arguments
412 The Waterfall page now accepts one or more "category=" query arguments in the
413 URL, to filter the display by categories. These behave a lot like the
414 "builder=" query argument. Thanks to Jermo Davann for the patch.
416 ** Bugs Fixed
418 Many bugs were fixed, and many minor features were added. Many thanks to
419 Dustin Mitchell who fixed and coordinated many of these. Here is a terse
420 list, for more details, please see the Trac page for the 0.7.7 release, at
421 http://buildbot.net/trac/query?status=closed&milestone=0.7.7 :
423 Many of the URLs generated by the buildbot were wrong.
424 Display of last-heard-from timestamps on the buildslaves web page were wrong.
425 Asking an IRC bot about a build waiting on a Lock should no longer crash.
426 Same for the web viewer.
427 Stop treating the encouraged info/ directory as leftover.
428 Add more force/stop build buttons.
429 Timestamps displayed on the waterfall now handle daylight savings properly.
430 p4poller no longer quits after a single failure.
431 Improved Git support, including 'try', branch, and revisions.
432 Buildslaves now use 'git', not 'cogito'.
433 Make older hg client/servers handle specific-revision builds properly.
434 Fix twisted.scripts._twistw problem on twisted-2.5.0 and windows.
435 Fix workdir= and env= on ShellCommands
436 Fix logfile-watching in 'buildbot start' on OS-X.
437 Fix ShellCommand crashes when the program emits >640kB of output per chunk.
438 New WarningCountingShellCommand step.
439 Fix TreeSize step.
440 Fix transfer.FileUpload/FileDownload crashes for large files.
441 Make 'buildbor reconfig' on windows tell you that it doesn't work.
442 Add a To: header to the mail sent by the slave-missing timeout.
443 Disable usePTY= for most unit tests, it makes some debian systems flunk tests.
444 Add 'absolute source stamps'
445 Add 'triggerable schedulers', and a buildstep to trigger them.
446 Remove buildbot.changes.freshcvsmail
447 Add new XMLRPC methods: getAllBuilders, getStatus, getLastBuilds.
448 Accept WithProperties in more places: env=, workdir=, others.
449 Use --no-auth-cache with SVN commands to avoid clobbering shared svn state.
450 Add hours/minutes/seconds in the waterfall's ETA display.
451 Trial: count Doctest lines too.
452 ShellCommand: record more info in the headers: stdin closing, PTY usage.
453 Make it possible to stop builds across reconfig boundaries.
454 SVN revision numbers are now passed as strings, which was breaking MailNotifier
456 ** Deprecation Schedule
458 The changes.freshcvsmail change source was replaced by
459 changes.mail.FCMaildirSource in 0.7.6, and has been removed in 0.7.7 .
461 c['sources'] (plural) was replaced by c['change_source'] (singular) in 0.7.6,
462 and will be removed by 0.8.0.
464 c['bots'] was replaced by c['buildslaves'] in 0.7.6, and will be removed by
465 0.8.0 . c['bots'] only accepts BuildSlave instances, not name/passwd tuples.
467 The html.Waterfall status target was replaced by html.WebStatus in 0.7.6, and
468 will be removed by 0.8.0.
471 * Release 0.7.6 (30 Sep 2007)
473 ** Things You Need To Know
475 *** 'buildbot upgrade-master'
477 Each time you install a new version of Buildbot, you should run the new
478 'buildbot upgrade-master' command on each of your pre-existing buildmasters.
479 This will add files and fix (or at least detect) incompatibilities between
480 your old config and the new code.
482 *** new WebStatus page
484 The Waterfall has been replaced by the more general WebStatus display,
485 described below. WebStatus serves static files from a new public_html/
486 directory that lives in the buildmaster's basedir. Files like index.html,
487 buildbot.css, and robots.txt are served directly from that directory, so any
488 modifications you wish to make should be made to those files. In particular,
489 any custom CSS you've written should be copied into public_html/buildbot.css.
490 The 'upgrade-master' command will populate this directory for you.
492 The old Waterfall page is deprecated, but it should continue to work for
493 another few releases. It is now a subclass of WebStatus which just replaces
494 the default root URL with another copy of the /waterfall resource.
496 *** Compatibility: Python-2.3 or newer, Twisted-2.0 or newer
498 No compatiblity losses here, buildbot-0.7.6 is compatible with the same
499 versions of python and twisted that 0.7.5 was.
501 Buildbot is tested on a regular basis (http://buildbot.buildbot.net) against
502 nearly a full matrix of Python-(2.3,2.4,2.5) * Twisted-(2.0,2.1,2.2,2.4,2.5).
504 *** New Buildbot Home Page
506 Buildbot has moved to a new Trac instance at http://buildbot.net/ , and all
507 new bugs and tickets should be filed there. The old sourceforge bugs at
508 http://buildbot.sf.net/ will slowly be migrated over. Mailing lists are still
509 managed at sourceforge, and downloads are still available there.
511 *** Changed/Deprecated master.cfg Keys and Classes
513 c['sources'] (plural) has been replaced by c['change_source'] (singular).
515 c['bots'] has been replaced by c['buildslaves'], and it expects a list of
516 BuildSlave instances instead of tuples. See below for more details.
518 The 'freshcvsmail' change source has been deprecated, and will be removed in
519 the next release.
521 The html.Waterfall status target has been deprecated, and replaced by
522 html.WebStatus .
524 ** New Features
526 *** WebStatus
528 The new WebStatus display is a superset of the old Waterfall. It contains a
529 waterfall as a sub-page, but it also contains pages with more compact
530 representations of recent build status. The "one_line_per_build" page
531 contains just that, and "one_box_per_builder" shows just the information from
532 the top of the waterfall page (last-finished-build and current-activity).
534 The initial page (when you hit the root of the web site) is served from
535 index.html, and provides links to the Waterfall as well as the other pages.
537 Most of these pages can be filtered by adding query arguments to the URL.
538 Adding "?builder=XYZ" will cause the page to only show results for the given
539 builder. Adding "?builder=XYZ&builder=ABC" will show results for either
540 builder. "?branch=trunk" will limit the results to builds that involved code
541 from the trunk.
543 The /waterfall page has arguments to hide those annoying "buildslave
544 connected" messages, to start and and at arbitrary times, and to auto-refresh
545 at a chosen interval (with a hardcoded minimum of 15 seconds). It also has a
546 "help" page with forms that will help you add all of these nifty filtering
547 arguments.
549 The recommended practice is to modify the index.html file to include links to
550 the filtered pages that you find most useful.
552 Note that WebStatus defaults to allowForce=False, meaning that the display
553 will not offer or accept "Force Build" or "Stop Build" controls. (The old
554 Waterfall defaults to allowForce=True).
556 The new WebStatus pages try very hard to use only relative links, making life
557 better when the Buildbot sits behind an HTTP reverse proxy.
559 In addition, there is a rudimentary XMLRPC server run by the WebStatus
560 object. It only has two methods so far, but it will acquire more in the
561 future. The first customer of this is a project to add a buildbot plugin to
562 Trac.
564 *** BuildFactory.addStep(Step(args))
566 BuildFactories can be set up either with a complete list of steps, or by
567 calling the .addStep() method repeatedly. The preferred way to provide a step
568 is by instantiating it, rather than giving a class/kwargs pair. This gives
569 the BuildStep class a chance to examine the arguments (and complain about
570 anything it doesn't like) while the config file is being read and problems
571 are being logged. For example, the old-style:
573  from buildbot.process.factory import BuildFactory, s
574  steps = [s(CVS, cvsroot="blah", mode="copy"),
575           s(Compile, command=["make", "all"]),
576           s(Test, command=["make", "test"]),
577          ]
578  f = BuildFactory(steps)
580 is now:
582  f = BuildFactory()
583  f.addStep( CVS(cvsroot="blah", mode="copy") )
584  f.addStep( Compile(command=["make", "all"]) )
585  f.addStep( Test(command=["make", "test"]) )
587 Authors of BuildStep subclasses which override __init__ to add new arguments
588 must register them with self.addFactoryArguments(**newargs) to make sure that
589 those classes will work with this new style, otherwise the new arguments will
590 be lost.
592 Using class/kwargs pairs is deprecated, and will be removed in a future
593 release.
596 *** BuildSlave instances, max_builds=, notify_on_missing=
598 Buildslave specification has changed a lot in this release. The old config:
600  c['bots'] = [ ("bot1name", "bot1passwd"),
601                ("bot2name", "bot2passwd") ]
603 is now:
605  from buildbot.buildslave import BuildSlave
606  c['slaves'] = [ BuildSlave("bot1name", "bot1passwd"),
607                  BuildSlave("bot2name", "bot2passwd") ]
609 This new form gives us the ability to add new controls. The first is
610 "max_builds=", which imposes a concurrency limit that is like the usual
611 SlaveLock, but gives the buildmaster the opportunity to find a different
612 slave to run the build. (the buildslave is chosen before the SlaveLock is
613 claimed, so pure SlaveLocks don't let you take full advantage of build
614 farms).
616 The other addition is "notify_on_missing=", which accepts an email address
617 (or list of addresses), and sends a message when the buildslave has been
618 disconnected for more than an hour (configurable with missing_timeout=). This
619 may be useful when you expect that the buildslave hosts should be available
620 most of the time, and want to investigate the reasons that it went offline.
623 ** Other Improvements
625 The IRC bot has been refactored to make it easier to add instant-messaging
626 status delivery in the future. The IM plugins are not yet written, though.
628 When multiple buildslaves are available for a given build, one of them will
629 be picked at random. In previous releases, the first one on the list was
630 always picked. This helps to add a certain measure of load-balancing. More
631 improvements will be made in the future.
633 When the buildslave does a VC checkout step that requires clobbering the
634 build directory (i.e. in all modes except for 'update'), the buildslave will
635 first set the permissions on all build files to allow their deletion, before
636 it attempts to delete them. This should fix some problems in which a build
637 process left non-user-writable files lying around (frequently a result of
638 enthusiastic unit tests).
640 The BuildStep's workdir= argument can now accept a WithProperties()
641 specification, allowing greater control over the workdir.
643 Support for the 'Bazaar' version control system (/usr/bin/bzr) has been
644 added, using the buildbot.steps.source.Bzr class. This is a replacement for
645 the old 'Arch' (/usr/bin/tla and /usr/bin/baz) systems, which are still
646 supported by Buildbot with the source.Arch and source.Bazaar classes,
647 respectively. Unfortunately the old baz system claimed the 'Bazaar' classname
648 early, so the new system must use source.Bzr instead of the desired
649 source.Bazaar . A future release might change this.
651 A rudimentary Gnome Panel applet is provided in contrib/bb_applet.py, which
652 provides 'buildbot statusgui' -like colored status boxes inside the panel.
653 Installing it is a bit tricky, though.
655 The 'buildbot try' command now accepts a '--diff=foo.patch' argument, to let
656 you provide a pre-computed patch. This makes it easier to test out patches
657 that you've looked over for safety, without first applying them to your local
658 source tree.
660 A new Mercurial change source was added, hg_buildbot.py, which runs as an
661 in-process post-commit hook. This gives us access to much more information
662 about the change, as well as being much faster.
664 The email-based changesource have been refactored, to make it easier to write
665 new mail parsers. A parser for the SVN "commit-email.pl" script has been
666 added.
668 ** Bugs Fixed
670 Far too many to count. Please see
671 http://buildbot.net/trac/query?status=closed&milestone=0.7.6 for a partial
672 list of tickets closed for this release, and the ChangeLog for a complete
673 list of all changes since 0.7.5 .
676 * Release 0.7.5 (10 Dec 2006)
678 ** Things You Need To Know
680 *** The Great BuildStep Renaming
682 All BuildSteps have moved! They used to be classes in buildbot.process.step,
683 but now they all have separate modules in buildbot.steps.* . They have been
684 split out into separate categories: for example, the source checkout steps
685 are now buildbot.steps.source.CVS, buildbot.steps.source.Darcs, etc. The most
686 commonly used one is probably buildbot.steps.shell.ShellCommand . The
687 python-specific steps are in buildbot.steps.python, and the Twisted-specific
688 steps are in buildbot.steps.python_twisted .
690 You will need to update your master.cfg files to use the new names. The old
691 names are deprecated and will be removed altogether in the next release.
693 *** Compatibility
695 Buildbot now requires python-2.3 or later. Buildbot now requires
696 Twisted-2.0.0 or later. Support for earlier versions of both has finally been
697 removed. If you discover it works with unsupported versions, please return
698 your Buildbot to the factory for repairs :-).
700 Buildbot has *not* yet been tested against the recent python-2.5 release. It
701 has been tested against the latest SVN version of Twisted, but only in
702 conjunction with python-2.4 .
704 ** new features
706 *** reconfiguring a Builder no longer causes a disconnect/reconnect cycle
708 This means that sending SIGHUP to the master or running 'buildbot reconfig
709 MASTERDIR' command no longer interrupts any current builds, nor does it lose
710 pending builds like it did before. This involved a fairly substantial
711 refactoring of the various internal BotPerspective/BotMaster/Builder classes.
712 Note that reconfiguring Schedulers still loses any Changes that were waiting
713 for the tree to become stable: hopefully this will be fixed in the next
714 release.
716 *** 'buildbot start/restart/reconfig' now show logs until startup is complete
718 These commands now have additional code to follow twistd.log and display all
719 the lines that are emitted from the beginning of the start/reconfig action
720 until it has completed. This gives you a chance to see any problems detected
721 in the config file without needing to manually look in twistd.log or use
722 another shell to 'tail -f' it. This also makes it clear which config file is
723 being used. This functionality is not available under windows.
725 In addition, if any problems are detected during 'start' or 'restart' (but
726 not reconfig), the buildbot command will terminate with a non-zero exit
727 status, making it easier to use in scripts. Closes SF#1517975.
729 *** Locks now take maxCount=N to allow multiple simultaneous owners
731 This allows Locks to be non-exclusive but still limit maximum concurrency.
732 Thanks to James Knight for the patch. Closes SF#1434997.
734 *** filetransfer steps
736 buildbot.steps.transfer.FileUpload is a buildstep that will move files from
737 the slave to the master. Likewise, FileDownload will move files from the
738 master down to the buildslave. Many thanks to Albert Hofkamp for contributing
739 these classes. Closes SF#1504631.
741 *** pyflakes step
743 buildbot.steps.python.PyFlakes will run the simple 'pyflakes' static analysis
744 tool and parse the results to tell you about undefined names, unused imports,
745 etc. You'll need to tell it how to run pyflakes, usually with something like
746 command=["pyflakes", "src/packagedir"] or the like. The default command is
747 "make pyflakes", which assumes that you have a suitable target in your
748 top-level Makefile.
750 *** Monotone support
752 Nathaniel Smith has contributed initial support for the Monotone version
753 control system. The code still needs docs and tests, but on the other hand it
754 has been in use by the Monotone buildbot for a long time now, so it is
755 probably fairly stable.
757 *** Tinderbox support
759 Ben Hearsum and the Mozilla crew have contributed some classes to allow
760 Buildbot to work with Tinderbox clients. One piece is
761 buildbot.changes.bonsaipoller.BonsaiPoller, which is a ChangeSource that
762 polls a Bonsai server (which is a kind of web-vased viewcvs CGI script) to
763 discover source code changes. The other piece is
764 buildbot.status.tinderbox.TinderboxMailNotifier, which is a status plugin
765 that sends email in the same format as Tinderbox does, which allows a number
766 of Tinderbox tools to be driven by Buildbot instead.
768 *** SVN Poller
770 Niklaus Giger contributed a ChangeSource (buildbot.changes.svnpoller) which
771 polls a remote SVN repository on a periodic basis. This is useful when, for
772 whatever reason, you cannot add a post-commit hook script to the repository.
773 This obsoletes the external contrib/svn_watcher.py script.
775 ** notes for plugin developers
777 *** IStatusLog.readlines()
779 This new method makes it easier for a status plugin (or a
780 BuildStep.createSummary method) to walk through a StatusLog one line at a
781 time. For example, if you wanted to create an extra logfile that just
782 contained all the GCC warnings from the main log, you could use the
783 following:
785     def createSummary(self, log):
786         warnings = []
787         for line in log.readlines():
788             if "warning:" in line:
789                 warnings.append()
790         self.addCompleteLog('warnings', "".join(warnings))
792 The "BuildStep LogFiles" section of the user's manual contains more
793 information. This method is not particularly memory-efficient yet (it reads
794 the whole logfile into memory first, then splits it into lines); this will be
795 improved in a future release.
797 ** bug fixes
799 *** Update source.SVN to work with the new SVN-1.4.0
801 The latest subversion changed the behavior in an unusual situation which
802 caused the unit tests to fail. This was unlikely to cause a problem in actual
803 usage, but the tests have been updated to pass with the new version.
805 *** update svn_buildbot.py to avoid mangling filenames
807 Older versions of this script were stripping the wrong number of columns from
808 the output of 'svnlook changed', and would sometimes mangle filenames. This
809 has been fixed. Closes SF#1545146.
811 *** logfiles= caused subsequent build failures under Windows
813 Earlier versions of buildbot didn't explicitly close any logfiles= file
814 handles when the build finished. On windows (where you cannot delete a file
815 that someone else is reading), this could cause the next build to fail as the
816 source checkout step was unable to delete the old working directory. This has
817 been fixed. Closes SF#1568415.
819 *** logfiles= didn't work on OS-X
821 Macintosh OS-X has a different behavior when reading files that have reached
822 EOF, the result was that logfiles= sometimes didn't work. Thanks to Mark Rowe
823 for the patch.
825 ** other changes
827 The 'buildbot sighup MASTERDIR' command has been replaced with 'buildbot
828 reconfig MASTERDIR', since that seems to be a slightly more meaningful name.
829 The 'sighup' form will remain as an alias.
832 * Release 0.7.4 (23 Aug 2006)
834 ** Things You Need To Know
836 The PBChangeSource's prefix= argument has changed, you probably need to add a
837 slash now. This is mostly used by sites which use Subversion and
838 svn_buildbot.py.
840 The subcommands that are used to create a buildmaster or a buildslave have
841 changed. They used to be called 'buildbot master' and 'buildbot slave'. Now
842 they are called 'buildbot create-master' and 'buildbot create-slave'. Zipf's
843 Law suggests that these are more appropriate names for these
844 infrequently-used commands.
846 The syntax for the c['manhole'] feature has changed.
848 ** new features
850 *** full Perforce support
852 SF#1473939: large patch from Scott Lamb, with docs and unit tests! This
853 includes both the step.P4 source-checkout BuildStep, and the changes.p4poller
854 ChangeSource you'll want to feed it. P4 is now supported just as well as all
855 the other VC systems. Thanks Scott!
857 *** SSH-based Manhole
859 The 'manhole' feature allows buildbot developers to get access to a python
860 read/eval/print loop (REPL) inside the buildmaster through a network
861 connection. Previously, this ran over unencrypted telnet, using a simple
862 username/password for access control. The new release defaults to encrypted
863 SSH access, using either username/password or an authorized_keys file (just
864 like sshd). There also exists an unencrypted telnet form, but its use is
865 discouraged. The syntax for setting up a manhole has changed, so master.cfg
866 files that use them must be updated. The "Debug options" section in the
867 user's manual provides a complete description.
869 *** Multiple Logfiles
871 BuildSteps can watch multiple log files in realtime, not just stdout/stderr.
872 This works in a similar fashion to 'tail -f': the file is polled once per
873 second, and any new data is sent to the buildmaster.
875 This requires a buildslave running 0.7.4 or later, and a warning message is
876 produced if used against an old buildslave (which will otherwise produce no
877 data). Use "logfiles={'name': 'filename'}" to take advantage of this feature
878 from master.cfg, and see the "ShellCommand" section of the user's manual for
879 full documentation.
881 The 'Trial' buildstep has been updated to use this, to display
882 _trial_temp/test.log in realtime. It also knows to fall back to the previous
883 "cat" command if the buildslave is too old.
885 *** BuildStep URLs
887 BuildSteps can now add arbitrary URLs which will be displayed on the
888 Waterfall page in the same place that Logs are presented. This is intended to
889 provide a link to generated HTML pages, such as the output of a code coverage
890 tool. The step is responsible for somehow uploading the HTML to a web server:
891 this feature merely provides an easy way to present the HREF link to the
892 user. See the "BuildStep URLs" section of the user's manual for details and
893 examples.
895 *** LogObservers
897 BuildSteps can now attach LogObservers to various logfiles, allowing them to
898 get real-time log output. They can use this to watch for progress-indicating
899 events (like counting the number of files compiled, or the number of tests
900 which have run), and update both ETA/progress-tracking and step text. This
901 allows for more accurate ETA information, and more information passed to the
902 user about how much of the process has completed.
904 The 'Trial' buildstep has been updated to use this for progress tracking, by
905 counting how many test cases have run.
907 ** new documentation
909 What classes are useful in your master.cfg file? A table of them has been
910 added to the user's manual, in a section called "Index of Useful Classes".
912 Want a list of all the keys in master.cfg? Look in the "Index of master.cfg
913 keys" section.
915 A number of pretty diagrams have been added to the "System Architecture"
916 portion of the manual, explaining how all the buildbot pieces fit together.
918 An HTML form of the user's manual is now shipped in the source tarball. This
919 makes it a bit bigger: sorry about that. The old PyCon-2003 paper has been
920 removed from the distribution, as it is mostly supplanted by the user's
921 manual by this point.
923 ** bugfixes
925 SF#1217699 + SF#1381867: The prefix= argument to PBChangeSource has been
926 changed: now it does just a simple string-prefix match and strip. The
927 previous behavior was buggy and unhelpful. NOTE: if you were using prefix=
928 before, you probably need to add a slash to the end of it.
930 SF#1398174: ignore SVN property changes better, fixed by Olivier Bonnet
932 SF#1452801: don't double-escape the build URL, fixed by Olivier Bonnet
934 SF#1401121: add support for running py2exe on windows, by Mark Hammond
936 reloading unchanged config files with WithProperties shouldn't change anything.
938 All svn commands now include --non-interactive so they won't ask for
939 passwords. Instead, the command will fail if it cannot be performed without
940 user input.
942 Deprecation warnings with newer versions of Twisted have been hushed.
944 ** compatibility
946 I haven't actually removed support for Twisted-1.3.0 yet, but I'd like to.
948 The step_twisted default value for --reporter matches modern Twisteds,
949 though, and won't work under 1.3.0.
951 ShellCommand.flunkOnFailure now defaults to True, so any shell command which
952 fails counts as a build failure. Set this to False if you don't want this
953 behavior.
955 ** minor features
957 contrib/darcs_buildbot.py contains a new script suitable for use in a darcs
958 commit-hook.
960 Hovering a cursor over the yellow "Build #123" box in the Waterfall display
961 will pop up an HTML tooltip to show the reason for the build. Thanks to Zandr
962 Milewski for the suggestion.
964 contrib/CSS/*.css now contains several contributed stylesheets to make the
965 Waterfall display a bit less ugly. Thanks to John O'Duinn for gathering them.
967 ShellCommand and its derivatives can now accept either a string or a list of
968 strings in the description= and descriptionDone= arguments. Thanks to Paul
969 Winkler for the catch.
972 * Release 0.7.3 (23 May 2006)
974 ** compatibility
976 This release is compatible with Twisted-1.3.0, but the next one will not be.
977 Please upgrade to at least Twisted-2.0.x soon, as the next buildbot release
978 will require it.
980 ** new features
982 *** Mercurial support
984 Support for Mercurial version control system (http://selenic.com/mercurial)
985 has been added. This adds a buildbot.process.step.Mercurial BuildStep. A
986 suitable hook script to deliver changes to the buildmaster is still missing.
988 *** 'buildbot restart' command
990 The 'buildbot restart BASEDIR' command will perform a 'buildbot stop' and
991 'buildbot start', and will attempt to wait for the buildbot process to shut
992 down in between. This is useful when you need to upgrade the code on your
993 buildmaster or buildslave and want to take it down for a minimum amount of
994 time.
996 *** build properties
998 Each build now has a set of named "Build Properties", which can be set by
999 steps and interpolated into ShellCommands. The 'revision' and 'got_revision'
1000 properties are the most interesting ones available at this point, and can be
1001 used e.g. to get the VC revision number into the filename of a generated
1002 tarball. See the user's manual section entited "Build Properties" for more
1003 details.
1005 ** minor features
1007 *** IRC now takes password= argument
1009 Useful for letting your bot claim a persistent identity.
1011 *** svn_buildbot.py is easier to modify to understand branches
1012 *** BuildFactory has a new .addStep method
1013 *** p4poller has new arguments
1014 *** new contrib scripts: viewcvspoll, svnpoller, svn_watcher
1016 These poll an external VC repository to watch for changes, as opposed to
1017 adding a hook script to the repository that pushes changes into the
1018 buildmaster. This means higher latency but may be easier to configure,
1019 especially if you do not have authority on the repository host.
1021 *** VC build property 'got_revision'
1023 The 'got_revision' property reports what revision a VC step actually
1024 acquired, which may be useful to know when building from HEAD.
1026 *** improved CSS in Waterfall
1028 The Waterfall display has a few new class= tags, which may make it easier to
1029 write custom CSS to make it look prettier.
1031 *** robots_txt= argument in Waterfall
1033 You can now pass a filename to the robots_txt= argument, which will be served
1034 as the "robots.txt" file. This can be used to discourage search engine
1035 spiders from crawling through the numerous build-status pages.
1037 ** bugfixes
1039 *** tests more likely to pass on non-English systems
1041 The unit test suite now sets $LANG='C' to make subcommands emit error
1042 messages in english instead of whatever native language is in use on the
1043 host. This improves the chances that the unit tests will pass on such
1044 systems. This affects certain VC-related subcommands too.
1046 test_vc was assuming that the system time was expressed with a numeric
1047 timezone, which is not always the case, especially under windows. This
1048 probably works better now than it did before. This only affects the CVS
1049 tests.
1051 'buildbot try' (for CVS) now uses UTC instead of the local timezone. The
1052 'got_revision' property is also expressed in UTC. Both should help deal with
1053 buggy versions of CVS that don't parse numeric timezones properly.
1056 * Release 0.7.2 (17 Feb 2006)
1058 ** new features
1060 *** all TCP port numbers in config file now accept a strports string
1062 Sometimes it is useful to restrict certain TCP ports that the buildmaster
1063 listens on to use specific network interfaces. In particular, if the
1064 buildmaster and SVN repository live on the same machine, you may want to
1065 restrict the PBChangeSource to only listen on the loopback interface,
1066 insuring that no external entities can inject Changes into the buildbot.
1067 Likewise, if you are using something like Apache's reverse-proxy feature to
1068 provide access to the buildmaster's HTML status page, you might want to hide
1069 the real Waterfall port by having it only bind to the loopback interface.
1071 To accomplish this, use a string like "tcp:12345:interface=" instead
1072 of a number like 12345. These strings are called "strports specification
1073 strings", and are documented in twisted's twisted.application.strports module
1074 (you can probably type 'pydoc twisted.application.strports' to see this
1075 documentation). Pretty much everywhere the buildbot takes a port number will
1076 now accept a strports spec, and any bare numbers are translated into TCP port
1077 numbers (listening on all network interfaces) for compatibility.
1079 *** buildslave --umask control
1081 Twisted's daemonization utility (/usr/bin/twistd) automatically sets the
1082 umask to 077, which means that all files generated by both the buildmaster
1083 and the buildslave will only be readable by the account under which the
1084 respective daemon is running. This makes it unnecessarily difficult to share
1085 build products (e.g. by symlinking ~/public_html/current_docs/ to a directory
1086 within the slave's build directory where each build puts the results of a
1087 "make docs" step).
1089 The 'buildbot slave <PARAMS>' command now accepts a --umask argument, which
1090 can be used to override the umask set by twistd. If you create the buildslave
1091 with '--umask=022', then all build products will be world-readable, making it
1092 easier for other processes (run under other accounts) to access them.
1094 ** bug fixes
1096 The 0.7.1 release had a bug whereby reloading the config file could break all
1097 configured Schedulers, causing them to raise an exception when new changes
1098 arrived but not actually schedule a new build. This has been fixed.
1100 Fixed a bug which caused the AnyBranchScheduler to explode when branch==None.
1101 Thanks to Kevin Turner for the catch. I also think I fixed a bug whereby the
1102 TryScheduler would explode when it was given a Change (which it is supposed
1103 to simply ignore).
1105 The Waterfall display now does more quoting of names (including Builder
1106 names, BuildStep names, etc), so it is more likely that these names can
1107 contain unusual characters like spaces, quotes, and slashes. There may still
1108 be some problems with these kinds of names, however.. please report any bugs
1109 to the mailing list.
1112 * Release 0.7.1 (26 Nov 2005)
1114 ** new features
1116 *** scheduler.Nightly
1118 Dobes Vandermeer contributed a cron-style 'Nightly' scheduler. Unlike the
1119 more-primitive Periodic class (which only lets you specify the duration
1120 between build attempts), Nightly lets you schedule builds for specific times
1121 of day, week, month, or year. The interface is very much like the crontab(5)
1122 file. See the buildbot.scheduler.Nightly docstring for complete details.
1124 ** minor new features
1126 *** step.Trial can work with Trial from Twisted >2.1.0
1128 The 'Trial' step now accepts the trialMode= argument, which should be a list
1129 of strings to be added to trial's argv array. This defaults to ["-to"], which
1130 is appropriate for the Trial that ships in Twisted-2.1.0 and earlier, and
1131 tells Trial to emit non-colorized verbose output. To use this step with
1132 trials from later versions of Twisted, this should be changed to
1133 ["--reporter=bwverbose"].
1135 In addition, you can now set other Trial command-line parameters through the
1136 trialArgs= argument. This is a list of strings, and defaults to an empty list.
1138 *** Added a 'resubmit this build' button to the web page
1140 *** Make the VC-checkout step's description more useful
1142 Added the word "[branch]" to the VC step's description (used in the Step's
1143 box on the Waterfall page, among others) when we're checking out a
1144 non-default branch. Also add "rNNN" where appropriate to indicate which
1145 revision is being checked out. Thanks to Brad Hards and Nathaniel Smith for
1146 the suggestion.
1148 ** bugs fixed
1150 Several patches from Dobes Vandermeer: Escape the URLs in email, in case they
1151 have spaces and such. Fill otherwise-empty <td> elements, as a workaround for
1152 buggy browsers that might optimize them away. Also use binary mode when
1153 opening status pickle files, to make windows work better. The
1154 AnyBranchScheduler now works even when you don't provide a fileIsImportant=
1155 argument.
1157 Stringify the base revision before stuffing it into a 'try' jobfile, helping
1158 SVN and Arch implement 'try' builds better. Thanks to Steven Walter for the
1159 patch.
1161 Fix the compare_attrs list in PBChangeSource, FreshCVSSource, and Waterfall.
1162 Before this, certain changes to these objects in the master.cfg file were
1163 ignored, such that you would have to stop and re-start the buildmaster to
1164 make them take effect.
1166 The config file is now loaded serially, shutting down old (or replaced)
1167 Status/ChangeSource plugins before starting new ones. This fixes a bug in
1168 which changing an aspect of, say, the Waterfall display would cause an
1169 exception as both old and new instances fight over the same TCP port. This
1170 should also fix a bug whereby new Periodic Schedulers could fire a build
1171 before the Builders have finished being added.
1173 There was a bug in the way Locks were handled when the config file was
1174 reloaded: changing one Builder (but not the others) and reloading master.cfg
1175 would result in multiple instances of the same Lock object, so the Locks
1176 would fail to prevent simultaneous execution of Builds or Steps. This has
1177 been fixed.
1179 ** other changes
1181 For a long time, certain StatusReceiver methods (like buildStarted and
1182 stepStarted) have been able to return another StatusReceiver instance
1183 (usually 'self') to indicate that they wish to subscribe to events within the
1184 new object. For example, if the buildStarted() method returns 'self', the
1185 status receiver will also receive events for the new build, like
1186 stepStarted() and buildETAUpdate(). Returning a 'self' from buildStarted() is
1187 equivalent to calling build.subscribe(self).
1189 Starting with buildbot-0.7.1, this auto-subscribe convenience will also
1190 register to automatically unsubscribe the target when the build or step has
1191 finished, just as if build.unsubscribe(self) had been called. Also, the
1192 unsubscribe() method has been changed to not explode if the same receiver is
1193 unsubscribed multiple times. (note that it will still explode is the same
1194 receiver is *subscribed* multiple times, so please continue to refrain from
1195 doing that).
1198 * Release 0.7.0 (24 Oct 2005)
1200 ** new features
1202 *** new c['schedulers'] config-file element (REQUIRED)
1204 The code which decides exactly *when* a build is performed has been massively
1205 refactored, enabling much more flexible build scheduling. YOU MUST UPDATE
1206 your master.cfg files to match: in general this will merely require you to
1207 add an appropriate c['schedulers'] entry. Any old ".treeStableTime" settings
1208 on the BuildFactory instances will now be ignored. The user's manual has
1209 complete details with examples of how the new Scheduler classes work.
1211 *** c['interlocks'] removed, Locks and Dependencies now separate items
1213 The c['interlocks'] config element has been removed, and its functionality
1214 replaced with two separate objects. Locks are used to tell the buildmaster
1215 that certain Steps or Builds should not run at the same time as other Steps
1216 or Builds (useful for test suites that require exclusive access to some
1217 external resource: of course the real fix is to fix the tests, because
1218 otherwise your developers will be suffering from the same limitations). The
1219 Lock object is created in the config file and then referenced by a Step
1220 specification tuple or by the 'locks' key of the Builder specification
1221 dictionary. Locks come in two flavors: MasterLocks are buildmaster-wide,
1222 while SlaveLocks are specific to a single buildslave.
1224 When you want to have one Build run or not run depending upon whether some
1225 other set of Builds have passed or failed, you use a special kind of
1226 Scheduler defined in the scheduler.Dependent class. This scheduler watches an
1227 upstream Scheduler for builds of a given source version to complete, and only
1228 fires off its own Builders when all of the upstream's Builders have built
1229 that version successfully.
1231 Both features are fully documented in the user's manual.
1233 *** 'buildbot try'
1235 The 'try' feature has finally been added. There is some configuration
1236 involved, both in the buildmaster config and on the developer's side, but
1237 once in place this allows the developer to type 'buildbot try' in their
1238 locally-modified tree and to be given a report of what would happen if their
1239 changes were to be committed. This works by computing a (base revision,
1240 patch) tuple that describes the developer's tree, sending that to the
1241 buildmaster, then running a build with that source on a given set of
1242 Builders. The 'buildbot try' tool then emits status messages until the builds
1243 have finished.
1245 'try' exists to allow developers to run cross-platform tests on their code
1246 before committing it, reducing the chances they will inconvenience other
1247 developers by breaking the build. The UI is still clunky, but expect it to
1248 change and improve over the next few releases.
1250 Instructions for developers who want to use 'try' (and the configuration
1251 changes necessary to enable its use) are in the user's manual.
1253 *** Build-On-Branch
1255 When suitably configured, the buildbot can be used to build trees from a
1256 variety of related branches. You can set up Schedulers to build a tree using
1257 whichever branch was last changed, or users can request builds of specific
1258 branches through IRC, the web page, or (eventually) the CLI 'buildbot force'
1259 subcommand.
1261 The IRC 'force' command now takes --branch and --revision arguments (not that
1262 they always make sense). Likewise the HTML 'force build' button now has an
1263 input field for branch and revision. Your build's source-checkout step must
1264 be suitably configured to support this: for SVN it involves giving both a
1265 base URL and a default branch. Other VC systems are configured differently.
1266 The ChangeSource must also provide branch information: the 'buildbot
1267 sendchange' command now takes a --branch argument to help hook script writers
1268 accomplish this.
1270 *** Multiple slaves per Builder
1272 You can now attach multiple buildslaves to each Builder. This can provide
1273 redundancy or primitive load-balancing among many machines equally capable of
1274 running the build. To use this, define a key in the Builder specification
1275 dictionary named 'slavenames' with a list of buildslave names (instead of the
1276 usual 'slavename' that contains just a single slavename).
1278 *** minor new features
1280 The IRC and email status-reporting facilities now provide more specific URLs
1281 for particular builds, in addition to the generic buildmaster home page. The
1282 HTML per-build page now has more information.
1284 The Twisted-specific test classes have been modified to match the argument
1285 syntax preferred by Trial as of Twisted-2.1.0 and newer. The generic trial
1286 steps are still suitable for the Trial that comes with older versions of
1287 Twisted, but may produce deprecation warnings or errors when used with the
1288 latest Trial.
1290 ** bugs fixed
1292 DNotify, used by the maildir-watching ChangeSources, had problems on some
1293 64-bit systems relating to signed-vs-unsigned constants and the DN_MULTISHOT
1294 flag. A workaround was provided by Brad Hards.
1296 The web status page should now be valid XHTML, thanks to a patch by Brad
1297 Hards. The charset parameter is specified to be UTF-8, so VC comments,
1298 builder names, etc, should probably all be in UTF-8 to be displayed properly.
1300 ** creeping version dependencies
1302 The IRC 'force build' command now requires python2.3 (for the shlex.split
1303 function).
1306 * Release 0.6.6 (23 May 2005)
1308 ** bugs fixed
1310 The 'sendchange', 'stop', and 'sighup' subcommands were broken, simple bugs
1311 that were not caught by the test suite. Sorry.
1313 The 'buildbot master' command now uses "raw" strings to create .tac files
1314 that will still function under windows (since we must put directory names
1315 that contain backslashes into that file).
1317 The keep-on-disk behavior added in 0.6.5 included the ability to upgrade old
1318 in-pickle LogFile instances. This upgrade function was not added to the
1319 HTMLLogFile class, so an exception would be raised when attempting to load or
1320 display any build with one of these logs (which are normally used only for
1321 showing build exceptions). This has been fixed.
1323 Several unnecessary imports were removed, so the Buildbot should function
1324 normally with just Twisted-2.0.0's "Core" module installed. (of course you
1325 will need TwistedWeb, TwistedWords, and/or TwistedMail if you use status
1326 targets that require them). The test suite should skip all tests that cannot
1327 be run because of missing Twisted modules.
1329 The master/slave's basedir is now prepended to sys.path before starting the
1330 daemon. This used to happen implicitly (as a result of twistd's setup
1331 preamble), but 0.6.5 internalized the invocation of twistd and did not copy
1332 this behavior. This change restores the ability to access "private.py"-style
1333 modules in the basedir from the master.cfg file with a simple "import
1334 private" statement. Thanks to Thomas Vander Stichele for the catch.
1337 * Release 0.6.5 (18 May 2005)
1339 ** deprecated config keys removed
1341 The 'webPortnum', 'webPathname', 'irc', and 'manholePort' config-file keys,
1342 which were deprecated in the previous release, have now been removed. In
1343 addition, Builders must now always be configured with dictionaries: the
1344 support for configuring them with tuples has been removed.
1346 ** master/slave creation and startup changed
1348 The buildbot no longer uses .tap files to store serialized representations of
1349 the buildmaster/buildslave applications. Instead, this release now uses .tac
1350 files, which are human-readable scripts that create new instances (rather
1351 than .tap files, which were pickles of pre-created instances). 'mktap
1352 buildbot' is gone.
1354 You will need to update your buildbot directories to handle this. The
1355 procedure is the same as creating a new buildmaster or buildslave: use
1356 'buildbot master BASEDIR' or 'buildbot slave BASEDIR ARGS..'. This will
1357 create a 'buildbot.tac' file in the target directory. The 'buildbot start
1358 BASEDIR' will use twistd to start the application.
1360 The 'buildbot start' command now looks for a Makefile.buildbot, and if it
1361 finds one (and /usr/bin/make exists), it will use it to start the application
1362 instead of calling twistd directly. This allows you to customize startup,
1363 perhaps by adding environment variables. The setup commands create a sample
1364 file in Makefile.sample, but you must copy this to Makefile.buildbot to
1365 actually use it. The previous release looked for a bare 'Makefile', and also
1366 installed a 'Makefile', so you were always using the customized approach,
1367 even if you didn't ask for it. That old Makefile launched the .tap file, so
1368 changing names was also necessary to make sure that the new 'buildbot start'
1369 doesn't try to run the old .tap file.
1371 'buildbot stop' now uses os.kill instead of spawning an external process,
1372 making it more likely to work under windows. It waits up to 5 seconds for the
1373 daemon to go away, so you can now do 'buildbot stop BASEDIR; buildbot start
1374 BASEDIR' with less risk of launching the new daemon before the old one has
1375 fully shut down. Likewise, 'buildbot start' imports twistd's internals
1376 directly instead of spawning an external copy, so it should work better under
1377 windows.
1379 ** new documentation
1381 All of the old Lore-based documents were converted into a new Texinfo-format
1382 manual, and considerable new text was added to describe the installation
1383 process. The docs are not yet complete, but they're slowly shaping up to form
1384 a proper user's manual.
1386 ** new features
1388 Arch checkouts can now use precise revision stamps instead of always using
1389 the latest revision. A separate Source step for using Bazaar (an alternative
1390 Arch client) instead of 'tla' was added. A Source step for Cogito (the new
1391 linux kernel VC system) was contributed by Brandon Philips. All Source steps
1392 now accept a retry= argument to indicate that failing VC checkouts should be
1393 retried a few times (SF#1200395), note that this requires an updated
1394 buildslave.
1396 The 'buildbot sendchange' command was added, to be used in VC hook scripts to
1397 send changes at a pb.PBChangeSource . contrib/arch_buildbot.py was added to
1398 use this tool; it should be installed using the 'Arch meta hook' scheme.
1400 Changes can now accept a branch= parameter, and Builders have an
1401 isBranchImportant() test that acts like isFileImportant(). Thanks to Thomas
1402 Vander Stichele. Note: I renamed his tag= to branch=, in anticipation of an
1403 upcoming feature to build specific branches. "tag" seemed too CVS-centric.
1405 LogFiles have been rewritten to stream the incoming data directly to disk
1406 rather than keeping a copy in memory all the time (SF#1200392). This
1407 drastically reduces the buildmaster's memory requirements and makes 100MB+
1408 log files feasible. The log files are stored next to the serialized Builds,
1409 in files like BASEDIR/builder-dir/12-log-compile-output, so you'll want a
1410 cron job to delete old ones just like you do with old Builds. Old-style
1411 Builds from 0.6.4 and earlier are converted when they are first read, so the
1412 first load of the Waterfall display after updating to this release may take
1413 quite some time.
1415 ** build process updates
1417 BuildSteps can now return a status of EXCEPTION, which terminates the build
1418 right away. This allows exceptions to be caught right away, but still make
1419 sure the build stops quickly.
1421 ** bug fixes
1423 Some more windows incompatibilities were fixed. The test suite now has two
1424 failing tests remaining, both of which appear to be Twisted issues that
1425 should not affect normal operation.
1427 The test suite no longer raises any deprecation warnings when run against
1428 twisted-2.0 (except for the ones which come from Twisted itself).
1431 * Release 0.6.4 (28 Apr 2005)
1433 ** major bugs fixed
1435 The 'buildbot' tool in 0.6.3, when used to create a new buildmaster, failed
1436 unless it found a 'changes.pck' file. As this file is created by a running
1437 buildmaster, this made 0.6.3 completely unusable for first-time
1438 installations. This has been fixed.
1440 ** minor bugs fixed
1442 The IRC bot had a bug wherein asking it to watch a certain builder (the "I'll
1443 give a shout when the build finishes" message) would cause an exception, so
1444 it would not, in fact, shout. The HTML page had an exception in the "change
1445 sources" page (reached by following the "Changes" link at the top of the
1446 column that shows the names of commiters). Re-loading the config file while
1447 builders were already attached would result in a benign error message. The
1448 server side of the PBListener status client had an exception when providing
1449 information about a non-existent Build (e.g., when the client asks for the
1450 Build that is currently running, and the server says "None").
1452 These bugs have all been fixed.
1454 The unit tests now pass under python2.2; they were failing before because of
1455 some 2.3isms that crept in. More unit tests which failed under windows now
1456 pass, only one (test_webPathname_port) is still failing.
1458 ** 'buildbot' tool looks for a .buildbot/options file
1460 The 'statusgui' and the 'debugclient' subcommands can both look for a
1461 .buildbot/ directory, and an 'options' file therein, to extract default
1462 values for the location of the buildmaster. This directory is searched in the
1463 current directory, its parent, etc, all the way up to the filesystem root
1464 (assuming you own the directories in question). It also look in ~/.buildbot/
1465 for this file. This feature allows you to put a .buildbot at the top of your
1466 working tree, telling any 'buildbot' invocations you perform therein how to
1467 get to the buildmaster associated with that tree's project.
1469 Windows users get something similar, using %APPDATA%/buildbot instead of
1470 ~/.buildbot .
1472 ** windows ShellCommands are launched with 'cmd.exe'
1474 The buildslave has been modified to run all list-based ShellCommands by
1475 prepending [os.environ['COMSPEC'], '/c'] to the argv list before execution.
1476 This should allow the buildslave's PATH to be searched for commands,
1477 improving the chances that it can run the same 'trial -o foo' commands as a
1478 unix buildslave. The potential downside is that spaces in argv elements might
1479 be re-parsed, or quotes might be re-interpreted. The consensus on the mailing
1480 list was that this is a useful thing to do, but please report any problems
1481 you encounter with it.
1483 ** minor features
1485 The Waterfall display now shows the buildbot's home timezone at the top of
1486 the timestamp column. The default favicon.ico is now much nicer-looking (it
1487 is generated with Blender.. the icon.blend file is available in CVS in
1488 docs/images/ should you care to play with it).
1492 * Release 0.6.3 (25 Apr 2005)
1494 ** 'buildbot' tool gets more uses
1496 The 'buildbot' executable has acquired three new subcommands. 'buildbot
1497 debugclient' brings up the small remote-control panel that connects to a
1498 buildmaster (via the slave port and the c['debugPassword']). This tool,
1499 formerly in contrib/debugclient.py, lets you reload the config file, force
1500 builds, and simulate inbound commit messages. It requires gtk2, glade, and
1501 the python bindings for both to be installed.
1503 'buildbot statusgui' brings up a live status client, formerly available by
1504 running buildbot/clients/gtkPanes.py as a program. This connects to the PB
1505 status port that you create with:
1507   c['status'].append(client.PBListener(portnum))
1509 and shows two boxes per Builder, one for the last build, one for current
1510 activity. These boxes are updated in realtime. The effect is primitive, but
1511 is intended as an example of what's possible with the PB status interface.
1513 'buildbot statuslog' provides a text-based running log of buildmaster events.
1515 Note: command names are subject to change. These should get much more useful
1516 over time.
1518 ** web page has a favicon
1520 When constructing the html.Waterfall instance, you can provide the filename
1521 of an image that will be provided when the "favicon.ico" resource is
1522 requested. Many web browsers display this as an icon next to the URL or
1523 bookmark. A goofy little default icon is included.
1525 ** web page has CSS
1527 Thanks to Thomas Vander Stichele, the Waterfall page is now themable through
1528 CSS. The default CSS is located in buildbot/status/classic.css, and creates a
1529 page that is mostly identical to the old, non-CSS based table.
1531 You can specify a different CSS file to use by passing it as the css=
1532 argument to html.Waterfall(). See the docstring for Waterfall for some more
1533 details.
1535 ** builder "categories"
1537 Thomas has added code which places each Builder in an optional "category".
1538 The various status targets (Waterfall, IRC, MailNotifier) can accept a list
1539 of categories, and they will ignore any activity in builders outside this
1540 list. This makes it easy to create some Builders which are "experimental" or
1541 otherwise not yet ready for the world to see, or indicate that certain
1542 builders should not harass developers when their tests fail, perhaps because
1543 the build slaves for them are not yet fully functional.
1545 ** Deprecated features
1547 *** defining Builders with tuples is deprecated
1549 For a long time, the preferred way to define builders in the config file has
1550 been with a dictionary. The less-flexible old style of a 4-item tuple (name,
1551 slavename, builddir, factory) is now officially deprecated (i.e., it will
1552 emit a warning if you use it), and will be removed in the next release.
1553 Dictionaries are more flexible: additional keys like periodicBuildTime are
1554 simply unavailable to tuple-defined builders.
1556 Note: it is a good idea to watch the logfile (usually in twistd.log) when you
1557 first start the buildmaster, or whenever you reload the config file. Any
1558 warnings or errors in the config file will be found there.
1560 *** c['webPortnum'], c['webPathname'], c['irc'] are deprecated
1562 All status reporters should be defined in the c['status'] array, using
1563 buildbot.status.html.Waterfall or buildbot.status.words.IRC . These have been
1564 deprecated for a while, but this is fair warning that these keys will be
1565 removed in the next release.
1567 *** c['manholePort'] is deprecated
1569 Again, this has been deprecated for a while, in favor of:
1571  c['manhole'] = master.Manhole(port, username, password)
1573 The preferred syntax will eventually let us use other, better kinds of debug
1574 shells, such as the experimental curses-based ones in the Twisted sandbox
1575 (which would offer command-line editing and history).
1577 ** bug fixes
1579 The waterfall page has been improved a bit. A circular-reference bug in the
1580 web page's TextLog class was fixed, which caused a major memory leak in a
1581 long-running buildmaster with large logfiles that are viewed frequently.
1582 Modifying the config file in a way which only changed a builder's base
1583 directory now works correctly. The 'buildbot' command tries to create
1584 slightly more useful master/slave directories, adding a Makefile entry to
1585 re-create the .tap file, and removing global-read permissions from the files
1586 that may contain buildslave passwords.
1588 ** twisted-2.0.0 compatibility
1590 Both buildmaster and buildslave should run properly under Twisted-2.0 . There
1591 are still some warnings about deprecated functions, some of which could be
1592 fixed, but there are others that would require removing compatibility with
1593 Twisted-1.3, and I don't expect to do that until 2.0 has been out and stable
1594 for at least several months. The unit tests should pass under 2.0, whereas
1595 the previous buildbot release had tests which could hang when run against the
1596 new "trial" framework in 2.0.
1598 The Twisted-specific steps (including Trial) have been updated to match 2.0
1599 functionality.
1601 ** win32 compatibility
1603 Thankt to Nick Trout, more compatibility fixes have been incorporated,
1604 improving the chances that the unit tests will pass on windows systems. There
1605 are still some problems, and a step-by-step "running buildslaves on windows"
1606 document would be greatly appreciated.
1608 ** API docs
1610 Thanks to Thomas Vander Stichele, most of the docstrings have been converted
1611 to epydoc format. There is a utility in docs/gen-reference to turn these into
1612 a tree of cross-referenced HTML pages. Eventually these docs will be
1613 auto-generated and somehow published on the buildbot web page.
1617 * Release 0.6.2 (13 Dec 2004)
1619 ** new features
1621 It is now possible to interrupt a running build. Both the web page and the
1622 IRC bot feature 'stop build' commands, which can be used to interrupt the
1623 current BuildStep and accelerate the termination of the overall Build. The
1624 status reporting for these still leaves something to be desired (an
1625 'interrupt' event is pushed into the column, and the reason for the interrupt
1626 is added to a pseudo-logfile for the step that was stopped, but if you only
1627 look at the top-level status it appears that the build failed on its own).
1629 Builds are also halted if the connection to the buildslave is lost. On the
1630 slave side, any active commands are halted if the connection to the
1631 buildmaster is lost.
1633 ** minor new features
1635 The IRC log bot now reports ETA times in a MMSS format like "2m45s" instead
1636 of the clunky "165 seconds".
1638 ** bug fixes
1640 *** Slave Disconnect
1642 Slave disconnects should be handled better now: the current build should be
1643 abandoned properly. Earlier versions could get into weird states where the
1644 build failed to finish, clogging the builder forever (or at least until the
1645 buildmaster was restarted).
1647 In addition, there are weird network conditions which could cause a
1648 buildslave to attempt to connect twice to the same buildmaster. This can
1649 happen when the slave is sending large logfiles over a slow link, while using
1650 short keepalive timeouts. The buildmaster has been fixed to allow the second
1651 connection attempt to take precedence over the first, so that the older
1652 connection is jettisoned to make way for the newer one.
1654 In addition, the buildslave has been fixed to be less twitchy about timeouts.
1655 There are now two parameters: keepaliveInterval (which is controlled by the
1656 mktap 'keepalive' argument), and keepaliveTimeout (which requires editing the
1657 .py source to change from the default of 30 seconds). The slave expects to
1658 see *something* from the master at least once every keepaliveInterval
1659 seconds, and will try to provoke a response (by sending a keepalive request)
1660 'keepaliveTimeout' seconds before the end of this interval just in case there
1661 was no regular traffic. Any kind of traffic will qualify, including
1662 acknowledgements of normal build-status updates.
1664 The net result is that, as long as any given PB message can be sent over the
1665 wire in less than 'keepaliveTimeout' seconds, the slave should not mistakenly
1666 disconnect because of a timeout. There will be traffic on the wire at least
1667 every 'keepaliveInterval' seconds, which is what you want to pay attention to
1668 if you're trying to keep an intervening NAT box from dropping what it thinks
1669 is an abandoned connection. A quiet loss of connection will be detected
1670 within 'keepaliveInterval' seconds.
1672 *** Large Logfiles
1674 The web page rendering code has been fixed to deliver large logfiles in
1675 pieces, using a producer/consumer apparatus. This avoids the large spike in
1676 memory consumption when the log file body was linearized into a single string
1677 and then buffered in the socket's application-side transmit buffer. This
1678 should also avoid the 640k single-string limit for web.distrib servers that
1679 could be hit by large (>640k) logfiles.
1683 * Release 0.6.1 (23 Nov 2004)
1685 ** win32 improvements/bugfixes
1687 Several changes have gone in to improve portability to non-unix systems. It
1688 should be possible to run a build slave under windows without major issues
1689 (although step-by-step documentation is still greatly desired: check the
1690 mailing list for suggestions from current win32 users).
1692 *** PBChangeSource: use configurable directory separator, not os.sep
1694 The PBChangeSource, which listens on a TCP socket for change notices
1695 delivered from tools like contrib/svn_buildbot.py, was splitting source
1696 filenames with os.sep . This is inappropriate, because those file names are
1697 coming from the VC repository, not the local filesystem, and the repository
1698 host may be running a different OS (with a different separator convention)
1699 than the buildmaster host. In particular, a win32 buildmaster using a CVS
1700 repository running on a unix box would be confused.
1702 PBChangeSource now takes a sep= argument to indicate the separator character
1703 to use.
1705 *** build saving should work better
1707 windows cannot do the atomic os.rename() trick that unix can, so under win32
1708 the buildmaster falls back to save/delete-old/rename, which carries a slight
1709 risk of losing a saved build log (if the system were to crash between the
1710 delete-old and the rename).
1712 ** new features
1714 *** test-result tracking
1716 Work has begun on fine-grained test-result handling. The eventual goal is to
1717 be able to track individual tests over time, and create problem reports when
1718 a test starts failing (which then are resolved when the test starts passing
1719 again). The first step towards this is an ITestResult interface, and code in
1720 the TrialTestParser to create such results for all non-passing tests (the
1721 ones for which Trial emits exception tracebacks).
1723 These test results are currently displayed in a tree-like display in a page
1724 accessible from each Build's page (follow the numbered link in the yellow
1725 box at the start of each build to get there).
1727 This interface is still in flux, as it really wants to be able to accomodate
1728 things like compiler warnings and tests that are skipped because of missing
1729 libraries or unsupported architectures.
1731 ** bug fixes
1733 *** VC updates should survive temporary failures
1735 Some VC systems (CVS and SVN in particular) get upset when files are turned
1736 into directories or vice versa, or when repository items are moved without
1737 the knowledge of the VC system. The usual symptom is that a 'cvs update'
1738 fails where a fresh checkout succeeds.
1740 To avoid having to manually intervene, the build slaves' VC commands have
1741 been refactored to respond to update failures by deleting the tree and
1742 attempting a full checkout. This may cause some unnecessary effort when,
1743 e.g., the CVS server falls off the net, but in the normal case it will only
1744 come into play when one of these can't-cope situations arises.
1746 *** forget about an existing build when the slave detaches
1748 If the slave was lost during a build, the master did not clear the
1749 .currentBuild reference, making that builder unavailable for later builds.
1750 This has been fixed, so that losing a slave should be handled better. This
1751 area still needs some work, I think it's still possible to get both the
1752 slave and the master wedged by breaking the connection at just the right
1753 time. Eventually I want to be able to resume interrupted builds (especially
1754 when the interruption is the result of a network failure and not because the
1755 slave or the master actually died).
1757 *** large logfiles now consume less memory
1759 Build logs are stored as lists of (type,text) chunks, so that
1760 stdout/stderr/headers can be displayed differently (if they were
1761 distinguishable when they were generated: stdout and stderr are merged when
1762 usePTY=1). For multi-megabyte logfiles, a large list with many short strings
1763 could incur a large overhead. The new behavior is to merge same-type string
1764 chunks together as they are received, aiming for a chunk size of about 10kb,
1765 which should bring the overhead down to a more reasonable level.
1767 There remains an issue with actually delivering large logfiles over, say,
1768 the HTML interface. The string chunks must be merged together into a single
1769 string before delivery, which causes a spike in the memory usage when the
1770 logfile is viewed. This can also break twisted.web.distrib -type servers,
1771 where the underlying PB protocol imposes a 640k limit on the size of
1772 strings. This will be fixed (with a proper Producer/Consumer scheme) in the
1773 next release.
1776 * Release 0.6.0 (30 Sep 2004)
1778 ** new features
1780 *** /usr/bin/buildbot control tool
1782 There is now an executable named 'buildbot'. For now, this just provides a
1783 convenient front-end to mktap/twistd/kill, but eventually it will provide
1784 access to other client functionality (like the 'try' builds, and a status
1785 client). Assuming you put your buildbots in /var/lib/buildbot/master/FOO,
1786 you can do 'buildbot create-master /var/lib/buildbot/master/FOO' and it will
1787 create the .tap file and set up a sample master.cfg for you. Later,
1788 'buildbot start /var/lib/buildbot/master/FOO' will start the daemon.
1791 *** build status now saved in external files, -shutdown.tap unnecessary
1793 The status rewrite included a change to save all build status in a set of
1794 external files. These files, one per build, are put in a subdirectory of the
1795 master's basedir (named according to the 'builddir' parameter of the Builder
1796 configuration dictionary). This helps keep the buildmaster's memory
1797 consumption small: the (potentially large) build logs are kept on disk
1798 instead of in RAM. There is a small cache (2 builds per builder) kept in
1799 memory, but everything else lives on disk.
1801 The big change is that the buildmaster now keeps *all* status in these
1802 files. It is no longer necessary to preserve the buildbot-shutdown.tap file
1803 to run a persistent buildmaster. The buildmaster may be launched with
1804 'twistd -f buildbot.tap' each time, in fact the '-n' option can be added to
1805 prevent twistd from automatically creating the -shutdown.tap file.
1807 There is still one lingering bug with this change: the Expectations object
1808 for each builder (which records how long the various steps took, to provide
1809 an ETA value for the next time) is not yet saved. The result is that the
1810 first build after a restart will not provide an ETA value.
1812 0.6.0 keeps status in a single file per build, as opposed to 0.5.0 which
1813 kept status in many subdirectories (one layer for builds, another for steps,
1814 and a third for logs). 0.6.0 will detect and delete these subdirectories as
1815 it overwrites them.
1817 The saved builds are optional. To prevent disk usage from growing without
1818 bounds, you may want to set up a cron job to run 'find' and delete any which
1819 are too old. The status displays will happily survive without those saved
1820 build objects.
1822 The set of recorded Changes is kept in a similar file named 'changes.pck'.
1825 *** source checkout now uses timestamp/revision
1827 Source checkouts are now performed with an appropriate -D TIMESTAMP (for
1828 CVS) or -r REVISION (for SVN) marker to obtain the exact sources that were
1829 specified by the most recent Change going into the current Build. This
1830 avoids a race condition in which a change might be committed after the build
1831 has started but before the source checkout has completed, resulting in a
1832 mismatched set of source files. Such changes are now ignored.
1834 This works by keeping track of repository-wide revision/transaction numbers
1835 (for version control systems that offer them, like SVN). The checkout or
1836 update is performed with the highest such revision number. For CVS (which
1837 does not have them), the timestamp of each commit message is used, and a -D
1838 argument is created to place the checkout squarely in the middle of the "tree
1839 stable timer"'s window.
1841 This also provides the infrastructure for the upcoming 'try' feature. All
1842 source-checkout commands can now obtain a base revision marker and a patch
1843 from the Build, allowing certain builds to be performed on something other
1844 than the most recent sources.
1846 See source.xhtml and steps.xhtml for details.
1849 *** Darcs and Arch support added
1851 There are now build steps which retrieve a source tree from Darcs and Arch
1852 repositories. See steps.xhtml for details.
1854 Preliminary P4 support has been added, thanks to code from Dave Peticolas.
1855 You must manually set up each build slave with an appropriate P4CLIENT: all
1856 buildbot does is run 'p4 sync' at the appropriate times.
1859 *** Status reporting rewritten
1861 Status reporting was completely revamped. The config file now accepts a
1862 BuildmasterConfig['status'] entry, with a list of objects that perform status
1863 delivery. The old config file entries which controlled the web status port
1864 and the IRC bot have been deprecated in favor of adding instances to
1865 ['status']. The following status-delivery classes have been implemented, all
1866 in the 'buildbot.status' package:
1868  client.PBListener(port, username, passwd)
1869  html.Waterfall(http_port, distrib_port)
1870  mail.MailNotifier(fromaddr, mode, extraRecipients..)
1871  words.IRC(host, nick, channels)
1873 See the individual docstrings for details about how to use each one. You can
1874 create new status-delivery objects by following the interfaces found in the
1875 buildbot.interfaces module.
1878 *** BuildFactory configuration process changed
1880 The basic BuildFactory class is now defined in buildbot.process.factory
1881 rather than buildbot.process.base, so you will have to update your config
1882 files. factory.BuildFactory is the base class, which accepts a list of Steps
1883 to run. See docs/factories.xhtml for details.
1885 There are now easier-to-use BuildFactory classes for projects which use GNU
1886 Autoconf, perl's MakeMaker (CPAN), python's distutils (but no unit tests),
1887 and Twisted's Trial. Each one takes a separate 'source' Step to obtain the
1888 source tree, and then fills in the rest of the Steps for you.
1891 *** CVS/SVN VC steps unified, simplified
1893 The confusing collection of arguments for the CVS step ('clobber=',
1894 'copydir=', and 'export=') have been removed in favor of a single 'mode'
1895 argument. This argument describes how you want to use the sources: whether
1896 you want to update and compile everything in the same tree (mode='update'),
1897 or do a fresh checkout and full build each time (mode='clobber'), or
1898 something in between.
1900 The SVN (Subversion) step has been unified and accepts the same mode=
1901 parameter as CVS. New version control steps will obey the same interface.
1903 Most of the old configuration arguments have been removed. You will need to
1904 update your configuration files to use the new arguments. See
1905 docs/steps.xhtml for a description of all the new parameters.
1908 *** Preliminary Debian packaging added
1910 Thanks to the contributions of Kirill Lapshin, we can now produce .deb
1911 installer packages. These are still experimental, but they include init.d
1912 startup/shutdown scripts, which the the new /usr/bin/buildbot to invoke
1913 twistd. Create your buildmasters in /var/lib/buildbot/master/FOO, and your
1914 slaves in /var/lib/buildbot/slave/BAR, then put FOO and BAR in the
1915 appropriate places in /etc/default/buildbot . After that, the buildmasters
1916 and slaves will be started at every boot.
1918 Pre-built .debs are not yet distributed. Use 'debuild -uc -us' from the
1919 source directory to create them.
1922 ** minor features
1925 *** Source Stamps
1927 Each build now has a "source stamp" which describes what sources it used. The
1928 idea is that the sources for this particular build can be completely
1929 regenerated from the stamp. The stamp is a tuple of (revision, patch), where
1930 the revision depends on the VC system being used (for CVS it is either a
1931 revision tag like "BUILDBOT-0_5_0" or a datestamp like "2004/07/23", for
1932 Subversion it is a revision number like 11455). This must be combined with
1933 information from the Builder that is constant across all builds (something to
1934 point at the repository, and possibly a branch indicator for CVS and other VC
1935 systems that don't fold this into the repository string).
1937 The patch is an optional unified diff file, ready to be applied by running
1938 'patch -p0 <PATCH' from inside the workdir. This provides support for the
1939 'try' feature that will eventually allow developers to run buildbot tests on
1940 their code before checking it in.
1943 *** SIGHUP causes the buildmaster's configuration file to be re-read
1945 *** IRC bot now has 'watch' command
1947 You can now tell the buildbot's IRC bot to 'watch <buildername>' on a builder
1948 which is currently performing a build. When that build is finished, the
1949 buildbot will make an announcement (including the results of the build).
1951 The IRC 'force build' command will also announce when the resulting build has
1952 completed.
1955 *** the 'force build' option on HTML and IRC status targets can be disabled
1957 The html.Waterfall display and the words.IRC bot may be constructed with an
1958 allowForce=False argument, which removes the ability to force a build through
1959 these interfaces. Future versions will be able to restrict this build-forcing
1960 capability to authenticated users. The per-builder HTML page no longer
1961 displays the 'Force Build' buttons if it does not have this ability. Thanks
1962 to Fred Drake for code and design suggestions.
1965 *** master now takes 'projectName' and 'projectURL' settings
1967 These strings allow the buildbot to describe what project it is working for.
1968 At the moment they are only displayed on the Waterfall page, but in the next
1969 release they will be retrieveable from the IRC bot as well.
1972 *** survive recent (SVN) Twisted versions
1974 The buildbot should run correctly (albeit with plenty of noisy deprecation
1975 warnings) under the upcoming Twisted-2.0 release.
1978 *** work-in-progress realtime Trial results acquisition
1980 Jonathan Simms (<slyphon>) has been working on 'retrial', a rewrite of
1981 Twisted's unit test framework that will most likely be available in
1982 Twisted-2.0 . Although it is not yet complete, the buildbot will be able to
1983 use retrial in such a way that build status is reported on a per-test basis,
1984 in real time. This will be the beginning of fine-grained test tracking and
1985 Problem management, described in docs/users.xhtml .
1988 * Release 0.5.0 (22 Jul 2004)
1990 ** new features
1992 *** web.distrib servers via TCP
1994 The 'webPathname' config option, which specifies a UNIX socket on which to
1995 publish the waterfall HTML page (for use by 'mktap web -u' or equivalent),
1996 now accepts a numeric port number. This publishes the same thing via TCP,
1997 allowing the parent web server to live on a separate machine.
1999 This config option could be named better, but it will go away altogether in
2000 a few releases, when status delivery is unified. It will be replaced with a
2001 WebStatusTarget object, and the config file will simply contain a list of
2002 various kinds of status targets.
2004 *** 'master.cfg' filename is configurable
2006 The buildmaster can use a config file named something other than
2007 "master.cfg". Use the --config=foo.cfg option to mktap to control this.
2009 *** FreshCVSSource now uses newcred (CVSToys >= 1.0.10)
2011 The FreshCVSSource class now defaults to speaking to freshcvs daemons from
2012 modern CVSToys releases. If you need to use the buildbot with a daemon from
2013 CVSToys-1.0.9 or earlier, use FreshCVSSourceOldcred instead. Note that the
2014 new form only requires host/port/username/passwd: the "serviceName"
2015 parameter is no longer meaningful.
2017 *** Builders are now configured with a dictionary, not a tuple
2019 The preferred way to set up a Builder in master.cfg is to provide a
2020 dictionary with various keys, rather than a (non-extensible) 4-tuple. See
2021 docs/config.xhtml for details. The old tuple-way is still supported for now,
2022 it will probably be deprecated in the next release and removed altogether in
2023 the following one.
2025 *** .periodicBuildTime is now exposed to the config file
2027 To set a builder to run at periodic intervals, simply add a
2028 'periodicBuildTime' key to its master.cfg dictionary. Again, see
2029 docs/config.xhtml for details.
2031 *** svn_buildbot.py adds --include, --exclude
2033 The commit trigger script now gives you more control over which files are
2034 sent to the buildmaster and which are not.
2036 *** usePTY is controllable at slave mktap time
2038 The buildslaves usually run their child processes in a pty, which creates a
2039 process group for all the children, which makes it much easier to kill them
2040 all at once (i.e. if a test hangs). However this causes problems on some
2041 systems. Rather than hacking slavecommand.py to disable the use of these
2042 ptys, you can now create the slave's .tap file with --usepty=0 at mktap
2043 time.
2045 ** Twisted changes
2047 A summary of warnings (e.g. DeprecationWarnings) is provided as part of the
2048 test-case summarizer. The summarizer also counts Skips, expectedFailures,
2049 and unexpectedSuccesses, displaying the counts on the test step's event box.
2051 The RunUnitTests step now uses "trial -R twisted" instead of "trial
2052 twisted.test", which is a bit cleaner. All .pyc files are deleted before
2053 starting trial, to avoid getting tripped up by deleted .py files.
2055 ** documentation
2057 docs/config.xhtml now describes the syntax and allowed contents of the
2058 'master.cfg' configuration file.
2060 ** bugfixes
2062 Interlocks had a race condition that could cause the lock to get stuck
2063 forever.
2065 FreshCVSSource has a prefix= argument that was moderately broken (it used to
2066 only work if the prefix was a single directory component). It now works with
2067 subdirectories.
2069 The buildmaster used to complain when it saw the "info" directory in a
2070 slave's workspace. This directory is used to publish information about the
2071 slave host and its administrator, and is not a leftover build directory as
2072 the complaint suggested. This complain has been silenced.
2075 * Release 0.4.3 (30 Apr 2004)
2077 ** PBChangeSource made explicit
2079 In 0.4.2 and before, an internal interface was available which allowed
2080 special clients to inject changes into the Buildmaster. This interface is
2081 used by the contrib/svn_buildbot.py script. The interface has been extracted
2082 into a proper PBChangeSource object, which should be created in the
2083 master.cfg file just like the other kinds of ChangeSources. See
2084 docs/sources.xhtml for details.
2086 If you were implicitly using this change source (for example, if you use
2087 Subversion and the svn_buildbot.py script), you *must* add this source to
2088 your master.cfg file, or changes will not be delivered and no builds will be
2089 triggered.
2091 The PBChangeSource accepts the same "prefix" argument as all other
2092 ChangeSources. For a SVN repository that follows the recommended practice of
2093 using "trunk/" for the trunk revisions, you probably want to construct the
2094 source like this:
2096  source = PBChangeSource(prefix="trunk")
2098 to make sure that the Builders are given sensible (trunk-relative)
2099 filenames for each changed source file.
2101 ** Twisted changes
2103 *** step_twisted.RunUnitTests can change "bin/trial"
2105 The twisted RunUnitTests step was enhanced to let you run something other
2106 than "bin/trial", making it easier to use a buildbot on projects which use
2107 Twisted but aren't actually Twisted itself.
2109 *** Twisted now uses Subversion
2111 Now that Twisted has moved from CVS to SVN, the Twisted build processes have
2112 been modified to perform source checkouts from the Subversion repository.
2114 ** minor feature additions
2116 *** display Changes with HTML
2118 Changes are displayed with a bit more pizazz, and a links= argument was
2119 added to allow things like ViewCVS links to be added to the display
2120 (although it is not yet clear how this argument should be used: the
2121 interface remains subject to change untill it has been documented).
2123 *** display ShellCommand logs with HTML
2125 Headers are in blue, stderr is in red (unless usePTY=1 in which case stderr
2126 and stdout are indistinguishable). A link is provided which returns the same
2127 contents as plain text (by appending "?text=1" to the URL).
2129 *** buildslaves send real tracebacks upon error
2131 The .unsafeTracebacks option has been turned on for the buildslaves,
2132 allowing them to send a full stack trace when an exception occurs, which is
2133 logged in the buildmaster's twistd.log file. This makes it much easier to
2134 determine what went wrong on the slave side.
2136 *** BasicBuildFactory refactored
2138 The BasicBuildFactory class was refactored to make it easier to create
2139 derivative classes, in particular the BasicSVN variant.
2141 *** "ping buildslave" web button added
2143 There is now a button on the "builder information" page that lets a web user
2144 initiate a ping of the corresponding build slave (right next to the button
2145 that lets them force a build). This was added to help track down a problem
2146 with the slave keepalives.
2148 ** bugs fixed:
2150 You can now have multiple BuildSteps with the same name (the names are used
2151 as hash keys in the data structure that helps determine ETA values for each
2152 step, the new code creates unique key names if necessary to avoid
2153 collisions). This means that, for example, you do not have to create a
2154 BuildStep subclass just to have two Compile steps in the same process.
2156 If CVSToys is not installed, the tests that depend upon it are skipped.
2158 Some tests in 0.4.2 failed because of a missing set of test files, they are
2159 now included in the tarball properly.
2161 Slave keepalives should work better now in the face of silent connection
2162 loss (such as when an intervening NAT box times out the association), the
2163 connection should be reestablished in minutes instead of hours.
2165 Shell commands on the slave are invoked with an argument list instead of the
2166 ugly and error-prone split-on-spaces approach. If the ShellCommand is given
2167 a string (instead of a list), it will fall back to splitting on spaces.
2168 Shell commands should work on win32 now (using COMSPEC instead of /bin/sh).
2170 Buildslaves under w32 should theoretically work now, and one was running for
2171 the Twisted buildbot for a while until the machine had to be returned.
2173 The "header" lines in ShellCommand logs (which include the first line, that
2174 displays the command being run, and the last, which shows its exit status)
2175 are now generated by the buildslave side instead of the local (buildmaster)
2176 side. This can provide better error handling and is generally cleaner.
2177 However, if you have an old buildslave (running 0.4.2 or earlier) and a new
2178 buildmaster, then neither end will generate these header lines.
2180 CVSCommand was improved, in certain situations 0.4.2 would perform
2181 unnecessary checkouts (when an update would have sufficed). Thanks to Johan
2182 Dahlin for the patches. The status output was fixed as well, so that
2183 failures in CVS and SVN commands (such as not being able to find the 'svn'
2184 executable) make the step status box red.
2186 Subversion support was refactored to make it behave more like CVS. This is a
2187 work in progress and will be improved in the next release.
2190 * Release 0.4.2 (08 Jan 2004)
2192 ** test suite updated
2194 The test suite has been completely moved over to Twisted's "Trial"
2195 framework, and all tests now pass. To run the test suite (consisting of 64
2196 tests, probably covering about 30% of BuildBot's logic), do this:
2198  PYTHONPATH=. trial -v buildbot.test
2200 ** Mail parsers updated
2202 Several bugs in the mail-parsing code were fixed, allowing a buildmaster to
2203 be triggered by mail sent out by a CVS repository. (The Twisted Buildbot is
2204 now using this to trigger builds, as their CVS server machine is having some
2205 difficulties with FreshCVS). The FreshCVS mail format for directory
2206 additions appears to have changed recently: the new parser should handle
2207 both old and new-style messages.
2209 A parser for Bonsai commit messages (buildbot.changes.mail.parseBonsaiMail)
2210 was contributed by Stephen Davis. Thanks Stephen!
2212 ** CVS "global options" now available
2214 The CVS build step can now accept a list of "global options" to give to the
2215 cvs command. These go before the "update"/"checkout" word, and are described
2216 fully by "cvs --help-options". Two useful ones might be "-r", which causes
2217 checked-out files to be read-only, and "-R", which assumes the repository is
2218 read-only (perhaps by not attempting to write to lock files).
2221 * Release 0.4.1 (09 Dec 2003)
2223 ** MaildirSources fixed
2225 Several bugs in MaildirSource made them unusable. These have been fixed (for
2226 real this time). The Twisted buildbot is using an FCMaildirSource while they
2227 fix some FreshCVS daemon problems, which provided the encouragement for
2228 getting these bugs fixed.
2230 In addition, the use of DNotify (only available under linux) was somehow
2231 broken, possibly by changes in some recent version of Python. It appears to
2232 be working again now (against both python-2.3.3c1 and python-2.2.1).
2234 ** master.cfg can use 'basedir' variable
2236 As documented in the sample configuration file (but not actually implemented
2237 until now), a variable named 'basedir' is inserted into the namespace used
2238 by master.cfg . This can be used with something like:
2240   os.path.join(basedir, "maildir")
2242 to obtain a master-basedir-relative location.
2245 * Release 0.4.0 (05 Dec 2003)
2247 ** newapp
2249 I've moved the codebase to Twisted's new 'application' framework, which
2250 drastically cleans up service startup/shutdown just like newcred did for
2251 authorization. This is mostly an internal change, but the interface to
2252 IChangeSources was modified, so in the off chance that someone has written a
2253 custom change source, it may have to be updated to the new scheme.
2255 The most user-visible consequence of this change is that now both
2256 buildmasters and buildslaves are generated with the standard Twisted 'mktap'
2257 utility. Basic documentation is in the README file.
2259 Both buildmaster and buildslave .tap files need to be re-generated to run
2260 under the new code. I have not figured out the styles.Versioned upgrade path
2261 well enough to avoid this yet. Sorry.
2263 This also means that both buildslaves and the buildmaster require
2264 Twisted-1.1.0 or later.
2266 ** reloadable master.cfg
2268 Most aspects of a buildmaster is now controlled by a configuration file
2269 which can be re-read at runtime without losing build history. This feature
2270 makes the buildmaster *much* easier to maintain.
2272 In the previous release, you would create the buildmaster by writing a
2273 program to define the Builders and ChangeSources and such, then run it to
2274 create the .tap file. In the new release, you use 'mktap' to create the .tap
2275 file, and the only parameter you give it is the base directory to use. Each
2276 time the buildmaster starts, it will look for a file named 'master.cfg' in
2277 that directory and parse it as a python script. That script must define a
2278 dictionary named 'BuildmasterConfig' with various keys to define the
2279 builders, the known slaves, what port to use for the web server, what IRC
2280 channels to connect to, etc.
2282 This config file can be re-read at runtime, and the buildmaster will compute
2283 the differences and add/remove services as necessary. The re-reading is
2284 currently triggered through the debug port (contrib/debugclient.py is the
2285 debug port client), but future releases will add the ability to trigger the
2286 reconfiguration by IRC command, web page button, and probably a local UNIX
2287 socket (with a helper script to trigger a rebuild locally).
2289 docs/examples/twisted_master.cfg contains a sample configuration file, which
2290 also lists all the keys that can be set.
2292 There may be some bugs lurking, such as re-configuring the buildmaster while
2293 a build is running. It needs more testing.
2295 ** MaxQ support
2297 Radix contributed some support scripts to run MaxQ test scripts. MaxQ
2298 (http://maxq.tigris.org/) is a web testing tool that allows you to record
2299 HTTP sessions and play them back.
2301 ** Builders can now wait on multiple Interlocks
2303 The "Interlock" code has been enhanced to allow multiple builders to wait on
2304 each one. This was done to support the new config-file syntax for specifying
2305 Interlocks (in which each interlock is a tuple of A and [B], where A is the
2306 builder the Interlock depends upon, and [B] is a list of builders that
2307 depend upon the Interlock).
2309 "Interlock" is misnamed. In the next release it will be changed to
2310 "Dependency", because that's what it really expresses. A new class (probably
2311 called Interlock) will be created to express the notion that two builders
2312 should not run at the same time, useful when multiple builders are run on
2313 the same machine and thrashing results when several CPU- or disk- intensive
2314 compiles are done simultaneously.
2316 ** FreshCVSSource can now handle newcred-enabled FreshCVS daemons
2318 There are now two FreshCVSSource classes: FreshCVSSourceNewcred talks to
2319 newcred daemons, and FreshCVSSourceOldcred talks to oldcred ones. Mind you,
2320 FreshCVS doesn't yet do newcred, but when it does, we'll be ready.
2322 'FreshCVSSource' maps to the oldcred form for now. That will probably change
2323 when the current release of CVSToys supports newcred by default.
2325 ** usePTY=1 on posix buildslaves
2327 When a buildslave is running under POSIX (i.e. pretty much everything except
2328 windows), child processes are created with a pty instead of separate
2329 stdin/stdout/stderr pipes. This makes it more likely that a hanging build
2330 (when killed off by the timeout code) will have all its sub-childred cleaned
2331 up. Non-pty children would tend to leave subprocesses running because the
2332 buildslave was only able to kill off the top-level process (typically
2333 'make').
2335 Windows doesn't have any concept of ptys, so non-posix systems do not try to
2336 enable them.
2338 ** mail parsers should actually work now
2340 The email parsing functions (FCMaildirSource and SyncmailMaildirSource) were
2341 broken because of my confused understanding of how python class methods
2342 work. These sources should be functional now.
2344 ** more irc bot sillyness
2346 The IRC bot can now perform half of the famous AYBABTO scene.
2349 * Release 0.3.5 (19 Sep 2003)
2351 ** newcred
2353 Buildbot has moved to "newcred", a new authorization framework provided by
2354 Twisted, which is a good bit cleaner and easier to work with than the
2355 "oldcred" scheme in older versions. This causes both buildmaster and
2356 buildslaves to depend upon Twisted 1.0.7 or later. The interface to
2357 'makeApp' has changed somewhat (the multiple kinds of remote connections all
2358 use the same TCP port now).
2360 Old buildslaves will get "_PortalWrapper instance has no attribute
2361 'remote_username'" errors when they try to connect. They must be upgraded.
2363 The FreshCVSSource uses PB to connect to the CVSToys server. This has been
2364 upgraded to use newcred too. If you get errors (TODO: what do they look
2365 like?) in the log when the buildmaster tries to connect, you need to upgrade
2366 your FreshCVS service or use the 'useOldcred' argument when creating your
2367 FreshCVSSource. This is a temporary hack to allow the buildmaster to talk to
2368 oldcred CVSToys servers. Using it will trigger deprecation warnings. It will
2369 go away eventually.
2371 In conjunction with this change, makeApp() now accepts a password which can
2372 be applied to the debug service.
2374 ** new features
2376 *** "copydir" for CVS checkouts
2378 The CVS build step can now accept a "copydir" parameter, which should be a
2379 directory name like "source" or "orig". If provided, the CVS checkout is
2380 done once into this directory, then copied into the actual working directory
2381 for compilation etc. Later updates are done in place in the copydir, then
2382 the workdir is replaced with a copy.
2384 This reduces CVS bandwidth (update instead of full checkout) at the expense
2385 of twice the disk space (two copies of the tree).
2387 *** Subversion (SVN) support
2389 Radix (Christopher Armstrong) contributed early support for building
2390 Subversion-based trees. The new 'SVN' buildstep behaves roughly like the
2391 'CVS' buildstep, and the contrib/svn_buildbot.py script can be used as a
2392 checkin trigger to feed changes to a running buildmaster.
2394 ** notable bugfixes
2396 *** .tap file generation
2398 We no longer set the .tap filename, because the buildmaster/buildslave
2399 service might be added to an existing .tap file and we shouldn't presume to
2400 own the whole thing. You may want to manually rename the "buildbot.tap" file
2401 to something more meaningful (like "buildslave-bot1.tap").
2403 *** IRC reconnect
2405 If the IRC server goes away (it was restarted, or the network connection was
2406 lost), the buildmaster will now schedule a reconnect attempt.
2408 *** w32 buildslave fixes
2410 An "rm -rf" was turned into shutil.rmtree on non-posix systems.
2413 * Release 0.3.4 (28 Jul 2003)
2415 ** IRC client
2417 The buildmaster can now join a set of IRC channels and respond to simple
2418 queries about builder status.
2420 ** slave information
2422 The build slaves can now report information from a set of info/* files in
2423 the slave base directory to the buildmaster. This will be used by the slave
2424 administrator to announce details about the system hosting the slave,
2425 contact information, etc. For now, info/admin should contain the name/email
2426 of the person who is responsible for the buildslave, and info/host should
2427 describe the system hosting the build slave (OS version, CPU speed, memory,
2428 etc). The contents of these files are made available through the waterfall
2429 display.
2431 ** change notification email parsers
2433 A parser for Syncmail (syncmail.sourceforge.net) was added. SourceForge
2434 provides examples of setting up syncmail to deliver CVS commit messages to
2435 mailing lists, so hopefully this will make it easier for sourceforge-hosted
2436 projects to set up a buildbot.
2438 email processors were moved into buildbot.changes.mail . FCMaildirSource was
2439 moved, and the compatibility location (buildbot.changes.freshcvsmail) will
2440 go away in the next release.
2442 ** w32 buildslave ought to work
2444 Some non-portable code was changed to make it more likely that the
2445 buildslave will run under windows. The Twisted buildbot now has a
2446 (more-or-less) working w32 buildslave.
2449 * Release 0.3.3 (21 May 2003):
2451 ** packaging changes
2453 *** include doc/examples in the release. Oops again.
2455 ** network changes
2457 *** add keepalives to deal with NAT boxes
2459 Some NAT boxes drop port mappings if the TCP connection looks idle for too
2460 long (maybe 30 minutes?). Add application-level keepalives (dummy commands
2461 sent from slave to master every 10 minutes) to appease the NAT box and keep
2462 our connection alive. Enable this with --keepalive in the slave mktap
2463 command line. Check the README for more details.
2465 ** UI changes
2467 *** allow slaves to trigger any build that they host
2469 Added an internal function to ask the buildmaster to start one of their
2470 builds. Must be triggered with a debugger or manhole on the slave side for
2471 now, will add a better UI later.
2473 *** allow web page viewers to trigger any build
2475 Added a button to the per-build page (linked by the build names on the third
2476 row of the waterfall page) to allow viewers to manually trigger builds.
2477 There is a field for them to indicate who they are and why they are
2478 triggering the build. It is possible to abuse this, but for now the benefits
2479 outweigh the damage that could be done (worst case, someone can make your
2480 machine run builds continuously).
2482 ** generic buildprocess changes
2484 *** don't queue multiple builds for offline slaves
2486 If a slave is not online when a build is ready to run, that build is queued
2487 so the slave will run it when it next connects. However, the buildmaster
2488 used to queue every such build, so the poor slave machine would be subject
2489 to tens or hundreds of builds in a row when they finally did come online.
2490 The buildmaster has been changed to merge these multiple builds into a
2491 single one.
2493 *** bump ShellCommand default timeout to 20 minutes
2495 Used for testing out the win32 twisted builder. I will probably revert this
2496 in the next relese.
2498 *** split args in ShellCommand ourselves instead of using /bin/sh
2500 This should remove the need for /bin/sh on the slave side, improving the
2501 chances that the buildslave can run on win32.
2503 *** add configureEnv argument to Configure step, pass env dict to slave
2505 Allows build processes to do things like 'CFLAGS=-O0 ./configure' without
2506 using /bin/sh to set the environment variable
2508 ** Twisted buildprocess changes
2510 *** warn instead of flunk the build when cReactor or qtreactor tests fail
2512 These two always fail. For now, downgrade those failures to a warning
2513 (orange box instead of red).
2515 *** don't use 'clobber' on remote builds
2517 Builds that run on remote machines (freebsd, OS-X) now use 'cvs update'
2518 instead of clobbering their trees and doing a fresh checkout. The multiple
2519 simultaneous CVS checkouts were causing a strain on Glyph's upstream
2520 bandwidth.
2522 *** use trial --testmodule instead of our own test-case-name grepper
2524 The Twisted coding/testing convention has developers put 'test-case-name'
2525 tags (emacs local variables, actually) in source files to indicate which
2526 test cases should be run to exercise that code. Twisted's unit-test
2527 framework just acquired an argument to look for these tags itself. Use that
2528 instead of the extra FindUnitTestsForFiles build step we were doing before.
2529 Removes a good bit of code from buildbot and into Twisted where it really
2530 belongs.
2533 * Release 0.3.2 (07 May 2003):
2535 ** packaging changes
2537 *** fix major packaging bug: none of the buildbot/* subdirectories were
2538 included in the 0.3.1 release. Sorry, I'm still figuring out distutils
2539 here..
2541 ** internal changes
2543 *** use pb.Cacheable to update Events in remote status client. much cleaner.
2545 *** start to clean up BuildProcess->status.builder interface
2547 ** bug fixes
2549 *** waterfall display was missing a <tr>, causing it to be misrendered in most
2550 browsers (except the one I was testing it with, of course)
2552 *** URL without trailing slash (when served in a twisted-web distributed
2553 server, with a url like "http://twistedmatrix.com/~warner.twistd") should do
2554 redirect to URL-with-trailing-slash, otherwise internal hrefs are broken.
2556 *** remote status clients: forget RemoteReferences at shutdown, removes
2557 warnings about "persisting Ephemerals"
2559 ** Twisted buildprocess updates:
2561 *** match build process as of twisted-1.0.5
2562 **** use python2.2 everywhere now that twisted rejects python2.1
2563 **** look for test-result constants in multiple places
2564 *** move experimental 'trial --jelly' code to separate module
2565 *** add FreeBSD builder
2566 *** catch rc!=0 in HLint step
2567 *** remove RunUnitTestsRandomly, use randomly=1 parameter instead
2568 *** parameterize ['twisted.test'] default test case to make subclassing easier
2569 *** ignore internal distutils warnings in python2.3 builder
2572 * Release 0.3.1 (29 Apr 2003):
2574 ** First release.
2576 ** Features implemented:
2578  change notification from FreshCVS server or parsed maildir contents
2580  timed builds
2582  basic builds, configure/compile/test
2584  some Twisted-specific build steps: docs, unit tests, debuild
2586  status reporting via web page
2588 ** Features still experimental/unpolished
2590  status reporting via PB client