Release Notes for Buildbot |version|
====================================

..
    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 |version|.

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 :bb: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 flexiblie 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 :bb: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
  :bb: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 :bb: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.  See
  :ref:`Buildmaster-Requirements`.

* 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
  :bb: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 :ref:`the Buildbot
  manual <Mercurial-Hook>`.

* 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 :bb:bug:`2194`

* Master Side :bb:step:`SVN` Step paramater 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 controled 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
  :bb: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 :bb: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 :bb: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 metdata. (:bb: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 :bb:pull:`278`.

* Revision links are now generated by a flexible runtime conversion configured
  by :bb:cfg:`revlink` - see :bb: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 :bb:bug:`2150`.
  
* Steps now take an optional ``hideStepIf`` parameter to suppress the step
  from the waterfall and build details in the web. (:bb: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 :bb:bug:`2170`.

* The :bb:src:`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
  :bb:bug:`2205`.

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:

   git log buildbot-0.8.5..buildbot-0.8.6

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

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