diff --git a/tools/.gitignore b/tools/.gitignore index 9dc56df73f..e1f900fdce 100644 --- a/tools/.gitignore +++ b/tools/.gitignore @@ -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 diff --git a/tools/continuous_build/build_internal/masters/master.tryserver.webrtc/master.cfg b/tools/continuous_build/build_internal/masters/master.tryserver.webrtc/master.cfg index 40790c854f..de7d33f2a1 100755 --- a/tools/continuous_build/build_internal/masters/master.tryserver.webrtc/master.cfg +++ b/tools/continuous_build/build_internal/masters/master.tryserver.webrtc/master.cfg @@ -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'): diff --git a/tools/continuous_build/build_internal/masters/master.tryserver.webrtc/slaves.cfg b/tools/continuous_build/build_internal/masters/master.tryserver.webrtc/slaves.cfg index 4fc8b31770..7c9a96ede2 100644 --- a/tools/continuous_build/build_internal/masters/master.tryserver.webrtc/slaves.cfg +++ b/tools/continuous_build/build_internal/masters/master.tryserver.webrtc/slaves.cfg @@ -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', diff --git a/tools/continuous_build/build_internal/masters/master.webrtc/master.cfg b/tools/continuous_build/build_internal/masters/master.webrtc/master.cfg index aee95b8af5..648c895846 100755 --- a/tools/continuous_build/build_internal/masters/master.webrtc/master.cfg +++ b/tools/continuous_build/build_internal/masters/master.webrtc/master.cfg @@ -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'): diff --git a/tools/continuous_build/build_internal/scripts/webrtc_buildbot/utils.py b/tools/continuous_build/build_internal/scripts/webrtc_buildbot/utils.py index 25e4e7ef1f..1649baf8fa 100755 --- a/tools/continuous_build/build_internal/scripts/webrtc_buildbot/utils.py +++ b/tools/continuous_build/build_internal/scripts/webrtc_buildbot/utils.py @@ -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.""" diff --git a/tools/continuous_build/build_internal/site_config/config_private.py b/tools/continuous_build/build_internal/site_config/config_private.py index 04010c7b1f..7980fbe900 100644 --- a/tools/continuous_build/build_internal/site_config/config_private.py +++ b/tools/continuous_build/build_internal/site_config/config_private.py @@ -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