Release Notes for Buildbot v0.8.6p1
===================================

..
    Any change that adds a feature or fixes a bug should have an entry here.
    Most simply need an additional bulleted list item, but more significant
    changes can be given a subsection of their own.

The following are the release notes for Buildbot v0.8.6p1.
Buildbot v0.8.6 was released on March 11, 2012.
Buildbot v0.8.6p1 was released on March 25, 2012.

0.8.6p1
-------

In addition to what's listed below, the 0.8.6p1 release adds the following.

* Builders are no longer displayed in the order they were configured.  This was
  never intended behavior, and will become impossible in the distributed
  architecture planned for Buildbot-0.9.x.  As of 0.8.6p1, builders are sorted
  naturally: lexically, but with numeric segments sorted numerically.

* Slave properties in the configuration are now handled correctly.

* The web interface buttons to cancel individual builds now appear when
  configured.

* The ForceScheduler's properties are correctly updated on reconfig -
  :bug:`2248`.

* If a slave is lost while waiting for locks, it is properly cleaned up -
  :bug:`2247`.

* Crashes when adding new steps to a factory in a reconfig are fixed -
  :bug:`2252`.

* MailNotifier AttributeErrors are fixed - :bug:`2254`.

* Cleanup from failed builds is improved - :bug:`2253`.

Master
------

* If you are using the GitHub hook, carefully consider the security
  implications of allowing un-authenticated change requests, which can
  potentially build arbitrary code.  See :bug:`2186`.

Deprecations, Removals, and Non-Compatible Changes
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

* Forced builds now require that a :bb:sched:`ForceScheduler` be defined in the
  Buildbot configuration.  For compatible behavior, this should look like::

    from buildbot.schedulers.forcesched import ForceScheduler
    c['schedulers'].append(ForceScheduler(
                            name="force",
                            builderNames=["b1", "b2", ... ]))

  Where all of the builder names in the configuration are listed.  See the
  documentation for the *much* more flexible configuration options now
  available.

* This is the last release of Buildbot that will be compatible with Python 2.4.
  The next version will minimally require Python-2.5.  See :bug:`2157`.

* This is the last release of Buildbot that will be compatible with
  Twisted-8.x.y.  The next version will minimally require Twisted-9.0.0.  See
  :bug:`2182`.

* ``buildbot start`` no longer invokes make if a ``Makefile.buildbot`` exists.
  If you are using this functionality, consider invoking make directly.

* The ``buildbot sendchange`` option ``--username`` has been removed as
  promised in :bug:`1711`.

* StatusReceivers' checkConfig method should now take an additional `errors`
  parameter and call its :py:meth:`~buildbot.config.ConfigErrors.addError`
  method to indicate errors.

* The Gerrit status callback now gets an additional parameter (the master
  status).  If you use this callback, you will need to adjust its
  implementation.

* SQLAlchemy-Migrate version 0.6.0 is no longer supported.

* Older versions of SQLite which could limp along for previous versions of
  Buildbot are no longer supported.  The minimum version is 3.4.0, and 3.7.0 or
  higher is recommended.

* The master-side Git step now checks out 'HEAD' by default, rather than
  master, which translates to the default branch on the upstream repository.  See
  :pull:`301`.

* The format of the repository strings created by ``hgbuildbot`` has changed to
  contain the entire repository URL, based on the ``web.baseurl`` value in
  ``hgrc``.  To continue the old (incorrect) behavior, set
  ``hgbuildbot.baseurl`` to an empty string as suggested in the Buildbot
  manual.

* Master Side :bb:step:`SVN` Step has been corrected to properly use
  ``--revision`` when ``alwaysUseLatest`` is set to ``False`` when in the
  ``full`` mode. See :bug:`2194`

* Master Side :bb:step:`SVN` Step parameter svnurl has been renamed repourl, to
  be consistent with other master-side source steps.

* Master Side :bb:step:`Mercurial` step parameter ``baseURL`` has been merged
  with ``repourl`` parameter. The behavior of the step is already controlled by
  ``branchType`` parameter, so just use a single argument to specify the repository.

* Passing a :py:class:`buildbot.process.buildstep.BuildStep` subclass (rather than
  instance) to :py:meth:`buildbot.process.factory.BuildFactory.addStep` has long been
  deprecated, and will be removed in version 0.8.7.

* The `hgbuildbot` tool now defaults to the 'inrepo' branch type.  Users who do
  not explicitly set a branch type would previously have seen empty branch strings,
  and will now see a branch string based on the branch in the repository (e.g.,
  `default`).

Changes for Developers
~~~~~~~~~~~~~~~~~~~~~~

* The interface for runtime access to the master's configuration has changed
  considerably.  See :doc:`/developer/config` for more details.

* The DB connector methods ``completeBuildset``, ``completeBuildRequest``, and
  ``claimBuildRequest`` now take an optional ``complete_at`` parameter to
  specify the completion time explicitly.

* Buildbot now sports sourcestamp sets, which collect multiple sourcestamps
  used to generate a single build, thanks to Harry Borkhuis.  See
  :pull:`287`.

* Schedulers no longer have a ``schedulerid``, but rather an ``objectid``.  In
  a related change, the ``schedulers`` table has been removed, along with the
  :py:meth:`buildbot.db.schedulers.SchedulersConnectorComponent.getSchedulerId`
  method.

* The Dependent scheduler tracks its upstream buildsets using
  :py:class:`buildbot.db.schedulers.StateConnectorComponent`, so the
  ``scheduler_upstream_buildsets`` table has been removed, along with
  corresponding (undocumented)
  :py:class:`buildbot.db.buildsets.BuildsetsConnector` methods.

* Errors during configuration (in particular in :py:class:`BuildStep` constructors),
  should be reported by calling :py:func:`buildbot.config.error`.

Features
~~~~~~~~

* The IRC status bot now display build status in colors by default.
  It is controllable and may be disabled with useColors=False in constructor.

* Buildbot can now take advantage of authentication done by a front-end web
  server - see :pull:`266`.

* Buildbot supports a simple cookie-based login system, so users no longer need
  to enter a username and password for every request.  See the earlier commits
  in :pull:`278`.

* The master-side SVN step now has an `export` method which is similar to
  `copy`, but the build directory does not contain Subversion metadata. (:bug:`2078`)

* :py:class:`Property` instances will now render any properties in the
  default value if necessary.  This makes possible constructs like ::

    command=Property('command', default=Property('default-command'))

* Buildbot has a new web hook to handle push notifications from Google Code -
  see :pull:`278`.

* Revision links are now generated by a flexible runtime conversion configured
  by :bb:cfg:`revlink` - see :pull:`280`.

* Shell command steps will now "flatten" nested lists in the ``command``
  argument.  This allows substitution of multiple command-line arguments using
  properties.  See :bug:`2150`.
  
* Steps now take an optional ``hideStepIf`` parameter to suppress the step
  from the waterfall and build details in the web. (:bug:`1743`)

* :py:class:`Trigger` steps with ``waitForFinish=True`` now receive a URL to
  all the triggered builds. This URL is displayed in the waterfall and build
  details. See :bug:`2170`.

* The ``master/contrib/fakemaster.py`` script allows you to run arbitrary commands on a slave by emulating a master.
  See the file itself for documentation.

* MailNotifier allows multiple notification modes in the same instance.  See
  :bug:`2205`.

* SVNPoller now allows passing extra arguments via argument ``extra_args``.
  See :bug:`1766`
  
Slave
-----

Deprecations, Removals, and Non-Compatible Changes
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

* BitKeeper support is in the "Last-Rites" state, and will be removed in the
  next version unless a maintainer steps forward.

Features
~~~~~~~~

Details
-------

For a more detailed description of the changes made in this version, see the
Git log itself:

.. code-block:: bash

   git log buildbot-0.8.5..buildbot-0.8.6

Older Versions
--------------

Release notes for older versions of Buildbot are available in the :src:`master/docs/relnotes/` directory of the source tree, or in the archived documentation for those versions at http://buildbot.net/buildbot/docs.
