Using BuildBot for Drizzle has been a great way to help in the verification of the sometimes rapid code changes that are being committed.
Curious why the IRC notifier within BuildBot only joined and exited the #drizzle channel in IRC, some further investigation of the IRC Documentation lead to more information to share.
By default, the following configuration is not much help in any automated notification.
from buildbot.status import words c['status'].append(words.IRC(host="irc.freenode.net", nick="drizzle_buildbot", channels=["#drizzle"]))
However, within IRC you can query using several commands. My first trials.
rbradfor: drizzle_buildbot: list builders [3:10pm] drizzle_buildbot: Configured builders: centos5.64.1 centos5.64.1-mt debian4.32.1[offline] debian5.32.1 debian5.32.2 debian5.64.1 doxygen fedora8.32.1[offline] fedora8.64.1 gentoo8.32.1 gentoo8.64.1 osx105.32.1 osx105.32.1-mt osx105.64.1[offline] osx105.64.1-mt[offline] suse11.32.1[offline] ubuntu804.32.1[offline] ubuntu804.32.2[offline] ubuntu804.32.3[offline] ubuntu804.32.4 ubuntu804.32.4-mt ubuntu804.32.5 ubuntu804.32.6[offline] ubuntu804.32.7[offline] ubuntu804 [3:10pm] rbradfor: drizzle_buildbot: status all [3:10pm] drizzle_buildbot left the chat room. (Excess Flood) [3:11pm] drizzle_buildbot joined the chat room. [3:11pm] rbradfor: drizzle_buildbot: notify on [3:11pm] drizzle_buildbot: The following events are being notified: ['started', 'finished'] [3:13pm] drizzle_buildbot: build #484 of centos5.64.1 started including [] [3:18pm] drizzle_buildbot: build #484 of centos5.64.1 is complete: Success [build successful] Build details are at http://drizzlebuild.42sql.com/builders/centos5.64.1/builds/484 [3:25pm] rbradfor: drizzle_buildbot: notify off [3:25pm] drizzle_buildbot: The following events are being notified: [] [3:26pm] rbradfor: drizzle_buildbot: watch centos5.64.1 [3:26pm] drizzle_buildbot: there are no builds currently running [3:34pm] rbradfor: drizzle_buildbot: notify on failed [3:34pm] drizzle_buildbot: The following events are being notified: ['failed'] [4:09pm] rbradfor: drizzle_buildbot: help [4:09pm] drizzle_buildbot: Get help on what? (try 'help foo', or 'commands' for a command list) [4:09pm] rbradfor: drizzle_buildbot: help commands [4:09pm] drizzle_buildbot: Usage: commands - List available commands [4:09pm] rbradfor: drizzle_buildbot: commands [4:09pm] drizzle_buildbot: buildbot commands: commands, dance, destroy, excited, force, hello, help, join, last, leave, list, notify, source, status, stop, version, watch
The docs list the following commands.
To use the service, you address messages at the buildbot, either normally (botnickname: status) or with private messages (/msg botnickname status). The buildbot will respond in kind.
Some of the commands currently available:
list builders
Emit a list of all configured builders
status BUILDER
Announce the status of a specific Builder: what it is doing right now.
status all
Announce the status of all Builders
watch BUILDER
If the given Builder is currently running, wait until the Build is finished and then announce the results.
last BUILDER
Return the results of the last build to run on the given Builder.
join CHANNEL
Join the given IRC channel
leave CHANNEL
Leave the given IRC channel
notify on|off|list EVENT
Report events relating to builds. If the command is issued as a private message, then the report will be sent back as a private message to the user who issued the command. Otherwise, the report will be sent to the channel. Available events to be notified are:
started
A build has started
finished
A build has finished
success
A build finished successfully
failed
A build failed
exception
A build generated and exception
successToFailure
The previous build was successful, but this one failed
failureToSuccess
The previous build failed, but this one was successful
help COMMAND
Describe a command. Use help commands to get a list of known commands.
source
Announce the URL of the Buildbot's home page.
version
Announce the version of this Buildbot.
If the allowForce=True option was used, some addtional commands will be available:
force build BUILDER REASON
Tell the given Builder to start a build of the latest code. The user requesting the build and REASON are recorded in the Build status. The buildbot will announce the build's status when it finishes.
stop build BUILDER REASON
Terminate any running build in the given Builder. REASON will be added to the build status to explain why it was stopped. You might use this if you committed a bug, corrected it right away, and don't want to wait for the first build (which is destined to fail) to complete before starting the second (hopefully fixed) build.
I don’ want to flood the IRC channel with messages, so delving deeper into the documentation via the following commands gives me more tips.
$ cd buildbot-0.7.8 $ pydoc buildbot.status.words
By defining categories against the IRC notification, and assigning builders to a given category, in theory you will get notifications just for these builders. I didn’t seem to produce the desired results, so for now it needs to be manual interaction until I get additional time to investigate.
b00 = {'name': "centos5.64.1", 'slavename': "centos5_64", 'builddir': "build00", 'factory': f1, 'category': "irc" }
...
from buildbot.status import words
c['status'].append(words.IRC(host="irc.freenode.net", nick="drizzle_buildbot", channels=["#drizzle"], categories=["irc"]))