talos-staging/master.cfg
author Chris AtLee <catlee@mozilla.com>
Tue, 11 Aug 2009 07:51:11 -0400
changeset 1419 ed1259e43959fe3e43d51f2442ba0d1124ee8edc
parent 1269 145adf35b244a781b89b16099fb8e9a3bcb0fce3
permissions -rw-r--r--
Bug 509280 - Add configs for talos staging try using TryTalosFactory. r=anodelman

# 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 .

import os.path
# from buildbot.changes.freshcvs import FreshCVSSource
from buildbot.buildslave import BuildSlave
from buildbot.process import factory
from buildbot.scheduler import Scheduler, Periodic
from buildbot.status import html
from buildbot import locks

# from auth import authlist, debugPassword

import perfrunner
reload(perfrunner)
from perfrunner import *

# This is the dictionary that the buildmaster pays attention to. We also use
# a shorter alias to save typing.
c = BuildmasterConfig = {}

##
## Misc Config
##

c['debugPassword'] = "mozilla"
#c['manhole'] = Manhole(9999, "admin", "password")
c['projectName'] = "Talos"
c['projectURL'] = "http://quality.mozilla.org/en/projects/automation/talos"
c['buildbotURL'] = "http://qm-buildbot01.mozilla.org:2008"
c['slavePortnum'] = 9987

##
## Slaves
##

c['slaves'] = [BuildSlave(name, password, max_builds=1) for (name, password) in [
               ("qm-pubuntu-stage01", "l1nux"),
               ("qm-ptiger-stage01", "mac1nt0sh"),
               ("qm-pxp-stage01", "w1nd3rs"),
               ("qm-pvista-stage01", "w1nd3rs"),
               ("qm-pleopard-stage01", "mac1nt0sh")
              ]]

##
## Status
##

c['status'] = []
c['status'].append(html.WebStatus(http_port=2008, allowForce=True))

from buildbot.status import tinderbox
from buildbot.status.mail import MailNotifier
from tinderboxmailnotifier import TinderboxMailNotifier

c['status'].append(MailNotifier(
                       fromaddr="talos.buildbot@build.mozilla.org",
                       sendToInterestedUsers=False,
                       extraRecipients=["anodelman@mozilla.com"],
                       mode="failing",
                       builders=None, # send for all builders
                       relayhost="smtp.mozilla.org"))

# this is the system installed TinderboxMailNotifier
c['status'].append(tinderbox.TinderboxMailNotifier(
                       fromaddr="talos.buildbot@build.mozilla.org",
                       tree="MozillaTest",
                       extraRecipients=["tinderbox-daemon@tinderbox.mozilla.org",],
                       relayhost="smtp.mozilla.org",
                       builders=["Linux talos mozilla-central stage",
                                 "MacOSX Darwin 8.8.1 talos mozilla-central stage",
                                 "MacOSX Darwin 9.0.0 talos mozilla-central stage",
                                 "WINNT 5.1 talos mozilla-central stage",
                                 "WINNT 6.0 talos mozilla-central stage"],
#                       useChangeTime=True,
                       logCompression="bzip2"))

##
## Sources
##
from buildbot.changes.pb import PBChangeSource

c['change_source'] = []

c['change_source'].append(PBChangeSource())

##
## Schedulers
##

c['schedulers'] = []

#mozilla-central
c['schedulers'].append(Scheduler(name="moz2 central win32 scheduler",
                                 branch="mozilla-central-win32",
                                 treeStableTimer=0,
                                 builderNames=["WINNT 5.1 talos mozilla-central stage",
                                               "WINNT 6.0 talos mozilla-central stage"]
))
c['schedulers'].append(Scheduler(name="moz2 central perfrun linux scheduler",
                                 branch="mozilla-central-linux",
                                 treeStableTimer=0,
                                 builderNames=["Linux talos mozilla-central stage"]
))
c['schedulers'].append(Scheduler(name="moz2 central perfrun mac scheduler",
                                 branch="mozilla-central-macosx",
                                 treeStableTimer=0,
                                 builderNames=["MacOSX Darwin 8.8.1 talos mozilla-central stage",
                                               "MacOSX Darwin 9.0.0 talos mozilla-central stage"]
))

# 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 bilder
#  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

#STAGING MACHINES

graphConfig    = ['--resultsServer', 'graphs-stage.mozilla.org', '--resultsLink', '/server/collect.cgi']
stageConfig    = graphConfig + ['--activeTests', 'tdhtml:ts:tsspider:tp'] 
nochromeConfig = graphConfig + ['--activeTests', 'tdhtml:ts:tsspider', '--noChrome']

basicConfig    = 'configs/production.sample.config'
branchConfig   = 'configs/production.sample.config.nogfx'
#nochromeConfig = 'configs/production.sample.config.nochrome'
fastConfig     = 'configs/fast.production.sample.config'
fastManifest   = 'configs/historic_manifest.txt'
jssConfig      = 'configs/jss.production.sample.config'

basicTalosCmd  = ['python', 'run_tests.py', '--noisy']


win32_moz2_stage_steps = TalosFactory(OS = 'win',
                          envName='vc8perf',
                          buildBranch="moz-central-stage",
                          branchName="Firefox",
                          configOptions=stageConfig,
                          buildPath="..\\firefox\\firefox.exe",
                          talosCmd=basicTalosCmd,
                          fetchSymbols=True)

vista_moz2_stage_steps = TalosFactory(OS = 'win',
                          envName='vc8perf',
                          buildBranch="moz-central-stage",
                          branchName="Firefox",
                          configOptions=stageConfig,
                          buildPath="..\\firefox\\firefox.exe",
                          talosCmd=basicTalosCmd,
                          fetchSymbols=True)

linux_moz2_stage_steps = TalosFactory(OS = 'linux',
                          envName='linux',
                          buildBranch="moz-central-stage",
                          branchName="Firefox",
                          configOptions=stageConfig,
                          buildPath="../firefox/firefox-bin",
                          talosCmd=basicTalosCmd,
                          fetchSymbols=True)

mac_moz2_stage_steps = TalosFactory(OS = 'tiger',
                          envName='mac',
                          buildBranch="moz-central-stage",
                          branchName="Firefox",
                          configOptions=stageConfig,
                          buildPath="../Minefield.app/Contents/MacOS/firefox-bin",
                          talosCmd=basicTalosCmd,
                          fetchSymbols=True)

leopard_moz2_stage_steps = TalosFactory(OS = 'leopard',
                          envName='mac',
                          buildBranch="moz-central-stage",
                          branchName="Firefox",
                          configOptions=stageConfig,
                          buildPath="../Minefield.app/Contents/MacOS/firefox-bin",
                          talosCmd=basicTalosCmd,
                          fetchSymbols=True)


#STAGING
win32_moz2_stage_builder = {
    'name': "WINNT 5.1 talos mozilla-central stage",
    'slavenames': ['qm-pxp-stage01'],
    'builddir': "win32-trunk",
    'factory': win32_moz2_stage_steps,
    'category': "Firefox Trunk"
}
vista_moz2_stage_builder = {
    'name': "WINNT 6.0 talos mozilla-central stage",
    'slavenames': ['qm-pvista-stage01'],
    'builddir': "vista-trunk",
    'factory': vista_moz2_stage_steps,
    'category': "Firefox Trunk"
}
linux_moz2_stage_builder = {
    'name': "Linux talos mozilla-central stage",
    'slavenames': ['qm-pubuntu-stage01'],
    'builddir': "linux-trunk",
    'factory': linux_moz2_stage_steps,
    'category': "Firefox Trunk"
}
mac_moz2_stage_builder = {
    'name': "MacOSX Darwin 8.8.1 talos mozilla-central stage",
    'slavenames': ['qm-ptiger-stage01'],
    'builddir': "mac-trunk",
    'factory': mac_moz2_stage_steps,
    'category': "Firefox Trunk"
}
leopard_moz2_stage_builder = {
    'name': "MacOSX Darwin 9.0.0 talos mozilla-central stage",
    'slavenames': ['qm-pleopard-stage01'],
    'builddir': "leopard-trunk",
    'factory': leopard_moz2_stage_steps,
    'category': "Firefox Trunk"
}

c['builders'] = []
#STAGING
c['builders'].append(win32_moz2_stage_builder)
c['builders'].append(vista_moz2_stage_builder)
c['builders'].append(linux_moz2_stage_builder)
c['builders'].append(mac_moz2_stage_builder)
c['builders'].append(leopard_moz2_stage_builder)

###
### Branch-hopping configuration
###
c['slaves'].extend([BuildSlave(name, password, max_builds=1) for (name, password) in [
               ("qm-plinux-slave01", "l1nux"),
               ("qm-plinux-slave02", "l1nux"),
               ("qm-pxp-slave01", "w1nd3rs"),
               ("qm-pxp-slave02", "w1nd3rs"),
               ("qm-pvista-slave01", "w1nd3rs"),
               ("qm-pvista-slave02", "w1nd3rs"),
               ("qm-ptiger-slave01", "mac1nt0sh"),
               ("qm-ptiger-slave02", "mac1nt0sh"),
               ("qm-pleopard-slave01", "mac1nt0sh"),
               ("qm-pleopard-slave02", "mac1nt0sh"),
               ]])

branches = ['mozilla-central', 'mozilla-1.9.1', 'tracemonkey']
branchNames = {'mozilla-central': 'Firefox',
               'mozilla-1.9.1': 'Firefox3.1',
               'tracemonkey': 'TraceMonkey',
               }
buildBranches = {'mozilla-central': '1.9.2',
                 'mozilla-1.9.1': '1.9.1',
                 'tracemonkey': 'TraceMonkey',
                }
platforms = ['linux', 'macosx', 'win32']
appNames = {'mozilla-1.9.1': 'Shiretoko.app',
            'mozilla-central': 'Minefield.app',
	    'tracemonkey': 'Minefield.app',
	   }

for branch in branches:
    branchName = branchNames[branch]
    buildBranch = buildBranches[branch]
    for platform in platforms:
        builders = []
        if platform == 'macosx':
            tiger_factory = TalosFactory(
                OS = 'tiger',
                envName='mac',
                workdirBase="../talos-data",
                buildBranch=buildBranch,
                branchName=branchName,
                configOptions=stageConfig,
                buildPath="../%s/Contents/MacOS/firefox-bin" % appNames[branch],
                talosCmd=basicTalosCmd)
            leopard_factory = TalosFactory(
                OS = 'leopard',
                envName='mac',
                workdirBase="../talos-data",
                buildBranch=buildBranch,
                branchName=branchName,
                configOptions=stageConfig,
                buildPath="../%s/Contents/MacOS/firefox-bin" % appNames[branch],
                talosCmd=basicTalosCmd)
            tiger_builder = {
                'name': "MacOSX Darwin 8.8.1 talos %s pool stage" % branch,
                'slavenames': ['qm-ptiger-slave01', 'qm-ptiger-slave02'],
                'builddir': "%s-tiger" % branch,
                'factory': tiger_factory,
                'category': "Firefox %s" % branch,
            }
            leopard_builder = {
                'name': "MacOSX Darwin 9.0.0 talos %s pool stage" % branch,
                'slavenames': ['qm-pleopard-slave01', 'qm-pleopard-slave02'],
                'builddir': "%s-leopard" % branch,
                'factory': leopard_factory,
                'category': "Firefox %s" % branch,
            }
            builders.append(tiger_builder)
            builders.append(leopard_builder)
        elif platform == "linux":
            linux_factory = TalosFactory(
                OS = 'linux',
                envName='linux',
                workdirBase="../talos-data",
                buildBranch=buildBranch,
                branchName=branchName,
                configOptions=stageConfig,
                buildPath="../firefox/firefox-bin",
                talosCmd=basicTalosCmd)
            linux_builder = {
                'name': "Linux talos %s pool stage" % branch,
                'slavenames': ['qm-plinux-slave01', 'qm-plinux-slave02'],
                'builddir': "%s-linux" % branch,
                'factory': linux_factory,
                'category': "Firefox %s" % branch,
            }
            builders.append(linux_builder)
        elif platform == "win32":
            xp_factory = TalosFactory(
                OS = 'win',
                envName='vc8perf',
                workdirBase="../talos-data",
                buildBranch=buildBranch,
                branchName=branchName,
                configOptions=stageConfig,
                buildPath="..\\firefox\\firefox.exe",
                talosCmd=basicTalosCmd)
            vista_factory = TalosFactory(
                OS = 'win',
                envName='vc8perf',
                workdirBase="../talos-data",
                buildBranch=buildBranch,
                branchName=branchName,
                configOptions=stageConfig,
                buildPath="..\\firefox\\firefox.exe",
                talosCmd=basicTalosCmd)
            xp_builder = {
                'name': "WINNT 5.1 talos %s pool stage" % branch,
                'slavenames': ['qm-pxp-slave01', 'qm-pxp-slave02'],
                'builddir': "%s-xp" % branch,
                'factory': xp_factory,
                'category': "Firefox %s" % branch,
            }
            vista_builder = {
                'name': "WINNT 6.0 talos %s pool stage" % branch,
                'slavenames': ['qm-pvista-slave01', 'qm-pvista-slave02'],
                'builddir': "%s-vista" % branch,
                'factory': vista_factory,
                'category': "Firefox %s" % branch,
            }
            builders.append(xp_builder)
            builders.append(vista_builder)

        s = Scheduler(name='%s %s scheduler' % (branch, platform),
                      branch='%s-%s' % (branch, platform),
                      treeStableTimer=0,
                      builderNames=[b['name'] for b in builders],
                      )
        c['schedulers'].append(s)
        c['builders'].extend(builders)