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-dbg
/continuous_build/build_internal/masters/master.webrtc/win-32-release /continuous_build/build_internal/masters/master.webrtc/win-32-release
/continuous_build/build_internal/masters/master.webrtc/video /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-1
/continuous_build/build_internal/masters/master.tryserver.webrtc/linux-trybot-2 /continuous_build/build_internal/masters/master.tryserver.webrtc/linux-trybot-2
/continuous_build/build_internal/masters/master.tryserver.webrtc/mac-trybot-1 /continuous_build/build_internal/masters/master.tryserver.webrtc/mac-trybot-1

View File

@@ -39,6 +39,8 @@ c['change_source'] = []
####### SCHEDULERS ####### SCHEDULERS
pools = BuildersPools('webrtc') pools = BuildersPools('webrtc')
pools['webrtc'].append('android')
pools['webrtc'].append('android_ndk')
pools['webrtc'].append('linux') pools['webrtc'].append('linux')
pools['webrtc'].append('linux_rel') pools['webrtc'].append('linux_rel')
pools['webrtc'].append('mac') pools['webrtc'].append('mac')
@@ -106,6 +108,14 @@ linux_factory_release = utils.WebRTCLinuxFactory(
linux_factory_release.EnableBuild() linux_factory_release.EnableBuild()
linux_factory_release.EnableTests(linux_normal_tests) 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
mac_factory_dbg = utils.WebRTCMacFactory( mac_factory_dbg = utils.WebRTCMacFactory(
utils.BuildStatusOracle('mac_factory_dbg'), is_try_slave=True) 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) win_factory_release.EnableTests(windows_normal_tests)
####### BUILDERS ####### 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 = { linux_builder_debug = {
'name': 'linux', 'name': 'linux',
'slavename': 'webrtc-cb-linux-slave-11', 'slavename': 'webrtc-cb-linux-slave-11',
@@ -173,6 +195,8 @@ c['builders'] = [
mac_builder_release, mac_builder_release,
linux_builder_debug, linux_builder_debug,
linux_builder_release, 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. # Adds common status and tools to this master.
# Use our own mail notifier. # 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', public_html='../master.webrtc/public_html',
templates=['./templates', templates=['./templates',
'../master.webrtc/templates']) '../master.webrtc/templates'])
####### STATUS TARGETS ####### 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. # Use an environment variable to easily avoid enabling e-mail for development.
if not os.getenv('BUILDBOT_DEVELOPMENT_MODE'): if not os.getenv('BUILDBOT_DEVELOPMENT_MODE'):

View File

@@ -9,6 +9,22 @@
def linux(): def linux():
return [ 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', 'master': 'TryServer',
'os': 'linux', 'os': 'linux',

View File

@@ -394,12 +394,10 @@ slaves = slaves_list.SlavesList('slaves.cfg', 'WebRTC')
master_utils.VerifySetup(c, slaves) master_utils.VerifySetup(c, slaves)
# Adds common status and tools to this master. # 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) enable_http_status_push=ActiveMaster.is_production_host)
####### STATUS TARGETS ####### 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. # Use an environment variable to easily avoid enabling e-mail for development.
if not os.getenv('BUILDBOT_DEVELOPMENT_MODE'): if not os.getenv('BUILDBOT_DEVELOPMENT_MODE'):

View File

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

View File

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