[Author Prev][Author Next][Thread Prev][Thread Next][Author Index][Thread Index]
[vidalia-svn] r4173: Add my buildbot config with passwords moved to a separate fi (in buildbot: . trunk trunk/public_html)
Author: edmanm
Date: 2009-12-11 15:05:39 -0500 (Fri, 11 Dec 2009)
New Revision: 4173
Added:
buildbot/branches/
buildbot/tags/
buildbot/trunk/
buildbot/trunk/master.cfg
buildbot/trunk/public_html/
buildbot/trunk/public_html/buildbot.css
buildbot/trunk/public_html/favicon.ico
buildbot/trunk/public_html/index.html
buildbot/trunk/public_html/robots.txt
Log:
Add my buildbot config with passwords moved to a separate file and the lightly
tweaked HTML stuff (credits to dr|zed for that).
Added: buildbot/trunk/master.cfg
===================================================================
--- buildbot/trunk/master.cfg (rev 0)
+++ buildbot/trunk/master.cfg 2009-12-11 20:05:39 UTC (rev 4173)
@@ -0,0 +1,379 @@
+# -*- 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 .
+
+def split_file_branches(changed_file):
+ pieces = changed_file.split(os.sep)
+ if pieces[1] == 'branches':
+ return (os.path.join(*pieces[0:3]),
+ os.path.join(*pieces[3:]))
+ if pieces[1] == 'trunk':
+ return (os.path.join(*pieces[0:2]), os.path.join(*pieces[2:]))
+
+def branch_builder_names(branch, buildslaves):
+ names = []
+ for slave in buildslaves:
+ for builder in slave['builders']:
+ if builder['name'].startswith(branch):
+ name = "%s.%s" % (slave['name'], builder['name'])
+ names.append(name)
+ return names
+
+# 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'] = []
+
+# to limit to two concurrent builds on a slave, use
+# c['slaves'] = [BuildSlave("bot1name", "bot1passwd", max_builds=2)]
+
+
+# '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
+#c['change_source'] = PBChangeSource()
+
+# For example, if you had CVSToys installed on your repository, and your
+# CVSROOT/freshcfg file had an entry like this:
+#pb = ConfigurationSet([
+# (None, None, None, PBService(userpass=('foo', 'bar'), port=4519)),
+# ])
+
+# then you could use the following buildmaster Change Source to subscribe to
+# the FreshCVS daemon and be notified on every commit:
+#
+#from buildbot.changes.freshcvs import FreshCVSSource
+#fc_source = FreshCVSSource("cvs.example.com", 4519, "foo", "bar")
+#c['change_source'] = fc_source
+
+# or, use a PBChangeSource, and then have your repository's commit script run
+# 'buildbot sendchange', or use contrib/svn_buildbot.py, or
+# contrib/arch_buildbot.py :
+#
+from buildbot.changes.pb import PBChangeSource
+c['change_source'] = []
+c['change_source'].append(PBChangeSource())
+
+
+####### 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.source import SVN, Git
+from buildbot.steps.shell import ShellCommand, Configure, Compile, Test
+
+# Default Vidalia build factory
+vidalia_default_factory = factory.BuildFactory()
+vidalia_default_factory.addStep(SVN, mode="copy",
+ baseURL="http://svn.vidalia-project.net/svn/")
+vidalia_default_factory.addStep(Configure, command=["cmake", "."])
+vidalia_default_factory.addStep(Compile, command=["make", "VERBOSE=1"])
+
+# Build factory for Mac OS X 10.6 builders without a 64-bit Qt
+vidalia_osx_sl_factory = factory.BuildFactory()
+vidalia_osx_sl_factory.addStep(SVN, mode="copy",
+ baseURL="http://svn.vidalia-project.net/svn/")
+vidalia_osx_sl_factory.addStep(Configure, command=["cmake", "-DOSX_FORCE_32BIT=1", "."])
+vidalia_osx_sl_factory.addStep(Compile, command=["make", "VERBOSE=1"])
+
+# Build factory for Windows/MinGW builders
+vidalia_mingw_factory = factory.BuildFactory()
+vidalia_mingw_factory.addStep(SVN, mode="copy",
+ baseURL="http://svn.vidalia-project.net/svn/")
+vidalia_mingw_factory.addStep(Configure, command=["cmake", "-G", "MinGW Makefiles", "."])
+vidalia_mingw_factory.addStep(Compile, command=["make", "VERBOSE=1"])
+
+# Default Tor 0.2.2.x build factories
+tor_master_factory = factory.BuildFactory()
+tor_master_factory.addStep(Git, repourl="git://git.torproject.org/git/tor",
+ branch="master")
+tor_master_factory.addStep(ShellCommand, name="autogen", command=["./autogen.sh"],
+ env={'NOCONF' : "1" }, haltOnFailure=True)
+tor_master_factory.addStep(Configure, command=["./configure", "--enable-gcc-warnings"])
+tor_master_factory.addStep(Compile, command=["make"])
+tor_master_factory.addStep(Test, command=["src/test/test", "--debug"])
+
+tor_master_msys_factory = factory.BuildFactory()
+tor_master_msys_factory.addStep(Git, repourl="git://git.torproject.org/git/tor",
+ branch="master")
+tor_master_msys_factory.addStep(ShellCommand, name="autogen", command=["autogen.sh"],
+ env={'NOCONF' : "1" }, haltOnFailure=True)
+tor_master_msys_factory.addStep(Configure, command=["configure", "--enable-gcc-warnings"])
+tor_master_msys_factory.addStep(Compile, command=["make"])
+tor_master_msys_factory.addStep(Test, command=["src/test/test", "--debug"])
+
+# Default Tor 0.2.1.x build factories
+tor_maint_021_factory = factory.BuildFactory()
+tor_maint_021_factory.addStep(Git, repourl="git://git.torproject.org/git/tor",
+ branch="maint-0.2.1")
+tor_maint_021_factory.addStep(ShellCommand, name="autogen", command=["./autogen.sh"],
+ env={'NOCONF' : "1" }, haltOnFailure=True)
+tor_maint_021_factory.addStep(Configure, command=["./configure", "--enable-gcc-warnings"])
+tor_maint_021_factory.addStep(Compile, command=["make"])
+tor_maint_021_factory.addStep(Test, command=["src/or/test", "--debug"])
+
+tor_maint_021_msys_factory = factory.BuildFactory()
+tor_maint_021_msys_factory.addStep(Git, repourl="git://git.torproject.org/git/tor",
+ branch="maint-0.2.1")
+tor_maint_021_msys_factory.addStep(ShellCommand, name="autogen", command=["autogen.sh"],
+ env={'NOCONF' : "1" }, haltOnFailure=True)
+tor_maint_021_msys_factory.addStep(Configure, command=["configure", "--enable-gcc-warnings"])
+tor_maint_021_msys_factory.addStep(Compile, command=["make"])
+tor_maint_021_msys_factory.addStep(Test, command=["src/or/test", "--debug"])
+
+
+# Pull the slave passwords from a separate file
+d = {}
+execfile("/home/buildbot/slaves.passwd", d)
+passwd = d['PASSWORDS']
+
+# Set up all the slaves and builders
+buildslaves = [
+ { # kore.cs.rpi.edu (FC11)
+ 'name' : 'kore.fc11',
+ 'password' : passwd['kore.fc11'],
+ 'builders' : [
+ { 'name' : 'vidalia-trunk', 'factory' : vidalia_default_factory },
+ { 'name' : 'vidalia-0.1.x', 'factory' : vidalia_default_factory },
+ { 'name' : 'tor-master', 'factory' : tor_master_factory },
+ { 'name' : 'tor-maint-0.2.1', 'factory' : tor_maint_021_factory }
+ ]
+ },
+ { # kore.cs.rpi.edu (Ubuntu 9.04)
+ 'name' : 'kore.ubuntu-9.04',
+ 'password' : passwd['kore.ubuntu-9.04'],
+ 'builders' : [
+ { 'name' : 'vidalia-trunk', 'factory' : vidalia_default_factory },
+ { 'name' : 'vidalia-0.1.x', 'factory' : vidalia_default_factory },
+ { 'name' : 'tor-master', 'factory' : tor_master_factory },
+ { 'name' : 'tor-maint-0.2.1', 'factory' : tor_maint_021_factory }
+ ]
+ },
+ { # kore.cs.rpi.edu (Windows XP)
+ 'name' : 'kore.windows-xp',
+ 'password' : passwd['kore.windows-xp'],
+ 'builders' : [
+ { 'name' : 'vidalia-trunk', 'factory' : vidalia_mingw_factory },
+ { 'name' : 'vidalia-0.1.x', 'factory' : vidalia_mingw_factory }
+ ]
+ },
+ { # kore.cs.rpi.edu (Debian 5.0 -- Lenny)
+ 'name' : 'kore.debian-5.0',
+ 'password' : passwd['kore.debian-5.0'],
+ 'builders' : [
+ { 'name' : 'vidalia-trunk', 'factory' : vidalia_default_factory },
+ { 'name' : 'vidalia-0.1.x', 'factory' : vidalia_default_factory },
+ { 'name' : 'tor-master', 'factory' : tor_master_factory },
+ { 'name' : 'tor-maint-0.2.1', 'factory' : tor_maint_021_factory }
+ ]
+ },
+ { # kore.cs.rpi.edu (FreeBSD 7.1)
+ 'name' : 'kore.freebsd-7.1',
+ 'password' : passwd['kore.freebsd-7.1'],
+ 'builders' : [
+ { 'name' : 'vidalia-trunk', 'factory' : vidalia_default_factory },
+ { 'name' : 'vidalia-0.1.x', 'factory' : vidalia_default_factory },
+ { 'name' : 'tor-master', 'factory' : tor_master_factory },
+ { 'name' : 'tor-maint-0.2.1', 'factory' : tor_maint_021_factory }
+ ]
+ },
+ { # kore.cs.rpi.edu (Windows Vista)
+ 'name' : 'kore.windows-vista',
+ 'password' : passwd['kore.windows-vista'],
+ 'builders' : [
+ { 'name' : 'tor-master', 'factory' : tor_master_msys_factory },
+ { 'name' : 'tor-maint-0.2.1', 'factory' : tor_maint_021_msys_factory }
+ ]
+ },
+# { # kore.cs.rpi.edu (Windows 7)
+# 'slave' : 'kore.windows-7',
+# 'password' : passwd['kore.windows-7'],
+# 'builders' : [
+# { 'name' : 'vidalia-trunk', 'factory' : vidalia_default_factory },
+# { 'name' : 'vidalia-0.1.x', 'factory' : vidalia_default_factory }
+# ]
+# },
+ { # adrastea (OS X Tiger PPC)
+ 'name' : 'adrastea.osx-tiger',
+ 'password' : passwd['adrastea.osx-tiger'],
+ 'builders' : [
+ { 'name' : 'vidalia-trunk', 'factory' : vidalia_default_factory },
+ { 'name' : 'vidalia-0.1.x', 'factory' : vidalia_default_factory },
+ { 'name' : 'tor-master', 'factory' : tor_master_factory },
+ { 'name' : 'tor-maint-0.2.1', 'factory' : tor_maint_021_factory }
+ ]
+ },
+ { # phobos (OS X Panther PPC)
+ 'name' : 'phobos.osx-panther',
+ 'password' : passwd['phobos.osx-panther'],
+ 'builders' : [
+ { 'name' : 'vidalia-trunk', 'factory' : vidalia_default_factory },
+ { 'name' : 'vidalia-0.1.x', 'factory' : vidalia_default_factory },
+ { 'name' : 'tor-master', 'factory' : tor_master_factory },
+ { 'name' : 'tor-maint-0.2.1', 'factory' : tor_maint_021_factory }
+ ]
+ }
+# { # coderman's PS3
+# 'name' : 'coderman.ps3',
+# 'password' : passwd['coderman.ps3'],
+# 'builders' : [
+# { 'name' : 'tor-master', 'factory' : tor_master_factory },
+# { 'name' : 'tor-maint-0.2.1', 'factory' : tor_maint_021_factory }
+# ]
+# }
+]
+
+c['slaves'] = []
+c['builders'] = []
+for slave in buildslaves:
+ c['slaves'].append(BuildSlave(slave['name'], slave['password']))
+ for builder in slave['builders']:
+ c['builders'].append({
+ 'name' : "%s.%s" % (slave['name'], builder['name']),
+ 'slavename' : slave['name'],
+ 'builddir' : "build.%s.%s" % (slave['name'], builder['name']),
+ 'factory' : builder['factory']
+ })
+
+
+####### SCHEDULERS
+from buildbot.scheduler import Scheduler, Periodic
+c['schedulers'] = []
+
+vidalia_trunk_builders = branch_builder_names('vidalia-trunk', buildslaves)
+c['schedulers'].append(Scheduler(name="vidalia-trunk",
+ branch="vidalia/trunk",
+ treeStableTimer=30,
+ builderNames=vidalia_trunk_builders))
+
+vidalia_stable_builders = branch_builder_names('vidalia-0.1.x', buildslaves)
+c['schedulers'].append(Scheduler(name="vidalia-stable",
+ branch="vidalia/branches/vidalia-0.1",
+ treeStableTimer=30,
+ builderNames=vidalia_stable_builders))
+
+tor_master_builders = branch_builder_names('tor-master', buildslaves)
+c['schedulers'].append(Scheduler(name="tor-trunk",
+ branch="master",
+ treeStableTimer=30,
+ builderNames=tor_master_builders))
+
+c['schedulers'].append(Periodic(name="periodic-tor-trunk",
+ branch="master",
+ periodicBuildTimer=1*60*60,
+ builderNames=tor_master_builders))
+
+tor_021_builders = branch_builder_names('tor-maint-0.2.1', buildslaves)
+c['schedulers'].append(Scheduler(name="tor-maint-0.2.1",
+ branch="maint-0.2.1",
+ treeStableTimer=30,
+ builderNames=tor_021_builders))
+
+c['schedulers'].append(Periodic(name="periodic-tor-maint-0.2.1",
+ branch="maint-0.2.1",
+ periodicBuildTimer=4*60*60,
+ builderNames=tor_021_builders))
+
+
+####### 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.
+
+c['status'] = []
+
+from buildbot.status import html
+c['status'].append(html.WebStatus(http_port=8010, allowForce=False))
+
+# from buildbot.status import mail
+# c['status'].append(mail.MailNotifier(fromaddr="buildbot@localhost",
+# extraRecipients=["builds@xxxxxxxxxxx"],
+# sendToInterestedUsers=False))
+#
+from buildbot.status import words
+c['status'].append(words.IRC(host="irc.oftc.net", nick="nro",
+ channels=["vidalia"],
+ notify_events={
+ 'successToFailure': 1,
+ }))
+
+# 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'] = "yourMomIsABuildbot"
+
+# 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'] = "Vidalia"
+c['projectURL'] = "https://www.torproject.org/vidalia/"
+
+# 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.
+
Added: buildbot/trunk/public_html/buildbot.css
===================================================================
--- buildbot/trunk/public_html/buildbot.css (rev 0)
+++ buildbot/trunk/public_html/buildbot.css 2009-12-11 20:05:39 UTC (rev 4173)
@@ -0,0 +1,114 @@
+a:visited {
+ color: #800080;
+}
+
+td.Event, td.BuildStep, td.Activity, td.Change, td.Time, td.Builder {
+ border-top: 1px solid;
+ border-right: 1px solid;
+}
+
+td.box {
+ border: 1px solid;
+}
+
+/* Activity states */
+.offline {
+ background-color: gray;
+}
+.idle {
+ background-color: white;
+}
+.waiting {
+ background-color: yellow;
+}
+.building {
+ background-color: yellow;
+}
+
+/* LastBuild, BuildStep states */
+.success {
+ background-color: #72ff75;
+}
+.failure {
+ background-color: red;
+ color: #FFFF00;
+
+}
+.warnings {
+ background-color: #ff8000;
+}
+.exception {
+ background-color: #c000c0;
+}
+.start,.running {
+ background-color: yellow;
+}
+
+/* grid styles */
+
+table.Grid {
+ border-collapse: collapse;
+ text-align: center;
+}
+
+table.Grid tr td {
+ padding: 0.2em;
+ margin: 0px;
+ text-align: center;
+}
+
+table.Grid tr td.title {
+ font-size: 10pt;
+ border-right: 1px gray solid;
+ border-bottom: 1px gray solid;
+}
+
+table.Grid tr td.sourcestamp {
+ font-size: 8pt;
+}
+
+table.Grid tr td.builder {
+ text-align: right;
+ font-size: 8pt;
+}
+
+table.Grid tr td.build {
+ border: 1px gray solid;
+}
+
+div.footer {
+ font-size: 7pt;
+ text-align: left;
+}
+
+body {
+ font-family: "Lucida Sans Unicode", Verdana, Arial, Helvetica, sans-serif;
+ font-size: 8pt;
+ background-color: #FFFFFF;
+ margin: 0px;
+ padding: 10px;
+}
+
+.build {
+ font-size: 8pt;
+ font-weight: bold;
+
+}
+hr {
+ color: #000000;
+ background-color: #000000;
+ margin-top: 5px;
+ margin-bottom: 5px;
+ height: 1px;
+ width: 100%;
+}
+
+a:link {
+ color: #002200;
+}
+li {
+ text-align: left;
+ line-height: 200%;
+ list-style-type: square;
+ font-size: 9pt;
+}
Added: buildbot/trunk/public_html/favicon.ico
===================================================================
(Binary files differ)
Property changes on: buildbot/trunk/public_html/favicon.ico
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: buildbot/trunk/public_html/index.html
===================================================================
--- buildbot/trunk/public_html/index.html (rev 0)
+++ buildbot/trunk/public_html/index.html 2009-12-11 20:05:39 UTC (rev 4173)
@@ -0,0 +1,33 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-15">
+<link href="buildbot.css" rel="stylesheet" type="text/css" />
+<title>Welcome to the Buildbot</title>
+</head>
+
+<body>
+<h1>Welcome to the <a href="https://www.torproject.org/">Tor</a> and
+<a href="https://www.torproject.org/vidalia/">Vidalia</a> buildbot!</h1>
+
+<ul>
+ <li>The <a href="waterfall">Waterfall Display</a> will give you a
+ time-oriented summary of recent buildbot activity.</li>
+
+ <li>The <a href="grid">Grid Display</a> will give you a
+ developer-oriented summary of recent buildbot activity.</li>
+
+ <li>The <a href="one_box_per_builder">Latest Build</a> for each builder is
+ here.</li>
+
+ <li><a href="one_line_per_build">Recent Builds</a> are summarized here, one
+ per line.</li>
+
+ <li><a href="buildslaves">Buildslave</a> information</li>
+
+ <br />
+ <li><a href="about">About this Buildbot</a></li>
+</ul>
+
+
+</body> </html>
Added: buildbot/trunk/public_html/robots.txt
===================================================================
--- buildbot/trunk/public_html/robots.txt (rev 0)
+++ buildbot/trunk/public_html/robots.txt 2009-12-11 20:05:39 UTC (rev 4173)
@@ -0,0 +1,9 @@
+User-agent: *
+Disallow: /waterfall
+Disallow: /builders
+Disallow: /changes
+Disallow: /buildslaves
+Disallow: /schedulers
+Disallow: /one_line_per_build
+Disallow: /one_box_per_builder
+Disallow: /xmlrpc