Adding Chrome bot to main master.cfg

BUG=None
TEST=Running locally

Review URL: https://webrtc-codereview.appspot.com/391019

git-svn-id: http://webrtc.googlecode.com/svn/trunk@1759 4adac7df-926f-26a2-2b94-8c16560cd09d
This commit is contained in:
kjellander@webrtc.org 2012-02-24 09:04:06 +00:00
parent 5545f38e41
commit 4cddc66db5
4 changed files with 41 additions and 204 deletions

View File

@ -1,9 +0,0 @@
solutions = [
{ "name" : "internal.DEPS",
"url" : "svn://chrome-svn.corp.google.com/chrome-internal/trunk/tools/build/internal.DEPS",
"deps_file" : "DEPS",
"custom_deps" : {
},
"safesync_url": "",
},
]

View File

@ -1,166 +0,0 @@
# -*- python -*-
# ex: set syntax=python:
# This is a sample buildmaster config file. It must be installed as
# 'master.cfg' in your buildmaster's base directory (although the filename
# can be changed with the --basedir option to 'mktap buildbot master').
# It has one job: define a dictionary named BuildmasterConfig. This
# dictionary has a variety of keys to control different aspects of the
# buildmaster. They are documented in docs/config.xhtml .
# This is the dictionary that the buildmaster pays attention to. We also use
# a shorter alias to save typing.
c = BuildmasterConfig = {}
####### BUILDSLAVES
# the 'slaves' list defines the set of allowable buildslaves. Each element is
# a BuildSlave object, which is created with bot-name, bot-password. These
# correspond to values given to the buildslave's mktap invocation.
from buildbot.buildslave import BuildSlave
c['slaves'] = [BuildSlave("linux-chrome", "pass", max_builds=1)]
# 'slavePortnum' defines the TCP port to listen on. This must match the value
# configured into the buildslaves (with their --master option)
c['slavePortnum'] = 9989
####### CHANGESOURCES
# the 'change_source' setting tells the buildmaster how it should find out
# about source code changes. Any class which implements IChangeSource can be
# put here: there are several in buildbot/changes/*.py to choose from.
from buildbot.changes.pb import PBChangeSource
from buildbot.changes.svnpoller import SVNPoller
#c['change_source'] = PBChangeSource()
source_code_svn_url='http://webrtc.googlecode.com/svn/trunk'
svn_poller = SVNPoller(svnurl=source_code_svn_url, pollinterval=5*60*60,
histmax=10, svnbin='/usr/bin/svn',
)
c['change_source'] = svn_poller
#c['sources'] = [ svn_poller ]
####### SCHEDULERS
## configure the Schedulers
from buildbot.scheduler import Scheduler
web_rtc_scheduler = Scheduler(name="all", branch=None, treeStableTimer=60*60,
builderNames=["ChromeWebRTC"])
c['schedulers'] = [web_rtc_scheduler]
####### BUILDERS
# the 'builders' list defines the Builders. Each one is configured with a
# dictionary, using the following keys:
# name (required): the name used to describe this builder
# slavename (required): which slave to use (must appear in c['bots'])
# builddir (required): which subdirectory to run the builder in
# factory (required): a BuildFactory to define how the build is run
# periodicBuildTime (optional): if set, force a build every N seconds
# buildbot/process/factory.py provides several BuildFactory classes you can
# start with, which implement build processes for common targets (GNU
# autoconf projects, CPAN perl modules, etc). The factory.BuildFactory is the
# base class, and is configured with a series of BuildSteps. When the build
# is run, the appropriate buildslave is told to execute each Step in turn.
# the first BuildStep is typically responsible for obtaining a copy of the
# sources. There are source-obtaining Steps in buildbot/steps/source.py for
# CVS, SVN, and others.
from buildbot.process import factory
from buildbot.steps import shell
from webrtc_buildbot import utils
linux_factory = utils.WebRTCChromeFactory()
linux_factory.EnableBuild()
linux_builder_1 = {
'name': "ChromeWebRTC",
'slavename': "linux-chrome",
'builddir': "linux-chrome",
'factory': linux_factory,
}
c['builders'] = [linux_builder_1]
####### STATUS TARGETS
# 'status' is a list of Status Targets. The results of each build will be
# pushed to these targets. buildbot/status/*.py has a variety to choose from,
# including web pages, email senders, and IRC bots.
from buildbot.status import html
from buildbot.status import mail
web_page = html.WebStatus(http_port=8010, allowForce=True)
email_notification = mail.MailNotifier(
fromaddr="webrtc-cb-watchlist@google.com",
extraRecipients=["webrtc-cb-watchlist@google.com"],
sendToInterestedUsers=True,
mode='failing')
c['status'] = [web_page, email_notification]
# Use allowForce=True (boolean, not a string. ie: not 'True') to allow
# Forcing Builds in the Web User Interface. The default is False.
# from buildbot.status import html
# c['status'].append(html.WebStatus(http_port=8010,allowForce=True))
# from buildbot.status.web.auth import BasicAuth
# users = [('bob', 'secret-pass'), ('jill', 'super-pass')
# from buildbot.status import words
# c['status'].append(words.IRC(host="irc.example.com", nick="bb",
# channels=["#example"]))
#
# from buildbot.status import client
# c['status'].append(client.PBListener(9988))
####### DEBUGGING OPTIONS
# if you set 'debugPassword', then you can connect to the buildmaster with
# the diagnostic tool in contrib/debugclient.py . From this tool, you can
# manually force builds and inject changes, which may be useful for testing
# your buildmaster without actually committing changes to your repository (or
# before you have a functioning 'sources' set up). The debug tool uses the
# same port number as the slaves do: 'slavePortnum'.
#c['debugPassword'] = "debugpassword"
# if you set 'manhole', you can ssh into the buildmaster and get an
# interactive python shell, which may be useful for debugging buildbot
# internals. It is probably only useful for buildbot developers. You can also
# use an authorized_keys file, or plain telnet.
#from buildbot import manhole
#c['manhole'] = manhole.PasswordManhole("tcp:9999:interface=127.0.0.1",
# "admin", "password")
####### PROJECT IDENTITY
# the 'projectName' string will be used to describe the project that this
# buildbot is working on. For example, it is used as the title of the
# waterfall HTML page. The 'projectURL' string will be used to provide a link
# from buildbot HTML pages to your project's home page.
c['projectName'] = "WebRTC"
c['projectURL'] = "http://www.webrtc.org"
# the 'buildbotURL' string should point to the location where the buildbot's
# internal web server (usually the html.Waterfall page) is visible. This
# typically uses the port number set in the Waterfall 'status' entry, but
# with an externally-visible host name which the buildbot cannot figure out
# without some help.
#c['buildbotURL'] = "http://localhost:8010/"
c['buildbotURL'] = "http://webrtc-chrome.lul.corp.google.com:8010/"

View File

@ -31,6 +31,7 @@ from buildbot.buildslave import BuildSlave
c['slaves'] = [BuildSlave('android', 'pass', max_builds=1),
BuildSlave('chromeos', 'pass', max_builds=1),
BuildSlave('linux-chrome', 'pass', max_builds=1),
BuildSlave('linux-clang', 'pass', max_builds=1),
BuildSlave('linux-slave-1', 'pass', max_builds=1),
BuildSlave('linux-slave-2', 'pass', max_builds=1),
@ -84,36 +85,18 @@ webrtc_scheduler = Scheduler(name='all', branch=None, treeStableTimer=5*60,
'Android',
'ChromeOS'
])
c['schedulers'] = [webrtc_scheduler]
chrome_scheduler = Scheduler(name='chrome', branch=None, treeStableTimer=60*60,
builderNames=['Chrome'])
c['schedulers'] = [webrtc_scheduler, chrome_scheduler]
####### BUILDERS
# the 'builders' list defines the Builders. Each one is configured with a
# dictionary, using the following keys:
# name (required): the name used to describe this builder
# slavename (required): which slave to use (must appear in c['bots'])
# builddir (required): which subdirectory to run the builder in
# factory (required): a BuildFactory to define how the build is run
# periodicBuildTime (optional): if set, force a build every N seconds
# buildbot/process/factory.py provides several BuildFactory classes you can
# start with, which implement build processes for common targets (GNU
# autoconf projects, CPAN perl modules, etc). The factory.BuildFactory is the
# base class, and is configured with a series of BuildSteps. When the build
# is run, the appropriate buildslave is told to execute each Step in turn.
# the first BuildStep is typically responsible for obtaining a copy of the
# sources. There are source-obtaining Steps in buildbot/steps/source.py for
# CVS, SVN, and others.
from buildbot.process import factory
from buildbot.steps import shell
from webrtc_buildbot import utils
####### TESTS
# Tests to run on Virtual machine bots and our Mac hardware.
# Defines the supported tests followed by a tuple defining if the tests are
# enabled on Linux, Mac and/or Windows (in that order; defined in utils.py).
from webrtc_buildbot import utils
NORMAL_TESTS = {
# Test name Linux Mac Windows
'audio_coding_module_test': (True, True, True),
@ -172,7 +155,14 @@ mac_physical_machine_tests = utils.GetEnabledTests(PHYSICAL_MACHINE_TESTS,
windows_physical_machine_tests = utils.GetEnabledTests(PHYSICAL_MACHINE_TESTS,
'Windows')
############# Linux Builders #######################################
####### FACTORIES
# Factories defines how the build is run and can be used in multiple instances
# on multiple machines, depending on how many builders are defined.
from buildbot.process import factory
from buildbot.steps import shell
############# Linux factories #######################################
linux_factory_64_dbg = utils.WebRTCLinuxFactory(
utils.BuildStatusOracle('linux_factory_64_dbg'))
linux_factory_64_dbg.EnableBuild()
@ -207,6 +197,10 @@ chromeos_factory = utils.WebRTCLinuxFactory(
chromeos_factory.EnableBuild(chrome_os=True)
chromeos_factory.EnableTests(linux_normal_tests)
linux_chrome_factory = utils.WebRTCChromeFactory(
utils.BuildStatusOracle('linux_chrome'))
linux_chrome_factory.EnableBuild()
linux_clang = utils.WebRTCLinuxFactory(
utils.BuildStatusOracle('linux_clang'))
linux_clang.EnableBuild(clang=True)
@ -224,7 +218,7 @@ android_factory = utils.WebRTCAndroidFactory(
utils.BuildStatusOracle('android_factory'))
android_factory.EnableBuild(product='toro')
############## Mac Builders #######################################
############## Mac factories #######################################
mac_factory_32_dbg = utils.WebRTCMacFactory(
utils.BuildStatusOracle('mac_factory_32_dbg'))
mac_factory_32_dbg.EnableBuild(build_type='both')
@ -235,7 +229,7 @@ mac_factory_32_release = utils.WebRTCMacFactory(
mac_factory_32_release.EnableBuild(build_type='both', release=True)
mac_factory_32_release.EnableTests(mac_normal_tests)
############# Windows Builders #######################################
############# Windows factories #######################################
win_factory_32_Debug = utils.WebRTCWinFactory(
utils.BuildStatusOracle('win_factory_32_debug'))
win_factory_32_Debug.EnableBuild(configuration='Debug')
@ -246,6 +240,16 @@ win_factory_32_Release = utils.WebRTCWinFactory(
win_factory_32_Release.EnableBuild(configuration='Release')
win_factory_32_Release.EnableTests(windows_normal_tests)
####### BUILDERS
# the 'builders' list defines the Builders. Each one is configured with a
# dictionary, using the following keys:
# name (required): the name used to describe this builder
# slavename (required): which slave to use (must appear in c['bots'])
# builddir (required): which subdirectory to run the builder in
# factory (required): a BuildFactory to define how the build is run
# periodicBuildTime (optional): if set, force a build every N seconds
linux_builder_64_debug = {
'name': 'Linux64DBG',
'slavename': 'linux-slave-1',
@ -306,6 +310,12 @@ linux_builder_video = {
'builddir': 'video',
'factory': linux_factory_video,
}
linux_builder_chrome = {
'name': "Chrome",
'slavename': "linux-chrome",
'builddir': "linux-chrome",
'factory': linux_chrome_factory,
}
linux_builder_clang = {
'name': 'LinuxClang',
'slavename': 'linux-clang',
@ -345,6 +355,7 @@ c['builders'] = [
linux_builder_video,
android_builder_1,
chromeos_builder,
linux_builder_chrome,
]
####### STATUS TARGETS

View File

@ -404,7 +404,8 @@ class WebRTCChromeFactory(WebRTCFactory):
cmd = ['make', target, '-j100']
if make_extra is not None:
cmd.append(make_extra)
self.AddCommonStep(cmd=cmd, descriptor=descriptor, workdir='build/src')
self.AddCommonStep(cmd=cmd, descriptor=descriptor,
warn_on_failure=True, workdir='build/src')
class WebRTCLinuxFactory(WebRTCFactory):