1import os
2from buildbot.buildslave import BuildSlave
3from buildbot.schedulers.forcesched import ForceScheduler
4from buildbot.config import BuilderConfig
5from buildbot.process.factory import BuildFactory
6from buildbot.steps.shell import ShellCommand
7from buildbot.status import html
8from buildbot.status.web import authz, auth
9
10PORT_WEB = 8010         # Buildbot webserver port
11PORT_MASTER = 9989      # Port where buildbot master listen buildworkers
12TEST_USER = 'buildbot'  # Credential to authenticate build triggers
13TEST_PWD = 'docker'     # Credential to authenticate build triggers
14BUILDER_NAME = 'docker'
15BUILDPASSWORD = 'pass-docker'  # Credential to authenticate buildworkers
16GOPATH = '/data/docker'
17DOCKER_PATH = '{0}/src/github.com/dotcloud/docker'.format(GOPATH)
18
19c = BuildmasterConfig = {}
20
21c['title'] = "Docker"
22c['titleURL'] = "waterfall"
23c['buildbotURL'] = "http://localhost:{0}/".format(PORT_WEB)
24c['db'] = {'db_url':"sqlite:///state.sqlite"}
25c['slaves'] = [BuildSlave('buildworker', BUILDPASSWORD)]
26c['slavePortnum'] = PORT_MASTER
27
28c['schedulers'] = [ForceScheduler(name='trigger',builderNames=[BUILDER_NAME])]
29
30# Docker test command
31test_cmd = "GOPATH={0} make -C {1} test".format(GOPATH,DOCKER_PATH)
32
33# Builder
34factory = BuildFactory()
35factory.addStep(ShellCommand(description='Docker',logEnviron=False,
36    usePTY=True,command=test_cmd))
37c['builders'] = [BuilderConfig(name=BUILDER_NAME,slavenames=['buildworker'],
38    factory=factory)]
39
40# Status
41authz_cfg=authz.Authz(auth=auth.BasicAuth([(TEST_USER,TEST_PWD)]),
42    forceBuild='auth')
43c['status'] = [html.WebStatus(http_port=PORT_WEB, authz=authz_cfg)]
44