[users at bb.net] Migrating to Nine and our capability system

Georges Racinet gracinet at anybox.fr
Tue Mar 22 21:07:26 UTC 2016

Hi there,

After a long time during which we couldn't do much more than maintaining
our instances, we (Anybox) are considering migrating our buildbots to Nine.

Among the many things that I've developed for our needs [1], there is a
rather complete capability system [3], and hence I must decide whereas
it's worth porting it or not [4]. I know it's a fairly common need that many
development shops have been doing in private or almost, but it's not
obvious to me what is freely available (for Nine) on this topic.

http://trac.buildbot.net/ticket/3120 does not get to a conclusion, and I
couldn't find much on it in a quick search of recent messages on this
list. Maybe I missed something else ?

I'm very open to reuse something else and help improving it if I can.
Otherwise, I'll try and publish the existing capability system as an
independent package [2]. In that case, would some people find it useful ?

In all cases, I can work on such things in small bursts only, which is
the case this week, and I'll have an opportunity in may or june for a
customer case installation (giving me more justification to work on Buildbot related topics)


[1] we are a small custom development shop working for several customers. The CI is a core tool in our work,
and must express the great variability that we have among the different projects. 

[2] currently it's part of our configurator for Odoo based projects, but we've been using it in other contexts for a while, now.

[3] description of this capability system :

- capabilities have a name (e.g. 'postgresql'), an optional version
(9.5) and optional additional parameters (such as port=5433)

- one declares what are each worker's capabilities as part of the worker
config. A given capability name can occur on a worker several times, but a given (name, version) but once
- it allows to express that a given build requires a given capability
(e.g, access to a docker registry, presence of some helper program)

- it spawns several BuilderConfigs according to available
capabilities on the full swarm, in a configurable way (e.g., one for each postgresql version
greater than 9.3 or for 9.1)

- the optional capability parameters are available as properties, so that a
build running integration tests against postgresql 9.5 would be able to
use the right port (5433 in the example above) to access the database.

One can see an example here : http://buildbot.anyblok.org, where
builders are spawned according to Python version.

Most of the code is here :

[4] since initial writing of this message, I've reached the level where all tests pass, and that wasn't difficult at all.

Georges Racinet
Anybox SAS, http://anybox.fr
Téléphone: +33 6 51 32 07 27
GPG: 0x33AB0A35, sur serveurs publics

More information about the users mailing list