5.106. Release Notes for Buildbot v0.8.7
The following are the release notes for Buildbot v0.8.7. Buildbot v0.8.7 was released on September 22, 2012. Buildbot 0.8.7p1 was released on November 21, 2012.
5.106.1. 0.8.7p1
In addition to what’s listed below, the 0.8.7p1 release adds the following.
- The - SetPropertiesFromEnvstep now correctly gets environment variables from the slave, rather than those set on the master. Also, it logs the changes made to properties.
- The master-side - Gitsource step now doesn’t try to clone a branch called- HEAD. This is what- gitdoes by default, and specifying it explicitly doesn’t work as expected.
- The - Gitstep properly deals with the case when there is a file called- FETCH_HEADin the checkout.
- Buildbot no longer forks when told not to daemonize. 
- Buildbot’s startup is now more robust. See bug #1992. 
- The - Triggerstep uses the provided list of source stamps exactly, if given, instead of adding them to the sourcestamps of the current build. In 0.8.7, they were combined with the source stamps for the current build.
- The - Triggerstep again completely ignores the source stamp of the current build, if- alwaysUseLatestis set. In 0.8.7, this was mistakenly changed to only ignore the specified revision of the source stamp.
- The - Triggerablescheduler is again properly passing changes through to the scheduled builds. See bug #2376.
- Web change hooks log errors, allowing debugging. 
- The - basechange hook now properly decodes the provided date.
- CVSMailDirhas been fixed.
- Importing - buildbot.testno longer causes python to exit, if- mockisn’t installed. The fixes- pydoc -kwhen buildbot is installed.
- Mercurialproperly updates to the correct branch, when using- inrepobranches.
- Buildbot now doesn’t fail on invalid UTF-8 in a number of places. 
- Many documentation updates and fixes. 
5.106.2. Master
5.106.2.1. Features
- Buildbot now supports building projects composed of multiple codebases. New schedulers can aggregate changes to multiple codebases into source stamp sets (with one source stamp for each codebase). Source steps then check out each codebase as required, and the remainder of the build process proceeds normally. See the Multiple-Codebase Builds for details. - The format of the - got_revisionproperty has changed for multi-codebase builds. It is now a dictionary keyed by codebase.
 
- Sourceand- ShellCommandsteps now have an optional- descriptionSuffix, a suffix to the- description/- descriptionDonevalues. For example this can help distinguish between multiple- Compilesteps that are applied to different codebases.
- The - Gitstep has a new- getDescriptionoption, which will run- git describeafter checkout normally. See- Gitfor details.
- A new interpolation placeholder Interpolate, with more regular syntax, is available. 
- A new ternary substitution operator - :?and- :#?is available with the- Interpolateclass.
- IRenderable.getRenderingForcan now return a deferred.
- The Mercurial hook now supports multiple masters. See pull request 436. 
- There’s a new poller for Mercurial: - HgPoller.
- The new - HTPasswdAprAuthuses libaprutil (through ctypes) to validate the password against the hash from the .htpasswd file. This adds support for all hash types htpasswd can generate.
- GitPollerhas been rewritten. It now supports multiple branches and can share a directory between multiple pollers. It is also more resilient to changes in configuration, or in the underlying repository.
- Added a new property - httpLoginUrlto- buildbot.status.web.authz.Authzto render a nice Login link in WebStatus for unauthenticated users if- useHttpHeaderand- httpLoginUrlare set.
- ForceSchedulerhas been updated:- support for multiple codebases via the - codebasesparameter
- NestedParameterto provide a logical grouping of parameters.
- CodebaseParameterto set the branch/revision/repository/project for a codebase
- new HTML/CSS customization points. Each parameter is contained in a - rowwith multiple ‘class’ attributes associated with them (eg, ‘force-string’ and ‘force-nested’) as well as a unique id to use with Javascript. Explicit line-breaks have been removed from the HTML generator and are now controlled using CSS.
 
- The - SVNPollernow supports multiple projects and codebases. See pull request 443.
- The - MailNotifiernow takes a callable to calculate the “previous” build for purposes of determining status changes. See pull request 489.
- The - copy_propertiesparameter, given a list of properties to copy into the new build request, has been deprecated in favor of explicit use of- set_properties.
5.106.2.2. Deprecations, Removals, and Non-Compatible Changes
- Buildbot master now requires at least Python-2.5 and Twisted-9.0.0. 
- Passing a - BuildStepsubclass (rather than instance) to- addStepis no longer supported. The- addStepmethod now takes exactly one argument.
- Buildbot master requires - python-dateutilversion 1.5 to support the Nightly scheduler.
- ForceSchedulerhas been updated to support multiple codebases. The branch/revision/repository/project are deprecated; if you have customized these values, simply provide them as- codebases=[CodebaseParameter(name='', ...)].- The POST URL names for - AnyPropertyParameterfields have changed. For example, ‘property1name’ is now ‘property1_name’, and ‘property1value’ is now ‘property1_value’. Please update any bookmarked or saved URL’s that used these fields.
- forcesched.BaseParameterAPI has changed quite a bit and is no longer backwards compatible. Updating guidelines:- get_from_postis renamed to- getFromKwargs
- update_from_postis renamed to- updateFromKwargs. This function’s parameters are now called via named parameters to allow subclasses to ignore values it doesn’t use. Subclasses should add- **unusedfor future compatibility. A new parameter- sourcestampsetis provided to allow subclasses to modify the sourcestamp set, and will probably require you to add the- **unusedfield.
 
 
- The parameters to the callable version of - build.workdirhave changed. Instead of a single sourcestamp, a list of sourcestamps is passed. Each sourcestamp in the list has a different codebase
- The undocumented renderable - _ComputeRepositoryURLis no longer imported to- buildbot.steps.source. It is still available at- buildbot.steps.source.oldsource.
- IProperties.rendernow returns a deferred, so any code rendering properties by hand will need to take this into account.
- baseURLhas been removed in- SVNto use just- repourl- see bug #2066. Branch info should be provided with- Interpolate.- from buildbot.steps.source.svn import SVN factory.append(SVN(baseURL="svn://svn.example.org/svn/")) - can be replaced with - from buildbot.process.properties import Interpolate from buildbot.steps.source.svn import SVN factory.append(SVN(repourl=Interpolate("svn://svn.example.org/svn/%(src::branch)s"))) - and - from buildbot.steps.source.svn import SVN factory.append(SVN(baseURL="svn://svn.example.org/svn/%%BRANCH%%/project")) - can be replaced with - from buildbot.process.properties import Interpolate from buildbot.steps.source.svn import SVN factory.append(SVN(repourl=Interpolate( "svn://svn.example.org/svn/%(src::branch)s/project"))) - and - from buildbot.steps.source.svn import SVN factory.append(SVN(baseURL="svn://svn.example.org/svn/", defaultBranch="branches/test")) - can be replaced with - from buildbot.process.properties import Interpolate from buildbot.steps.source.svn import SVN factory.append(SVN(repourl=Interpolate( "svn://svn.example.org/svn/%(src::branch:-branches/test)s"))) 
- The - P4Syncstep, deprecated since 0.8.5, has been removed. The- P4step remains.
- The - fetch_specargument to- GitPolleris no longer supported.- GitPollernow only downloads branches that it is polling, so specifies a refspec itself.
- The format of the changes produced by - SVNPollerhas changed: directory pathnames end with a forward slash. This allows the- split_filefunction to distinguish between files and directories. Customized split functions may need to be adjusted accordingly.
- FlattenList has been deprecated in favor of Interpolate. Interpolate doesn’t handle functions as keyword arguments. The following code using - WithProperties- from buildbot.process.properties import WithProperties def determine_foo(props): if props.hasProperty('bar'): return props['bar'] elif props.hasProperty('baz'): return props['baz'] return 'qux' WithProperties('%(foo)s', foo=determine_foo) - can be replaced with - from zope.interface import implementer from buildbot.interfaces import IRenderable from buildbot.process.properties import Interpolate @implementer(IRenderable) class determineFoo(object): def getRenderingFor(self, props): if props.hasProperty('bar'): return props['bar'] elif props.hasProperty('baz'): return props['baz'] return 'qux' Interpolate('%s(kw:foo)s', foo=determineFoo()) 
5.106.2.3. Changes for Developers
- BuildStep.startcan now optionally return a deferred and any errback will be handled gracefully. If you use- inlineCallbacks, this means that unexpected exceptions and failures raised will be captured and logged and the build shut down normally.
- The helper methods - getStateand- setStatefrom- BaseSchedulerhave been factored into- buildbot.util.state.StateMixinfor use elsewhere.
5.106.3. Slave
5.106.3.1. Features
5.106.3.2. Deprecations, Removals, and Non-Compatible Changes
- The - P4Syncstep, deprecated since 0.8.5, has been removed. The- P4step remains.
5.106.4. Details
For a more detailed description of the changes made in this version, see the Git log itself:
git log v0.8.6..v0.8.7
5.106.5. Older Versions
Release notes for older versions of Buildbot are available in the master/docs/relnotes/ directory of the source tree. Starting with version 0.8.6, they are also available under the appropriate version at http://buildbot.net/buildbot/docs.