diff options
Diffstat (limited to 'buildbot/docs/buildbot.info-2')
-rw-r--r-- | buildbot/docs/buildbot.info-2 | 1654 |
1 files changed, 1654 insertions, 0 deletions
diff --git a/buildbot/docs/buildbot.info-2 b/buildbot/docs/buildbot.info-2 new file mode 100644 index 0000000..bb7089a --- /dev/null +++ b/buildbot/docs/buildbot.info-2 @@ -0,0 +1,1654 @@ +This is buildbot.info, produced by makeinfo version 4.11 from +buildbot.texinfo. + +This is the BuildBot manual. + + Copyright (C) 2005,2006 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. + + +File: buildbot.info, Node: Buildbot Web Resources, Next: XMLRPC server, Prev: WebStatus Configuration Parameters, Up: WebStatus + +7.1.2 Buildbot Web Resources +---------------------------- + +Certain URLs are "magic", and the pages they serve are created by +code in various classes in the `buildbot.status.web' package instead +of being read from disk. The most common way to access these pages is +for the buildmaster admin to write or modify the `index.html' page to +contain links to them. Of course other project web pages can contain +links to these buildbot pages as well. + + Many pages can be modified by adding query arguments to the URL. +For example, a page which shows the results of the most recent build +normally does this for all builders at once. But by appending +"?builder=i386" to the end of the URL, the page will show only the +results for the "i386" builder. When used in this way, you can add +multiple "builder=" arguments to see multiple builders. Remembering +that URL query arguments are separated _from each other_ with +ampersands, a URL that ends in "?builder=i386&builder=ppc" would show +builds for just those two Builders. + + The `branch=' query argument can be used on some pages. This +filters the information displayed by that page down to only the builds +or changes which involved the given branch. Use `branch=trunk' to +reference the trunk: if you aren't intentionally using branches, +you're probably using trunk. Multiple `branch=' arguments can be used +to examine multiple branches at once (so appending +`?branch=foo&branch=bar' to the URL will show builds involving either +branch). No `branch=' arguments means to show builds and changes for +all branches. + + Some pages may include the Builder name or the build number in the +main part of the URL itself. For example, a page that describes Build +#7 of the "i386" builder would live at `/builders/i386/builds/7'. + + The table below lists all of the internal pages and the URLs that +can be used to access them. + + NOTE: of the pages described here, `/slave_status_timeline' and +`/last_build' have not yet been implemented, and `/xmlrpc' has only a +few methods so far. Future releases will improve this. + +`/waterfall' + This provides a chronologically-oriented display of the activity + of all builders. It is the same display used by the Waterfall + display. + + By adding one or more "builder=" query arguments, the Waterfall + is restricted to only showing information about the given + Builders. By adding one or more "branch=" query arguments, the + display is restricted to showing information about the given + branches. In addition, adding one or more "category=" query + arguments to the URL will limit the display to Builders that + were defined with one of the given categories. + + A 'show_events=true' query argument causes the display to include + non-Build events, like slaves attaching and detaching, as well as + reconfiguration events. 'show_events=false' hides these events. + The default is to show them. + + The `last_time=', `first_time=', and `show_time=' arguments will + control what interval of time is displayed. The default is to + show the latest events, but these can be used to look at earlier + periods in history. The `num_events=' argument also provides a + limit on the size of the displayed page. + + The Waterfall has references to resources many of the other + portions of the URL space: `/builders' for access to individual + builds, `/changes' for access to information about source code + changes, etc. + +`/rss' + This provides a rss feed summarizing all failed builds. The same + query-arguments used by 'waterfall' can be added to filter the + feed output. + +`/atom' + This provides an atom feed summarizing all failed builds. The + same query-arguments used by 'waterfall' can be added to filter + the feed output. + +`/builders/$BUILDERNAME' + This describes the given Builder, and provides buttons to force + a build. + +`/builders/$BUILDERNAME/builds/$BUILDNUM' + This describes a specific Build. + +`/builders/$BUILDERNAME/builds/$BUILDNUM/steps/$STEPNAME' + This describes a specific BuildStep. + +`/builders/$BUILDERNAME/builds/$BUILDNUM/steps/$STEPNAME/logs/$LOGNAME' + This provides an HTML representation of a specific logfile. + +`/builders/$BUILDERNAME/builds/$BUILDNUM/steps/$STEPNAME/logs/$LOGNAME/text' + This returns the logfile as plain text, without any HTML coloring + markup. It also removes the "headers", which are the lines that + describe what command was run and what the environment variable + settings were like. This maybe be useful for saving to disk and + feeding to tools like 'grep'. + +`/changes' + This provides a brief description of the ChangeSource in use + (*note Change Sources::). + +`/changes/NN' + This shows detailed information about the numbered Change: who + was the author, what files were changed, what revision number + was represented, etc. + +`/buildslaves' + This summarizes each BuildSlave, including which Builders are + configured to use it, whether the buildslave is currently + connected or not, and host information retrieved from the + buildslave itself. + +`/one_line_per_build' + This page shows one line of text for each build, merging + information from all Builders(1). Each line specifies the name + of the Builder, the number of the Build, what revision it used, + and a summary of the results. Successful builds are in green, + while failing builds are in red. The date and time of the build + are added to the right-hand edge of the line. The lines are + ordered by build finish timestamp. + + One or more `builder=' or `branch=' arguments can be used to + restrict the list. In addition, a `numbuilds=' argument will + control how many lines are displayed (20 by default). + +`/one_box_per_builder' + This page shows a small table, with one box for each Builder, + containing the results of the most recent Build. It does not + show the individual steps, or the current status. This is a + simple summary of buildbot status: if this page is green, then + all tests are passing. + + As with `/one_line_per_build', this page will also honor + `builder=' and `branch=' arguments. + +`/about' + This page gives a brief summary of the Buildbot itself: software + version, versions of some libraries that the Buildbot depends + upon, etc. It also contains a link to the buildbot.net home page. + +`/slave_status_timeline' + (note: this page has not yet been implemented) + + This provides a chronological display of configuration and + operational events: master startup/shutdown, slave + connect/disconnect, and config-file changes. When a config-file + reload is abandoned because of an error in the config file, the + error is displayed on this page. + + This page does not show any builds. + +`/last_build/$BUILDERNAME/status.png' + This returns a PNG image that describes the results of the most + recent build, which can be referenced in an IMG tag by other + pages, perhaps from a completely different site. Use it as you + would a webcounter. + + + There are also a set of web-status resources that are intended for +use by other programs, rather than humans. + +`/xmlrpc' + This runs an XML-RPC server which can be used to query status + information about various builds. See *note XMLRPC server:: for + more details. + + + ---------- Footnotes ---------- + + (1) Apparently this is the same way http://buildd.debian.org +displays build status + + +File: buildbot.info, Node: XMLRPC server, Next: HTML Waterfall, Prev: Buildbot Web Resources, Up: WebStatus + +7.1.3 XMLRPC server +------------------- + +When using WebStatus, the buildbot runs an XML-RPC server at +`/xmlrpc' that can be used by other programs to query build status. +The following table lists the methods that can be invoked using this +interface. + +`getAllBuildsInInterval(start, stop)' + Return a list of builds that have completed after the 'start' + timestamp and before the 'stop' timestamp. This looks at all + Builders. + + The timestamps are integers, interpreted as standard unix + timestamps (seconds since epoch). + + Each Build is returned as a tuple in the form: `(buildername, + buildnumber, build_end, branchname, revision, results, text)' + + The buildnumber is an integer. 'build_end' is an integer (seconds + since epoch) specifying when the build finished. + + The branchname is a string, which may be an empty string to + indicate None (i.e. the default branch). The revision is a + string whose meaning is specific to the VC system in use, and + comes from the 'got_revision' build property. The results are + expressed as a string, one of ('success', 'warnings', 'failure', + 'exception'). The text is a list of short strings that ought to + be joined by spaces and include slightly more data about the + results of the build. + +`getBuild(builder_name, build_number)' + Return information about a specific build. + + This returns a dictionary (aka "struct" in XMLRPC terms) with + complete information about the build. It does not include the + contents of the log files, but it has just about everything else. + + + +File: buildbot.info, Node: HTML Waterfall, Prev: XMLRPC server, Up: WebStatus + +7.1.4 HTML Waterfall +-------------------- + +The `Waterfall' status target, deprecated as of 0.7.6, is a subset of +the regular `WebStatus' resource (*note WebStatus::). This section +(and the `Waterfall' class itself) will be removed from a future +release. + + from buildbot.status import html + w = html.WebStatus(http_port=8080) + c['status'].append(w) + + +File: buildbot.info, Node: MailNotifier, Next: IRC Bot, Prev: WebStatus, Up: Status Delivery + +7.2 MailNotifier +================ + +The buildbot can also send email when builds finish. The most common +use of this is to tell developers when their change has caused the +build to fail. It is also quite common to send a message to a mailing +list (usually named "builds" or similar) about every build. + + The `MailNotifier' status target is used to accomplish this. You +configure it by specifying who mail should be sent to, under what +circumstances mail should be sent, and how to deliver the mail. It can +be configured to only send out mail for certain builders, and only +send messages when the build fails, or when the builder transitions +from success to failure. It can also be configured to include various +build logs in each message. + + By default, the message will be sent to the Interested Users list +(*note Doing Things With Users::), which includes all developers who +made changes in the build. You can add additional recipients with the +extraRecipients argument. + + Each MailNotifier sends mail to a single set of recipients. To send +different kinds of mail to different recipients, use multiple +MailNotifiers. + + The following simple example will send an email upon the +completion of each build, to just those developers whose Changes were +included in the build. The email contains a description of the Build, +its results, and URLs where more information can be obtained. + + from buildbot.status.mail import MailNotifier + mn = MailNotifier(fromaddr="buildbot@example.org", lookup="example.org") + c['status'].append(mn) + + To get a simple one-message-per-build (say, for a mailing list), +use the following form instead. This form does not send mail to +individual developers (and thus does not need the `lookup=' argument, +explained below), instead it only ever sends mail to the "extra +recipients" named in the arguments: + + mn = MailNotifier(fromaddr="buildbot@example.org", + sendToInterestedUsers=False, + extraRecipients=['listaddr@example.org']) + + In some cases it is desirable to have different information then +what is provided in a standard MailNotifier message. For this purpose +MailNotifier provides the argument customMesg (a function) which +allows for the creation of messages with unique content. + + For example it can be useful to display the last few lines of a +log file and recent changes when a builder fails: + + def message(attrs): + logLines = 10 + text = list() + text.append("STATUS: %s" % attrs['result'].title()) + text.append("") + text.extend([c.asText() for c in attrs['changes']]) + text.append("") + name, url, lines = attrs['logs'][-1] + text.append("Last %d lines of '%s':" % (logLines, name)) + text.extend(["\t%s\n" % line for line in lines[len(lines)-logLines:]]) + text.append("") + text.append("-buildbot") + return ("\n".join(text), 'plain') + + mn = MailNotifier(fromaddr="buildbot@example.org", + sendToInterestedUsers=False, + mode='problem', + extraRecipients=['listaddr@example.org'], + customMesg=message) + + A customMesg function takes a single dict argument (see below) and +returns a tuple of strings. The first string is the complete text of +the message and the second is the message type ('plain' or 'html'). +The 'html' type should be used when generating an HTML message: + + def message(attrs): + logLines = 10 + text = list() + text.append('<h4>Build status %s.</h4>' % (attrs['result'].title())) + if attrs['changes']: + text.append('<h4>Recent Changes:</h4>') + text.extend([c.asHTML() for c in attrs['changes']]) + name, url, lines = attrs['logs'][-1] + text.append('<h4>Last %d lines of "%s":</h4>' % (logLines, name)) + text.append('<p>') + text.append('<br>'.join([line for line in lines[len(lines)-logLines:]])) + text.append('</p>') + text.append('<br><br>') + text.append('Full log at: %s' % url) + text.append('<br><br>') + text.append('<b>-buildbot</b>') + return ('\n'.join(text), 'html') + +MailNotifier arguments +====================== + +`fromaddr' + The email address to be used in the 'From' header. + +`sendToInterestedUsers' + (boolean). If True (the default), send mail to all of the + Interested Users. If False, only send mail to the + extraRecipients list. + +`extraRecipients' + (tuple of strings). A list of email addresses to which messages + should be sent (in addition to the InterestedUsers list, which + includes any developers who made Changes that went into this + build). It is a good idea to create a small mailing list and + deliver to that, then let subscribers come and go as they please. + +`subject' + (string). A string to be used as the subject line of the message. + `%(builder)s' will be replaced with the name of the builder which + provoked the message. + +`mode' + (string). Default to 'all'. One of: + `all' + Send mail about all builds, bothpassing and failing + + `failing' + Only send mail about builds which fail + + `problem' + Only send mail about a build which failed when the previous + build has passed. If your builds usually pass, then this + will only send mail when a problem occurs. + +`builders' + (list of strings). A list of builder names for which mail should + be sent. Defaults to None (send mail for all builds). Use either + builders or categories, but not both. + +`categories' + (list of strings). A list of category names to serve status + information for. Defaults to None (all categories). Use either + builders or categories, but not both. + +`addLogs' + (boolean). If True, include all build logs as attachments to the + messages. These can be quite large. This can also be set to a + list of log names, to send a subset of the logs. Defaults to + False. + +`relayhost' + (string). The host to which the outbound SMTP connection should + be made. Defaults to 'localhost' + +`lookup' + (implementor of `IEmailLookup'). Object which provides + IEmailLookup, which is responsible for mapping User names (which + come from the VC system) into valid email addresses. If not + provided, the notifier will only be able to send mail to the + addresses in the extraRecipients list. Most of the time you can + use a simple Domain instance. As a shortcut, you can pass as + string: this will be treated as if you had provided Domain(str). + For example, lookup='twistedmatrix.com' will allow mail to be + sent to all developers whose SVN usernames match their + twistedmatrix.com account names. See buildbot/status/mail.py for + more details. + +`customMesg' + This is a optional function that can be used to generate a + custom mail message. The customMesg function takes a single dict + and must return a tuple containing the message text and type + ('html' or 'plain'). Below is a list of availale keys in the + dict passed to customMesg: + + `builderName' + (str) Name of the builder that generated this event. + + `projectName' + (str) Name of the project. + + `mode' + (str) Mode set in MailNotifier. (failing, passing, problem). + + `result' + (str) Builder result as a string. 'success', 'warnings', + 'failure', 'skipped', or 'exception' + + `buildURL' + (str) URL to build page. + + `buildbotURL' + (str) URL to buildbot main page. + + `buildText' + (str) Build text from build.getText(). + + `slavename' + (str) Slavename. + + `reason' + (str) Build reason from build.getReason(). + + `responsibleUsers' + (List of str) List of responsible users. + + `branch' + (str) Name of branch used. If no SourceStamp exists branch + is an empty string. + + `revision' + (str) Name of revision used. If no SourceStamp exists + revision is an empty string. + + `patch' + (str) Name of patch used. If no SourceStamp exists patch is + an empty string. + + `changes' + (list of objs) List of change objects from SourceStamp. A + change object has the following useful information: + `who' + (str) who made this change + + `revision' + (str) what VC revision is this change + + `branch' + (str) on what branch did this change occur + + `when' + (str) when did this change occur + + `files' + (list of str) what files were affected in this change + + `comments' + (str) comments reguarding the change. + The functions asText and asHTML return a list of strings + with the above information formatted. + + `logs' + (List of Tuples) List of tuples where each tuple contains + the log name, log url, and log contents as a list of + strings. + + +File: buildbot.info, Node: IRC Bot, Next: PBListener, Prev: MailNotifier, Up: Status Delivery + +7.3 IRC Bot +=========== + +The `buildbot.status.words.IRC' status target creates an IRC bot +which will attach to certain channels and be available for status +queries. It can also be asked to announce builds as they occur, or be +told to shut up. + + from buildbot.status import words + irc = words.IRC("irc.example.org", "botnickname", + channels=["channel1", "channel2"], + password="mysecretpassword", + notify_events={ + 'exception': 1, + 'successToFailure': 1, + 'failureToSuccess': 1, + }) + c['status'].append(irc) + + Take a look at the docstring for `words.IRC' for more details on +configuring this service. The `password' argument, if provided, will +be sent to Nickserv to claim the nickname: some IRC servers will not +allow clients to send private messages until they have logged in with +a password. + + To use the service, you address messages at the buildbot, either +normally (`botnickname: status') or with private messages (`/msg +botnickname status'). The buildbot will respond in kind. + + Some of the commands currently available: + +`list builders' + Emit a list of all configured builders + +`status BUILDER' + Announce the status of a specific Builder: what it is doing + right now. + +`status all' + Announce the status of all Builders + +`watch BUILDER' + If the given Builder is currently running, wait until the Build + is finished and then announce the results. + +`last BUILDER' + Return the results of the last build to run on the given Builder. + +`join CHANNEL' + Join the given IRC channel + +`leave CHANNEL' + Leave the given IRC channel + +`notify on|off|list EVENT' + Report events relating to builds. If the command is issued as a + private message, then the report will be sent back as a private + message to the user who issued the command. Otherwise, the + report will be sent to the channel. Available events to be + notified are: + + `started' + A build has started + + `finished' + A build has finished + + `success' + A build finished successfully + + `failed' + A build failed + + `exception' + A build generated and exception + + `xToY' + The previous build was x, but this one is Y, where x and Y + are each one of success, warnings, failure, exception + (except Y is capitalized). For example: successToFailure + will notify if the previous build was successful, but this + one failed + +`help COMMAND' + Describe a command. Use `help commands' to get a list of known + commands. + +`source' + Announce the URL of the Buildbot's home page. + +`version' + Announce the version of this Buildbot. + + Additionally, the config file may specify default notification +options as shown in the example earlier. + + If the `allowForce=True' option was used, some addtional commands +will be available: + +`force build BUILDER REASON' + Tell the given Builder to start a build of the latest code. The + user requesting the build and REASON are recorded in the Build + status. The buildbot will announce the build's status when it + finishes. + +`stop build BUILDER REASON' + Terminate any running build in the given Builder. REASON will be + added to the build status to explain why it was stopped. You + might use this if you committed a bug, corrected it right away, + and don't want to wait for the first build (which is destined to + fail) to complete before starting the second (hopefully fixed) + build. + + +File: buildbot.info, Node: PBListener, Next: Writing New Status Plugins, Prev: IRC Bot, Up: Status Delivery + +7.4 PBListener +============== + + import buildbot.status.client + pbl = buildbot.status.client.PBListener(port=int, user=str, + passwd=str) + c['status'].append(pbl) + + This sets up a PB listener on the given TCP port, to which a +PB-based status client can connect and retrieve status information. +`buildbot statusgui' (*note statusgui::) is an example of such a +status client. The `port' argument can also be a strports +specification string. + + +File: buildbot.info, Node: Writing New Status Plugins, Prev: PBListener, Up: Status Delivery + +7.5 Writing New Status Plugins +============================== + +TODO: this needs a lot more examples + + Each status plugin is an object which provides the +`twisted.application.service.IService' interface, which creates a +tree of Services with the buildmaster at the top [not strictly true]. +The status plugins are all children of an object which implements +`buildbot.interfaces.IStatus', the main status object. From this +object, the plugin can retrieve anything it wants about current and +past builds. It can also subscribe to hear about new and upcoming +builds. + + Status plugins which only react to human queries (like the +Waterfall display) never need to subscribe to anything: they are idle +until someone asks a question, then wake up and extract the +information they need to answer it, then they go back to sleep. +Plugins which need to act spontaneously when builds complete (like +the MailNotifier plugin) need to subscribe to hear about new builds. + + If the status plugin needs to run network services (like the HTTP +server used by the Waterfall plugin), they can be attached as Service +children of the plugin itself, using the `IServiceCollection' +interface. + + +File: buildbot.info, Node: Command-line tool, Next: Resources, Prev: Status Delivery, Up: Top + +8 Command-line tool +******************* + +The `buildbot' command-line tool can be used to start or stop a +buildmaster or buildbot, and to interact with a running buildmaster. +Some of its subcommands are intended for buildmaster admins, while +some are for developers who are editing the code that the buildbot is +monitoring. + +* Menu: + +* Administrator Tools:: +* Developer Tools:: +* Other Tools:: +* .buildbot config directory:: + + +File: buildbot.info, Node: Administrator Tools, Next: Developer Tools, Prev: Command-line tool, Up: Command-line tool + +8.1 Administrator Tools +======================= + +The following `buildbot' sub-commands are intended for buildmaster +administrators: + +create-master +============= + +This creates a new directory and populates it with files that allow it +to be used as a buildmaster's base directory. + + buildbot create-master BASEDIR + +create-slave +============ + +This creates a new directory and populates it with files that let it +be used as a buildslave's base directory. You must provide several +arguments, which are used to create the initial `buildbot.tac' file. + + buildbot create-slave BASEDIR MASTERHOST:PORT SLAVENAME PASSWORD + +start +===== + +This starts a buildmaster or buildslave which was already created in +the given base directory. The daemon is launched in the background, +with events logged to a file named `twistd.log'. + + buildbot start BASEDIR + +stop +==== + +This terminates the daemon (either buildmaster or buildslave) running +in the given directory. + + buildbot stop BASEDIR + +sighup +====== + +This sends a SIGHUP to the buildmaster running in the given directory, +which causes it to re-read its `master.cfg' file. + + buildbot sighup BASEDIR + + +File: buildbot.info, Node: Developer Tools, Next: Other Tools, Prev: Administrator Tools, Up: Command-line tool + +8.2 Developer Tools +=================== + +These tools are provided for use by the developers who are working on +the code that the buildbot is monitoring. + +* Menu: + +* statuslog:: +* statusgui:: +* try:: + + +File: buildbot.info, Node: statuslog, Next: statusgui, Prev: Developer Tools, Up: Developer Tools + +8.2.1 statuslog +--------------- + + buildbot statuslog --master MASTERHOST:PORT + + This command starts a simple text-based status client, one which +just prints out a new line each time an event occurs on the +buildmaster. + + The `--master' option provides the location of the +`buildbot.status.client.PBListener' status port, used to deliver +build information to realtime status clients. The option is always in +the form of a string, with hostname and port number separated by a +colon (`HOSTNAME:PORTNUM'). Note that this port is _not_ the same as +the slaveport (although a future version may allow the same port +number to be used for both purposes). If you get an error message to +the effect of "Failure: twisted.cred.error.UnauthorizedLogin:", this +may indicate that you are connecting to the slaveport rather than a +`PBListener' port. + + The `--master' option can also be provided by the `masterstatus' +name in `.buildbot/options' (*note .buildbot config directory::). + + +File: buildbot.info, Node: statusgui, Next: try, Prev: statuslog, Up: Developer Tools + +8.2.2 statusgui +--------------- + +If you have set up a PBListener (*note PBListener::), you will be able +to monitor your Buildbot using a simple Gtk+ application invoked with +the `buildbot statusgui' command: + + buildbot statusgui --master MASTERHOST:PORT + + This command starts a simple Gtk+-based status client, which +contains a few boxes for each Builder that change color as events +occur. It uses the same `--master' argument as the `buildbot +statuslog' command (*note statuslog::). + + +File: buildbot.info, Node: try, Prev: statusgui, Up: Developer Tools + +8.2.3 try +--------- + +This lets a developer to ask the question "What would happen if I +committed this patch right now?". It runs the unit test suite (across +multiple build platforms) on the developer's current code, allowing +them to make sure they will not break the tree when they finally +commit their changes. + + The `buildbot try' command is meant to be run from within a +developer's local tree, and starts by figuring out the base revision +of that tree (what revision was current the last time the tree was +updated), and a patch that can be applied to that revision of the tree +to make it match the developer's copy. This (revision, patch) pair is +then sent to the buildmaster, which runs a build with that +SourceStamp. If you want, the tool will emit status messages as the +builds run, and will not terminate until the first failure has been +detected (or the last success). + + There is an alternate form which accepts a pre-made patch file +(typically the output of a command like 'svn diff'). This "-diff" +form does not require a local tree to run from. See *Note try +--diff::. + + For this command to work, several pieces must be in place: + +TryScheduler +============ + +The buildmaster must have a `scheduler.Try' instance in the config +file's `c['schedulers']' list. This lets the administrator control +who may initiate these "trial" builds, which branches are eligible +for trial builds, and which Builders should be used for them. + + The `TryScheduler' has various means to accept build requests: all +of them enforce more security than the usual buildmaster ports do. +Any source code being built can be used to compromise the buildslave +accounts, but in general that code must be checked out from the VC +repository first, so only people with commit privileges can get +control of the buildslaves. The usual force-build control channels can +waste buildslave time but do not allow arbitrary commands to be +executed by people who don't have those commit privileges. However, +the source code patch that is provided with the trial build does not +have to go through the VC system first, so it is important to make +sure these builds cannot be abused by a non-committer to acquire as +much control over the buildslaves as a committer has. Ideally, only +developers who have commit access to the VC repository would be able +to start trial builds, but unfortunately the buildmaster does not, in +general, have access to VC system's user list. + + As a result, the `TryScheduler' requires a bit more configuration. +There are currently two ways to set this up: + +*jobdir (ssh)* + This approach creates a command queue directory, called the + "jobdir", in the buildmaster's working directory. The buildmaster + admin sets the ownership and permissions of this directory to + only grant write access to the desired set of developers, all of + whom must have accounts on the machine. The `buildbot try' + command creates a special file containing the source stamp + information and drops it in the jobdir, just like a standard + maildir. When the buildmaster notices the new file, it unpacks + the information inside and starts the builds. + + The config file entries used by 'buildbot try' either specify a + local queuedir (for which write and mv are used) or a remote one + (using scp and ssh). + + The advantage of this scheme is that it is quite secure, the + disadvantage is that it requires fiddling outside the buildmaster + config (to set the permissions on the jobdir correctly). If the + buildmaster machine happens to also house the VC repository, + then it can be fairly easy to keep the VC userlist in sync with + the trial-build userlist. If they are on different machines, + this will be much more of a hassle. It may also involve granting + developer accounts on a machine that would not otherwise require + them. + + To implement this, the buildslave invokes 'ssh -l username host + buildbot tryserver ARGS', passing the patch contents over stdin. + The arguments must include the inlet directory and the revision + information. + +*user+password (PB)* + In this approach, each developer gets a username/password pair, + which are all listed in the buildmaster's configuration file. + When the developer runs `buildbot try', their machine connects + to the buildmaster via PB and authenticates themselves using + that username and password, then sends a PB command to start the + trial build. + + The advantage of this scheme is that the entire configuration is + performed inside the buildmaster's config file. The + disadvantages are that it is less secure (while the "cred" + authentication system does not expose the password in plaintext + over the wire, it does not offer most of the other security + properties that SSH does). In addition, the buildmaster admin is + responsible for maintaining the username/password list, adding + and deleting entries as developers come and go. + + + For example, to set up the "jobdir" style of trial build, using a +command queue directory of `MASTERDIR/jobdir' (and assuming that all +your project developers were members of the `developers' unix group), +you would first create that directory (with `mkdir MASTERDIR/jobdir +MASTERDIR/jobdir/new MASTERDIR/jobdir/cur MASTERDIR/jobdir/tmp; chgrp +developers MASTERDIR/jobdir MASTERDIR/jobdir/*; chmod g+rwx,o-rwx +MASTERDIR/jobdir MASTERDIR/jobdir/*'), and then use the following +scheduler in the buildmaster's config file: + + from buildbot.scheduler import Try_Jobdir + s = Try_Jobdir("try1", ["full-linux", "full-netbsd", "full-OSX"], + jobdir="jobdir") + c['schedulers'] = [s] + + Note that you must create the jobdir before telling the +buildmaster to use this configuration, otherwise you will get an +error. Also remember that the buildmaster must be able to read and +write to the jobdir as well. Be sure to watch the `twistd.log' file +(*note Logfiles::) as you start using the jobdir, to make sure the +buildmaster is happy with it. + + To use the username/password form of authentication, create a +`Try_Userpass' instance instead. It takes the same `builderNames' +argument as the `Try_Jobdir' form, but accepts an addtional `port' +argument (to specify the TCP port to listen on) and a `userpass' list +of username/password pairs to accept. Remember to use good passwords +for this: the security of the buildslave accounts depends upon it: + + from buildbot.scheduler import Try_Userpass + s = Try_Userpass("try2", ["full-linux", "full-netbsd", "full-OSX"], + port=8031, userpass=[("alice","pw1"), ("bob", "pw2")] ) + c['schedulers'] = [s] + + Like most places in the buildbot, the `port' argument takes a +strports specification. See `twisted.application.strports' for +details. + +locating the master +=================== + +The `try' command needs to be told how to connect to the +`TryScheduler', and must know which of the authentication approaches +described above is in use by the buildmaster. You specify the +approach by using `--connect=ssh' or `--connect=pb' (or `try_connect += 'ssh'' or `try_connect = 'pb'' in `.buildbot/options'). + + For the PB approach, the command must be given a `--master' +argument (in the form HOST:PORT) that points to TCP port that you +picked in the `Try_Userpass' scheduler. It also takes a `--username' +and `--passwd' pair of arguments that match one of the entries in the +buildmaster's `userpass' list. These arguments can also be provided +as `try_master', `try_username', and `try_password' entries in the +`.buildbot/options' file. + + For the SSH approach, the command must be given `--tryhost', +`--username', and optionally `--password' (TODO: really?) to get to +the buildmaster host. It must also be given `--trydir', which points +to the inlet directory configured above. The trydir can be relative +to the user's home directory, but most of the time you will use an +explicit path like `~buildbot/project/trydir'. These arguments can be +provided in `.buildbot/options' as `try_host', `try_username', +`try_password', and `try_dir'. + + In addition, the SSH approach needs to connect to a PBListener +status port, so it can retrieve and report the results of the build +(the PB approach uses the existing connection to retrieve status +information, so this step is not necessary). This requires a +`--master' argument, or a `masterstatus' entry in `.buildbot/options', +in the form of a HOSTNAME:PORT string. + +choosing the Builders +===================== + +A trial build is performed on multiple Builders at the same time, and +the developer gets to choose which Builders are used (limited to a set +selected by the buildmaster admin with the TryScheduler's +`builderNames=' argument). The set you choose will depend upon what +your goals are: if you are concerned about cross-platform +compatibility, you should use multiple Builders, one from each +platform of interest. You might use just one builder if that platform +has libraries or other facilities that allow better test coverage than +what you can accomplish on your own machine, or faster test runs. + + The set of Builders to use can be specified with multiple +`--builder' arguments on the command line. It can also be specified +with a single `try_builders' option in `.buildbot/options' that uses +a list of strings to specify all the Builder names: + + try_builders = ["full-OSX", "full-win32", "full-linux"] + +specifying the VC system +======================== + +The `try' command also needs to know how to take the developer's +current tree and extract the (revision, patch) source-stamp pair. +Each VC system uses a different process, so you start by telling the +`try' command which VC system you are using, with an argument like +`--vc=cvs' or `--vc=tla'. This can also be provided as `try_vc' in +`.buildbot/options'. + + The following names are recognized: `cvs' `svn' `baz' `tla' `hg' +`darcs' + +finding the top of the tree +=========================== + +Some VC systems (notably CVS and SVN) track each directory +more-or-less independently, which means the `try' command needs to +move up to the top of the project tree before it will be able to +construct a proper full-tree patch. To accomplish this, the `try' +command will crawl up through the parent directories until it finds a +marker file. The default name for this marker file is +`.buildbot-top', so when you are using CVS or SVN you should `touch +.buildbot-top' from the top of your tree before running `buildbot +try'. Alternatively, you can use a filename like `ChangeLog' or +`README', since many projects put one of these files in their +top-most directory (and nowhere else). To set this filename, use +`--try-topfile=ChangeLog', or set it in the options file with +`try_topfile = 'ChangeLog''. + + You can also manually set the top of the tree with +`--try-topdir=~/trees/mytree', or `try_topdir = '~/trees/mytree''. If +you use `try_topdir', in a `.buildbot/options' file, you will need a +separate options file for each tree you use, so it may be more +convenient to use the `try_topfile' approach instead. + + Other VC systems which work on full projects instead of individual +directories (tla, baz, darcs, monotone, mercurial, git) do not require +`try' to know the top directory, so the `--try-topfile' and +`--try-topdir' arguments will be ignored. + + If the `try' command cannot find the top directory, it will abort +with an error message. + +determining the branch name +=========================== + +Some VC systems record the branch information in a way that "try" can +locate it, in particular Arch (both `tla' and `baz'). For the others, +if you are using something other than the default branch, you will +have to tell the buildbot which branch your tree is using. You can do +this with either the `--branch' argument, or a `try_branch' entry in +the `.buildbot/options' file. + +determining the revision and patch +================================== + +Each VC system has a separate approach for determining the tree's base +revision and computing a patch. + +`CVS' + `try' pretends that the tree is up to date. It converts the + current time into a `-D' time specification, uses it as the base + revision, and computes the diff between the upstream tree as of + that point in time versus the current contents. This works, more + or less, but requires that the local clock be in reasonably good + sync with the repository. + +`SVN' + `try' does a `svn status -u' to find the latest repository + revision number (emitted on the last line in the "Status against + revision: NN" message). It then performs an `svn diff -rNN' to + find out how your tree differs from the repository version, and + sends the resulting patch to the buildmaster. If your tree is not + up to date, this will result in the "try" tree being created with + the latest revision, then _backwards_ patches applied to bring it + "back" to the version you actually checked out (plus your actual + code changes), but this will still result in the correct tree + being used for the build. + +`baz' + `try' does a `baz tree-id' to determine the fully-qualified + version and patch identifier for the tree + (ARCHIVE/VERSION-patch-NN), and uses the VERSION-patch-NN + component as the base revision. It then does a `baz diff' to + obtain the patch. + +`tla' + `try' does a `tla tree-version' to get the fully-qualified + version identifier (ARCHIVE/VERSION), then takes the first line + of `tla logs --reverse' to figure out the base revision. Then it + does `tla changes --diffs' to obtain the patch. + +`Darcs' + `darcs changes --context' emits a text file that contains a list + of all patches back to and including the last tag was made. This + text file (plus the location of a repository that contains all + these patches) is sufficient to re-create the tree. Therefore + the contents of this "context" file _are_ the revision stamp for + a Darcs-controlled source tree. + + So `try' does a `darcs changes --context' to determine what your + tree's base revision is, and then does a `darcs diff -u' to + compute the patch relative to that revision. + +`Mercurial' + `hg identify' emits a short revision ID (basically a truncated + SHA1 hash of the current revision's contents), which is used as + the base revision. `hg diff' then provides the patch relative to + that revision. For `try' to work, your working directory must + only have patches that are available from the same + remotely-available repository that the build process' + `step.Mercurial' will use. + +`Git' + `git branch -v' lists all the branches available in the local + repository along with the revision ID it points to and a short + summary of the last commit. The line containing the currently + checked out branch begins with '* ' (star and space) while all + the others start with ' ' (two spaces). `try' scans for this + line and extracts the branch name and revision from it. Then it + generates a diff against the base revision. + + +waiting for results +=================== + +If you provide the `--wait' option (or `try_wait = True' in +`.buildbot/options'), the `buildbot try' command will wait until your +changes have either been proven good or bad before exiting. Unless +you use the `--quiet' option (or `try_quiet=True'), it will emit a +progress message every 60 seconds until the builds have completed. + +* Menu: + +* try --diff:: + + +File: buildbot.info, Node: try --diff, Prev: try, Up: try + +8.2.3.1 try -diff +................. + +Sometimes you might have a patch from someone else that you want to +submit to the buildbot. For example, a user may have created a patch +to fix some specific bug and sent it to you by email. You've inspected +the patch and suspect that it might do the job (and have at least +confirmed that it doesn't do anything evil). Now you want to test it +out. + + One approach would be to check out a new local tree, apply the +patch, run your local tests, then use "buildbot try" to run the tests +on other platforms. An alternate approach is to use the `buildbot try +--diff' form to have the buildbot test the patch without using a +local tree. + + This form takes a `--diff' argument which points to a file that +contains the patch you want to apply. By default this patch will be +applied to the TRUNK revision, but if you give the optional +`--baserev' argument, a tree of the given revision will be used as a +starting point instead of TRUNK. + + You can also use `buildbot try --diff=-' to read the patch from +stdin. + + Each patch has a "patchlevel" associated with it. This indicates +the number of slashes (and preceding pathnames) that should be +stripped before applying the diff. This exactly corresponds to the +`-p' or `--strip' argument to the `patch' utility. By default +`buildbot try --diff' uses a patchlevel of 0, but you can override +this with the `-p' argument. + + When you use `--diff', you do not need to use any of the other +options that relate to a local tree, specifically `--vc', +`--try-topfile', or `--try-topdir'. These options will be ignored. Of +course you must still specify how to get to the buildmaster (with +`--connect', `--tryhost', etc). + + +File: buildbot.info, Node: Other Tools, Next: .buildbot config directory, Prev: Developer Tools, Up: Command-line tool + +8.3 Other Tools +=============== + +These tools are generally used by buildmaster administrators. + +* Menu: + +* sendchange:: +* debugclient:: + + +File: buildbot.info, Node: sendchange, Next: debugclient, Prev: Other Tools, Up: Other Tools + +8.3.1 sendchange +---------------- + +This command is used to tell the buildmaster about source changes. It +is intended to be used from within a commit script, installed on the +VC server. It requires that you have a PBChangeSource (*note +PBChangeSource::) running in the buildmaster (by being set in +`c['change_source']'). + + buildbot sendchange --master MASTERHOST:PORT --username USER FILENAMES.. + + There are other (optional) arguments which can influence the +`Change' that gets submitted: + +`--branch' + This provides the (string) branch specifier. If omitted, it + defaults to None, indicating the "default branch". All files + included in this Change must be on the same branch. + +`--category' + This provides the (string) category specifier. If omitted, it + defaults to None, indicating "no category". The category + property is used by Schedulers to filter what changes they + listen to. + +`--revision_number' + This provides a (numeric) revision number for the change, used + for VC systems that use numeric transaction numbers (like + Subversion). + +`--revision' + This provides a (string) revision specifier, for VC systems that + use strings (Arch would use something like patch-42 etc). + +`--revision_file' + This provides a filename which will be opened and the contents + used as the revision specifier. This is specifically for Darcs, + which uses the output of `darcs changes --context' as a revision + specifier. This context file can be a couple of kilobytes long, + spanning a couple lines per patch, and would be a hassle to pass + as a command-line argument. + +`--comments' + This provides the change comments as a single argument. You may + want to use `--logfile' instead. + +`--logfile' + This instructs the tool to read the change comments from the + given file. If you use `-' as the filename, the tool will read + the change comments from stdin. + + +File: buildbot.info, Node: debugclient, Prev: sendchange, Up: Other Tools + +8.3.2 debugclient +----------------- + + buildbot debugclient --master MASTERHOST:PORT --passwd DEBUGPW + + This launches a small Gtk+/Glade-based debug tool, connecting to +the buildmaster's "debug port". This debug port shares the same port +number as the slaveport (*note Setting the slaveport::), but the +`debugPort' is only enabled if you set a debug password in the +buildmaster's config file (*note Debug options::). The `--passwd' +option must match the `c['debugPassword']' value. + + `--master' can also be provided in `.debug/options' by the +`master' key. `--passwd' can be provided by the `debugPassword' key. + + The `Connect' button must be pressed before any of the other +buttons will be active. This establishes the connection to the +buildmaster. The other sections of the tool are as follows: + +`Reload .cfg' + Forces the buildmaster to reload its `master.cfg' file. This is + equivalent to sending a SIGHUP to the buildmaster, but can be + done remotely through the debug port. Note that it is a good + idea to be watching the buildmaster's `twistd.log' as you reload + the config file, as any errors which are detected in the config + file will be announced there. + +`Rebuild .py' + (not yet implemented). The idea here is to use Twisted's + "rebuild" facilities to replace the buildmaster's running code + with a new version. Even if this worked, it would only be used + by buildbot developers. + +`poke IRC' + This locates a `words.IRC' status target and causes it to emit a + message on all the channels to which it is currently connected. + This was used to debug a problem in which the buildmaster lost + the connection to the IRC server and did not attempt to + reconnect. + +`Commit' + This allows you to inject a Change, just as if a real one had + been delivered by whatever VC hook you are using. You can set + the name of the committed file and the name of the user who is + doing the commit. Optionally, you can also set a revision for + the change. If the revision you provide looks like a number, it + will be sent as an integer, otherwise it will be sent as a + string. + +`Force Build' + This lets you force a Builder (selected by name) to start a + build of the current source tree. + +`Currently' + (obsolete). This was used to manually set the status of the given + Builder, but the status-assignment code was changed in an + incompatible way and these buttons are no longer meaningful. + + + +File: buildbot.info, Node: .buildbot config directory, Prev: Other Tools, Up: Command-line tool + +8.4 .buildbot config directory +============================== + +Many of the `buildbot' tools must be told how to contact the +buildmaster that they interact with. This specification can be +provided as a command-line argument, but most of the time it will be +easier to set them in an "options" file. The `buildbot' command will +look for a special directory named `.buildbot', starting from the +current directory (where the command was run) and crawling upwards, +eventually looking in the user's home directory. It will look for a +file named `options' in this directory, and will evaluate it as a +python script, looking for certain names to be set. You can just put +simple `name = 'value'' pairs in this file to set the options. + + For a description of the names used in this file, please see the +documentation for the individual `buildbot' sub-commands. The +following is a brief sample of what this file's contents could be. + + # for status-reading tools + masterstatus = 'buildbot.example.org:12345' + # for 'sendchange' or the debug port + master = 'buildbot.example.org:18990' + debugPassword = 'eiv7Po' + +`masterstatus' + Location of the `client.PBListener' status port, used by + `statuslog' and `statusgui'. + +`master' + Location of the `debugPort' (for `debugclient'). Also the + location of the `pb.PBChangeSource' (for `sendchange'). Usually + shares the slaveport, but a future version may make it possible + to have these listen on a separate port number. + +`debugPassword' + Must match the value of `c['debugPassword']', used to protect the + debug port, for the `debugclient' command. + +`username' + Provides a default username for the `sendchange' command. + + + The following options are used by the `buildbot try' command +(*note try::): + +`try_connect' + This specifies how the "try" command should deliver its request + to the buildmaster. The currently accepted values are "ssh" and + "pb". + +`try_builders' + Which builders should be used for the "try" build. + +`try_vc' + This specifies the version control system being used. + +`try_branch' + This indicates that the current tree is on a non-trunk branch. + +`try_topdir' + +`try_topfile' + Use `try_topdir' to explicitly indicate the top of your working + tree, or `try_topfile' to name a file that will only be found in + that top-most directory. + +`try_host' + +`try_username' + +`try_dir' + When try_connect is "ssh", the command will pay attention to + `try_host', `try_username', and `try_dir'. + +`try_username' + +`try_password' + +`try_master' + Instead, when `try_connect' is "pb", the command will pay + attention to `try_username', `try_password', and `try_master'. + +`try_wait' + +`masterstatus' + `try_wait' and `masterstatus' are used to ask the "try" command + to wait for the requested build to complete. + + + +File: buildbot.info, Node: Resources, Next: Developer's Appendix, Prev: Command-line tool, Up: Top + +9 Resources +*********** + +The Buildbot's home page is at `http://buildbot.sourceforge.net/' + + For configuration questions and general discussion, please use the +`buildbot-devel' mailing list. The subscription instructions and +archives are available at +`http://lists.sourceforge.net/lists/listinfo/buildbot-devel' + + +File: buildbot.info, Node: Developer's Appendix, Next: Index of Useful Classes, Prev: Resources, Up: Top + +Developer's Appendix +******************** + +This appendix contains random notes about the implementation of the +Buildbot, and is likely to only be of use to people intending to +extend the Buildbot's internals. + + The buildmaster consists of a tree of Service objects, which is +shaped as follows: + + BuildMaster + ChangeMaster (in .change_svc) + [IChangeSource instances] + [IScheduler instances] (in .schedulers) + BotMaster (in .botmaster) + [IBuildSlave instances] + [IStatusTarget instances] (in .statusTargets) + + The BotMaster has a collection of Builder objects as values of its +`.builders' dictionary. + + +File: buildbot.info, Node: Index of Useful Classes, Next: Index of master.cfg keys, Prev: Developer's Appendix, Up: Top + +Index of Useful Classes +*********************** + +This is a list of all user-visible classes. There are the ones that +are useful in `master.cfg', the buildmaster's configuration file. +Classes that are not listed here are generally internal things that +admins are unlikely to have much use for. + +Change Sources +============== + + +* Menu: + +* buildbot.changes.bonsaipoller.BonsaiPoller: BonsaiPoller. (line 6) +* buildbot.changes.freshcvs.FreshCVSSource: CVSToys - PBService. + (line 6) +* buildbot.changes.mail.BonsaiMaildirSource: BonsaiMaildirSource. + (line 6) +* buildbot.changes.mail.FCMaildirSource: FCMaildirSource. (line 6) +* buildbot.changes.mail.SVNCommitEmailMaildirSource: SVNCommitEmailMaildirSource. + (line 6) +* buildbot.changes.mail.SyncmailMaildirSource: SyncmailMaildirSource. + (line 6) +* buildbot.changes.p4poller.P4Source: P4Source. (line 6) +* buildbot.changes.pb.PBChangeSource: PBChangeSource. (line 6) +* buildbot.changes.svnpoller.SVNPoller: SVNPoller. (line 6) + +Schedulers and Locks +==================== + + +* Menu: + +* buildbot.locks.LockAccess: Interlocks. (line 6) +* buildbot.locks.MasterLock: Interlocks. (line 6) +* buildbot.locks.SlaveLock: Interlocks. (line 6) +* buildbot.scheduler.AnyBranchScheduler: AnyBranchScheduler. (line 6) +* buildbot.scheduler.Dependent: Dependent Scheduler. + (line 6) +* buildbot.scheduler.Nightly: Nightly Scheduler. (line 6) +* buildbot.scheduler.Periodic: Periodic Scheduler. (line 6) +* buildbot.scheduler.Scheduler: Scheduler Scheduler. + (line 6) +* buildbot.scheduler.Triggerable: Triggerable Scheduler. + (line 6) +* buildbot.scheduler.Try_Jobdir <1>: try. (line 32) +* buildbot.scheduler.Try_Jobdir: Try Schedulers. (line 6) +* buildbot.scheduler.Try_Userpass <1>: try. (line 32) +* buildbot.scheduler.Try_Userpass: Try Schedulers. (line 6) + +Build Factories +=============== + + +* Menu: + +* buildbot.process.factory.BasicBuildFactory: BuildFactory. (line 6) +* buildbot.process.factory.BasicSVN: BuildFactory. (line 6) +* buildbot.process.factory.BuildFactory: BuildFactory. (line 6) +* buildbot.process.factory.CPAN: CPAN. (line 6) +* buildbot.process.factory.Distutils: Python distutils. (line 6) +* buildbot.process.factory.GNUAutoconf: GNUAutoconf. (line 6) +* buildbot.process.factory.QuickBuildFactory: Quick builds. (line 6) +* buildbot.process.factory.Trial: Python/Twisted/trial projects. + (line 6) + +Build Steps +=========== + + +* Menu: + +* buildbot.steps.maxq.MaxQ: Index of Useful Classes. + (line 73) +* buildbot.steps.python.BuildEPYDoc: BuildEPYDoc. (line 6) +* buildbot.steps.python.PyFlakes: PyFlakes. (line 6) +* buildbot.steps.python.PyLint: PyLint. (line 6) +* buildbot.steps.python_twisted.BuildDebs: Python/Twisted/trial projects. + (line 6) +* buildbot.steps.python_twisted.HLint: Python/Twisted/trial projects. + (line 6) +* buildbot.steps.python_twisted.ProcessDocs: Python/Twisted/trial projects. + (line 6) +* buildbot.steps.python_twisted.RemovePYCs: Python/Twisted/trial projects. + (line 6) +* buildbot.steps.python_twisted.Trial: Python/Twisted/trial projects. + (line 6) +* buildbot.steps.shell.Compile: Compile. (line 6) +* buildbot.steps.shell.Configure: Configure. (line 6) +* buildbot.steps.shell.PerlModuleTest: PerlModuleTest. (line 6) +* buildbot.steps.shell.SetProperty: SetProperty. (line 6) +* buildbot.steps.shell.ShellCommand: ShellCommand. (line 6) +* buildbot.steps.shell.Test: Test. (line 6) +* buildbot.steps.shell.TreeSize: TreeSize. (line 6) +* buildbot.steps.source.Arch: Arch. (line 6) +* buildbot.steps.source.Bazaar: Bazaar. (line 6) +* buildbot.steps.source.Bzr: Bzr. (line 6) +* buildbot.steps.source.CVS: CVS. (line 6) +* buildbot.steps.source.Darcs: Darcs. (line 6) +* buildbot.steps.source.Git <1>: Index of Useful Classes. + (line 73) +* buildbot.steps.source.Git: Git. (line 6) +* buildbot.steps.source.Mercurial: Mercurial. (line 6) +* buildbot.steps.source.P4: P4. (line 6) +* buildbot.steps.source.SVN: SVN. (line 6) +* buildbot.steps.transfer.DirectoryUpload: Transferring Files. + (line 6) +* buildbot.steps.transfer.FileDownload: Transferring Files. (line 6) +* buildbot.steps.transfer.FileUpload: Transferring Files. (line 6) + +Status Targets +============== + + +* Menu: + +* buildbot.status.client.PBListener: PBListener. (line 6) +* buildbot.status.html.Waterfall: HTML Waterfall. (line 6) +* buildbot.status.mail.MailNotifier: MailNotifier. (line 6) +* buildbot.status.web.baseweb.WebStatus: WebStatus. (line 6) +* buildbot.status.words.IRC: IRC Bot. (line 6) + + +File: buildbot.info, Node: Index of master.cfg keys, Next: Index, Prev: Index of Useful Classes, Up: Top + +Index of master.cfg keys +************************ + +This is a list of all of the significant keys in master.cfg . Recall +that master.cfg is effectively a small python program with exactly one +responsibility: create a dictionary named `BuildmasterConfig'. The +keys of this dictionary are listed here. The beginning of the +master.cfg file typically starts with something like: + + BuildmasterConfig = c = {} + + Therefore a config key of `change_source' will usually appear in +master.cfg as `c['change_source']'. + + +* Menu: + +* c['buildbotURL']: Defining the Project. + (line 24) +* c['builders']: Defining Builders. (line 6) +* c['change_source']: Change Sources and Schedulers. + (line 6) +* c['debugPassword']: Debug options. (line 6) +* c['logCompressionLimit']: Defining the Project. + (line 36) +* c['manhole']: Debug options. (line 17) +* c['mergeRequests']: Merging BuildRequests. + (line 6) +* c['projectName']: Defining the Project. + (line 15) +* c['projectURL']: Defining the Project. + (line 19) +* c['properties']: Defining Global Properties. + (line 6) +* c['schedulers']: Change Sources and Schedulers. + (line 13) +* c['slavePortnum']: Setting the slaveport. + (line 6) +* c['slaves']: Buildslave Specifiers. + (line 6) +* c['sources']: Change Sources and Schedulers. + (line 6) +* c['status']: Defining Status Targets. + (line 11) + + +File: buildbot.info, Node: Index, Prev: Index of master.cfg keys, Up: Top + +Index +***** + + +* Menu: + +* addURL: BuildStep URLs. (line 6) +* Arch Checkout: Arch. (line 6) +* Bazaar Checkout: Bazaar. (line 6) +* Builder: Builder. (line 6) +* BuildRequest: BuildRequest. (line 6) +* BuildSet: BuildSet. (line 6) +* BuildStep URLs: BuildStep URLs. (line 6) +* Bzr Checkout: Bzr. (line 6) +* Configuration: Configuration. (line 6) +* CVS Checkout: CVS. (line 6) +* Darcs Checkout: Darcs. (line 6) +* Dependencies: Dependent Scheduler. + (line 6) +* Dependent: Dependent Scheduler. + (line 6) +* email: MailNotifier. (line 6) +* File Transfer: Transferring Files. (line 6) +* Git Checkout: Git. (line 6) +* installation: Installing the code. + (line 6) +* introduction: Introduction. (line 6) +* IRC: IRC Bot. (line 6) +* links: BuildStep URLs. (line 6) +* locks: Interlocks. (line 6) +* logfiles: Logfiles. (line 6) +* LogLineObserver: Adding LogObservers. + (line 6) +* LogObserver: Adding LogObservers. + (line 6) +* mail: MailNotifier. (line 6) +* Mercurial Checkout: Mercurial. (line 6) +* PBListener: PBListener. (line 6) +* Perforce Update: P4. (line 6) +* Philosophy of operation: History and Philosophy. + (line 6) +* Properties <1>: Using Build Properties. + (line 6) +* Properties <2>: Defining Global Properties. + (line 6) +* Properties <3>: Buildslave Specifiers. + (line 33) +* Properties <4>: Change Sources and Schedulers. + (line 41) +* Properties: Build Properties. (line 6) +* Scheduler: Schedulers. (line 6) +* statusgui: statusgui. (line 6) +* SVN Checkout: SVN. (line 6) +* treeStableTimer: BuildFactory Attributes. + (line 8) +* Triggers: Triggerable Scheduler. + (line 6) +* Users: Users. (line 6) +* Version Control: Version Control Systems. + (line 6) +* Waterfall: HTML Waterfall. (line 6) +* WebStatus: WebStatus. (line 6) +* WithProperties: Using Build Properties. + (line 34) + + |