Sophie

Sophie

distrib > Fedora > 16 > i386 > by-pkgid > 9457b02689c69e152aa2cda68176fa51 > files > 30

buildbot-doc-0.8.4p1-2.fc16.noarch.rpm

<html lang="en">
<head>
<title>Builder - BuildBot Manual - 0.8.4p1</title>
<meta http-equiv="Content-Type" content="text/html">
<meta name="description" content="BuildBot Manual - 0.8.4p1">
<meta name="generator" content="makeinfo 4.13">
<link title="Top" rel="start" href="index.html#Top">
<link rel="up" href="Concepts.html#Concepts" title="Concepts">
<link rel="prev" href="BuildRequest.html#BuildRequest" title="BuildRequest">
<link rel="next" href="Build.html#Build" title="Build">
<link href="http://www.gnu.org/software/texinfo/" rel="generator-home" title="Texinfo Homepage">
<!--
This is the BuildBot manual for Buildbot version 0.8.4p1.

Copyright (C) 2005, 2006, 2009, 2010 Brian Warner

Copying and distribution of this file, with or without
modification, are permitted in any medium without royalty
provided the copyright notice and this notice are preserved.-->
<meta http-equiv="Content-Style-Type" content="text/css">
<style type="text/css"><!--
  pre.display { font-family:inherit }
  pre.format  { font-family:inherit }
  pre.smalldisplay { font-family:inherit; font-size:smaller }
  pre.smallformat  { font-family:inherit; font-size:smaller }
  pre.smallexample { font-size:smaller }
  pre.smalllisp    { font-size:smaller }
  span.sc    { font-variant:small-caps }
  span.roman { font-family:serif; font-weight:normal; } 
  span.sansserif { font-family:sans-serif; font-weight:normal; } 
--></style>
</head>
<body>
<div class="node">
<a name="Builder"></a>
<p>
Next:&nbsp;<a rel="next" accesskey="n" href="Build.html#Build">Build</a>,
Previous:&nbsp;<a rel="previous" accesskey="p" href="BuildRequest.html#BuildRequest">BuildRequest</a>,
Up:&nbsp;<a rel="up" accesskey="u" href="Concepts.html#Concepts">Concepts</a>
<hr>
</div>

<h3 class="section">3.5 Builder</h3>

<p><a name="index-Builder-11"></a><a name="index-BuildFactory-12"></a><a name="index-BuildSlave-13"></a>
The Buildmaster runs a collection of Builders, each of which handles a single
type of build (e.g. full versus quick), on one or more build slaves.   Builders
serve as a kind of queue for a particular type of build.  Each Builder gets a
separate column in the waterfall display. In general, each Builder runs
independently (although various kinds of interlocks can cause one Builder to
have an effect on another).

   <p>Each builder is a long-lived object which controls a sequence of Builds. 
Each Builder is created when the config file is first parsed, and lives forever
(or rather until it is removed from the config file). It mediates the
connections to the buildslaves that do all the work, and is responsible for
creating the Build objects - see <a href="Build.html#Build">Build</a>.

   <p>Each builder gets a unique name, and the path name of a directory where it gets
to do all its work (there is a buildmaster-side directory for keeping status
information, as well as a buildslave-side directory where the actual
checkout/compile/test commands are executed).

<h3 class="heading">Build Factories</h3>

<p>A builder also has a BuildFactory, which is responsible for creating new Build
instances: because the Build instance is what actually performs each build,
choosing the BuildFactory is the way to specify what happens each time a build
is done (see <a href="Build.html#Build">Build</a>).

<h3 class="heading">Build Slaves</h3>

<p>Each builder is associated with one of more BuildSlaves.  A builder which is
used to perform Mac OS X builds (as opposed to Linux or Solaris builds) should
naturally be associated with a Mac buildslave.

   <p>If multiple buildslaves are available for any given builder, you will
have some measure of redundancy: in case one slave goes offline, the
others can still keep the Builder working. In addition, multiple
buildslaves will allow multiple simultaneous builds for the same
Builder, which might be useful if you have a lot of forced or &ldquo;try&rdquo;
builds taking place.

   <p>If you use this feature, it is important to make sure that the
buildslaves are all, in fact, capable of running the given build. The
slave hosts should be configured similarly, otherwise you will spend a
lot of time trying (unsuccessfully) to reproduce a failure that only
occurs on some of the buildslaves and not the others. Different
platforms, operating systems, versions of major programs or libraries,
all these things mean you should use separate Builders.

   </body></html>