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