Switch branches/tags
Find file
Fetching contributors…
Cannot retrieve contributors at this time
80 lines (60 sloc) 2.4 KB

Buildbot Github

A service which receives webhook events when a comment is added to a pull request and triggers a Buildbot build when a comment with trigger string defined in a config is found in a pull request.

A comment with build status and a link to the build result is added to the pull request when a build has completed.

Service Configuration

Configuration is stored in a JSON file. Example configuration can be found at axample/config.json.

Buildbot Configuration

Enable base change_hook dialect in your master.cfg. For example:

c['status'].append(html.WebStatus(http_port=8010, allowForce=True,
                                   change_hook_dialects={'base': True}))

Set up a separate builder for the pull requests. For example:

f = factory.BuildFactory()
f.addStep(Git(repourl="git://<user>/<project>.git", mode="copy"))
f.addStep(ShellCommand(command = ['make', 'test']))
  'name': '<some-builder-which-will-build-pull-requests>',
  'slavename': c['slaves'][0].slavename,
  'builddir': '<some-builder-which-will-build-pull-requests>',
  'factory': f

Set up ChangeFilter and Scheduler. For example

change_filter = ChangeFilter(repository='<repository user>/<repository name>',
                             category='<category specified in the config>')
scheduler = basic.Scheduler("pull request builder", treeStableTimer=1,

Note: repository setting in the change filter must match repository setting in the config file.

Github Webhook notifications

curl -u "<github username>/<github password>" -H "Content-Type: application/json" -X POST -d '{
 "name": "web",
  "active": true,
  "events": ["issue_comment"],
  "config": {
    "url": "http://<server ip:server port>/?secret=<secret>",
    "content_type": "json"
}'<user>/<project name>/hooks

This will set up a hook for the repository specified in the config.


  • You need to run one service instance per repository.


  • https support
  • Validate config file
  • Use Redis for cache
  • Automate "Setup webhook events" step (need to add support for Github v3 API methods)