Index: third_party/buildbot_7_12/buildbot/NEWS |
diff --git a/third_party/buildbot_7_12/buildbot/NEWS b/third_party/buildbot_7_12/buildbot/NEWS |
deleted file mode 100644 |
index dd2ab93109ec07b27ddcdc82f0ca677949208e1e..0000000000000000000000000000000000000000 |
--- a/third_party/buildbot_7_12/buildbot/NEWS |
+++ /dev/null |
@@ -1,2718 +0,0 @@ |
-Major User visible changes in Buildbot. -*- outline -*- |
- (see ChangeLog for a detailed list of changes) |
- |
-* Release 0.7.12 (January 21, 2010) |
- |
-** New 'console' display |
- |
-This is a new web status view combining the best of the (t)grid and waterfall |
-views. |
- |
-** New 'extended' stylesheet |
- |
-Buildbot has a new, much nicer stylesheet available. Copy the file |
-buildbot/status/web/extended.css over your existing public_html/buildbot.css to |
-se it. |
- |
-** Builders can be configured with an object |
- |
-Instead of a list of dictionaries, builders can now specified using a |
-BuilderConfig object in the configuration file. This will allow for better |
-argument checking and default values, and also makes it easier for users to |
-create subclasses to handle site-specific builder details. The old, |
-dictionary-based method of configuration is still supported. |
- |
-** Check for common mis-configuration in addStep |
- |
-When adding a new step to a factory, either of these are acceptable: |
- |
- f.addStep(ShellCommand(command="echo hello, world", description="say hi")) |
- f.addStep(ShellCommand, command="echo hello, world", description="say hi") |
- |
-but trying to mix these syntaxes is a common misconfiguration: |
- |
- f.addStep(ShellCommand(command="echo hello, world"), description="say hi") |
- |
-in which case the description argument was silently ignored. This is now an |
-error. |
- |
-** Support for log compression |
- |
-Log files can be compressed on the master side using either gzip or bzip2. |
- |
-** Builder.ping no longer accepts timeout argument (bug #664). |
- |
-The implementation was not robust enough and could cause the master to |
-unexpectedly disconnect the slave. |
- |
-** MailNotifier's customMesg replaced by messageFormatter |
- |
-The customMesg mechanism had the unfortunate side effect of loading all data |
-for a build into memory simultaneously, which for some builds could cause |
-memory exhaustion. |
- |
-** Suppression of selected compiler warnings |
- |
-The WarningCountingShellCommand class has been extended with the ability to |
-upload from the slave a file contain warnings to be ignored. See the |
-documentation of the suppressionFile argument to the Compile build step. |
- |
-** New buildstep `MTR' |
- |
-A new class buildbot.process.mtrlogobserver.MTR was added. This buildstep is |
-used to run test suites using mysql-test-run. It parses the stdio output for |
-test failures and summarises them on the waterfall page. It also makes server |
-error logs available for debugging failures, and optionally inserts |
-information about test runs and test failures into an external database. |
- |
-** Python API Docs |
- |
-The docstrings for buildbot are now available in a web-friendly format: |
- http://djmitche.github.com/buildbot/docs/latest/reference |
- |
-** Many, many bugfixes |
- |
-* Release 0.7.11p (July 16, 2009) |
- |
-Fixes a few test failures in 0.7.11, and gives a default value for branchType |
-if it is not specified by the master. |
- |
-* Release 0.7.11 (July 5, 2009) |
- |
-Developers too numerous to mention contributed to this release. Buildbot has |
-truly become a community-maintained application. Much hard work is not |
-mentioned here, so please consult the git logs for the detailed changes in this |
-release. |
- |
-** Better Memory Performance, Disk Cleanup |
- |
-Buildbot handles its memory usage a bit better, and can automatically purge old |
-history to keep memory and disk usage low. Look for eventHorizon, |
-buildHorizon, logHorizon, and changeHorizon. |
- |
-** Password Protection for Force Build and Stop actions |
- |
-It is now possible to require authentication to force build and stop via the |
-WebStatus interface. To use this, set the 'auth' field of WebStatus to a valid |
-IAuth implementation. Current implementations are: |
- BasicAuth with a list of user/passwords |
- HTPasswdAuth with an .htpasswd file |
-By default, the unauthenticated behavior will occur. |
- |
-** Web Status changes |
- |
-The "Graceful Shutdown" feature, as a kind of "force", now obeys allowForce. |
- |
-The waterfall and other pages are more deeply interlinked. |
- |
-Pending builds can be individually cancelled, or cancelled in bulk. |
- |
-** Fixed Transfer Steps |
- |
-Transfer step classes are more reliable; DirectoryUpload and DirectoryDownload |
-use tarfile instead of manually framing files. The DirectoryUpload step also |
-now supports compression. |
- |
-** Conditional Steps |
- |
-Steps now take a doStepIf parameter which can be used to implement simple |
-conditional execution of a step. |
- |
-** Colorized Steps |
- |
-Steps are now hilighted with a color in the build view to indicate their |
-success or failure. |
- |
-** Improved build prioritization |
- |
-Bugfixes and fairer scheduling |
- |
-** Transposed Grid |
- |
-Similar to the grid view, but with the axes reversed and showing different |
-info. Located at /tgrid. |
- |
-** Trigger steps improvements |
- |
-Trigger now supports copy_properties, to send selected properties to the |
-triggered build. |
- |
-* Release 0.7.10 (25 Feb 2009) |
- |
-This release is mainly a collection of user-submitted patches since |
-the last release. |
- |
-** New Features |
- |
-*** Environment variables in a builder (#100) |
- |
-It is useful to be able to pass environment variables to all steps in a |
-builder. This is now possible by adding { .. 'env': { 'var' : 'value' }, ... } |
-to the builder specification. |
- |
-*** IRC status plugin improvements (#330, #357, #378, #280, #381, #411, #368) |
- |
-*** usePTY specified in master.cfg, defaults to False (#158, #255) |
- |
-Using a pty has some benefits in terms of supporting "Stop Build", but causes |
-numerous problems with simpler jobs which can be killed by a SIGHUP when their |
-standard input is closed. With this change, PTYs are not used by default, |
-although you can enable them either on slaves (with the --usepty option to |
-create-slave) or on the master. |
- |
-*** More information about buildslaves via the web plugin (#110) |
- |
-A new page, rooted at /buildslave/$SLAVENAME, gives extensive information about |
-the buildslave. |
- |
-*** More flexible merging of requests (#415) |
- |
-The optional c['mergeRequests'] configuration parameter takes a function |
-which can decide whether two requests are mergeable. |
- |
-*** Steps can be made to run even if the build has halted (#414) |
- |
-Adding alwaysRun=True to a step will cause it to run even if some other step |
-has failed and has haltOnFailure=True. |
- |
-*** Compress buildstep logfiles (#26) |
- |
-Logs for each buildstep, which can take a lot of space on a busy buildmaster, |
-are automatically compressed after the step has finished. |
- |
-*** Support for "latent" buildslaves |
- |
-The buildslaves that are started on-demand are called "latent" buildslaves. |
-Buildbot ships with an abstract base class for building latent buildslaves, and |
-a concrete implementation for AWS EC2. |
- |
-*** Customized MailNotifier messages (#175) |
- |
-MailNotifier now takes an optional function to build the notification message, |
-allowing ultimate site-level control over the format of buildbot's notification |
-emails. |
- |
-*** Nightly scheduler support for building only if changes have occurred |
- |
-With the addition of onlyIfChanged=True, the Nightly scheduler will not schedule |
-a new build if no changes have been made since its last scheduled build. |
- |
-*** Add ATOM/RSS feeds to WebStatus (#372) |
- |
-Two new pages, /atom and /rss, provide feeds of build events to any feed |
-reader. These paths take the same "category" and "branch" arguments as the |
-waterfall and grid. |
- |
-*** Add categories to Schedulers and Changes (#182) |
- |
-This allows a moderate amount of support for multiple projects built in a |
-single buildmaster. |
- |
-*** Gracefully shut down a buildslave after its build is complete |
- |
-The /buildslaves/$SLAVENAME pages have a "Gracefully Shutdown" button which |
-will cause the corresponding slave to shut itself down when it finishes its |
-current build. This is a good way to do work on a slave without causing a |
-spurious build failure. |
- |
-*** SVN source steps can send usernames and passwords (#41) |
- |
-Adding username="foo" and/or password="bar" to an SVN step will cause |
---username and --password arguments to be passed to 'svn' on the slave side. |
-Passwords are suitably obfuscated in logfiles. |
- |
-** New Steps |
- |
-*** DirectoryUpload (#393) |
- |
-This step uploads an entire directory to the master, and can be useful when a |
-build creates several products (e.g., a client and server package). |
- |
-*** MasterShellCommand |
- |
-This step runs a shell command on the server, and can be useful for |
-post-processing build products, or performing other maintenance tasks on the |
-master. |
- |
-*** PyLint (#259) |
- |
-A PyLint step is available to complement the existing PyFlakes step. |
- |
-** Bugs Fixed |
- |
-*** Process output from new versions of Test::Harness (#346) |
- |
-*** Fixes to the try client and scheduler |
- |
-*** Remove redundant loop in MailNotifier (#315) |
- |
-*** Display correct $PWD in logfiles (#179) |
- |
-*** Do not assume a particular python version on Windows (#401) |
- |
-*** Sort files in changes (#402) |
- |
-*** Sort buildslaves lexically (#416) |
- |
-*** Send properties to all builds initiated by AnyBranchScheduler |
- |
-*** Dependent Schedulers are more robust to reconfiguration (#35) |
- |
-*** Fix properties handling in triggered buidls (#392) |
- |
-*** Use "call" on Windows to avoid errors (#417) |
- |
-*** Support setDefaultWorkdir in FileUpload and FileDownload (#209) |
- |
-*** Support WithProperties in FileUpload and FileDownload (#210) |
- |
-*** Fix a bug where changes could be lost on a master crash (#202) |
- |
-*** Remove color settings from non-presentation code (#251) |
- |
-*** Fix builders which stopped working after a PING (#349, #85) |
- |
-*** Isolate Python exceptions in status plugins (#388) |
- |
-*** Notify about slaves missing at master startup (#302) |
- |
-*** Fix tracebacks in web display after a reconfig (#176) |
- |
-** Version-Control Changes |
- |
-*** Many Mercurial fixes |
- |
- - Inrepo branch support finalized (source step + changegroup hook + test case) |
- (#65 #185 #187) |
- |
- - Reduced amount of full clones by separating clone with update into |
- clone/pull/update steps (#186, #227) (see #412 for future work here) |
- |
- - Fixed mercurial changegroup hook to work with Mercurial 1.1 API (#181, #380) |
- |
-*** Many git fixes |
- |
-*** Add got_revision to Perforce support (#127) |
- |
-*** Use "git foo" everywhere instead of deprecated "git-foo" |
- |
-** Minor Changes |
- |
-*** factory.addSteps (#317) |
- |
-If you have a common list of steps that are included in multiple factories, you |
-can use f.addSteps(steplist) to add them all at once. |
- |
-*** Twisted logfile rotation and cleanup (#108) |
- |
-By default, Buildbot now rotates and cleans up the (potentially voluminous) |
-twistd.log files. |
- |
-*** Prioritize build requests based on the time they wre submitted (#334) |
- |
-Balancing of load is a bit more fair, although not true load balancing. |
- |
-* Release 0.7.9 (15 Sep 2008) |
- |
-** New Features |
- |
-*** Configurable public_html directory (#162) |
- |
-The public_html/ directory, which provides static content for the WebStatus() |
-HTTP server, is now configurable. The default location is still the |
-public_html/ subdirectory of the buildmaster's base directory, but you can |
-change this by passing a suitable argument when creating the WebStatus() |
-instance in your master.cfg file: |
- |
- c['status'].append( WebStatus(8080, public_html="/var/www/buildbot") ) |
- |
-*** Lock access modes (#313) |
- |
-Albert Hofkamp added code to provide two distinct access modes to Locks: |
-"counting" and "exclusive". Locks can accept a configurable number of |
-"counting"-mode users, or a single "exclusive"-mode. For example, a Lock is |
-defined with maxCount=3, and then a 'compile' BuildStep uses this lock in |
-counting mode, while a 'cleanup' BuildStep uses this lock in exclusive mode. |
-Then, there can be one, two, or three simultaneous Builds in the compile step |
-(as long as there are no builds in the cleanup step). Only one build can be |
-in the cleanup step at a time, and if there is such a build in the cleanup |
-step, then the compile steps in other builds will wait for it to finish. |
-Please see the "Interlocks" section of the user's manual for more details. |
- |
-** Bugs Fixed |
- |
-*** Buildslave missing_timeout= fired too quickly (#211) |
- |
-By providing a missing_timeout= argument when creating the BuildSlave |
-instance, you can ask the buildmaster to send email if a buildslave is |
-disconnected for too long. A bug in the previous version caused this |
-notification to be sent too soon, rather than waiting until the timeout |
-period expired. This should be fixed now. |
- |
-*** Test command display fixed (#332) |
- |
-In the previous version, a steps.shell.Test step would display the parsed |
-test results (in the step's box on the waterfall display) in lieu of any |
-other descriptive text the step might provide. In this release, these two |
-pieces of information are combined. |
- |
-** Minor Changes |
- |
-The buildmaster's version is logged to its twistd.log file at startup. The |
-buildslave does the same, to its own logfile. |
- |
-Remote commands now record how long each command took. The "elapsedTime=" |
-message will appear in the step's main logfile. |
- |
-The "buildbot restart" command no longer fails if the buildbot wasn't already |
-running. |
- |
-The FileUpload and FileDownload steps now create their target directories |
-(and any missing intermediate directories) before writing to the destination |
-file. |
- |
-The per-build and per-step web pages now show the start, finish, and elapsed |
-time of their build or step. |
- |
-If a Subversion-based build is started with a mixture of Changes that specify |
-particular numeric revisions and "HEAD" Changes (which indicate that a trunk |
-checkout is desired), the build will use a trunk checkout. Previously this |
-would probably cause an error. It is not clear how this situation might |
-arise. |
- |
-** Compability With Other Tools |
- |
-The mercurial commit hook (buildbot.changes.hgbuildbot) in the previous |
-version doesn't work with hg-1.0 or later (it uses an API function that was |
-present in the hg-0.9.5 release, but was removed from hg-1.0). This |
-incompability has been fixed: the new version of buildbot should be |
-compatible with hg-1.0 and newer (and it probably retains compability with |
-hg-0.9.5 and earlier too). (#328) |
- |
-The Git tool has traditionally provided two ways to run each command, either |
-as subcommands of /usr/bin/git (like "git checkout"), or as individual tools |
-(like /usr/bin/git-checkout). The latter form is being removed in the |
-upcoming 1.6 Git release. Previous versions of Buildbot have used the |
-git-checkout form, and will break when Git is upgraded to 1.6 or beyond. The |
-new Buildbot release switches to the subcommand form. Note that this is a |
-change on the buildslave side. |
- |
-The Git checkout command will now use the default branch (as set in the |
-steps.source.Git() step definition) if the changes that it is building do not |
-specify some other branch to build. (#340) |
- |
-** Deprecation Schedule |
- |
-No features have been deprecated in this release, and no deprecated features |
-have been removed. As a reminder, the following deprecated features are |
-scheduled for removal in an upcoming release: |
- |
-c['sources'] (plural) was replaced by c['change_source'] (singular) in 0.7.6, |
-and will be removed by 0.8.0. |
- |
-c['bots'] was replaced by c['buildslaves'] in 0.7.6, and will be removed by |
-0.8.0 . c['bots'] only accepts BuildSlave instances, not name/passwd tuples. |
- |
-The html.Waterfall status target was replaced by html.WebStatus in 0.7.6, and |
-will be removed by 0.8.0. |
- |
- |
-* Release 0.7.8 (24 Jul 2008) |
- |
-** New features |
- |
-The IRC bot will respond to three new commands: 'notify' subscribes the |
-channel (or the sender, if the command is sent as a private "/msg") to hear |
-about build events. 'join' tells the bot to join some new IRC channel. |
-'leave' tells it to leave a channel. See the "IRC Bot" section of the User's |
-Manual for details. (#171) |
- |
-Build Steps now have "statistics", in addition to logfiles. These are used to |
-count things like how many tests passed or failed. There are methods to sum |
-these counters across all steps and display the results in the Build status. |
-The Waterfall display now shows the count of failed tests on the top-most box |
-in each column, using this mechanism. |
- |
-The new buildbot.steps.shell.PerlModuleTest step was added, to run Perl unit |
-tests. This is a wrapper around the regular ShellCommand that parses the |
-output of the standard perl unit test system and counts how many tests |
-passed/failed/etc. The results are put into the step's summary text, and a |
-count of tests passed/failed/skipped are tracked in the steps's statistics. |
-The factory.CPAN build factory has been updated to use this, so configuring a |
-Buildbot to test a perl module available from CPAN should be as easy as: |
- |
- s = source.CVS(cvsroot, cvsmodule) |
- f = factory.CPAN(s) |
- |
-Build Properties have been generalized: they remain associated with a single |
-Build, but the properties can be set from a variety of sources. In previous |
-releases, the Build itself would set properties like 'buildername', 'branch', |
-and 'revision' (the latter two indicating which version of the source code it |
-was trying to get), and the source-checkout BuildSteps would set a property |
-named 'got_revision' (to indicate what version of the soruce code it actually |
-got). In this release, the 'scheduler' property is set to indicate which |
-Scheduler caused the build to be started. In addition, the config file can |
-specify properties to be set on all Builds, or on all Builds for a specific |
-Builder. All these properties are available for interpolation into |
-ShellCommands and environment variables by using the WithProperties() marker. |
- |
-It may be easier to implement simple build parameterization (e.g. to upload |
-generated binaries to a specific directory, or to only perform long-running |
-tests on a nightly build instead of upon every checkin) by using these Build |
-Properties than to write custom BuildSteps. |
- |
-** Other improvements |
- |
-The /buildslaves web page shows which slaves are currently running builds. |
-Offline slaves are displayed in bold. |
- |
-Buildbot's setup.py now provides metadata to setuptools (if installed): an |
-entry_points script was added, and a dependency upon twisted-2.4.x or newer |
-was declared. This makes it more likely that 'easy_install buildbot' will |
-work. |
- |
-The MailNotifier class acquired a mode="passing" flag: in this mode, the |
-buildbot will only send mail about passing builds (versus only on failing |
-builds, or only on builds which failed when the previous build had passed). |
- |
-** Bugs fixed |
- |
-Don't display force/stop build buttons when build control is disabled (#246) |
- |
-When a build is waiting on a lock, don't claim that it has started (#107) |
- |
-Make SVN mode=copy tolerate symlinks on freebsd, "cp -rp" -> "cp -RPp" (#86) |
- |
-The svnpoller changesource now ignores branch deletion (#261) |
- |
-The Git unit tests should run even if the user has not told Git about their |
-username/email. |
- |
-The WebStatus /xmlrpc server's getStatus() method was renamed to the |
-more-accurate getLastBuildResults(). |
- |
-The TinderboxMailNotifier status output acquired an useChangeTime= argument. |
- |
-The bonsaipoller changesource got some fixes. |
- |
-** Deprecation Schedule |
- |
-No features have been deprecated in this release, and no deprecated features |
-have been removed. As a reminder, the following deprecated features are |
-scheduled for removal in an upcoming release: |
- |
-c['sources'] (plural) was replaced by c['change_source'] (singular) in 0.7.6, |
-and will be removed by 0.8.0. |
- |
-c['bots'] was replaced by c['buildslaves'] in 0.7.6, and will be removed by |
-0.8.0 . c['bots'] only accepts BuildSlave instances, not name/passwd tuples. |
- |
-The html.Waterfall status target was replaced by html.WebStatus in 0.7.6, and |
-will be removed by 0.8.0. |
- |
- |
- |
-* Release 0.7.7 (29 Mar 2008) |
- |
-** Things You Need To Know |
- |
-*** builder names must not start with an underscore (`_'). |
- |
-These are now reserved for internal buildbot purposes, such as the magic |
-"_all" pseudo-builder that the web pages use to allow force-build buttons |
-that start builds on all Builders at once. |
- |
-** New Features |
- |
-*** "buildbot checkconfig" |
- |
-The "buildbot checkconfig" command will look at your master.cfg file and tell |
-you if there are any problems with it. This can be used to test potential |
-changes to your config file before submitting them to the running |
-buildmaster. This is particularly useful to run just before doing "buildbot |
-restart", since the restart will fail if the config file has an error. By |
-running "buildbot checkconfig master.cfg && buildbot restart", you'll only |
-perform the restart if the config file was ok. Many thanks to Ben Hearsum for |
-the patch. |
- |
-*** Waterfall "?category=FOO" query-arguments |
- |
-The Waterfall page now accepts one or more "category=" query arguments in the |
-URL, to filter the display by categories. These behave a lot like the |
-"builder=" query argument. Thanks to Jermo Davann for the patch. |
- |
-** Bugs Fixed |
- |
-Many bugs were fixed, and many minor features were added. Many thanks to |
-Dustin Mitchell who fixed and coordinated many of these. Here is a terse |
-list, for more details, please see the Trac page for the 0.7.7 release, at |
-http://buildbot.net/trac/query?status=closed&milestone=0.7.7 : |
- |
-Many of the URLs generated by the buildbot were wrong. |
-Display of last-heard-from timestamps on the buildslaves web page were wrong. |
-Asking an IRC bot about a build waiting on a Lock should no longer crash. |
-Same for the web viewer. |
-Stop treating the encouraged info/ directory as leftover. |
-Add more force/stop build buttons. |
-Timestamps displayed on the waterfall now handle daylight savings properly. |
-p4poller no longer quits after a single failure. |
-Improved Git support, including 'try', branch, and revisions. |
-Buildslaves now use 'git', not 'cogito'. |
-Make older hg client/servers handle specific-revision builds properly. |
-Fix twisted.scripts._twistw problem on twisted-2.5.0 and windows. |
-Fix workdir= and env= on ShellCommands |
-Fix logfile-watching in 'buildbot start' on OS-X. |
-Fix ShellCommand crashes when the program emits >640kB of output per chunk. |
-New WarningCountingShellCommand step. |
-Fix TreeSize step. |
-Fix transfer.FileUpload/FileDownload crashes for large files. |
-Make 'buildbor reconfig' on windows tell you that it doesn't work. |
-Add a To: header to the mail sent by the slave-missing timeout. |
-Disable usePTY= for most unit tests, it makes some debian systems flunk tests. |
-Add 'absolute source stamps' |
-Add 'triggerable schedulers', and a buildstep to trigger them. |
-Remove buildbot.changes.freshcvsmail |
-Add new XMLRPC methods: getAllBuilders, getStatus, getLastBuilds. |
-Accept WithProperties in more places: env=, workdir=, others. |
-Use --no-auth-cache with SVN commands to avoid clobbering shared svn state. |
-Add hours/minutes/seconds in the waterfall's ETA display. |
-Trial: count Doctest lines too. |
-ShellCommand: record more info in the headers: stdin closing, PTY usage. |
-Make it possible to stop builds across reconfig boundaries. |
-SVN revision numbers are now passed as strings, which was breaking MailNotifier |
- |
-** Deprecation Schedule |
- |
-The changes.freshcvsmail change source was replaced by |
-changes.mail.FCMaildirSource in 0.7.6, and has been removed in 0.7.7 . |
- |
-c['sources'] (plural) was replaced by c['change_source'] (singular) in 0.7.6, |
-and will be removed by 0.8.0. |
- |
-c['bots'] was replaced by c['buildslaves'] in 0.7.6, and will be removed by |
-0.8.0 . c['bots'] only accepts BuildSlave instances, not name/passwd tuples. |
- |
-The html.Waterfall status target was replaced by html.WebStatus in 0.7.6, and |
-will be removed by 0.8.0. |
- |
- |
-* Release 0.7.6 (30 Sep 2007) |
- |
-** Things You Need To Know |
- |
-*** 'buildbot upgrade-master' |
- |
-Each time you install a new version of Buildbot, you should run the new |
-'buildbot upgrade-master' command on each of your pre-existing buildmasters. |
-This will add files and fix (or at least detect) incompatibilities between |
-your old config and the new code. |
- |
-*** new WebStatus page |
- |
-The Waterfall has been replaced by the more general WebStatus display, |
-described below. WebStatus serves static files from a new public_html/ |
-directory that lives in the buildmaster's basedir. Files like index.html, |
-buildbot.css, and robots.txt are served directly from that directory, so any |
-modifications you wish to make should be made to those files. In particular, |
-any custom CSS you've written should be copied into public_html/buildbot.css. |
-The 'upgrade-master' command will populate this directory for you. |
- |
-The old Waterfall page is deprecated, but it should continue to work for |
-another few releases. It is now a subclass of WebStatus which just replaces |
-the default root URL with another copy of the /waterfall resource. |
- |
-*** Compatibility: Python-2.3 or newer, Twisted-2.0 or newer |
- |
-No compatiblity losses here, buildbot-0.7.6 is compatible with the same |
-versions of python and twisted that 0.7.5 was. |
- |
-Buildbot is tested on a regular basis (http://buildbot.buildbot.net) against |
-nearly a full matrix of Python-(2.3,2.4,2.5) * Twisted-(2.0,2.1,2.2,2.4,2.5). |
- |
-*** New Buildbot Home Page |
- |
-Buildbot has moved to a new Trac instance at http://buildbot.net/ , and all |
-new bugs and tickets should be filed there. The old sourceforge bugs at |
-http://buildbot.sf.net/ will slowly be migrated over. Mailing lists are still |
-managed at sourceforge, and downloads are still available there. |
- |
-*** Changed/Deprecated master.cfg Keys and Classes |
- |
-c['sources'] (plural) has been replaced by c['change_source'] (singular). |
- |
-c['bots'] has been replaced by c['buildslaves'], and it expects a list of |
-BuildSlave instances instead of tuples. See below for more details. |
- |
-The 'freshcvsmail' change source has been deprecated, and will be removed in |
-the next release. |
- |
-The html.Waterfall status target has been deprecated, and replaced by |
-html.WebStatus . |
- |
-** New Features |
- |
-*** WebStatus |
- |
-The new WebStatus display is a superset of the old Waterfall. It contains a |
-waterfall as a sub-page, but it also contains pages with more compact |
-representations of recent build status. The "one_line_per_build" page |
-contains just that, and "one_box_per_builder" shows just the information from |
-the top of the waterfall page (last-finished-build and current-activity). |
- |
-The initial page (when you hit the root of the web site) is served from |
-index.html, and provides links to the Waterfall as well as the other pages. |
- |
-Most of these pages can be filtered by adding query arguments to the URL. |
-Adding "?builder=XYZ" will cause the page to only show results for the given |
-builder. Adding "?builder=XYZ&builder=ABC" will show results for either |
-builder. "?branch=trunk" will limit the results to builds that involved code |
-from the trunk. |
- |
-The /waterfall page has arguments to hide those annoying "buildslave |
-connected" messages, to start and and at arbitrary times, and to auto-refresh |
-at a chosen interval (with a hardcoded minimum of 15 seconds). It also has a |
-"help" page with forms that will help you add all of these nifty filtering |
-arguments. |
- |
-The recommended practice is to modify the index.html file to include links to |
-the filtered pages that you find most useful. |
- |
-Note that WebStatus defaults to allowForce=False, meaning that the display |
-will not offer or accept "Force Build" or "Stop Build" controls. (The old |
-Waterfall defaults to allowForce=True). |
- |
-The new WebStatus pages try very hard to use only relative links, making life |
-better when the Buildbot sits behind an HTTP reverse proxy. |
- |
-In addition, there is a rudimentary XMLRPC server run by the WebStatus |
-object. It only has two methods so far, but it will acquire more in the |
-future. The first customer of this is a project to add a buildbot plugin to |
-Trac. |
- |
-*** BuildFactory.addStep(Step(args)) |
- |
-BuildFactories can be set up either with a complete list of steps, or by |
-calling the .addStep() method repeatedly. The preferred way to provide a step |
-is by instantiating it, rather than giving a class/kwargs pair. This gives |
-the BuildStep class a chance to examine the arguments (and complain about |
-anything it doesn't like) while the config file is being read and problems |
-are being logged. For example, the old-style: |
- |
- from buildbot.process.factory import BuildFactory, s |
- steps = [s(CVS, cvsroot="blah", mode="copy"), |
- s(Compile, command=["make", "all"]), |
- s(Test, command=["make", "test"]), |
- ] |
- f = BuildFactory(steps) |
- |
-is now: |
- |
- f = BuildFactory() |
- f.addStep( CVS(cvsroot="blah", mode="copy") ) |
- f.addStep( Compile(command=["make", "all"]) ) |
- f.addStep( Test(command=["make", "test"]) ) |
- |
-Authors of BuildStep subclasses which override __init__ to add new arguments |
-must register them with self.addFactoryArguments(**newargs) to make sure that |
-those classes will work with this new style, otherwise the new arguments will |
-be lost. |
- |
-Using class/kwargs pairs is deprecated, and will be removed in a future |
-release. |
- |
- |
-*** BuildSlave instances, max_builds=, notify_on_missing= |
- |
-Buildslave specification has changed a lot in this release. The old config: |
- |
- c['bots'] = [ ("bot1name", "bot1passwd"), |
- ("bot2name", "bot2passwd") ] |
- |
-is now: |
- |
- from buildbot.buildslave import BuildSlave |
- c['slaves'] = [ BuildSlave("bot1name", "bot1passwd"), |
- BuildSlave("bot2name", "bot2passwd") ] |
- |
-This new form gives us the ability to add new controls. The first is |
-"max_builds=", which imposes a concurrency limit that is like the usual |
-SlaveLock, but gives the buildmaster the opportunity to find a different |
-slave to run the build. (the buildslave is chosen before the SlaveLock is |
-claimed, so pure SlaveLocks don't let you take full advantage of build |
-farms). |
- |
-The other addition is "notify_on_missing=", which accepts an email address |
-(or list of addresses), and sends a message when the buildslave has been |
-disconnected for more than an hour (configurable with missing_timeout=). This |
-may be useful when you expect that the buildslave hosts should be available |
-most of the time, and want to investigate the reasons that it went offline. |
- |
- |
-** Other Improvements |
- |
-The IRC bot has been refactored to make it easier to add instant-messaging |
-status delivery in the future. The IM plugins are not yet written, though. |
- |
-When multiple buildslaves are available for a given build, one of them will |
-be picked at random. In previous releases, the first one on the list was |
-always picked. This helps to add a certain measure of load-balancing. More |
-improvements will be made in the future. |
- |
-When the buildslave does a VC checkout step that requires clobbering the |
-build directory (i.e. in all modes except for 'update'), the buildslave will |
-first set the permissions on all build files to allow their deletion, before |
-it attempts to delete them. This should fix some problems in which a build |
-process left non-user-writable files lying around (frequently a result of |
-enthusiastic unit tests). |
- |
-The BuildStep's workdir= argument can now accept a WithProperties() |
-specification, allowing greater control over the workdir. |
- |
-Support for the 'Bazaar' version control system (/usr/bin/bzr) has been |
-added, using the buildbot.steps.source.Bzr class. This is a replacement for |
-the old 'Arch' (/usr/bin/tla and /usr/bin/baz) systems, which are still |
-supported by Buildbot with the source.Arch and source.Bazaar classes, |
-respectively. Unfortunately the old baz system claimed the 'Bazaar' classname |
-early, so the new system must use source.Bzr instead of the desired |
-source.Bazaar . A future release might change this. |
- |
-A rudimentary Gnome Panel applet is provided in contrib/bb_applet.py, which |
-provides 'buildbot statusgui' -like colored status boxes inside the panel. |
-Installing it is a bit tricky, though. |
- |
-The 'buildbot try' command now accepts a '--diff=foo.patch' argument, to let |
-you provide a pre-computed patch. This makes it easier to test out patches |
-that you've looked over for safety, without first applying them to your local |
-source tree. |
- |
-A new Mercurial change source was added, hg_buildbot.py, which runs as an |
-in-process post-commit hook. This gives us access to much more information |
-about the change, as well as being much faster. |
- |
-The email-based changesource have been refactored, to make it easier to write |
-new mail parsers. A parser for the SVN "commit-email.pl" script has been |
-added. |
- |
-** Bugs Fixed |
- |
-Far too many to count. Please see |
-http://buildbot.net/trac/query?status=closed&milestone=0.7.6 for a partial |
-list of tickets closed for this release, and the ChangeLog for a complete |
-list of all changes since 0.7.5 . |
- |
- |
-* Release 0.7.5 (10 Dec 2006) |
- |
-** Things You Need To Know |
- |
-*** The Great BuildStep Renaming |
- |
-All BuildSteps have moved! They used to be classes in buildbot.process.step, |
-but now they all have separate modules in buildbot.steps.* . They have been |
-split out into separate categories: for example, the source checkout steps |
-are now buildbot.steps.source.CVS, buildbot.steps.source.Darcs, etc. The most |
-commonly used one is probably buildbot.steps.shell.ShellCommand . The |
-python-specific steps are in buildbot.steps.python, and the Twisted-specific |
-steps are in buildbot.steps.python_twisted . |
- |
-You will need to update your master.cfg files to use the new names. The old |
-names are deprecated and will be removed altogether in the next release. |
- |
-*** Compatibility |
- |
-Buildbot now requires python-2.3 or later. Buildbot now requires |
-Twisted-2.0.0 or later. Support for earlier versions of both has finally been |
-removed. If you discover it works with unsupported versions, please return |
-your Buildbot to the factory for repairs :-). |
- |
-Buildbot has *not* yet been tested against the recent python-2.5 release. It |
-has been tested against the latest SVN version of Twisted, but only in |
-conjunction with python-2.4 . |
- |
-** new features |
- |
-*** reconfiguring a Builder no longer causes a disconnect/reconnect cycle |
- |
-This means that sending SIGHUP to the master or running 'buildbot reconfig |
-MASTERDIR' command no longer interrupts any current builds, nor does it lose |
-pending builds like it did before. This involved a fairly substantial |
-refactoring of the various internal BotPerspective/BotMaster/Builder classes. |
-Note that reconfiguring Schedulers still loses any Changes that were waiting |
-for the tree to become stable: hopefully this will be fixed in the next |
-release. |
- |
-*** 'buildbot start/restart/reconfig' now show logs until startup is complete |
- |
-These commands now have additional code to follow twistd.log and display all |
-the lines that are emitted from the beginning of the start/reconfig action |
-until it has completed. This gives you a chance to see any problems detected |
-in the config file without needing to manually look in twistd.log or use |
-another shell to 'tail -f' it. This also makes it clear which config file is |
-being used. This functionality is not available under windows. |
- |
-In addition, if any problems are detected during 'start' or 'restart' (but |
-not reconfig), the buildbot command will terminate with a non-zero exit |
-status, making it easier to use in scripts. Closes SF#1517975. |
- |
-*** Locks now take maxCount=N to allow multiple simultaneous owners |
- |
-This allows Locks to be non-exclusive but still limit maximum concurrency. |
-Thanks to James Knight for the patch. Closes SF#1434997. |
- |
-*** filetransfer steps |
- |
-buildbot.steps.transfer.FileUpload is a buildstep that will move files from |
-the slave to the master. Likewise, FileDownload will move files from the |
-master down to the buildslave. Many thanks to Albert Hofkamp for contributing |
-these classes. Closes SF#1504631. |
- |
-*** pyflakes step |
- |
-buildbot.steps.python.PyFlakes will run the simple 'pyflakes' static analysis |
-tool and parse the results to tell you about undefined names, unused imports, |
-etc. You'll need to tell it how to run pyflakes, usually with something like |
-command=["pyflakes", "src/packagedir"] or the like. The default command is |
-"make pyflakes", which assumes that you have a suitable target in your |
-top-level Makefile. |
- |
-*** Monotone support |
- |
-Nathaniel Smith has contributed initial support for the Monotone version |
-control system. The code still needs docs and tests, but on the other hand it |
-has been in use by the Monotone buildbot for a long time now, so it is |
-probably fairly stable. |
- |
-*** Tinderbox support |
- |
-Ben Hearsum and the Mozilla crew have contributed some classes to allow |
-Buildbot to work with Tinderbox clients. One piece is |
-buildbot.changes.bonsaipoller.BonsaiPoller, which is a ChangeSource that |
-polls a Bonsai server (which is a kind of web-vased viewcvs CGI script) to |
-discover source code changes. The other piece is |
-buildbot.status.tinderbox.TinderboxMailNotifier, which is a status plugin |
-that sends email in the same format as Tinderbox does, which allows a number |
-of Tinderbox tools to be driven by Buildbot instead. |
- |
-*** SVN Poller |
- |
-Niklaus Giger contributed a ChangeSource (buildbot.changes.svnpoller) which |
-polls a remote SVN repository on a periodic basis. This is useful when, for |
-whatever reason, you cannot add a post-commit hook script to the repository. |
-This obsoletes the external contrib/svn_watcher.py script. |
- |
-** notes for plugin developers |
- |
-*** IStatusLog.readlines() |
- |
-This new method makes it easier for a status plugin (or a |
-BuildStep.createSummary method) to walk through a StatusLog one line at a |
-time. For example, if you wanted to create an extra logfile that just |
-contained all the GCC warnings from the main log, you could use the |
-following: |
- |
- def createSummary(self, log): |
- warnings = [] |
- for line in log.readlines(): |
- if "warning:" in line: |
- warnings.append() |
- self.addCompleteLog('warnings', "".join(warnings)) |
- |
-The "BuildStep LogFiles" section of the user's manual contains more |
-information. This method is not particularly memory-efficient yet (it reads |
-the whole logfile into memory first, then splits it into lines); this will be |
-improved in a future release. |
- |
-** bug fixes |
- |
-*** Update source.SVN to work with the new SVN-1.4.0 |
- |
-The latest subversion changed the behavior in an unusual situation which |
-caused the unit tests to fail. This was unlikely to cause a problem in actual |
-usage, but the tests have been updated to pass with the new version. |
- |
-*** update svn_buildbot.py to avoid mangling filenames |
- |
-Older versions of this script were stripping the wrong number of columns from |
-the output of 'svnlook changed', and would sometimes mangle filenames. This |
-has been fixed. Closes SF#1545146. |
- |
-*** logfiles= caused subsequent build failures under Windows |
- |
-Earlier versions of buildbot didn't explicitly close any logfiles= file |
-handles when the build finished. On windows (where you cannot delete a file |
-that someone else is reading), this could cause the next build to fail as the |
-source checkout step was unable to delete the old working directory. This has |
-been fixed. Closes SF#1568415. |
- |
-*** logfiles= didn't work on OS-X |
- |
-Macintosh OS-X has a different behavior when reading files that have reached |
-EOF, the result was that logfiles= sometimes didn't work. Thanks to Mark Rowe |
-for the patch. |
- |
-** other changes |
- |
-The 'buildbot sighup MASTERDIR' command has been replaced with 'buildbot |
-reconfig MASTERDIR', since that seems to be a slightly more meaningful name. |
-The 'sighup' form will remain as an alias. |
- |
- |
-* Release 0.7.4 (23 Aug 2006) |
- |
-** Things You Need To Know |
- |
-The PBChangeSource's prefix= argument has changed, you probably need to add a |
-slash now. This is mostly used by sites which use Subversion and |
-svn_buildbot.py. |
- |
-The subcommands that are used to create a buildmaster or a buildslave have |
-changed. They used to be called 'buildbot master' and 'buildbot slave'. Now |
-they are called 'buildbot create-master' and 'buildbot create-slave'. Zipf's |
-Law suggests that these are more appropriate names for these |
-infrequently-used commands. |
- |
-The syntax for the c['manhole'] feature has changed. |
- |
-** new features |
- |
-*** full Perforce support |
- |
-SF#1473939: large patch from Scott Lamb, with docs and unit tests! This |
-includes both the step.P4 source-checkout BuildStep, and the changes.p4poller |
-ChangeSource you'll want to feed it. P4 is now supported just as well as all |
-the other VC systems. Thanks Scott! |
- |
-*** SSH-based Manhole |
- |
-The 'manhole' feature allows buildbot developers to get access to a python |
-read/eval/print loop (REPL) inside the buildmaster through a network |
-connection. Previously, this ran over unencrypted telnet, using a simple |
-username/password for access control. The new release defaults to encrypted |
-SSH access, using either username/password or an authorized_keys file (just |
-like sshd). There also exists an unencrypted telnet form, but its use is |
-discouraged. The syntax for setting up a manhole has changed, so master.cfg |
-files that use them must be updated. The "Debug options" section in the |
-user's manual provides a complete description. |
- |
-*** Multiple Logfiles |
- |
-BuildSteps can watch multiple log files in realtime, not just stdout/stderr. |
-This works in a similar fashion to 'tail -f': the file is polled once per |
-second, and any new data is sent to the buildmaster. |
- |
-This requires a buildslave running 0.7.4 or later, and a warning message is |
-produced if used against an old buildslave (which will otherwise produce no |
-data). Use "logfiles={'name': 'filename'}" to take advantage of this feature |
-from master.cfg, and see the "ShellCommand" section of the user's manual for |
-full documentation. |
- |
-The 'Trial' buildstep has been updated to use this, to display |
-_trial_temp/test.log in realtime. It also knows to fall back to the previous |
-"cat" command if the buildslave is too old. |
- |
-*** BuildStep URLs |
- |
-BuildSteps can now add arbitrary URLs which will be displayed on the |
-Waterfall page in the same place that Logs are presented. This is intended to |
-provide a link to generated HTML pages, such as the output of a code coverage |
-tool. The step is responsible for somehow uploading the HTML to a web server: |
-this feature merely provides an easy way to present the HREF link to the |
-user. See the "BuildStep URLs" section of the user's manual for details and |
-examples. |
- |
-*** LogObservers |
- |
-BuildSteps can now attach LogObservers to various logfiles, allowing them to |
-get real-time log output. They can use this to watch for progress-indicating |
-events (like counting the number of files compiled, or the number of tests |
-which have run), and update both ETA/progress-tracking and step text. This |
-allows for more accurate ETA information, and more information passed to the |
-user about how much of the process has completed. |
- |
-The 'Trial' buildstep has been updated to use this for progress tracking, by |
-counting how many test cases have run. |
- |
-** new documentation |
- |
-What classes are useful in your master.cfg file? A table of them has been |
-added to the user's manual, in a section called "Index of Useful Classes". |
- |
-Want a list of all the keys in master.cfg? Look in the "Index of master.cfg |
-keys" section. |
- |
-A number of pretty diagrams have been added to the "System Architecture" |
-portion of the manual, explaining how all the buildbot pieces fit together. |
- |
-An HTML form of the user's manual is now shipped in the source tarball. This |
-makes it a bit bigger: sorry about that. The old PyCon-2003 paper has been |
-removed from the distribution, as it is mostly supplanted by the user's |
-manual by this point. |
- |
-** bugfixes |
- |
-SF#1217699 + SF#1381867: The prefix= argument to PBChangeSource has been |
-changed: now it does just a simple string-prefix match and strip. The |
-previous behavior was buggy and unhelpful. NOTE: if you were using prefix= |
-before, you probably need to add a slash to the end of it. |
- |
-SF#1398174: ignore SVN property changes better, fixed by Olivier Bonnet |
- |
-SF#1452801: don't double-escape the build URL, fixed by Olivier Bonnet |
- |
-SF#1401121: add support for running py2exe on windows, by Mark Hammond |
- |
-reloading unchanged config files with WithProperties shouldn't change anything. |
- |
-All svn commands now include --non-interactive so they won't ask for |
-passwords. Instead, the command will fail if it cannot be performed without |
-user input. |
- |
-Deprecation warnings with newer versions of Twisted have been hushed. |
- |
-** compatibility |
- |
-I haven't actually removed support for Twisted-1.3.0 yet, but I'd like to. |
- |
-The step_twisted default value for --reporter matches modern Twisteds, |
-though, and won't work under 1.3.0. |
- |
-ShellCommand.flunkOnFailure now defaults to True, so any shell command which |
-fails counts as a build failure. Set this to False if you don't want this |
-behavior. |
- |
-** minor features |
- |
-contrib/darcs_buildbot.py contains a new script suitable for use in a darcs |
-commit-hook. |
- |
-Hovering a cursor over the yellow "Build #123" box in the Waterfall display |
-will pop up an HTML tooltip to show the reason for the build. Thanks to Zandr |
-Milewski for the suggestion. |
- |
-contrib/CSS/*.css now contains several contributed stylesheets to make the |
-Waterfall display a bit less ugly. Thanks to John O'Duinn for gathering them. |
- |
-ShellCommand and its derivatives can now accept either a string or a list of |
-strings in the description= and descriptionDone= arguments. Thanks to Paul |
-Winkler for the catch. |
- |
- |
-* Release 0.7.3 (23 May 2006) |
- |
-** compatibility |
- |
-This release is compatible with Twisted-1.3.0, but the next one will not be. |
-Please upgrade to at least Twisted-2.0.x soon, as the next buildbot release |
-will require it. |
- |
-** new features |
- |
-*** Mercurial support |
- |
-Support for Mercurial version control system (http://selenic.com/mercurial) |
-has been added. This adds a buildbot.process.step.Mercurial BuildStep. A |
-suitable hook script to deliver changes to the buildmaster is still missing. |
- |
-*** 'buildbot restart' command |
- |
-The 'buildbot restart BASEDIR' command will perform a 'buildbot stop' and |
-'buildbot start', and will attempt to wait for the buildbot process to shut |
-down in between. This is useful when you need to upgrade the code on your |
-buildmaster or buildslave and want to take it down for a minimum amount of |
-time. |
- |
-*** build properties |
- |
-Each build now has a set of named "Build Properties", which can be set by |
-steps and interpolated into ShellCommands. The 'revision' and 'got_revision' |
-properties are the most interesting ones available at this point, and can be |
-used e.g. to get the VC revision number into the filename of a generated |
-tarball. See the user's manual section entited "Build Properties" for more |
-details. |
- |
-** minor features |
- |
-*** IRC now takes password= argument |
- |
-Useful for letting your bot claim a persistent identity. |
- |
-*** svn_buildbot.py is easier to modify to understand branches |
-*** BuildFactory has a new .addStep method |
-*** p4poller has new arguments |
-*** new contrib scripts: viewcvspoll, svnpoller, svn_watcher |
- |
-These poll an external VC repository to watch for changes, as opposed to |
-adding a hook script to the repository that pushes changes into the |
-buildmaster. This means higher latency but may be easier to configure, |
-especially if you do not have authority on the repository host. |
- |
-*** VC build property 'got_revision' |
- |
-The 'got_revision' property reports what revision a VC step actually |
-acquired, which may be useful to know when building from HEAD. |
- |
-*** improved CSS in Waterfall |
- |
-The Waterfall display has a few new class= tags, which may make it easier to |
-write custom CSS to make it look prettier. |
- |
-*** robots_txt= argument in Waterfall |
- |
-You can now pass a filename to the robots_txt= argument, which will be served |
-as the "robots.txt" file. This can be used to discourage search engine |
-spiders from crawling through the numerous build-status pages. |
- |
-** bugfixes |
- |
-*** tests more likely to pass on non-English systems |
- |
-The unit test suite now sets $LANG='C' to make subcommands emit error |
-messages in english instead of whatever native language is in use on the |
-host. This improves the chances that the unit tests will pass on such |
-systems. This affects certain VC-related subcommands too. |
- |
-test_vc was assuming that the system time was expressed with a numeric |
-timezone, which is not always the case, especially under windows. This |
-probably works better now than it did before. This only affects the CVS |
-tests. |
- |
-'buildbot try' (for CVS) now uses UTC instead of the local timezone. The |
-'got_revision' property is also expressed in UTC. Both should help deal with |
-buggy versions of CVS that don't parse numeric timezones properly. |
- |
- |
-* Release 0.7.2 (17 Feb 2006) |
- |
-** new features |
- |
-*** all TCP port numbers in config file now accept a strports string |
- |
-Sometimes it is useful to restrict certain TCP ports that the buildmaster |
-listens on to use specific network interfaces. In particular, if the |
-buildmaster and SVN repository live on the same machine, you may want to |
-restrict the PBChangeSource to only listen on the loopback interface, |
-insuring that no external entities can inject Changes into the buildbot. |
-Likewise, if you are using something like Apache's reverse-proxy feature to |
-provide access to the buildmaster's HTML status page, you might want to hide |
-the real Waterfall port by having it only bind to the loopback interface. |
- |
-To accomplish this, use a string like "tcp:12345:interface=127.0.0.1" instead |
-of a number like 12345. These strings are called "strports specification |
-strings", and are documented in twisted's twisted.application.strports module |
-(you can probably type 'pydoc twisted.application.strports' to see this |
-documentation). Pretty much everywhere the buildbot takes a port number will |
-now accept a strports spec, and any bare numbers are translated into TCP port |
-numbers (listening on all network interfaces) for compatibility. |
- |
-*** buildslave --umask control |
- |
-Twisted's daemonization utility (/usr/bin/twistd) automatically sets the |
-umask to 077, which means that all files generated by both the buildmaster |
-and the buildslave will only be readable by the account under which the |
-respective daemon is running. This makes it unnecessarily difficult to share |
-build products (e.g. by symlinking ~/public_html/current_docs/ to a directory |
-within the slave's build directory where each build puts the results of a |
-"make docs" step). |
- |
-The 'buildbot slave <PARAMS>' command now accepts a --umask argument, which |
-can be used to override the umask set by twistd. If you create the buildslave |
-with '--umask=022', then all build products will be world-readable, making it |
-easier for other processes (run under other accounts) to access them. |
- |
-** bug fixes |
- |
-The 0.7.1 release had a bug whereby reloading the config file could break all |
-configured Schedulers, causing them to raise an exception when new changes |
-arrived but not actually schedule a new build. This has been fixed. |
- |
-Fixed a bug which caused the AnyBranchScheduler to explode when branch==None. |
-Thanks to Kevin Turner for the catch. I also think I fixed a bug whereby the |
-TryScheduler would explode when it was given a Change (which it is supposed |
-to simply ignore). |
- |
-The Waterfall display now does more quoting of names (including Builder |
-names, BuildStep names, etc), so it is more likely that these names can |
-contain unusual characters like spaces, quotes, and slashes. There may still |
-be some problems with these kinds of names, however.. please report any bugs |
-to the mailing list. |
- |
- |
-* Release 0.7.1 (26 Nov 2005) |
- |
-** new features |
- |
-*** scheduler.Nightly |
- |
-Dobes Vandermeer contributed a cron-style 'Nightly' scheduler. Unlike the |
-more-primitive Periodic class (which only lets you specify the duration |
-between build attempts), Nightly lets you schedule builds for specific times |
-of day, week, month, or year. The interface is very much like the crontab(5) |
-file. See the buildbot.scheduler.Nightly docstring for complete details. |
- |
-** minor new features |
- |
-*** step.Trial can work with Trial from Twisted >2.1.0 |
- |
-The 'Trial' step now accepts the trialMode= argument, which should be a list |
-of strings to be added to trial's argv array. This defaults to ["-to"], which |
-is appropriate for the Trial that ships in Twisted-2.1.0 and earlier, and |
-tells Trial to emit non-colorized verbose output. To use this step with |
-trials from later versions of Twisted, this should be changed to |
-["--reporter=bwverbose"]. |
- |
-In addition, you can now set other Trial command-line parameters through the |
-trialArgs= argument. This is a list of strings, and defaults to an empty list. |
- |
-*** Added a 'resubmit this build' button to the web page |
- |
-*** Make the VC-checkout step's description more useful |
- |
-Added the word "[branch]" to the VC step's description (used in the Step's |
-box on the Waterfall page, among others) when we're checking out a |
-non-default branch. Also add "rNNN" where appropriate to indicate which |
-revision is being checked out. Thanks to Brad Hards and Nathaniel Smith for |
-the suggestion. |
- |
-** bugs fixed |
- |
-Several patches from Dobes Vandermeer: Escape the URLs in email, in case they |
-have spaces and such. Fill otherwise-empty <td> elements, as a workaround for |
-buggy browsers that might optimize them away. Also use binary mode when |
-opening status pickle files, to make windows work better. The |
-AnyBranchScheduler now works even when you don't provide a fileIsImportant= |
-argument. |
- |
-Stringify the base revision before stuffing it into a 'try' jobfile, helping |
-SVN and Arch implement 'try' builds better. Thanks to Steven Walter for the |
-patch. |
- |
-Fix the compare_attrs list in PBChangeSource, FreshCVSSource, and Waterfall. |
-Before this, certain changes to these objects in the master.cfg file were |
-ignored, such that you would have to stop and re-start the buildmaster to |
-make them take effect. |
- |
-The config file is now loaded serially, shutting down old (or replaced) |
-Status/ChangeSource plugins before starting new ones. This fixes a bug in |
-which changing an aspect of, say, the Waterfall display would cause an |
-exception as both old and new instances fight over the same TCP port. This |
-should also fix a bug whereby new Periodic Schedulers could fire a build |
-before the Builders have finished being added. |
- |
-There was a bug in the way Locks were handled when the config file was |
-reloaded: changing one Builder (but not the others) and reloading master.cfg |
-would result in multiple instances of the same Lock object, so the Locks |
-would fail to prevent simultaneous execution of Builds or Steps. This has |
-been fixed. |
- |
-** other changes |
- |
-For a long time, certain StatusReceiver methods (like buildStarted and |
-stepStarted) have been able to return another StatusReceiver instance |
-(usually 'self') to indicate that they wish to subscribe to events within the |
-new object. For example, if the buildStarted() method returns 'self', the |
-status receiver will also receive events for the new build, like |
-stepStarted() and buildETAUpdate(). Returning a 'self' from buildStarted() is |
-equivalent to calling build.subscribe(self). |
- |
-Starting with buildbot-0.7.1, this auto-subscribe convenience will also |
-register to automatically unsubscribe the target when the build or step has |
-finished, just as if build.unsubscribe(self) had been called. Also, the |
-unsubscribe() method has been changed to not explode if the same receiver is |
-unsubscribed multiple times. (note that it will still explode is the same |
-receiver is *subscribed* multiple times, so please continue to refrain from |
-doing that). |
- |
- |
-* Release 0.7.0 (24 Oct 2005) |
- |
-** new features |
- |
-*** new c['schedulers'] config-file element (REQUIRED) |
- |
-The code which decides exactly *when* a build is performed has been massively |
-refactored, enabling much more flexible build scheduling. YOU MUST UPDATE |
-your master.cfg files to match: in general this will merely require you to |
-add an appropriate c['schedulers'] entry. Any old ".treeStableTime" settings |
-on the BuildFactory instances will now be ignored. The user's manual has |
-complete details with examples of how the new Scheduler classes work. |
- |
-*** c['interlocks'] removed, Locks and Dependencies now separate items |
- |
-The c['interlocks'] config element has been removed, and its functionality |
-replaced with two separate objects. Locks are used to tell the buildmaster |
-that certain Steps or Builds should not run at the same time as other Steps |
-or Builds (useful for test suites that require exclusive access to some |
-external resource: of course the real fix is to fix the tests, because |
-otherwise your developers will be suffering from the same limitations). The |
-Lock object is created in the config file and then referenced by a Step |
-specification tuple or by the 'locks' key of the Builder specification |
-dictionary. Locks come in two flavors: MasterLocks are buildmaster-wide, |
-while SlaveLocks are specific to a single buildslave. |
- |
-When you want to have one Build run or not run depending upon whether some |
-other set of Builds have passed or failed, you use a special kind of |
-Scheduler defined in the scheduler.Dependent class. This scheduler watches an |
-upstream Scheduler for builds of a given source version to complete, and only |
-fires off its own Builders when all of the upstream's Builders have built |
-that version successfully. |
- |
-Both features are fully documented in the user's manual. |
- |
-*** 'buildbot try' |
- |
-The 'try' feature has finally been added. There is some configuration |
-involved, both in the buildmaster config and on the developer's side, but |
-once in place this allows the developer to type 'buildbot try' in their |
-locally-modified tree and to be given a report of what would happen if their |
-changes were to be committed. This works by computing a (base revision, |
-patch) tuple that describes the developer's tree, sending that to the |
-buildmaster, then running a build with that source on a given set of |
-Builders. The 'buildbot try' tool then emits status messages until the builds |
-have finished. |
- |
-'try' exists to allow developers to run cross-platform tests on their code |
-before committing it, reducing the chances they will inconvenience other |
-developers by breaking the build. The UI is still clunky, but expect it to |
-change and improve over the next few releases. |
- |
-Instructions for developers who want to use 'try' (and the configuration |
-changes necessary to enable its use) are in the user's manual. |
- |
-*** Build-On-Branch |
- |
-When suitably configured, the buildbot can be used to build trees from a |
-variety of related branches. You can set up Schedulers to build a tree using |
-whichever branch was last changed, or users can request builds of specific |
-branches through IRC, the web page, or (eventually) the CLI 'buildbot force' |
-subcommand. |
- |
-The IRC 'force' command now takes --branch and --revision arguments (not that |
-they always make sense). Likewise the HTML 'force build' button now has an |
-input field for branch and revision. Your build's source-checkout step must |
-be suitably configured to support this: for SVN it involves giving both a |
-base URL and a default branch. Other VC systems are configured differently. |
-The ChangeSource must also provide branch information: the 'buildbot |
-sendchange' command now takes a --branch argument to help hook script writers |
-accomplish this. |
- |
-*** Multiple slaves per Builder |
- |
-You can now attach multiple buildslaves to each Builder. This can provide |
-redundancy or primitive load-balancing among many machines equally capable of |
-running the build. To use this, define a key in the Builder specification |
-dictionary named 'slavenames' with a list of buildslave names (instead of the |
-usual 'slavename' that contains just a single slavename). |
- |
-*** minor new features |
- |
-The IRC and email status-reporting facilities now provide more specific URLs |
-for particular builds, in addition to the generic buildmaster home page. The |
-HTML per-build page now has more information. |
- |
-The Twisted-specific test classes have been modified to match the argument |
-syntax preferred by Trial as of Twisted-2.1.0 and newer. The generic trial |
-steps are still suitable for the Trial that comes with older versions of |
-Twisted, but may produce deprecation warnings or errors when used with the |
-latest Trial. |
- |
-** bugs fixed |
- |
-DNotify, used by the maildir-watching ChangeSources, had problems on some |
-64-bit systems relating to signed-vs-unsigned constants and the DN_MULTISHOT |
-flag. A workaround was provided by Brad Hards. |
- |
-The web status page should now be valid XHTML, thanks to a patch by Brad |
-Hards. The charset parameter is specified to be UTF-8, so VC comments, |
-builder names, etc, should probably all be in UTF-8 to be displayed properly. |
- |
-** creeping version dependencies |
- |
-The IRC 'force build' command now requires python2.3 (for the shlex.split |
-function). |
- |
- |
-* Release 0.6.6 (23 May 2005) |
- |
-** bugs fixed |
- |
-The 'sendchange', 'stop', and 'sighup' subcommands were broken, simple bugs |
-that were not caught by the test suite. Sorry. |
- |
-The 'buildbot master' command now uses "raw" strings to create .tac files |
-that will still function under windows (since we must put directory names |
-that contain backslashes into that file). |
- |
-The keep-on-disk behavior added in 0.6.5 included the ability to upgrade old |
-in-pickle LogFile instances. This upgrade function was not added to the |
-HTMLLogFile class, so an exception would be raised when attempting to load or |
-display any build with one of these logs (which are normally used only for |
-showing build exceptions). This has been fixed. |
- |
-Several unnecessary imports were removed, so the Buildbot should function |
-normally with just Twisted-2.0.0's "Core" module installed. (of course you |
-will need TwistedWeb, TwistedWords, and/or TwistedMail if you use status |
-targets that require them). The test suite should skip all tests that cannot |
-be run because of missing Twisted modules. |
- |
-The master/slave's basedir is now prepended to sys.path before starting the |
-daemon. This used to happen implicitly (as a result of twistd's setup |
-preamble), but 0.6.5 internalized the invocation of twistd and did not copy |
-this behavior. This change restores the ability to access "private.py"-style |
-modules in the basedir from the master.cfg file with a simple "import |
-private" statement. Thanks to Thomas Vander Stichele for the catch. |
- |
- |
-* Release 0.6.5 (18 May 2005) |
- |
-** deprecated config keys removed |
- |
-The 'webPortnum', 'webPathname', 'irc', and 'manholePort' config-file keys, |
-which were deprecated in the previous release, have now been removed. In |
-addition, Builders must now always be configured with dictionaries: the |
-support for configuring them with tuples has been removed. |
- |
-** master/slave creation and startup changed |
- |
-The buildbot no longer uses .tap files to store serialized representations of |
-the buildmaster/buildslave applications. Instead, this release now uses .tac |
-files, which are human-readable scripts that create new instances (rather |
-than .tap files, which were pickles of pre-created instances). 'mktap |
-buildbot' is gone. |
- |
-You will need to update your buildbot directories to handle this. The |
-procedure is the same as creating a new buildmaster or buildslave: use |
-'buildbot master BASEDIR' or 'buildbot slave BASEDIR ARGS..'. This will |
-create a 'buildbot.tac' file in the target directory. The 'buildbot start |
-BASEDIR' will use twistd to start the application. |
- |
-The 'buildbot start' command now looks for a Makefile.buildbot, and if it |
-finds one (and /usr/bin/make exists), it will use it to start the application |
-instead of calling twistd directly. This allows you to customize startup, |
-perhaps by adding environment variables. The setup commands create a sample |
-file in Makefile.sample, but you must copy this to Makefile.buildbot to |
-actually use it. The previous release looked for a bare 'Makefile', and also |
-installed a 'Makefile', so you were always using the customized approach, |
-even if you didn't ask for it. That old Makefile launched the .tap file, so |
-changing names was also necessary to make sure that the new 'buildbot start' |
-doesn't try to run the old .tap file. |
- |
-'buildbot stop' now uses os.kill instead of spawning an external process, |
-making it more likely to work under windows. It waits up to 5 seconds for the |
-daemon to go away, so you can now do 'buildbot stop BASEDIR; buildbot start |
-BASEDIR' with less risk of launching the new daemon before the old one has |
-fully shut down. Likewise, 'buildbot start' imports twistd's internals |
-directly instead of spawning an external copy, so it should work better under |
-windows. |
- |
-** new documentation |
- |
-All of the old Lore-based documents were converted into a new Texinfo-format |
-manual, and considerable new text was added to describe the installation |
-process. The docs are not yet complete, but they're slowly shaping up to form |
-a proper user's manual. |
- |
-** new features |
- |
-Arch checkouts can now use precise revision stamps instead of always using |
-the latest revision. A separate Source step for using Bazaar (an alternative |
-Arch client) instead of 'tla' was added. A Source step for Cogito (the new |
-linux kernel VC system) was contributed by Brandon Philips. All Source steps |
-now accept a retry= argument to indicate that failing VC checkouts should be |
-retried a few times (SF#1200395), note that this requires an updated |
-buildslave. |
- |
-The 'buildbot sendchange' command was added, to be used in VC hook scripts to |
-send changes at a pb.PBChangeSource . contrib/arch_buildbot.py was added to |
-use this tool; it should be installed using the 'Arch meta hook' scheme. |
- |
-Changes can now accept a branch= parameter, and Builders have an |
-isBranchImportant() test that acts like isFileImportant(). Thanks to Thomas |
-Vander Stichele. Note: I renamed his tag= to branch=, in anticipation of an |
-upcoming feature to build specific branches. "tag" seemed too CVS-centric. |
- |
-LogFiles have been rewritten to stream the incoming data directly to disk |
-rather than keeping a copy in memory all the time (SF#1200392). This |
-drastically reduces the buildmaster's memory requirements and makes 100MB+ |
-log files feasible. The log files are stored next to the serialized Builds, |
-in files like BASEDIR/builder-dir/12-log-compile-output, so you'll want a |
-cron job to delete old ones just like you do with old Builds. Old-style |
-Builds from 0.6.4 and earlier are converted when they are first read, so the |
-first load of the Waterfall display after updating to this release may take |
-quite some time. |
- |
-** build process updates |
- |
-BuildSteps can now return a status of EXCEPTION, which terminates the build |
-right away. This allows exceptions to be caught right away, but still make |
-sure the build stops quickly. |
- |
-** bug fixes |
- |
-Some more windows incompatibilities were fixed. The test suite now has two |
-failing tests remaining, both of which appear to be Twisted issues that |
-should not affect normal operation. |
- |
-The test suite no longer raises any deprecation warnings when run against |
-twisted-2.0 (except for the ones which come from Twisted itself). |
- |
- |
-* Release 0.6.4 (28 Apr 2005) |
- |
-** major bugs fixed |
- |
-The 'buildbot' tool in 0.6.3, when used to create a new buildmaster, failed |
-unless it found a 'changes.pck' file. As this file is created by a running |
-buildmaster, this made 0.6.3 completely unusable for first-time |
-installations. This has been fixed. |
- |
-** minor bugs fixed |
- |
-The IRC bot had a bug wherein asking it to watch a certain builder (the "I'll |
-give a shout when the build finishes" message) would cause an exception, so |
-it would not, in fact, shout. The HTML page had an exception in the "change |
-sources" page (reached by following the "Changes" link at the top of the |
-column that shows the names of commiters). Re-loading the config file while |
-builders were already attached would result in a benign error message. The |
-server side of the PBListener status client had an exception when providing |
-information about a non-existent Build (e.g., when the client asks for the |
-Build that is currently running, and the server says "None"). |
- |
-These bugs have all been fixed. |
- |
-The unit tests now pass under python2.2; they were failing before because of |
-some 2.3isms that crept in. More unit tests which failed under windows now |
-pass, only one (test_webPathname_port) is still failing. |
- |
-** 'buildbot' tool looks for a .buildbot/options file |
- |
-The 'statusgui' and the 'debugclient' subcommands can both look for a |
-.buildbot/ directory, and an 'options' file therein, to extract default |
-values for the location of the buildmaster. This directory is searched in the |
-current directory, its parent, etc, all the way up to the filesystem root |
-(assuming you own the directories in question). It also look in ~/.buildbot/ |
-for this file. This feature allows you to put a .buildbot at the top of your |
-working tree, telling any 'buildbot' invocations you perform therein how to |
-get to the buildmaster associated with that tree's project. |
- |
-Windows users get something similar, using %APPDATA%/buildbot instead of |
-~/.buildbot . |
- |
-** windows ShellCommands are launched with 'cmd.exe' |
- |
-The buildslave has been modified to run all list-based ShellCommands by |
-prepending [os.environ['COMSPEC'], '/c'] to the argv list before execution. |
-This should allow the buildslave's PATH to be searched for commands, |
-improving the chances that it can run the same 'trial -o foo' commands as a |
-unix buildslave. The potential downside is that spaces in argv elements might |
-be re-parsed, or quotes might be re-interpreted. The consensus on the mailing |
-list was that this is a useful thing to do, but please report any problems |
-you encounter with it. |
- |
-** minor features |
- |
-The Waterfall display now shows the buildbot's home timezone at the top of |
-the timestamp column. The default favicon.ico is now much nicer-looking (it |
-is generated with Blender.. the icon.blend file is available in CVS in |
-docs/images/ should you care to play with it). |
- |
- |
- |
-* Release 0.6.3 (25 Apr 2005) |
- |
-** 'buildbot' tool gets more uses |
- |
-The 'buildbot' executable has acquired three new subcommands. 'buildbot |
-debugclient' brings up the small remote-control panel that connects to a |
-buildmaster (via the slave port and the c['debugPassword']). This tool, |
-formerly in contrib/debugclient.py, lets you reload the config file, force |
-builds, and simulate inbound commit messages. It requires gtk2, glade, and |
-the python bindings for both to be installed. |
- |
-'buildbot statusgui' brings up a live status client, formerly available by |
-running buildbot/clients/gtkPanes.py as a program. This connects to the PB |
-status port that you create with: |
- |
- c['status'].append(client.PBListener(portnum)) |
- |
-and shows two boxes per Builder, one for the last build, one for current |
-activity. These boxes are updated in realtime. The effect is primitive, but |
-is intended as an example of what's possible with the PB status interface. |
- |
-'buildbot statuslog' provides a text-based running log of buildmaster events. |
- |
-Note: command names are subject to change. These should get much more useful |
-over time. |
- |
-** web page has a favicon |
- |
-When constructing the html.Waterfall instance, you can provide the filename |
-of an image that will be provided when the "favicon.ico" resource is |
-requested. Many web browsers display this as an icon next to the URL or |
-bookmark. A goofy little default icon is included. |
- |
-** web page has CSS |
- |
-Thanks to Thomas Vander Stichele, the Waterfall page is now themable through |
-CSS. The default CSS is located in buildbot/status/classic.css, and creates a |
-page that is mostly identical to the old, non-CSS based table. |
- |
-You can specify a different CSS file to use by passing it as the css= |
-argument to html.Waterfall(). See the docstring for Waterfall for some more |
-details. |
- |
-** builder "categories" |
- |
-Thomas has added code which places each Builder in an optional "category". |
-The various status targets (Waterfall, IRC, MailNotifier) can accept a list |
-of categories, and they will ignore any activity in builders outside this |
-list. This makes it easy to create some Builders which are "experimental" or |
-otherwise not yet ready for the world to see, or indicate that certain |
-builders should not harass developers when their tests fail, perhaps because |
-the build slaves for them are not yet fully functional. |
- |
-** Deprecated features |
- |
-*** defining Builders with tuples is deprecated |
- |
-For a long time, the preferred way to define builders in the config file has |
-been with a dictionary. The less-flexible old style of a 4-item tuple (name, |
-slavename, builddir, factory) is now officially deprecated (i.e., it will |
-emit a warning if you use it), and will be removed in the next release. |
-Dictionaries are more flexible: additional keys like periodicBuildTime are |
-simply unavailable to tuple-defined builders. |
- |
-Note: it is a good idea to watch the logfile (usually in twistd.log) when you |
-first start the buildmaster, or whenever you reload the config file. Any |
-warnings or errors in the config file will be found there. |
- |
-*** c['webPortnum'], c['webPathname'], c['irc'] are deprecated |
- |
-All status reporters should be defined in the c['status'] array, using |
-buildbot.status.html.Waterfall or buildbot.status.words.IRC . These have been |
-deprecated for a while, but this is fair warning that these keys will be |
-removed in the next release. |
- |
-*** c['manholePort'] is deprecated |
- |
-Again, this has been deprecated for a while, in favor of: |
- |
- c['manhole'] = master.Manhole(port, username, password) |
- |
-The preferred syntax will eventually let us use other, better kinds of debug |
-shells, such as the experimental curses-based ones in the Twisted sandbox |
-(which would offer command-line editing and history). |
- |
-** bug fixes |
- |
-The waterfall page has been improved a bit. A circular-reference bug in the |
-web page's TextLog class was fixed, which caused a major memory leak in a |
-long-running buildmaster with large logfiles that are viewed frequently. |
-Modifying the config file in a way which only changed a builder's base |
-directory now works correctly. The 'buildbot' command tries to create |
-slightly more useful master/slave directories, adding a Makefile entry to |
-re-create the .tap file, and removing global-read permissions from the files |
-that may contain buildslave passwords. |
- |
-** twisted-2.0.0 compatibility |
- |
-Both buildmaster and buildslave should run properly under Twisted-2.0 . There |
-are still some warnings about deprecated functions, some of which could be |
-fixed, but there are others that would require removing compatibility with |
-Twisted-1.3, and I don't expect to do that until 2.0 has been out and stable |
-for at least several months. The unit tests should pass under 2.0, whereas |
-the previous buildbot release had tests which could hang when run against the |
-new "trial" framework in 2.0. |
- |
-The Twisted-specific steps (including Trial) have been updated to match 2.0 |
-functionality. |
- |
-** win32 compatibility |
- |
-Thankt to Nick Trout, more compatibility fixes have been incorporated, |
-improving the chances that the unit tests will pass on windows systems. There |
-are still some problems, and a step-by-step "running buildslaves on windows" |
-document would be greatly appreciated. |
- |
-** API docs |
- |
-Thanks to Thomas Vander Stichele, most of the docstrings have been converted |
-to epydoc format. There is a utility in docs/gen-reference to turn these into |
-a tree of cross-referenced HTML pages. Eventually these docs will be |
-auto-generated and somehow published on the buildbot web page. |
- |
- |
- |
-* Release 0.6.2 (13 Dec 2004) |
- |
-** new features |
- |
-It is now possible to interrupt a running build. Both the web page and the |
-IRC bot feature 'stop build' commands, which can be used to interrupt the |
-current BuildStep and accelerate the termination of the overall Build. The |
-status reporting for these still leaves something to be desired (an |
-'interrupt' event is pushed into the column, and the reason for the interrupt |
-is added to a pseudo-logfile for the step that was stopped, but if you only |
-look at the top-level status it appears that the build failed on its own). |
- |
-Builds are also halted if the connection to the buildslave is lost. On the |
-slave side, any active commands are halted if the connection to the |
-buildmaster is lost. |
- |
-** minor new features |
- |
-The IRC log bot now reports ETA times in a MMSS format like "2m45s" instead |
-of the clunky "165 seconds". |
- |
-** bug fixes |
- |
-*** Slave Disconnect |
- |
-Slave disconnects should be handled better now: the current build should be |
-abandoned properly. Earlier versions could get into weird states where the |
-build failed to finish, clogging the builder forever (or at least until the |
-buildmaster was restarted). |
- |
-In addition, there are weird network conditions which could cause a |
-buildslave to attempt to connect twice to the same buildmaster. This can |
-happen when the slave is sending large logfiles over a slow link, while using |
-short keepalive timeouts. The buildmaster has been fixed to allow the second |
-connection attempt to take precedence over the first, so that the older |
-connection is jettisoned to make way for the newer one. |
- |
-In addition, the buildslave has been fixed to be less twitchy about timeouts. |
-There are now two parameters: keepaliveInterval (which is controlled by the |
-mktap 'keepalive' argument), and keepaliveTimeout (which requires editing the |
-.py source to change from the default of 30 seconds). The slave expects to |
-see *something* from the master at least once every keepaliveInterval |
-seconds, and will try to provoke a response (by sending a keepalive request) |
-'keepaliveTimeout' seconds before the end of this interval just in case there |
-was no regular traffic. Any kind of traffic will qualify, including |
-acknowledgements of normal build-status updates. |
- |
-The net result is that, as long as any given PB message can be sent over the |
-wire in less than 'keepaliveTimeout' seconds, the slave should not mistakenly |
-disconnect because of a timeout. There will be traffic on the wire at least |
-every 'keepaliveInterval' seconds, which is what you want to pay attention to |
-if you're trying to keep an intervening NAT box from dropping what it thinks |
-is an abandoned connection. A quiet loss of connection will be detected |
-within 'keepaliveInterval' seconds. |
- |
-*** Large Logfiles |
- |
-The web page rendering code has been fixed to deliver large logfiles in |
-pieces, using a producer/consumer apparatus. This avoids the large spike in |
-memory consumption when the log file body was linearized into a single string |
-and then buffered in the socket's application-side transmit buffer. This |
-should also avoid the 640k single-string limit for web.distrib servers that |
-could be hit by large (>640k) logfiles. |
- |
- |
- |
-* Release 0.6.1 (23 Nov 2004) |
- |
-** win32 improvements/bugfixes |
- |
-Several changes have gone in to improve portability to non-unix systems. It |
-should be possible to run a build slave under windows without major issues |
-(although step-by-step documentation is still greatly desired: check the |
-mailing list for suggestions from current win32 users). |
- |
-*** PBChangeSource: use configurable directory separator, not os.sep |
- |
-The PBChangeSource, which listens on a TCP socket for change notices |
-delivered from tools like contrib/svn_buildbot.py, was splitting source |
-filenames with os.sep . This is inappropriate, because those file names are |
-coming from the VC repository, not the local filesystem, and the repository |
-host may be running a different OS (with a different separator convention) |
-than the buildmaster host. In particular, a win32 buildmaster using a CVS |
-repository running on a unix box would be confused. |
- |
-PBChangeSource now takes a sep= argument to indicate the separator character |
-to use. |
- |
-*** build saving should work better |
- |
-windows cannot do the atomic os.rename() trick that unix can, so under win32 |
-the buildmaster falls back to save/delete-old/rename, which carries a slight |
-risk of losing a saved build log (if the system were to crash between the |
-delete-old and the rename). |
- |
-** new features |
- |
-*** test-result tracking |
- |
-Work has begun on fine-grained test-result handling. The eventual goal is to |
-be able to track individual tests over time, and create problem reports when |
-a test starts failing (which then are resolved when the test starts passing |
-again). The first step towards this is an ITestResult interface, and code in |
-the TrialTestParser to create such results for all non-passing tests (the |
-ones for which Trial emits exception tracebacks). |
- |
-These test results are currently displayed in a tree-like display in a page |
-accessible from each Build's page (follow the numbered link in the yellow |
-box at the start of each build to get there). |
- |
-This interface is still in flux, as it really wants to be able to accomodate |
-things like compiler warnings and tests that are skipped because of missing |
-libraries or unsupported architectures. |
- |
-** bug fixes |
- |
-*** VC updates should survive temporary failures |
- |
-Some VC systems (CVS and SVN in particular) get upset when files are turned |
-into directories or vice versa, or when repository items are moved without |
-the knowledge of the VC system. The usual symptom is that a 'cvs update' |
-fails where a fresh checkout succeeds. |
- |
-To avoid having to manually intervene, the build slaves' VC commands have |
-been refactored to respond to update failures by deleting the tree and |
-attempting a full checkout. This may cause some unnecessary effort when, |
-e.g., the CVS server falls off the net, but in the normal case it will only |
-come into play when one of these can't-cope situations arises. |
- |
-*** forget about an existing build when the slave detaches |
- |
-If the slave was lost during a build, the master did not clear the |
-.currentBuild reference, making that builder unavailable for later builds. |
-This has been fixed, so that losing a slave should be handled better. This |
-area still needs some work, I think it's still possible to get both the |
-slave and the master wedged by breaking the connection at just the right |
-time. Eventually I want to be able to resume interrupted builds (especially |
-when the interruption is the result of a network failure and not because the |
-slave or the master actually died). |
- |
-*** large logfiles now consume less memory |
- |
-Build logs are stored as lists of (type,text) chunks, so that |
-stdout/stderr/headers can be displayed differently (if they were |
-distinguishable when they were generated: stdout and stderr are merged when |
-usePTY=1). For multi-megabyte logfiles, a large list with many short strings |
-could incur a large overhead. The new behavior is to merge same-type string |
-chunks together as they are received, aiming for a chunk size of about 10kb, |
-which should bring the overhead down to a more reasonable level. |
- |
-There remains an issue with actually delivering large logfiles over, say, |
-the HTML interface. The string chunks must be merged together into a single |
-string before delivery, which causes a spike in the memory usage when the |
-logfile is viewed. This can also break twisted.web.distrib -type servers, |
-where the underlying PB protocol imposes a 640k limit on the size of |
-strings. This will be fixed (with a proper Producer/Consumer scheme) in the |
-next release. |
- |
- |
-* Release 0.6.0 (30 Sep 2004) |
- |
-** new features |
- |
-*** /usr/bin/buildbot control tool |
- |
-There is now an executable named 'buildbot'. For now, this just provides a |
-convenient front-end to mktap/twistd/kill, but eventually it will provide |
-access to other client functionality (like the 'try' builds, and a status |
-client). Assuming you put your buildbots in /var/lib/buildbot/master/FOO, |
-you can do 'buildbot create-master /var/lib/buildbot/master/FOO' and it will |
-create the .tap file and set up a sample master.cfg for you. Later, |
-'buildbot start /var/lib/buildbot/master/FOO' will start the daemon. |
- |
- |
-*** build status now saved in external files, -shutdown.tap unnecessary |
- |
-The status rewrite included a change to save all build status in a set of |
-external files. These files, one per build, are put in a subdirectory of the |
-master's basedir (named according to the 'builddir' parameter of the Builder |
-configuration dictionary). This helps keep the buildmaster's memory |
-consumption small: the (potentially large) build logs are kept on disk |
-instead of in RAM. There is a small cache (2 builds per builder) kept in |
-memory, but everything else lives on disk. |
- |
-The big change is that the buildmaster now keeps *all* status in these |
-files. It is no longer necessary to preserve the buildbot-shutdown.tap file |
-to run a persistent buildmaster. The buildmaster may be launched with |
-'twistd -f buildbot.tap' each time, in fact the '-n' option can be added to |
-prevent twistd from automatically creating the -shutdown.tap file. |
- |
-There is still one lingering bug with this change: the Expectations object |
-for each builder (which records how long the various steps took, to provide |
-an ETA value for the next time) is not yet saved. The result is that the |
-first build after a restart will not provide an ETA value. |
- |
-0.6.0 keeps status in a single file per build, as opposed to 0.5.0 which |
-kept status in many subdirectories (one layer for builds, another for steps, |
-and a third for logs). 0.6.0 will detect and delete these subdirectories as |
-it overwrites them. |
- |
-The saved builds are optional. To prevent disk usage from growing without |
-bounds, you may want to set up a cron job to run 'find' and delete any which |
-are too old. The status displays will happily survive without those saved |
-build objects. |
- |
-The set of recorded Changes is kept in a similar file named 'changes.pck'. |
- |
- |
-*** source checkout now uses timestamp/revision |
- |
-Source checkouts are now performed with an appropriate -D TIMESTAMP (for |
-CVS) or -r REVISION (for SVN) marker to obtain the exact sources that were |
-specified by the most recent Change going into the current Build. This |
-avoids a race condition in which a change might be committed after the build |
-has started but before the source checkout has completed, resulting in a |
-mismatched set of source files. Such changes are now ignored. |
- |
-This works by keeping track of repository-wide revision/transaction numbers |
-(for version control systems that offer them, like SVN). The checkout or |
-update is performed with the highest such revision number. For CVS (which |
-does not have them), the timestamp of each commit message is used, and a -D |
-argument is created to place the checkout squarely in the middle of the "tree |
-stable timer"'s window. |
- |
-This also provides the infrastructure for the upcoming 'try' feature. All |
-source-checkout commands can now obtain a base revision marker and a patch |
-from the Build, allowing certain builds to be performed on something other |
-than the most recent sources. |
- |
-See source.xhtml and steps.xhtml for details. |
- |
- |
-*** Darcs and Arch support added |
- |
-There are now build steps which retrieve a source tree from Darcs and Arch |
-repositories. See steps.xhtml for details. |
- |
-Preliminary P4 support has been added, thanks to code from Dave Peticolas. |
-You must manually set up each build slave with an appropriate P4CLIENT: all |
-buildbot does is run 'p4 sync' at the appropriate times. |
- |
- |
-*** Status reporting rewritten |
- |
-Status reporting was completely revamped. The config file now accepts a |
-BuildmasterConfig['status'] entry, with a list of objects that perform status |
-delivery. The old config file entries which controlled the web status port |
-and the IRC bot have been deprecated in favor of adding instances to |
-['status']. The following status-delivery classes have been implemented, all |
-in the 'buildbot.status' package: |
- |
- client.PBListener(port, username, passwd) |
- html.Waterfall(http_port, distrib_port) |
- mail.MailNotifier(fromaddr, mode, extraRecipients..) |
- words.IRC(host, nick, channels) |
- |
-See the individual docstrings for details about how to use each one. You can |
-create new status-delivery objects by following the interfaces found in the |
-buildbot.interfaces module. |
- |
- |
-*** BuildFactory configuration process changed |
- |
-The basic BuildFactory class is now defined in buildbot.process.factory |
-rather than buildbot.process.base, so you will have to update your config |
-files. factory.BuildFactory is the base class, which accepts a list of Steps |
-to run. See docs/factories.xhtml for details. |
- |
-There are now easier-to-use BuildFactory classes for projects which use GNU |
-Autoconf, perl's MakeMaker (CPAN), python's distutils (but no unit tests), |
-and Twisted's Trial. Each one takes a separate 'source' Step to obtain the |
-source tree, and then fills in the rest of the Steps for you. |
- |
- |
-*** CVS/SVN VC steps unified, simplified |
- |
-The confusing collection of arguments for the CVS step ('clobber=', |
-'copydir=', and 'export=') have been removed in favor of a single 'mode' |
-argument. This argument describes how you want to use the sources: whether |
-you want to update and compile everything in the same tree (mode='update'), |
-or do a fresh checkout and full build each time (mode='clobber'), or |
-something in between. |
- |
-The SVN (Subversion) step has been unified and accepts the same mode= |
-parameter as CVS. New version control steps will obey the same interface. |
- |
-Most of the old configuration arguments have been removed. You will need to |
-update your configuration files to use the new arguments. See |
-docs/steps.xhtml for a description of all the new parameters. |
- |
- |
-*** Preliminary Debian packaging added |
- |
-Thanks to the contributions of Kirill Lapshin, we can now produce .deb |
-installer packages. These are still experimental, but they include init.d |
-startup/shutdown scripts, which the the new /usr/bin/buildbot to invoke |
-twistd. Create your buildmasters in /var/lib/buildbot/master/FOO, and your |
-slaves in /var/lib/buildbot/slave/BAR, then put FOO and BAR in the |
-appropriate places in /etc/default/buildbot . After that, the buildmasters |
-and slaves will be started at every boot. |
- |
-Pre-built .debs are not yet distributed. Use 'debuild -uc -us' from the |
-source directory to create them. |
- |
- |
-** minor features |
- |
- |
-*** Source Stamps |
- |
-Each build now has a "source stamp" which describes what sources it used. The |
-idea is that the sources for this particular build can be completely |
-regenerated from the stamp. The stamp is a tuple of (revision, patch), where |
-the revision depends on the VC system being used (for CVS it is either a |
-revision tag like "BUILDBOT-0_5_0" or a datestamp like "2004/07/23", for |
-Subversion it is a revision number like 11455). This must be combined with |
-information from the Builder that is constant across all builds (something to |
-point at the repository, and possibly a branch indicator for CVS and other VC |
-systems that don't fold this into the repository string). |
- |
-The patch is an optional unified diff file, ready to be applied by running |
-'patch -p0 <PATCH' from inside the workdir. This provides support for the |
-'try' feature that will eventually allow developers to run buildbot tests on |
-their code before checking it in. |
- |
- |
-*** SIGHUP causes the buildmaster's configuration file to be re-read |
- |
-*** IRC bot now has 'watch' command |
- |
-You can now tell the buildbot's IRC bot to 'watch <buildername>' on a builder |
-which is currently performing a build. When that build is finished, the |
-buildbot will make an announcement (including the results of the build). |
- |
-The IRC 'force build' command will also announce when the resulting build has |
-completed. |
- |
- |
-*** the 'force build' option on HTML and IRC status targets can be disabled |
- |
-The html.Waterfall display and the words.IRC bot may be constructed with an |
-allowForce=False argument, which removes the ability to force a build through |
-these interfaces. Future versions will be able to restrict this build-forcing |
-capability to authenticated users. The per-builder HTML page no longer |
-displays the 'Force Build' buttons if it does not have this ability. Thanks |
-to Fred Drake for code and design suggestions. |
- |
- |
-*** master now takes 'projectName' and 'projectURL' settings |
- |
-These strings allow the buildbot to describe what project it is working for. |
-At the moment they are only displayed on the Waterfall page, but in the next |
-release they will be retrieveable from the IRC bot as well. |
- |
- |
-*** survive recent (SVN) Twisted versions |
- |
-The buildbot should run correctly (albeit with plenty of noisy deprecation |
-warnings) under the upcoming Twisted-2.0 release. |
- |
- |
-*** work-in-progress realtime Trial results acquisition |
- |
-Jonathan Simms (<slyphon>) has been working on 'retrial', a rewrite of |
-Twisted's unit test framework that will most likely be available in |
-Twisted-2.0 . Although it is not yet complete, the buildbot will be able to |
-use retrial in such a way that build status is reported on a per-test basis, |
-in real time. This will be the beginning of fine-grained test tracking and |
-Problem management, described in docs/users.xhtml . |
- |
- |
-* Release 0.5.0 (22 Jul 2004) |
- |
-** new features |
- |
-*** web.distrib servers via TCP |
- |
-The 'webPathname' config option, which specifies a UNIX socket on which to |
-publish the waterfall HTML page (for use by 'mktap web -u' or equivalent), |
-now accepts a numeric port number. This publishes the same thing via TCP, |
-allowing the parent web server to live on a separate machine. |
- |
-This config option could be named better, but it will go away altogether in |
-a few releases, when status delivery is unified. It will be replaced with a |
-WebStatusTarget object, and the config file will simply contain a list of |
-various kinds of status targets. |
- |
-*** 'master.cfg' filename is configurable |
- |
-The buildmaster can use a config file named something other than |
-"master.cfg". Use the --config=foo.cfg option to mktap to control this. |
- |
-*** FreshCVSSource now uses newcred (CVSToys >= 1.0.10) |
- |
-The FreshCVSSource class now defaults to speaking to freshcvs daemons from |
-modern CVSToys releases. If you need to use the buildbot with a daemon from |
-CVSToys-1.0.9 or earlier, use FreshCVSSourceOldcred instead. Note that the |
-new form only requires host/port/username/passwd: the "serviceName" |
-parameter is no longer meaningful. |
- |
-*** Builders are now configured with a dictionary, not a tuple |
- |
-The preferred way to set up a Builder in master.cfg is to provide a |
-dictionary with various keys, rather than a (non-extensible) 4-tuple. See |
-docs/config.xhtml for details. The old tuple-way is still supported for now, |
-it will probably be deprecated in the next release and removed altogether in |
-the following one. |
- |
-*** .periodicBuildTime is now exposed to the config file |
- |
-To set a builder to run at periodic intervals, simply add a |
-'periodicBuildTime' key to its master.cfg dictionary. Again, see |
-docs/config.xhtml for details. |
- |
-*** svn_buildbot.py adds --include, --exclude |
- |
-The commit trigger script now gives you more control over which files are |
-sent to the buildmaster and which are not. |
- |
-*** usePTY is controllable at slave mktap time |
- |
-The buildslaves usually run their child processes in a pty, which creates a |
-process group for all the children, which makes it much easier to kill them |
-all at once (i.e. if a test hangs). However this causes problems on some |
-systems. Rather than hacking slavecommand.py to disable the use of these |
-ptys, you can now create the slave's .tap file with --usepty=0 at mktap |
-time. |
- |
-** Twisted changes |
- |
-A summary of warnings (e.g. DeprecationWarnings) is provided as part of the |
-test-case summarizer. The summarizer also counts Skips, expectedFailures, |
-and unexpectedSuccesses, displaying the counts on the test step's event box. |
- |
-The RunUnitTests step now uses "trial -R twisted" instead of "trial |
-twisted.test", which is a bit cleaner. All .pyc files are deleted before |
-starting trial, to avoid getting tripped up by deleted .py files. |
- |
-** documentation |
- |
-docs/config.xhtml now describes the syntax and allowed contents of the |
-'master.cfg' configuration file. |
- |
-** bugfixes |
- |
-Interlocks had a race condition that could cause the lock to get stuck |
-forever. |
- |
-FreshCVSSource has a prefix= argument that was moderately broken (it used to |
-only work if the prefix was a single directory component). It now works with |
-subdirectories. |
- |
-The buildmaster used to complain when it saw the "info" directory in a |
-slave's workspace. This directory is used to publish information about the |
-slave host and its administrator, and is not a leftover build directory as |
-the complaint suggested. This complain has been silenced. |
- |
- |
-* Release 0.4.3 (30 Apr 2004) |
- |
-** PBChangeSource made explicit |
- |
-In 0.4.2 and before, an internal interface was available which allowed |
-special clients to inject changes into the Buildmaster. This interface is |
-used by the contrib/svn_buildbot.py script. The interface has been extracted |
-into a proper PBChangeSource object, which should be created in the |
-master.cfg file just like the other kinds of ChangeSources. See |
-docs/sources.xhtml for details. |
- |
-If you were implicitly using this change source (for example, if you use |
-Subversion and the svn_buildbot.py script), you *must* add this source to |
-your master.cfg file, or changes will not be delivered and no builds will be |
-triggered. |
- |
-The PBChangeSource accepts the same "prefix" argument as all other |
-ChangeSources. For a SVN repository that follows the recommended practice of |
-using "trunk/" for the trunk revisions, you probably want to construct the |
-source like this: |
- |
- source = PBChangeSource(prefix="trunk") |
- |
-to make sure that the Builders are given sensible (trunk-relative) |
-filenames for each changed source file. |
- |
-** Twisted changes |
- |
-*** step_twisted.RunUnitTests can change "bin/trial" |
- |
-The twisted RunUnitTests step was enhanced to let you run something other |
-than "bin/trial", making it easier to use a buildbot on projects which use |
-Twisted but aren't actually Twisted itself. |
- |
-*** Twisted now uses Subversion |
- |
-Now that Twisted has moved from CVS to SVN, the Twisted build processes have |
-been modified to perform source checkouts from the Subversion repository. |
- |
-** minor feature additions |
- |
-*** display Changes with HTML |
- |
-Changes are displayed with a bit more pizazz, and a links= argument was |
-added to allow things like ViewCVS links to be added to the display |
-(although it is not yet clear how this argument should be used: the |
-interface remains subject to change untill it has been documented). |
- |
-*** display ShellCommand logs with HTML |
- |
-Headers are in blue, stderr is in red (unless usePTY=1 in which case stderr |
-and stdout are indistinguishable). A link is provided which returns the same |
-contents as plain text (by appending "?text=1" to the URL). |
- |
-*** buildslaves send real tracebacks upon error |
- |
-The .unsafeTracebacks option has been turned on for the buildslaves, |
-allowing them to send a full stack trace when an exception occurs, which is |
-logged in the buildmaster's twistd.log file. This makes it much easier to |
-determine what went wrong on the slave side. |
- |
-*** BasicBuildFactory refactored |
- |
-The BasicBuildFactory class was refactored to make it easier to create |
-derivative classes, in particular the BasicSVN variant. |
- |
-*** "ping buildslave" web button added |
- |
-There is now a button on the "builder information" page that lets a web user |
-initiate a ping of the corresponding build slave (right next to the button |
-that lets them force a build). This was added to help track down a problem |
-with the slave keepalives. |
- |
-** bugs fixed: |
- |
-You can now have multiple BuildSteps with the same name (the names are used |
-as hash keys in the data structure that helps determine ETA values for each |
-step, the new code creates unique key names if necessary to avoid |
-collisions). This means that, for example, you do not have to create a |
-BuildStep subclass just to have two Compile steps in the same process. |
- |
-If CVSToys is not installed, the tests that depend upon it are skipped. |
- |
-Some tests in 0.4.2 failed because of a missing set of test files, they are |
-now included in the tarball properly. |
- |
-Slave keepalives should work better now in the face of silent connection |
-loss (such as when an intervening NAT box times out the association), the |
-connection should be reestablished in minutes instead of hours. |
- |
-Shell commands on the slave are invoked with an argument list instead of the |
-ugly and error-prone split-on-spaces approach. If the ShellCommand is given |
-a string (instead of a list), it will fall back to splitting on spaces. |
-Shell commands should work on win32 now (using COMSPEC instead of /bin/sh). |
- |
-Buildslaves under w32 should theoretically work now, and one was running for |
-the Twisted buildbot for a while until the machine had to be returned. |
- |
-The "header" lines in ShellCommand logs (which include the first line, that |
-displays the command being run, and the last, which shows its exit status) |
-are now generated by the buildslave side instead of the local (buildmaster) |
-side. This can provide better error handling and is generally cleaner. |
-However, if you have an old buildslave (running 0.4.2 or earlier) and a new |
-buildmaster, then neither end will generate these header lines. |
- |
-CVSCommand was improved, in certain situations 0.4.2 would perform |
-unnecessary checkouts (when an update would have sufficed). Thanks to Johan |
-Dahlin for the patches. The status output was fixed as well, so that |
-failures in CVS and SVN commands (such as not being able to find the 'svn' |
-executable) make the step status box red. |
- |
-Subversion support was refactored to make it behave more like CVS. This is a |
-work in progress and will be improved in the next release. |
- |
- |
-* Release 0.4.2 (08 Jan 2004) |
- |
-** test suite updated |
- |
-The test suite has been completely moved over to Twisted's "Trial" |
-framework, and all tests now pass. To run the test suite (consisting of 64 |
-tests, probably covering about 30% of BuildBot's logic), do this: |
- |
- PYTHONPATH=. trial -v buildbot.test |
- |
-** Mail parsers updated |
- |
-Several bugs in the mail-parsing code were fixed, allowing a buildmaster to |
-be triggered by mail sent out by a CVS repository. (The Twisted Buildbot is |
-now using this to trigger builds, as their CVS server machine is having some |
-difficulties with FreshCVS). The FreshCVS mail format for directory |
-additions appears to have changed recently: the new parser should handle |
-both old and new-style messages. |
- |
-A parser for Bonsai commit messages (buildbot.changes.mail.parseBonsaiMail) |
-was contributed by Stephen Davis. Thanks Stephen! |
- |
-** CVS "global options" now available |
- |
-The CVS build step can now accept a list of "global options" to give to the |
-cvs command. These go before the "update"/"checkout" word, and are described |
-fully by "cvs --help-options". Two useful ones might be "-r", which causes |
-checked-out files to be read-only, and "-R", which assumes the repository is |
-read-only (perhaps by not attempting to write to lock files). |
- |
- |
-* Release 0.4.1 (09 Dec 2003) |
- |
-** MaildirSources fixed |
- |
-Several bugs in MaildirSource made them unusable. These have been fixed (for |
-real this time). The Twisted buildbot is using an FCMaildirSource while they |
-fix some FreshCVS daemon problems, which provided the encouragement for |
-getting these bugs fixed. |
- |
-In addition, the use of DNotify (only available under linux) was somehow |
-broken, possibly by changes in some recent version of Python. It appears to |
-be working again now (against both python-2.3.3c1 and python-2.2.1). |
- |
-** master.cfg can use 'basedir' variable |
- |
-As documented in the sample configuration file (but not actually implemented |
-until now), a variable named 'basedir' is inserted into the namespace used |
-by master.cfg . This can be used with something like: |
- |
- os.path.join(basedir, "maildir") |
- |
-to obtain a master-basedir-relative location. |
- |
- |
-* Release 0.4.0 (05 Dec 2003) |
- |
-** newapp |
- |
-I've moved the codebase to Twisted's new 'application' framework, which |
-drastically cleans up service startup/shutdown just like newcred did for |
-authorization. This is mostly an internal change, but the interface to |
-IChangeSources was modified, so in the off chance that someone has written a |
-custom change source, it may have to be updated to the new scheme. |
- |
-The most user-visible consequence of this change is that now both |
-buildmasters and buildslaves are generated with the standard Twisted 'mktap' |
-utility. Basic documentation is in the README file. |
- |
-Both buildmaster and buildslave .tap files need to be re-generated to run |
-under the new code. I have not figured out the styles.Versioned upgrade path |
-well enough to avoid this yet. Sorry. |
- |
-This also means that both buildslaves and the buildmaster require |
-Twisted-1.1.0 or later. |
- |
-** reloadable master.cfg |
- |
-Most aspects of a buildmaster is now controlled by a configuration file |
-which can be re-read at runtime without losing build history. This feature |
-makes the buildmaster *much* easier to maintain. |
- |
-In the previous release, you would create the buildmaster by writing a |
-program to define the Builders and ChangeSources and such, then run it to |
-create the .tap file. In the new release, you use 'mktap' to create the .tap |
-file, and the only parameter you give it is the base directory to use. Each |
-time the buildmaster starts, it will look for a file named 'master.cfg' in |
-that directory and parse it as a python script. That script must define a |
-dictionary named 'BuildmasterConfig' with various keys to define the |
-builders, the known slaves, what port to use for the web server, what IRC |
-channels to connect to, etc. |
- |
-This config file can be re-read at runtime, and the buildmaster will compute |
-the differences and add/remove services as necessary. The re-reading is |
-currently triggered through the debug port (contrib/debugclient.py is the |
-debug port client), but future releases will add the ability to trigger the |
-reconfiguration by IRC command, web page button, and probably a local UNIX |
-socket (with a helper script to trigger a rebuild locally). |
- |
-docs/examples/twisted_master.cfg contains a sample configuration file, which |
-also lists all the keys that can be set. |
- |
-There may be some bugs lurking, such as re-configuring the buildmaster while |
-a build is running. It needs more testing. |
- |
-** MaxQ support |
- |
-Radix contributed some support scripts to run MaxQ test scripts. MaxQ |
-(http://maxq.tigris.org/) is a web testing tool that allows you to record |
-HTTP sessions and play them back. |
- |
-** Builders can now wait on multiple Interlocks |
- |
-The "Interlock" code has been enhanced to allow multiple builders to wait on |
-each one. This was done to support the new config-file syntax for specifying |
-Interlocks (in which each interlock is a tuple of A and [B], where A is the |
-builder the Interlock depends upon, and [B] is a list of builders that |
-depend upon the Interlock). |
- |
-"Interlock" is misnamed. In the next release it will be changed to |
-"Dependency", because that's what it really expresses. A new class (probably |
-called Interlock) will be created to express the notion that two builders |
-should not run at the same time, useful when multiple builders are run on |
-the same machine and thrashing results when several CPU- or disk- intensive |
-compiles are done simultaneously. |
- |
-** FreshCVSSource can now handle newcred-enabled FreshCVS daemons |
- |
-There are now two FreshCVSSource classes: FreshCVSSourceNewcred talks to |
-newcred daemons, and FreshCVSSourceOldcred talks to oldcred ones. Mind you, |
-FreshCVS doesn't yet do newcred, but when it does, we'll be ready. |
- |
-'FreshCVSSource' maps to the oldcred form for now. That will probably change |
-when the current release of CVSToys supports newcred by default. |
- |
-** usePTY=1 on posix buildslaves |
- |
-When a buildslave is running under POSIX (i.e. pretty much everything except |
-windows), child processes are created with a pty instead of separate |
-stdin/stdout/stderr pipes. This makes it more likely that a hanging build |
-(when killed off by the timeout code) will have all its sub-childred cleaned |
-up. Non-pty children would tend to leave subprocesses running because the |
-buildslave was only able to kill off the top-level process (typically |
-'make'). |
- |
-Windows doesn't have any concept of ptys, so non-posix systems do not try to |
-enable them. |
- |
-** mail parsers should actually work now |
- |
-The email parsing functions (FCMaildirSource and SyncmailMaildirSource) were |
-broken because of my confused understanding of how python class methods |
-work. These sources should be functional now. |
- |
-** more irc bot sillyness |
- |
-The IRC bot can now perform half of the famous AYBABTO scene. |
- |
- |
-* Release 0.3.5 (19 Sep 2003) |
- |
-** newcred |
- |
-Buildbot has moved to "newcred", a new authorization framework provided by |
-Twisted, which is a good bit cleaner and easier to work with than the |
-"oldcred" scheme in older versions. This causes both buildmaster and |
-buildslaves to depend upon Twisted 1.0.7 or later. The interface to |
-'makeApp' has changed somewhat (the multiple kinds of remote connections all |
-use the same TCP port now). |
- |
-Old buildslaves will get "_PortalWrapper instance has no attribute |
-'remote_username'" errors when they try to connect. They must be upgraded. |
- |
-The FreshCVSSource uses PB to connect to the CVSToys server. This has been |
-upgraded to use newcred too. If you get errors (TODO: what do they look |
-like?) in the log when the buildmaster tries to connect, you need to upgrade |
-your FreshCVS service or use the 'useOldcred' argument when creating your |
-FreshCVSSource. This is a temporary hack to allow the buildmaster to talk to |
-oldcred CVSToys servers. Using it will trigger deprecation warnings. It will |
-go away eventually. |
- |
-In conjunction with this change, makeApp() now accepts a password which can |
-be applied to the debug service. |
- |
-** new features |
- |
-*** "copydir" for CVS checkouts |
- |
-The CVS build step can now accept a "copydir" parameter, which should be a |
-directory name like "source" or "orig". If provided, the CVS checkout is |
-done once into this directory, then copied into the actual working directory |
-for compilation etc. Later updates are done in place in the copydir, then |
-the workdir is replaced with a copy. |
- |
-This reduces CVS bandwidth (update instead of full checkout) at the expense |
-of twice the disk space (two copies of the tree). |
- |
-*** Subversion (SVN) support |
- |
-Radix (Christopher Armstrong) contributed early support for building |
-Subversion-based trees. The new 'SVN' buildstep behaves roughly like the |
-'CVS' buildstep, and the contrib/svn_buildbot.py script can be used as a |
-checkin trigger to feed changes to a running buildmaster. |
- |
-** notable bugfixes |
- |
-*** .tap file generation |
- |
-We no longer set the .tap filename, because the buildmaster/buildslave |
-service might be added to an existing .tap file and we shouldn't presume to |
-own the whole thing. You may want to manually rename the "buildbot.tap" file |
-to something more meaningful (like "buildslave-bot1.tap"). |
- |
-*** IRC reconnect |
- |
-If the IRC server goes away (it was restarted, or the network connection was |
-lost), the buildmaster will now schedule a reconnect attempt. |
- |
-*** w32 buildslave fixes |
- |
-An "rm -rf" was turned into shutil.rmtree on non-posix systems. |
- |
- |
-* Release 0.3.4 (28 Jul 2003) |
- |
-** IRC client |
- |
-The buildmaster can now join a set of IRC channels and respond to simple |
-queries about builder status. |
- |
-** slave information |
- |
-The build slaves can now report information from a set of info/* files in |
-the slave base directory to the buildmaster. This will be used by the slave |
-administrator to announce details about the system hosting the slave, |
-contact information, etc. For now, info/admin should contain the name/email |
-of the person who is responsible for the buildslave, and info/host should |
-describe the system hosting the build slave (OS version, CPU speed, memory, |
-etc). The contents of these files are made available through the waterfall |
-display. |
- |
-** change notification email parsers |
- |
-A parser for Syncmail (syncmail.sourceforge.net) was added. SourceForge |
-provides examples of setting up syncmail to deliver CVS commit messages to |
-mailing lists, so hopefully this will make it easier for sourceforge-hosted |
-projects to set up a buildbot. |
- |
-email processors were moved into buildbot.changes.mail . FCMaildirSource was |
-moved, and the compatibility location (buildbot.changes.freshcvsmail) will |
-go away in the next release. |
- |
-** w32 buildslave ought to work |
- |
-Some non-portable code was changed to make it more likely that the |
-buildslave will run under windows. The Twisted buildbot now has a |
-(more-or-less) working w32 buildslave. |
- |
- |
-* Release 0.3.3 (21 May 2003): |
- |
-** packaging changes |
- |
-*** include doc/examples in the release. Oops again. |
- |
-** network changes |
- |
-*** add keepalives to deal with NAT boxes |
- |
-Some NAT boxes drop port mappings if the TCP connection looks idle for too |
-long (maybe 30 minutes?). Add application-level keepalives (dummy commands |
-sent from slave to master every 10 minutes) to appease the NAT box and keep |
-our connection alive. Enable this with --keepalive in the slave mktap |
-command line. Check the README for more details. |
- |
-** UI changes |
- |
-*** allow slaves to trigger any build that they host |
- |
-Added an internal function to ask the buildmaster to start one of their |
-builds. Must be triggered with a debugger or manhole on the slave side for |
-now, will add a better UI later. |
- |
-*** allow web page viewers to trigger any build |
- |
-Added a button to the per-build page (linked by the build names on the third |
-row of the waterfall page) to allow viewers to manually trigger builds. |
-There is a field for them to indicate who they are and why they are |
-triggering the build. It is possible to abuse this, but for now the benefits |
-outweigh the damage that could be done (worst case, someone can make your |
-machine run builds continuously). |
- |
-** generic buildprocess changes |
- |
-*** don't queue multiple builds for offline slaves |
- |
-If a slave is not online when a build is ready to run, that build is queued |
-so the slave will run it when it next connects. However, the buildmaster |
-used to queue every such build, so the poor slave machine would be subject |
-to tens or hundreds of builds in a row when they finally did come online. |
-The buildmaster has been changed to merge these multiple builds into a |
-single one. |
- |
-*** bump ShellCommand default timeout to 20 minutes |
- |
-Used for testing out the win32 twisted builder. I will probably revert this |
-in the next relese. |
- |
-*** split args in ShellCommand ourselves instead of using /bin/sh |
- |
-This should remove the need for /bin/sh on the slave side, improving the |
-chances that the buildslave can run on win32. |
- |
-*** add configureEnv argument to Configure step, pass env dict to slave |
- |
-Allows build processes to do things like 'CFLAGS=-O0 ./configure' without |
-using /bin/sh to set the environment variable |
- |
-** Twisted buildprocess changes |
- |
-*** warn instead of flunk the build when cReactor or qtreactor tests fail |
- |
-These two always fail. For now, downgrade those failures to a warning |
-(orange box instead of red). |
- |
-*** don't use 'clobber' on remote builds |
- |
-Builds that run on remote machines (freebsd, OS-X) now use 'cvs update' |
-instead of clobbering their trees and doing a fresh checkout. The multiple |
-simultaneous CVS checkouts were causing a strain on Glyph's upstream |
-bandwidth. |
- |
-*** use trial --testmodule instead of our own test-case-name grepper |
- |
-The Twisted coding/testing convention has developers put 'test-case-name' |
-tags (emacs local variables, actually) in source files to indicate which |
-test cases should be run to exercise that code. Twisted's unit-test |
-framework just acquired an argument to look for these tags itself. Use that |
-instead of the extra FindUnitTestsForFiles build step we were doing before. |
-Removes a good bit of code from buildbot and into Twisted where it really |
-belongs. |
- |
- |
-* Release 0.3.2 (07 May 2003): |
- |
-** packaging changes |
- |
-*** fix major packaging bug: none of the buildbot/* subdirectories were |
-included in the 0.3.1 release. Sorry, I'm still figuring out distutils |
-here.. |
- |
-** internal changes |
- |
-*** use pb.Cacheable to update Events in remote status client. much cleaner. |
- |
-*** start to clean up BuildProcess->status.builder interface |
- |
-** bug fixes |
- |
-*** waterfall display was missing a <tr>, causing it to be misrendered in most |
-browsers (except the one I was testing it with, of course) |
- |
-*** URL without trailing slash (when served in a twisted-web distributed |
-server, with a url like "http://twistedmatrix.com/~warner.twistd") should do |
-redirect to URL-with-trailing-slash, otherwise internal hrefs are broken. |
- |
-*** remote status clients: forget RemoteReferences at shutdown, removes |
-warnings about "persisting Ephemerals" |
- |
-** Twisted buildprocess updates: |
- |
-*** match build process as of twisted-1.0.5 |
-**** use python2.2 everywhere now that twisted rejects python2.1 |
-**** look for test-result constants in multiple places |
-*** move experimental 'trial --jelly' code to separate module |
-*** add FreeBSD builder |
-*** catch rc!=0 in HLint step |
-*** remove RunUnitTestsRandomly, use randomly=1 parameter instead |
-*** parameterize ['twisted.test'] default test case to make subclassing easier |
-*** ignore internal distutils warnings in python2.3 builder |
- |
- |
-* Release 0.3.1 (29 Apr 2003): |
- |
-** First release. |
- |
-** Features implemented: |
- |
- change notification from FreshCVS server or parsed maildir contents |
- |
- timed builds |
- |
- basic builds, configure/compile/test |
- |
- some Twisted-specific build steps: docs, unit tests, debuild |
- |
- status reporting via web page |
- |
-** Features still experimental/unpolished |
- |
- status reporting via PB client |