The following are the release notes for Buildbot 0.9.0b8 This version was released on April 11, 2016.
See Upgrading to Nine
for a guide to upgrading from 0.8.x to 0.9.x
GitPoller
now has abuildPushesWithNoCommits
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 ahostconfig
parameter that can be used to setup host configuration when creating a new container.DockerLatentWorker
now has anetworking_config
parameter that can be used to setup container networks.- The
DockerLatentWorker
volumes
attribute is now renderable. - :bb
CMake
build step is added. It provides a convenience interface to CMake build system. - MySQL InnoDB tables are now supported.
~buildbot.reporters.http.HttpStatusPush
has been ported to reporter API.~buildbot.reporters.stash.StashStatusPush
has been ported to reporter API.GithubStatusPush
has been ported to reporter API.- summaryCB of :bb
GerritStatusPush
now gets not only pre-processed information but the actual build as well. - EC2LatentWorker supports VPCs, instance profiles, and advanced volume mounts.
- Fix loading
~buildbot.ldapuserinfo.LdapUserInfo
plugin and its documentation (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 populaterepository
, 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.
- 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). ~buildbot.status.status_push.StatusPush
has been removed from buildbot.Please use the much simpler
~buildbot.reporters.http.HttpStatusPush
instead.
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.
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.
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
.
API changes done without providing fallback:
Old name | New name |
---|---|
:pybuildbot.buildslave.manager |
:pybuildbot.worker.manager |
:pybuildbot.buildslave.manager.BuildslaveRegistration |
:pybuildbot.worker.manager.WorkerRegistration |
:pybuildbot.buildslave.manager.BuildslaveRegistration.buildslave |
:pybuildbot.worker.manager.WorkerRegistration.worker |
:pybuildbot.buildslave.manager.BuildslaveManager |
:pybuildbot.worker.manager.WorkerManager |
:pybuildbot.buildslave.manager.BuildslaveManager.slaves |
:pybuildbot.worker.manager.WorkerManager.workers |
:pybuildbot.buildslave.manager.BuildslaveManager.getBuildslaveByName |
:pybuildbot.worker.manager.WorkerManager.getWorkerByName |
:pybuildbot.buildslave.docker.DockerLatentBuildSlave |
:pybuildbot.worker.docker.DockerLatentWorker |
:pybuildbot.buildslave.local.LocalBuildSlave |
:pybuildbot.worker.local.LocalWorker |
:pybuildbot.buildslave.local.LocalBuildSlave.LocalBuildSlaveFactory |
:pybuildbot.worker.local.LocalWorker.LocalWorkerFactory |
:pybuildbot.buildslave.local.LocalBuildSlave.remote_slave |
:pybuildbot.worker.local.LocalWorker.remote_worker |
:pybuildbot.buildslave.base module with all contents |
:pybuildbot.worker.base |
:pybuildbot.buildslave.AbstractBuildSlave.updateSlave |
:pybuildbot.worker.AbstractWorker.updateWorker |
:pybuildbot.buildslave.AbstractBuildSlave.slavebuilders |
:pybuildbot.worker.AbstractWorker.workerforbuilders |
:pybuildbot.buildslave.AbstractBuildSlave.updateSlaveStatus |
:pybuildbot.worker.AbstractWorker.updateWorkerStatus |
:pybuildbot.buildslave.AbstractLatentBuildSlave.updateSlave |
:pybuildbot.worker.AbstractLatentWorker.updateWorker |
:pybuildbot.buildslave.BuildSlave.slave_status |
:pybuildbot.worker.Worker.worker_status |
:pybuildbot.config.MasterConfig.load_slaves |
:py~buildbot.config.MasterConfig.load_workers |
:pybuildbot.master.BuildMaster.buildslaves |
:pybuildbot.master.BuildMaster.workers |
:pybuildbot.process.build.Build.slavebuilder |
:py~buildbot.process.build.Build.workerforbuilder |
:pybuildbot.process.build.Build.setSlaveEnvironment |
:py~buildbot.process.build.Build.setWorkerEnvironment |
:pybuildbot.process.build.Build.slaveEnvironment |
:py~buildbot.process.build.Build.workerEnvironment |
:pybuildbot.process.build.Build.getSlaveCommandVersion |
:py~buildbot.process.build.Build.getWorkerCommandVersion |
:pybuildbot.process.build.Build.setupSlaveBuilder |
:py~buildbot.process.build.Build.setupWorkerForBuilder |
:pybuildbot.process.builder.Build.canStartWithSlavebuilder |
:py~buildbot.process.builder.Build.canStartWithWorkerForBuilder |
:pybuildbot.process.slavebuilder.AbstractSlaveBuilder.getSlaveCommandVersion |
:pybuildbot.process.workerforbuilder.AbstractWorkerForBuilder.getWorkerCommandVersion |
:pybuildbot.process.slavebuilder.AbstractSlaveBuilder.attached method argument slave was renamed |
worker |
:pybuildbot.buildslave.AbstractBuildSlave.slave_commands |
:pybuildbot.worker.AbstractWorker.worker_commands |
:pybuildbot.buildslave.AbstractBuildSlave.slave_environ |
:pybuildbot.worker.AbstractWorker.worker_environ |
:pybuildbot.buildslave.AbstractBuildSlave.slave_basedir |
:pybuildbot.worker.AbstractWorker.worker_basedir |
:pybuildbot.buildslave.AbstractBuildSlave.slave_system |
:pybuildbot.worker.AbstractWorker.worker_system |
:pybuildbot.buildslave.AbstractBuildSlave.buildslaveid |
:pybuildbot.worker.AbstractWorker.workerid |
:pybuildbot.buildslave.AbstractBuildSlave.addSlaveBuilder |
:pybuildbot.worker.AbstractWorker.addWorkerForBuilder |
:pybuildbot.buildslave.AbstractBuildSlave.removeSlaveBuilder |
:pybuildbot.worker.AbstractWorker.removeWorkerForBuilder |
:pybuildbot.buildslave.AbstractBuildSlave.messageReceivedFromSlave |
:pybuildbot.worker.AbstractWorker.messageReceivedFromWorker |
:pybuildbot.process.slavebuilder.LatentSlaveBuilder constructor positional argument slave was renamed |
worker |
:pybuildbot.process.buildrequestdistributor.BasicBuildChooser.nextSlave |
:py~buildbot.process.buildrequestdistributor.BasicBuildChooser.nextWorker |
:pybuildbot.process.buildrequestdistributor.BasicBuildChooser.slavepool |
:py~buildbot.process.buildrequestdistributor.BasicBuildChooser.workerpool |
:pybuildbot.process.buildrequestdistributor.BasicBuildChooser.preferredSlaves |
:py~buildbot.process.buildrequestdistributor.BasicBuildChooser.preferredWorkers |
:pybuildbot.process.buildrequestdistributor.BasicBuildChooser.rejectedSlaves |
:py~buildbot.process.buildrequestdistributor.BasicBuildChooser.rejectedSlaves |
:pybuildbot.steps.shell.ShellCommand.slaveEnvironment (Note: this variable is renderable) |
:pybuildbot.steps.shell.ShellCommand.workerEnvironment |
:pybuildbot.status.slave |
:pybuildbot.status.worker |
:pybuildbot.status.slave.SlaveStatus |
:pybuildbot.status.worker.WorkerStatus |
:pybuildbot.interfaces.IStatusReceiver.slaveConnected with all implementations |
:pybuildbot.interfaces.IStatusReceiver.workerConnected |
:pybuildbot.interfaces.IStatusReceiver.slaveDisconnected with all implementations |
:pybuildbot.interfaces.IStatusReceiver.workerDisconnected |
:pybuildbot.status.master.Status.slaveConnected |
:pybuildbot.status.master.Status.workerConnected |
:pybuildbot.status.master.Status.slaveDisconnected |
:pybuildbot.status.master.Status.workerDisconnected |
:pybuildbot.status.master.Status.slavePaused |
:pybuildbot.status.master.Status.workerPaused |
:pybuildbot.status.master.Status.slaveUnpaused |
:pybuildbot.status.master.Status.workerUnpaused |
:pybuildbot.status.master.Status.buildslaves |
:pybuildbot.status.master.Status.workers |
:pybuildbot.status.base.StatusReceiverBase.slavePaused |
:pybuildbot.status.base.StatusReceiverBase.workerPaused |
:pybuildbot.status.base.StatusReceiverBase.slaveUnpaused |
:pybuildbot.status.base.StatusReceiverBase.workerUnpaused |
:pybuildbot.interfaces.IStatus.getSlaveNames with all implementations |
:pybuildbot.interfaces.IStatus.getWorkerNames |
:pybuildbot.interfaces.IStatus.getSlave with all implementations |
:pybuildbot.interfaces.IStatus.getWorker |
:pybuildbot.interfaces.IBuildStatus.getSlavename with all implementations |
:pybuildbot.interfaces.IBuildStatus.getWorkername |
:pybuildbot.status.build.BuildStatus.setSlavename |
:pybuildbot.status.build.BuildStatus.setWorkername |
:pybuildbot.status.build.BuildStatus.slavename |
:pybuildbot.status.build.BuildStatus.workername (also it was moved from class static attribute to instance attribute) |
:pybuildbot.interfaces.IBuilderStatus.getSlaves with all implementations |
:pybuildbot.interfaces.IBuilderStatus.getWorkers |
:pybuildbot.status.builder.BuilderStatus.slavenames |
:pybuildbot.status.builder.BuilderStatus.workernames |
:pybuildbot.status.builder.BuilderStatus.setSlavenames |
:pybuildbot.status.builder.BuilderStatus.setWorkernames |
:pybuildbot.process.botmaster.BotMaster.slaveLost |
:pybuildbot.process.botmaster.BotMaster.workerLost |
:pybuildbot.process.botmaster.BotMaster.getBuildersForSlave |
:pybuildbot.process.botmaster.BotMaster.getBuildersForWorker |
:pybuildbot.process.botmaster.BotMaster.maybeStartBuildsForSlave |
:pybuildbot.process.botmaster.BotMaster.maybeStartBuildsForWorker |
:pybuildbot.locks.RealSlaveLock |
:pybuildbot.locks.RealWorkerLock |
:pybuildbot.locks.RealSlaveLock.maxCountForSlave |
:pybuildbot.locks.RealWorkerLock.maxCountForWorker |
:pybuildbot.protocols.base.Connection constructor positional argument buildslave was renamed |
worker |
:pybuildbot.protocols.base.Connection.buidslave |
:pybuildbot.protocols.base.Connection.worker |
:pybuildbot.protocols.base.Connection.remoteGetSlaveInfo |
:pybuildbot.protocols.base.Connection.remoteGetWorkerInfo |
:pybuildbot.protocols.pb.Connection constructor positional argument buildslave was renamed |
worker |
Other changes done without providing fallback:
- Functions argument
buildslaveName
renamed toworkerName
. Loop variables, local variables, helper functions:
Old name New name s
w
orworker
sl
w
orworker
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 :py
buildbot.config.BuilderConfig.getConfigDict
result'slavenames'
key changed to'workernames'
;'slavebuilddir'
key changed to'workerbuilddir'
;'nextSlave'
key changed to'nextWorker'
. - :py
buildbot.process.builder.BuilderControl.ping
now generates["ping", "no worker"]
event, instead of["ping", "no slave"]
. buildbot.plugins.util.WorkerChoiceParameter
(previouslyBuildslaveChoiceParameter
) label was changed fromBuild slave
toWorker
.buildbot.plugins.util.WorkerChoiceParameter
(previouslyBuildslaveChoiceParameter
) default name was changed fromslavename
toworkername
.buildbot.status.builder.SlaveStatus
fallback was removed.SlaveStatus
was moved tobuildbot.status.builder.slave
previously, and now it's :pybuildbot.status.worker.WorkerStatus
.- :py
buildbot.status.status_push.StatusPush
events generation changed (this module will be completely removed in 0.9.x):- instead of
slaveConnected
with dataslave=...
now generatedworkerConnected
event with dataworker=...
; - instead of
slaveDisconnected
with dataslavename=...
now generatedworkerDisconnected
with dataworkername=...
; - instead of
slavePaused
with dataslavename=...
now generatedworkerPaused
event with dataworkername=...
; - instead of
slaveUnpaused
with dataslavename=...
now generatedworkerUnpaused
event with dataworkername=...
;
- instead of
- :py
buildbot.status.build.BuildStatus.asDict
returns worker name under'worker'
key, instead of'slave'
key. - :py
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.
Database API changes done without providing fallback.
Old name | New name |
---|---|
:pybuildbot.db.buildslaves.BuildslavesConnectorComponent.getBuildslaves (rewritten in nine) and :pybuildbot.db.buildslaves.BuildslavesConnectorComponent.getBuildslave (introduced in nine) results uses instead of 'slaveinfo' key |
'workerinfo' key |
:pybuildbot.db.model.Model.buildslaves |
:pybuildbot.db.model.Model.workers |
:pybuildbot.db.model.Model.configured_buildslaves |
:pybuildbot.db.model.Model.configured_workers |
:pybuildbot.db.model.Model.connected_buildslaves |
:pybuildbot.db.model.Model.connected_workers |
:pybuildbot.db.buildslaves.BuildslavesConnectorComponent.findBuildslaveId (introduced in nine) |
:pybuildbot.db.workers.WorkersConnectorComponent.findWorkerId |
:pybuildbot.db.buildslaves.BuildslavesConnectorComponent.deconfigureAllBuidslavesForMaster (introduced in nine, note typo Buidslaves ) |
:pybuildbot.db.workers.WorkersConnectorComponent.deconfigureAllWorkersForMaster |
:pybuildbot.db.buildslaves.BuildslavesConnectorComponent.buildslaveConfigured (introduced in nine) |
:pybuildbot.db.workers.WorkersConnectorComponent.workerConfigured |
:pybuildbot.db.buildslaves.BuildslavesConnectorComponent.buildslaveConfigured method argument buildslaveid was renamed (introduced in nine) |
workerid |
:pybuildbot.db.buildslaves.BuildslavesConnectorComponent.getBuildslave |
:pybuildbot.db.workers.WorkersConnectorComponent.getWorker |
:pybuildbot.db.buildslaves.BuildslavesConnectorComponent.getBuildslaves method argument _buildslaveid was renamed (introduced in nine) |
_workerid |
:pybuildbot.db.buildslaves.BuildslavesConnectorComponent.buildslaveConnected (introduced in nine) |
:pybuildbot.db.workers.WorkersConnectorComponent.workerConnected |
:pybuildbot.db.buildslaves.BuildslavesConnectorComponent.buildslaveConnected method argument slaveinfo was renamed (introduced in nine) |
workerinfo |
:pybuildbot.db.buildslaves.BuildslavesConnectorComponent.buildslaveConnected method argument buildslaveid was renamed (introduced in nine) |
workerid |
:pybuildbot.db.buildslaves.BuildslavesConnectorComponent.buildslaveDisconnected (introduced in nine) |
:pybuildbot.db.workers.WorkersConnectorComponent.workerDisconnected |
:pybuildbot.db.buildslaves.BuildslavesConnectorComponent.buildslaveDisconnected method argument buildslaveid was renamed (introduced in nine) |
workerid |
:pybuildbot.db.builds.BuildsConnectorComponent.getBuilds method argument buildslaveid was renamed (introduced in nine) |
workerid |
:pybuildbot.db.builds.BuildsConnectorComponent.addBuild method argument buildslaveid was renamed (introduced in nine) |
workerid |
:pybuildbot.reporters.message.MessageFormatter template variable slavename |
workername |
Python API changes:
Old name | New name |
---|---|
:pybuildbot.data.buildslaves |
:py~buildbot.data.workers |
:pybuildbot.data.buildslaves.BuildslaveEndpoint |
:py~buildbot.data.workers.WorkerEndpoint |
:pybuildbot.data.buildslaves.BuildslavesEndpoint |
:py~buildbot.data.workers.WorkersEndpoint |
:pybuildbot.data.buildslaves.Buildslave |
:py~buildbot.data.workers.Worker |
:pybuildbot.data.buildslaves.Buildslave.buildslaveConfigured |
:py~buildbot.data.workers.Worker.workerConfigured |
:pybuildbot.data.buildslaves.Buildslave.findBuildslaveId |
:py~buildbot.data.workers.Worker.findWorkerId |
:pybuildbot.data.buildslaves.Buildslave.buildslaveConnected |
:py~buildbot.data.workers.Worker.workerConnected |
:pybuildbot.data.buildslaves.Buildslave.buildslaveDisconnected |
:py~buildbot.data.workers.Worker.workerDisconnected |
:pybuildbot.data.buildslaves.Buildslave.deconfigureAllBuidslavesForMaster |
:py~buildbot.data.workers.Worker.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
.
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.
buildslaveid
key in messages were replaced with workerid
.
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