5.97. Release Notes for Buildbot 0.9.0b8

The following are the release notes for Buildbot 0.9.0b8 This version was released on April 11, 2016.

See Upgrading to Buildbot 0.9.0 for a guide to upgrading from 0.8.x to 0.9.x

5.97.1. Master

5.97.1.1. Features

  • GitPoller now has a buildPushesWithNoCommits option to allow the rebuild of already known commits on new branches.

  • Add GitLab authentication plugin for web UI. See buildbot.www.oauth2.GitLabAuth.

  • DockerLatentWorker now has a hostconfig parameter that can be used to setup host configuration when creating a new container.

  • DockerLatentWorker now has a networking_config parameter that can be used to setup container networks.

  • The DockerLatentWorker volumes attribute is now renderable.

  • CMake build step is added. It provides a convenience interface to CMake build system.

  • MySQL InnoDB tables are now supported.

  • HttpStatusPush has been ported to reporter API.

  • StashStatusPush has been ported to reporter API.

  • GithubStatusPush has been ported to reporter API.

  • summaryCB of GerritStatusPush now gets not only pre-processed information but the actual build as well.

  • EC2LatentWorker supports VPCs, instance profiles, and advanced volume mounts.

5.97.1.2. Fixes

  • Fix loading LdapUserInfo plugin and its documentation (bug #3371).

  • Fix deprecation warnings seen with docker-py >= 1.4 when passing arguments to docker_client.start().

  • GitHubEventHandler now uses the ['repository']['html_url'] key in the webhook payload to populate repository, as the previously used ['url'] and ['clone_url'] keys had a different format between push and pull requests and GitHub and GitHub Enterprise instances.

  • Fix race condition where log compression could lead to empty log results in reporter api

  • Error while applying db upgrade is now properly reported in the buildbot upgrade-master command line.

  • Made Interpolate safe for deepcopy or serialization/deserialization

  • Optimized UI REST requests for child builds and change page.

  • Fix DockerLatentWorker use of volume parameter, they now properly manage src:dest syntax.

  • Fix DockerLatentWorker to properly create properties so that docker parameters can be renderable.

  • Lock down autobahn version for python 2.6 (note that autobahn and twisted are no longer supporting 2.6, and thus do not receive security fixes anymore).

  • Fix docs and example to always use port 8020 for the web ui.

5.97.1.3. Deprecations, Removals, and Non-Compatible Changes

  • Deprecated workdir property has been removed, builddir property should be used instead.

  • To support MySQL InnoDB, the size of six VARCHAR(256) columns changes.(author, branch, category, name); object_state.name; user.identifier was reduced to VARCHAR(255).

  • StatusPush has been removed from buildbot.

    Please use the much simpler HttpStatusPush instead.

5.97.1.4. Changes for Developers

Worker changes described in below worker section will probably impact a buildbot developer who uses undocumented ‘slave’ API. Undocumented APIs have been replaced without failover, so any custom code that uses it shall be updated with new undocumented API.

5.97.2. Worker

Package buildbot-slave is being renamed buildbot-worker. As the work is not completely finished, neither buildbot-slave==0.9.0b8 or buildbot-worker==0.9.0b8 have been released.

You can safely use any version of buildbot-slave with buildbot==0.9.0b8, either buildbot-slave==0.8.12 or buildbot-slave==0.9.0b7.

5.97.3. Transition to “worker” terminology

Since version 0.9.0 of Buildbot “slave”-based terminology is deprecated in favor of “worker”-based terminology.

For details about public API changes see Transition to “worker” terminology in BuildBot 0.9.0.

API changes done without providing fallback:

Old name

New name

buildbot.buildslave.manager

buildbot.worker.manager

buildbot.buildslave.manager.BuildslaveRegistration

buildbot.worker.manager.WorkerRegistration

buildbot.buildslave.manager.BuildslaveRegistration.buildslave

buildbot.worker.manager.WorkerRegistration.worker

buildbot.buildslave.manager.BuildslaveManager

buildbot.worker.manager.WorkerManager

buildbot.buildslave.manager.BuildslaveManager.slaves

buildbot.worker.manager.WorkerManager.workers

buildbot.buildslave.manager.BuildslaveManager.getBuildslaveByName

buildbot.worker.manager.WorkerManager.getWorkerByName

buildbot.buildslave.docker.DockerLatentBuildSlave

buildbot.worker.docker.DockerLatentWorker

buildbot.buildslave.local.LocalBuildSlave

buildbot.worker.local.LocalWorker

buildbot.buildslave.local.LocalBuildSlave.LocalBuildSlaveFactory

buildbot.worker.local.LocalWorker.LocalWorkerFactory

buildbot.buildslave.local.LocalBuildSlave.remote_slave

buildbot.worker.local.LocalWorker.remote_worker

buildbot.buildslave.base module with all contents

buildbot.worker.base

buildbot.buildslave.AbstractBuildSlave.updateSlave

buildbot.worker.AbstractWorker.updateWorker

buildbot.buildslave.AbstractBuildSlave.slavebuilders

buildbot.worker.AbstractWorker.workerforbuilders

buildbot.buildslave.AbstractBuildSlave.updateSlaveStatus

buildbot.worker.AbstractWorker.updateWorkerStatus

buildbot.buildslave.AbstractLatentBuildSlave.updateSlave

buildbot.worker.AbstractLatentWorker.updateWorker

buildbot.buildslave.BuildSlave.slave_status

buildbot.worker.Worker.worker_status

buildbot.config.MasterConfig.load_slaves

load_workers

buildbot.master.BuildMaster.buildslaves

buildbot.master.BuildMaster.workers

buildbot.process.build.Build.slavebuilder

workerforbuilder

buildbot.process.build.Build.setSlaveEnvironment

setWorkerEnvironment

buildbot.process.build.Build.slaveEnvironment

workerEnvironment

buildbot.process.build.Build.getSlaveCommandVersion

getWorkerCommandVersion

buildbot.process.build.Build.setupSlaveBuilder

setupWorkerForBuilder

buildbot.process.builder.Build.canStartWithSlavebuilder

canStartWithWorkerForBuilder

buildbot.process.slavebuilder.AbstractSlaveBuilder.getSlaveCommandVersion

buildbot.process.workerforbuilder.AbstractWorkerForBuilder.getWorkerCommandVersion

buildbot.process.slavebuilder.AbstractSlaveBuilder.attached method argument slave was renamed

worker

buildbot.buildslave.AbstractBuildSlave.slave_commands

buildbot.worker.AbstractWorker.worker_commands

buildbot.buildslave.AbstractBuildSlave.slave_environ

buildbot.worker.AbstractWorker.worker_environ

buildbot.buildslave.AbstractBuildSlave.slave_basedir

buildbot.worker.AbstractWorker.worker_basedir

buildbot.buildslave.AbstractBuildSlave.slave_system

buildbot.worker.AbstractWorker.worker_system

buildbot.buildslave.AbstractBuildSlave.buildslaveid

buildbot.worker.AbstractWorker.workerid

buildbot.buildslave.AbstractBuildSlave.addSlaveBuilder

buildbot.worker.AbstractWorker.addWorkerForBuilder

buildbot.buildslave.AbstractBuildSlave.removeSlaveBuilder

buildbot.worker.AbstractWorker.removeWorkerForBuilder

buildbot.buildslave.AbstractBuildSlave.messageReceivedFromSlave

buildbot.worker.AbstractWorker.messageReceivedFromWorker

buildbot.process.slavebuilder.LatentSlaveBuilder constructor positional argument slave was renamed

worker

buildbot.process.buildrequestdistributor.BasicBuildChooser.nextSlave

nextWorker

buildbot.process.buildrequestdistributor.BasicBuildChooser.slavepool

workerpool

buildbot.process.buildrequestdistributor.BasicBuildChooser.preferredSlaves

preferredWorkers

buildbot.process.buildrequestdistributor.BasicBuildChooser.rejectedSlaves

rejectedSlaves

buildbot.steps.shell.ShellCommand.slaveEnvironment (Note: this variable is renderable)

buildbot.steps.shell.ShellCommand.workerEnvironment

buildbot.status.slave

buildbot.status.worker

buildbot.status.slave.SlaveStatus

buildbot.status.worker.WorkerStatus

buildbot.interfaces.IStatusReceiver.slaveConnected with all implementations

buildbot.interfaces.IStatusReceiver.workerConnected

buildbot.interfaces.IStatusReceiver.slaveDisconnected with all implementations

buildbot.interfaces.IStatusReceiver.workerDisconnected

buildbot.status.master.Status.slaveConnected

buildbot.status.master.Status.workerConnected

buildbot.status.master.Status.slaveDisconnected

buildbot.status.master.Status.workerDisconnected

buildbot.status.master.Status.slavePaused

buildbot.status.master.Status.workerPaused

buildbot.status.master.Status.slaveUnpaused

buildbot.status.master.Status.workerUnpaused

buildbot.status.master.Status.buildslaves

buildbot.status.master.Status.workers

buildbot.status.base.StatusReceiverBase.slavePaused

buildbot.status.base.StatusReceiverBase.workerPaused

buildbot.status.base.StatusReceiverBase.slaveUnpaused

buildbot.status.base.StatusReceiverBase.workerUnpaused

buildbot.interfaces.IStatus.getSlaveNames with all implementations

buildbot.interfaces.IStatus.getWorkerNames

buildbot.interfaces.IStatus.getSlave with all implementations

buildbot.interfaces.IStatus.getWorker

buildbot.interfaces.IBuildStatus.getSlavename with all implementations

buildbot.interfaces.IBuildStatus.getWorkername

buildbot.status.build.BuildStatus.setSlavename

buildbot.status.build.BuildStatus.setWorkername

buildbot.status.build.BuildStatus.slavename

buildbot.status.build.BuildStatus.workername (also it was moved from class static attribute to instance attribute)

buildbot.interfaces.IBuilderStatus.getSlaves with all implementations

buildbot.interfaces.IBuilderStatus.getWorkers

buildbot.status.builder.BuilderStatus.slavenames

buildbot.status.builder.BuilderStatus.workernames

buildbot.status.builder.BuilderStatus.setSlavenames

buildbot.status.builder.BuilderStatus.setWorkernames

buildbot.process.botmaster.BotMaster.slaveLost

buildbot.process.botmaster.BotMaster.workerLost

buildbot.process.botmaster.BotMaster.getBuildersForSlave

buildbot.process.botmaster.BotMaster.getBuildersForWorker

buildbot.process.botmaster.BotMaster.maybeStartBuildsForSlave

buildbot.process.botmaster.BotMaster.maybeStartBuildsForWorker

buildbot.locks.RealSlaveLock

buildbot.locks.RealWorkerLock

buildbot.locks.RealSlaveLock.maxCountForSlave

buildbot.locks.RealWorkerLock.maxCountForWorker

buildbot.protocols.base.Connection constructor positional argument buildslave was renamed

worker

buildbot.protocols.base.Connection.buidslave

buildbot.protocols.base.Connection.worker

buildbot.protocols.base.Connection.remoteGetSlaveInfo

buildbot.protocols.base.Connection.remoteGetWorkerInfo

buildbot.protocols.pb.Connection constructor positional argument buildslave was renamed

worker

Other changes done without providing fallback:

  • Functions argument buildslaveName renamed to workerName.

  • Loop variables, local variables, helper functions:

    Old name

    New name

    s

    w or worker

    sl

    w or worker

    bs (“buildslave”)

    w

    sb

    wfb (“worker for builder”)

    bs1(), bs2()

    w1(), w2()

    bslave

    worker

    BS1_NAME, BS1_ID, BS1_INFO

    W1_NAME, W1_ID, W1_INFO

  • In buildbot.config.BuilderConfig.getConfigDict result 'slavenames' key changed to 'workernames'; 'slavebuilddir' key changed to 'workerbuilddir'; 'nextSlave' key changed to 'nextWorker'.

  • buildbot.process.builder.BuilderControl.ping now generates ["ping", "no worker"] event, instead of ["ping", "no slave"].

  • buildbot.plugins.util.WorkerChoiceParameter (previously BuildslaveChoiceParameter) label was changed from Build slave to Worker.

  • buildbot.plugins.util.WorkerChoiceParameter (previously BuildslaveChoiceParameter) default name was changed from slavename to workername.

  • buildbot.status.builder.SlaveStatus fallback was removed. SlaveStatus was moved to buildbot.status.builder.slave previously, and now it’s buildbot.status.worker.WorkerStatus.

  • buildbot.status.status_push.StatusPush events generation changed (this module will be completely removed in 0.9.x):

    • instead of slaveConnected with data slave=... now generated workerConnected event with data worker=...;

    • instead of slaveDisconnected with data slavename=... now generated workerDisconnected with data workername=...;

    • instead of slavePaused with data slavename=... now generated workerPaused event with data workername=...;

    • instead of slaveUnpaused with data slavename=... now generated workerUnpaused event with data workername=...;

  • buildbot.status.build.BuildStatus.asDict returns worker name under 'worker' key, instead of 'slave' key.

  • buildbot.status.builder.BuilderStatus.asDict returns worker names under 'workers' key, instead of 'slaves' key.

  • Definitely privately used “slave”-named variables and attributes were renamed, including tests modules, classes and methods.

5.97.3.1. Database

Database API changes done without providing fallback.

Old name

New name

buildbot.db.buildslaves.BuildslavesConnectorComponent.getBuildslaves (rewritten in nine) and buildbot.db.buildslaves.BuildslavesConnectorComponent.getBuildslave (introduced in nine) results uses instead of 'slaveinfo' key

'workerinfo' key

buildbot.db.model.Model.buildslaves

buildbot.db.model.Model.workers

buildbot.db.model.Model.configured_buildslaves

buildbot.db.model.Model.configured_workers

buildbot.db.model.Model.connected_buildslaves

buildbot.db.model.Model.connected_workers

buildbot.db.buildslaves.BuildslavesConnectorComponent.findBuildslaveId (introduced in nine)

buildbot.db.workers.WorkersConnectorComponent.findWorkerId

buildbot.db.buildslaves.BuildslavesConnectorComponent.deconfigureAllBuidslavesForMaster (introduced in nine, note typo Buidslaves)

buildbot.db.workers.WorkersConnectorComponent.deconfigureAllWorkersForMaster

buildbot.db.buildslaves.BuildslavesConnectorComponent.buildslaveConfigured (introduced in nine)

buildbot.db.workers.WorkersConnectorComponent.workerConfigured

buildbot.db.buildslaves.BuildslavesConnectorComponent.buildslaveConfigured method argument buildslaveid was renamed (introduced in nine)

workerid

buildbot.db.buildslaves.BuildslavesConnectorComponent.getBuildslave

buildbot.db.workers.WorkersConnectorComponent.getWorker

buildbot.db.buildslaves.BuildslavesConnectorComponent.getBuildslaves method argument _buildslaveid was renamed (introduced in nine)

_workerid

buildbot.db.buildslaves.BuildslavesConnectorComponent.buildslaveConnected (introduced in nine)

buildbot.db.workers.WorkersConnectorComponent.workerConnected

buildbot.db.buildslaves.BuildslavesConnectorComponent.buildslaveConnected method argument slaveinfo was renamed (introduced in nine)

workerinfo

buildbot.db.buildslaves.BuildslavesConnectorComponent.buildslaveConnected method argument buildslaveid was renamed (introduced in nine)

workerid

buildbot.db.buildslaves.BuildslavesConnectorComponent.buildslaveDisconnected (introduced in nine)

buildbot.db.workers.WorkersConnectorComponent.workerDisconnected

buildbot.db.buildslaves.BuildslavesConnectorComponent.buildslaveDisconnected method argument buildslaveid was renamed (introduced in nine)

workerid

buildbot.db.builds.BuildsConnectorComponent.getBuilds method argument buildslaveid was renamed (introduced in nine)

workerid

buildbot.db.builds.BuildsConnectorComponent.addBuild method argument buildslaveid was renamed (introduced in nine)

workerid

buildbot.reporters.message.MessageFormatter template variable slavename

workername

5.97.3.2. Data API

Python API changes:

Old name

New name

buildbot.data.buildslaves

workers

buildbot.data.buildslaves.BuildslaveEndpoint

WorkerEndpoint

buildbot.data.buildslaves.BuildslavesEndpoint

WorkersEndpoint

buildbot.data.buildslaves.Buildslave

Worker

buildbot.data.buildslaves.Buildslave.buildslaveConfigured

workerConfigured

buildbot.data.buildslaves.Buildslave.findBuildslaveId

findWorkerId

buildbot.data.buildslaves.Buildslave.buildslaveConnected

workerConnected

buildbot.data.buildslaves.Buildslave.buildslaveDisconnected

workerDisconnected

buildbot.data.buildslaves.Buildslave.deconfigureAllBuidslavesForMaster

deconfigureAllWorkersForMaster

buildslaveid in function arguments and API specification

workerid

slaveinfo in function arguments and API specification

workerinfo

Changed REST endpoints:

Old name

New name

/buildslaves

/workers

/buildslaves/n:buildslaveid

/workers/n:workerid

/buildslaves/n:buildslaveid/builds

/workers/n:workerid/builds

/buildslaves/:buildslaveid/builds/:buildid

/workers/:workerid/builds/:buildid

/masters/n:masterid/buildslaves

/masters/n:masterid/workers

/masters/n:masterid/buildslaves/n:buildslaveid

/masters/n:masterid/workers/n:workerid

/masters/n:masterid/builders/n:builderid/buildslaves

/masters/n:masterid/builders/n:builderid/workers

/masters/n:masterid/builders/n:builderid/buildslaves/n:buildslaveid

/masters/n:masterid/builders/n:builderid/workers/n:workerid

/builders/n:builderid/buildslaves

/builders/n:builderid/workers

/builders/n:builderid/buildslaves/n:buildslaveid

/builders/n:builderid/workers/n:workerid

Changed REST object keys:

Old name

New name

buildslaveid

workerid

slaveinfo

workerinfo

buildslave

worker

buildslaves

workers

data_module version bumped from 1.2.0 to 2.0.0.

5.97.3.3. Web UI

In base web UI (www/base) and Material Design web UI (www/md_base) all “slave”-named messages and identifiers were renamed to use “worker” names and new REST API endpoints.

5.97.3.4. MQ layer

buildslaveid key in messages were replaced with workerid.

5.97.4. Details

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

git log v0.9.0b7..v0.9.0b8