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