Android trybots + fixing web status config

BUG=None
TEST=Tested on local master and slave.

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

git-svn-id: http://webrtc.googlecode.com/svn/trunk@2143 4adac7df-926f-26a2-2b94-8c16560cd09d
This commit is contained in:
kjellander@webrtc.org 2012-04-30 07:59:09 +00:00
parent 5c0c18d823
commit c6c4ffc5d8
6 changed files with 70 additions and 27 deletions

2
tools/.gitignore vendored
View File

@ -51,6 +51,8 @@ twistd.pid
/continuous_build/build_internal/masters/master.webrtc/win-32-dbg
/continuous_build/build_internal/masters/master.webrtc/win-32-release
/continuous_build/build_internal/masters/master.webrtc/video
/continuous_build/build_internal/masters/master.tryserver.webrtc/android-trybot
/continuous_build/build_internal/masters/master.tryserver.webrtc/android-ndk-trybot
/continuous_build/build_internal/masters/master.tryserver.webrtc/linux-trybot-1
/continuous_build/build_internal/masters/master.tryserver.webrtc/linux-trybot-2
/continuous_build/build_internal/masters/master.tryserver.webrtc/mac-trybot-1

View File

@ -39,6 +39,8 @@ c['change_source'] = []
####### SCHEDULERS
pools = BuildersPools('webrtc')
pools['webrtc'].append('android')
pools['webrtc'].append('android_ndk')
pools['webrtc'].append('linux')
pools['webrtc'].append('linux_rel')
pools['webrtc'].append('mac')
@ -106,6 +108,14 @@ linux_factory_release = utils.WebRTCLinuxFactory(
linux_factory_release.EnableBuild()
linux_factory_release.EnableTests(linux_normal_tests)
android_factory = utils.WebRTCAndroidFactory(
utils.BuildStatusOracle('android_factory'), is_try_slave=True)
android_factory.EnableBuild(product='toro')
android_ndk_factory = utils.WebRTCAndroidNDKFactory(
utils.BuildStatusOracle('android_ndk_factory'), is_try_slave=True)
android_ndk_factory.EnableBuild()
# Mac
mac_factory_dbg = utils.WebRTCMacFactory(
utils.BuildStatusOracle('mac_factory_dbg'), is_try_slave=True)
@ -129,6 +139,18 @@ win_factory_release.EnableBuild(configuration='Release')
win_factory_release.EnableTests(windows_normal_tests)
####### BUILDERS
android_builder = {
'name': 'android',
'slavename': 'webrtc-cb-linux-slave-7',
'builddir': 'android-trybot',
'factory': android_factory,
}
android_ndk_builder = {
'name': 'android_ndk',
'slavename': 'webrtc-cb-linux-slave-10',
'builddir': 'android-ndk-trybot',
'factory': android_ndk_factory,
}
linux_builder_debug = {
'name': 'linux',
'slavename': 'webrtc-cb-linux-slave-11',
@ -173,6 +195,8 @@ c['builders'] = [
mac_builder_release,
linux_builder_debug,
linux_builder_release,
android_builder,
android_ndk_builder,
]
@ -212,15 +236,12 @@ master_utils.VerifySetup(c, slaves)
# Adds common status and tools to this master.
# Use our own mail notifier.
master_utils.AutoSetupMaster(c, ActiveMaster, False,
master_utils.AutoSetupMaster(c, ActiveMaster, mail_notifier=False,
public_html='../master.webrtc/public_html',
templates=['./templates',
'../master.webrtc/templates'])
####### STATUS TARGETS
# Port 9010 is the same as Chromium's try server web interface:
web_page = html.WebStatus(http_port=9010, allowForce=True)
c['status'] = [web_page]
# Use an environment variable to easily avoid enabling e-mail for development.
if not os.getenv('BUILDBOT_DEVELOPMENT_MODE'):

View File

@ -9,6 +9,22 @@
def linux():
return [
{
'master': 'TryServer',
'os': 'linux',
'version': 'lucid',
'bits': '64',
'builder': 'android',
'hostname': 'webrtc-cb-linux-slave-7',
},
{
'master': 'TryServer',
'os': 'linux',
'version': 'lucid',
'bits': '64',
'builder': 'android_ndk',
'hostname': 'webrtc-cb-linux-slave-10',
},
{
'master': 'TryServer',
'os': 'linux',

View File

@ -394,12 +394,10 @@ slaves = slaves_list.SlavesList('slaves.cfg', 'WebRTC')
master_utils.VerifySetup(c, slaves)
# Adds common status and tools to this master.
master_utils.AutoSetupMaster(c, ActiveMaster,
master_utils.AutoSetupMaster(c, ActiveMaster, mail_notifier=False,
enable_http_status_push=ActiveMaster.is_production_host)
####### STATUS TARGETS
web_page = html.WebStatus(http_port=8010, allowForce=True)
c['status'] = [web_page]
# Use an environment variable to easily avoid enabling e-mail for development.
if not os.getenv('BUILDBOT_DEVELOPMENT_MODE'):

View File

@ -29,13 +29,13 @@ SUPPORTED_PLATFORMS = ('Linux', 'Mac', 'Windows')
WEBRTC_SOLUTION_NAME = 'trunk'
WEBRTC_SVN_LOCATION = 'http://webrtc.googlecode.com/svn/trunk'
WEBRTC_TRUNK_DIR = 'build/trunk/'
WEBRTC_BUILD_DIR = 'build/'
WEBRTC_TRUNK_DIR = 'build/trunk'
WEBRTC_BUILD_DIR = 'build'
VALGRIND_CMD = ['tools/valgrind-webrtc/webrtc_tests.sh', '-t', 'cmdline']
DEFAULT_COVERAGE_DIR = '/var/www/coverage/'
DEFAULT_BLOAT_DIR = '/var/www/bloat/'
DEFAULT_COVERAGE_DIR = '/var/www/coverage'
DEFAULT_BLOAT_DIR = '/var/www/bloat'
DEFAULT_MASTER_WORK_DIR = '.'
GCLIENT_RETRIES = 3
@ -225,13 +225,17 @@ class WebRTCFactory(factory.BuildFactory):
"""
self.AddCommonTestRunStep(test)
def AddGclientSyncStep(self, alwaysUseLatest=False):
def AddGclientSyncStep(self, workdir=WEBRTC_BUILD_DIR,
alwaysUseLatest=False):
"""Helper method for invoking gclient sync.
Args:
alwaysUseLatest: Set to true to always use the latest build, otherwise
the highest revision in the changeset will be used
for sync.
workdir: The name of the directory to checkout the source into.
The default is 'build' which is the base working dir of
most build slaves.
alwaysUseLatest: Set to true to always use the latest build, otherwise
the highest revision in the changeset will be used
for sync.
"""
gclient_spec = self._ConfigureWhatToBuild()
env = self._GetEnvironmentWithDisabledDepotToolsUpdate()
@ -246,7 +250,7 @@ class WebRTCFactory(factory.BuildFactory):
self.addStep(chromium_step.GClient,
alwaysUseLatest=alwaysUseLatest,
gclient_spec=gclient_spec,
workdir='build',
workdir=workdir,
mode='update',
env=env,
retry=retry,
@ -459,8 +463,8 @@ class GenerateCodeCoverage(ShellCommand):
class WebRTCAndroidFactory(WebRTCFactory):
"""Sets up the Android build."""
def __init__(self, build_status_oracle):
WebRTCFactory.__init__(self, build_status_oracle)
def __init__(self, build_status_oracle, is_try_slave=False):
WebRTCFactory.__init__(self, build_status_oracle, is_try_slave)
def EnableBuild(self, product='toro'):
prefix = 'rm -rf out/target/product/%s/obj/' % product
@ -472,10 +476,11 @@ class WebRTCAndroidFactory(WebRTCFactory):
]
cmd = ' ; '.join(cleanup_list)
self.AddCommonStep(cmd, descriptor='cleanup')
cmd = 'svn checkout %s external/webrtc' % self.svn_url
self.AddCommonStep(cmd, descriptor='svn (checkout)')
self.AddGclientSyncStep(workdir='build/trunk/external/webrtc')
# Work around lack of support for checking out into another dir than the
# last dir of the Subversion URL.
self.AddCommonStep(cmd='mv external/webrtc/trunk/* external/webrtc',
descriptor='Prepare WebRTC source')
cmd = ('source build/envsetup.sh && lunch full_%s-eng '
'&& mmm external/webrtc showcommands' % product)
self.AddCommonStep(cmd, descriptor='build')
@ -484,15 +489,15 @@ class WebRTCAndroidFactory(WebRTCFactory):
class WebRTCAndroidNDKFactory(WebRTCFactory):
"""Sets up the Android NDK build."""
def __init__(self, build_status_oracle):
WebRTCFactory.__init__(self, build_status_oracle)
def __init__(self, build_status_oracle, is_try_slave=False):
WebRTCFactory.__init__(self, build_status_oracle, is_try_slave)
def EnableBuild(self):
self.AddSmartCleanStep()
self.AddGclientSyncStep()
self._AddAndroidStep(cmd='gclient runhooks',
descriptor='gen_android_makefiles')
self._AddAndroidStep(cmd='make -j100', descriptor='make')
self._AddAndroidStep(cmd='make -j100', descriptor='build')
def _AddAndroidStep(self, cmd, descriptor):
full_cmd = ('source build/android/buildbot_functions.sh &&'
@ -501,6 +506,7 @@ class WebRTCAndroidNDKFactory(WebRTCFactory):
'%s' % cmd)
self.AddCommonStep(cmd=full_cmd, descriptor=descriptor)
class WebRTCChromeFactory(WebRTCFactory):
"""Sets up the Chrome Browser+WebRTC build."""

View File

@ -111,7 +111,7 @@ class Master(object):
class WebRTC(_ChromiumBase):
# Used by the waterfall display.
project_name = 'WebRTC'
master_port = 9010
master_port = 8010
slave_port = 9112
master_port_alt = 9014
@ -129,7 +129,7 @@ class Master(object):
class TryServer(_ChromiumBase):
project_name = 'WebRTC Try Server'
master_port = 9011
master_port = 9010
slave_port = 9113
master_port_alt = 9015
try_job_port = 9018