[devel at bb.net] BuildbotNetUsageData feature introduction
Pierre Tardy
tardyp at gmail.com
Wed Sep 7 09:34:26 UTC 2016
Hello all,
It has always been very difficult for us to understand how buildbot is
used, and how much people are upgrading to newer version
There is of course http://trac.buildbot.net/wiki/SuccessStories but beyond
that there are tons of small shops using buildbot quietly in a variety of
environment.
Having a good idea of how much it is used will also help people to embrace
buildbot nine even more, knowing how much other people already use it
without problems.
This is why we will introduce the buildbotNetUsageData feature in buildbot
0.9.0rc3.
The idea of this feature is to send usage data to our buildbot.net
infrastructure.
In the tradition of buildbot, this feature is very configurable, so that
you can disable it or filter the data sent as you want.
https://github.com/buildbot/buildbot/pull/2393
We wanted to heads-up the mailing list before this lands
Following is a copy of the documentation for your reference:
Since buildbot 0.9.0, buildbot has a simple feature which sends usage
analysis info to buildbot.net. This is very important for buildbot
developers to understand how the community is using the tools. This allows
to better prioritize issues, and understand what plugins are actually being
used. This will also be a tool to decide whether to keep support for very
old tools. For example buildbot contains support for the venerable CVS, but
we have no information whether it actually works beyond the unit tests. We
rely on the community to test and report issues with the old features.
With BuildbotNetUsageData, we can know exactly what combination of plugins
are working together, how much people are customizing plugins, what
versions of the main dependencies people run.
We take your privacy very seriously.
BuildbotNetUsageData will never send information specific to your Code or
Intellectual Property. No repository url, shell command values, host names,
ip address or custom class names. If it does, then this is a bug, please
report.
We still need to track unique number for installation. This is done via
doing a sha1 hash of master's hostname, installation path and fqdn. Using a
secure hash means there is no way of knowing hostname, path and fqdn given
the hash, but still there is a different hash for each master.
You can see exactly what is sent in the master's twisted.log. Usage data is
sent everytime the master is started.
BuildbotNetUsageData can be configured with 4 values:
-
c['buildbotNetUsageData'] = None disables the feature
-
c['buildbotNetUsageData'] = 'basic' sends the basic information to
buildbot including:
- versions of buildbot, python and twisted
- platform information (CPU, OS, distribution, python flavor (i.e
CPython vs PyPy))
- mq and database type (mysql or sqlite?)
- www plugins usage
- Plugins usages: This counts the number of time each class of
buildbot is used in your configuration. This counts workers, builders,
steps, schedulers, change sources. If the plugin is subclassed, then it
will be prefixed with a >
example of basic report (for the metabuildbot):
{'versions': {
'Python': '2.7.6',
'Twisted': '15.5.0',
'Buildbot': '0.9.0rc2-176-g5fa9dbf'},'platform': {
'machine': 'x86_64',
'python_implementation': 'CPython',
'version': '#140-Ubuntu SMP Mon Jul',
'processor':
'x86_64',
'distro:': ('Ubuntu', '14.04', 'trusty')
},'db': 'sqlite','mq': 'simple','plugins': {
'buildbot.schedulers.forcesched.ForceScheduler': 2,
'buildbot.schedulers.triggerable.Triggerable': 1,
'buildbot.config.BuilderConfig': 4,
'buildbot.schedulers.basic.AnyBranchScheduler': 2,
'buildbot.steps.source.git.Git': 4,
'>>buildbot.steps.trigger.Trigger': 2,
'>>>buildbot.worker.base.Worker': 4,
'buildbot.reporters.irc.IRC': 1,
'>>>buildbot.process.buildstep.LoggingBuildStep':
2},'www_plugins': ['buildbot_travis', 'waterfall_view']}
-
c['buildbotNetUsageData'] = 'full' sends the basic information plus
additional information:
- configuration of each builders: how the steps are arranged together.
for ex:
{
'builders': [
['buildbot.steps.source.git.Git',
'>>>buildbot.process.buildstep.LoggingBuildStep'],
['buildbot.steps.source.git.Git',
'>>buildbot.steps.trigger.Trigger'],
['buildbot.steps.source.git.Git',
'>>>buildbot.process.buildstep.LoggingBuildStep'],
['buildbot.steps.source.git.Git',
'>>buildbot.steps.trigger.Trigger']]}
-
c['buildbotNetUsageData'] = myCustomFunction. You can also specify
exactly what to send using a callback.
The custom function will take the generated data from full report in the
form of a dictionary, and return a customized report as a jsonable
dictionary. You can use this to filter any information you dont want to
disclose. You can use a custom http_proxy environment variable in order to
not send any data while developing your callback.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.buildbot.net/pipermail/devel/attachments/20160907/d9878993/attachment.html>
More information about the devel
mailing list