[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