mirror of
https://github.com/moby/moby.git
synced 2022-11-09 12:21:53 -05:00
125 lines
5.4 KiB
INI
125 lines
5.4 KiB
INI
import os
|
|
from buildbot.buildslave import BuildSlave
|
|
from buildbot.schedulers.forcesched import ForceScheduler
|
|
from buildbot.schedulers.basic import SingleBranchScheduler
|
|
from buildbot.schedulers.timed import Nightly
|
|
from buildbot.changes import filter
|
|
from buildbot.config import BuilderConfig
|
|
from buildbot.process.factory import BuildFactory
|
|
from buildbot.process.properties import Interpolate
|
|
from buildbot.steps.shell import ShellCommand
|
|
from buildbot.status import html, words
|
|
from buildbot.status.web import authz, auth
|
|
from buildbot.status.mail import MailNotifier
|
|
|
|
PORT_WEB = 80 # Buildbot webserver port
|
|
PORT_GITHUB = 8011 # Buildbot github hook port
|
|
PORT_MASTER = 9989 # Port where buildbot master listen buildworkers
|
|
TEST_USER = 'buildbot' # Credential to authenticate build triggers
|
|
TEST_PWD = 'docker' # Credential to authenticate build triggers
|
|
BUILDER_NAME = 'docker'
|
|
GITHUB_DOCKER = 'github.com/dotcloud/docker'
|
|
BUILDBOT_PATH = '/data/buildbot'
|
|
DOCKER_PATH = '/data/docker'
|
|
BUILDER_PATH = '/data/buildbot/slave/{0}/build'.format(BUILDER_NAME)
|
|
PULL_REQUEST_PATH = '/data/buildbot/slave/pullrequest/build'
|
|
|
|
# Credentials set by setup.sh and Vagrantfile
|
|
BUILDBOT_PWD = ''
|
|
IRC_PWD = ''
|
|
IRC_CHANNEL = ''
|
|
SMTP_USER = ''
|
|
SMTP_PWD = ''
|
|
EMAIL_RCP = ''
|
|
|
|
|
|
c = BuildmasterConfig = {}
|
|
|
|
c['title'] = "Docker"
|
|
c['titleURL'] = "waterfall"
|
|
c['buildbotURL'] = "http://docker-ci.dotcloud.com/"
|
|
c['db'] = {'db_url':"sqlite:///state.sqlite"}
|
|
c['slaves'] = [BuildSlave('buildworker', BUILDBOT_PWD)]
|
|
c['slavePortnum'] = PORT_MASTER
|
|
|
|
|
|
# Schedulers
|
|
c['schedulers'] = [ForceScheduler(name='trigger', builderNames=[BUILDER_NAME,
|
|
'index','registry','coverage'])]
|
|
c['schedulers'] += [SingleBranchScheduler(name="all",
|
|
change_filter=filter.ChangeFilter(branch='master'), treeStableTimer=None,
|
|
builderNames=[BUILDER_NAME])]
|
|
c['schedulers'] += [SingleBranchScheduler(name='pullrequest',
|
|
change_filter=filter.ChangeFilter(category='github_pullrequest'), treeStableTimer=None,
|
|
builderNames=['pullrequest'])]
|
|
c['schedulers'] += [Nightly(name='daily', branch=None, builderNames=['coverage'],
|
|
hour=0, minute=30)]
|
|
c['schedulers'] += [Nightly(name='every4hrs', branch=None, builderNames=['registry','index'],
|
|
hour=range(0,24,4), minute=15)]
|
|
|
|
# Builders
|
|
# Docker commit test
|
|
factory = BuildFactory()
|
|
factory.addStep(ShellCommand(description='Docker',logEnviron=False,usePTY=True,
|
|
command=["sh", "-c", Interpolate("cd ..; rm -rf build; mkdir build; "
|
|
"cp -r {2}-dependencies/src {0}; export GOPATH={0}; go get {3}; cd {1}; "
|
|
"git reset --hard %(src::revision)s; go test -v".format(
|
|
BUILDER_PATH, BUILDER_PATH+'/src/'+GITHUB_DOCKER, DOCKER_PATH, GITHUB_DOCKER))]))
|
|
c['builders'] = [BuilderConfig(name=BUILDER_NAME,slavenames=['buildworker'],
|
|
factory=factory)]
|
|
|
|
# Docker pull request test
|
|
factory = BuildFactory()
|
|
factory.addStep(ShellCommand(description='pull_request',logEnviron=False,usePTY=True,
|
|
command=["sh", "-c", Interpolate("cd ..; rm -rf build; mkdir build; "
|
|
"cp -r {2}-dependencies/src {0}; export GOPATH={0}; go get {3}; cd {1}; "
|
|
"git fetch %(src::repository)s %(src::branch)s:PR-%(src::branch)s; "
|
|
"git checkout %(src::revision)s; git rebase master; go test -v".format(
|
|
PULL_REQUEST_PATH, PULL_REQUEST_PATH+'/src/'+GITHUB_DOCKER, DOCKER_PATH, GITHUB_DOCKER))]))
|
|
c['builders'] += [BuilderConfig(name='pullrequest',slavenames=['buildworker'],
|
|
factory=factory)]
|
|
|
|
# Docker coverage test
|
|
coverage_cmd = ('GOPATH=`pwd` go get -d github.com/dotcloud/docker\n'
|
|
'GOPATH=`pwd` go get github.com/axw/gocov/gocov\n'
|
|
'sudo -E GOPATH=`pwd` ./bin/gocov test -deps -exclude-goroot -v'
|
|
' -exclude github.com/gorilla/context,github.com/gorilla/mux,github.com/kr/pty,'
|
|
'code.google.com/p/go.net/websocket github.com/dotcloud/docker | ./bin/gocov report')
|
|
factory = BuildFactory()
|
|
factory.addStep(ShellCommand(description='Coverage',logEnviron=False,usePTY=True,
|
|
command=coverage_cmd))
|
|
c['builders'] += [BuilderConfig(name='coverage',slavenames=['buildworker'],
|
|
factory=factory)]
|
|
|
|
# Registry functional test
|
|
factory = BuildFactory()
|
|
factory.addStep(ShellCommand(description='registry', logEnviron=False,
|
|
command='. {0}/master/credentials.cfg; '
|
|
'{1}/testing/functionaltests/test_registry.sh'.format(BUILDBOT_PATH,
|
|
DOCKER_PATH), usePTY=True))
|
|
c['builders'] += [BuilderConfig(name='registry',slavenames=['buildworker'],
|
|
factory=factory)]
|
|
|
|
# Index functional test
|
|
factory = BuildFactory()
|
|
factory.addStep(ShellCommand(description='index', logEnviron=False,
|
|
command='. {0}/master/credentials.cfg; '
|
|
'{1}/testing/functionaltests/test_index.py'.format(BUILDBOT_PATH,
|
|
DOCKER_PATH), usePTY=True))
|
|
c['builders'] += [BuilderConfig(name='index',slavenames=['buildworker'],
|
|
factory=factory)]
|
|
|
|
|
|
# Status
|
|
authz_cfg = authz.Authz(auth=auth.BasicAuth([(TEST_USER, TEST_PWD)]),
|
|
forceBuild='auth')
|
|
c['status'] = [html.WebStatus(http_port=PORT_WEB, authz=authz_cfg)]
|
|
c['status'].append(html.WebStatus(http_port=PORT_GITHUB, allowForce=True,
|
|
change_hook_dialects={ 'github': True }))
|
|
c['status'].append(MailNotifier(fromaddr='buildbot@docker.io',
|
|
sendToInterestedUsers=False, extraRecipients=[EMAIL_RCP],
|
|
mode='failing', relayhost='smtp.mailgun.org', smtpPort=587, useTls=True,
|
|
smtpUser=SMTP_USER, smtpPassword=SMTP_PWD))
|
|
c['status'].append(words.IRC("irc.freenode.net", "dockerqabot",
|
|
channels=[IRC_CHANNEL], password=IRC_PWD, allowForce=True,
|
|
notify_events={'exception':1, 'successToFailure':1, 'failureToSuccess':1}))
|