Package buildbot :: Package status :: Module tinderbox :: Class TinderboxMailNotifier
[hide private]
[frames] | no frames]

Class TinderboxMailNotifier

source code

                     base.StatusReceiver --+        
                                           |        
 twisted.application.service.Service --+   |        
                                       |   |        
twisted.application.service.MultiService --+        
                                           |        
                    util.ComparableMixin --+        
                                           |        
             base.StatusReceiverMultiService --+    
                                               |    
                               mail.MailNotifier --+
                                                   |
                                                  TinderboxMailNotifier

This is a Tinderbox status notifier. It can send e-mail to a number of different tinderboxes or people. E-mails are sent at the beginning and upon completion of each build. It can be configured to send out e-mails for only certain builds.

The most basic usage is as follows:

   TinderboxMailNotifier(fromaddr="buildbot@localhost",
                         tree="MyTinderboxTree",
                         extraRecipients=["tinderboxdaemon@host.org"])

The builder name (as specified in master.cfg) is used as the "build" tinderbox option.

Instance Methods [hide private]
 
__init__(self, fromaddr, tree, extraRecipients, categories=None, builders=None, relayhost="localhost", subject="buildbot %(result)s in %(builder)s", binaryURL="", logCompression="", errorparser="unix", columnName=None, useChangeTime=False)
@type fromaddr: string @param fromaddr: the email address to be used in the 'From' header.
source code
 
buildStarted(self, name, build) source code
 
buildMessage(self, name, build, results) source code

Inherited from mail.MailNotifier: buildFinished, builderAdded, builderChangedState, builderRemoved, disownServiceParent, sendMessage, setServiceParent, setup

Inherited from base.StatusReceiver: __providedBy__, buildETAUpdate, buildsetSubmitted, logChunk, logFinished, logStarted, requestCancelled, requestSubmitted, stepETAUpdate, stepFinished, stepStarted, stepText2Changed, stepTextChanged

Inherited from twisted.application.service.MultiService: __iter__, addService, getServiceNamed, privilegedStartService, removeService, startService, stopService

Inherited from twisted.application.service.Service: __getstate__, setName

Inherited from util.ComparableMixin: __cmp__, __hash__

Class Variables [hide private]
  compare_attrs = ["extraRecipients", "fromaddr", "categories", ...

Inherited from base.StatusReceiverMultiService: __implemented__, __provides__

Inherited from twisted.application.service.Service: name, parent, running

Method Details [hide private]

__init__(self, fromaddr, tree, extraRecipients, categories=None, builders=None, relayhost="localhost", subject="buildbot %(result)s in %(builder)s", binaryURL="", logCompression="", errorparser="unix", columnName=None, useChangeTime=False)
(Constructor)

source code 

@type  fromaddr: string
@param fromaddr: the email address to be used in the 'From' header.
@type  sendToInterestedUsers: boolean
@param sendToInterestedUsers: if True (the default), send mail to all 
                              of the Interested Users. If False, only
                              send mail to the extraRecipients list.

@type  extraRecipients: tuple of string
@param extraRecipients: 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.

@type  subject: string
@param subject: 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.

@type  mode: string (defaults to all)
@param mode: one of:
             - 'all': send mail about all builds, passing and failing
             - 'failing': only send mail about builds which fail
             - 'passing': only send mail about builds which succeed
             - 'problem': only send mail about a build which failed
             when the previous build passed
             - 'change': only send mail about builds who change status

@type  builders: list of strings
@param builders: 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.

@type  categories: list of strings
@param categories: a list of category names to serve status
                   information for. Defaults to None (all
                   categories). Use either builders or categories,
                   but not both.

@type  addLogs: boolean.
@param addLogs: 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.

@type  relayhost: string
@param relayhost: the host to which the outbound SMTP connection
                  should be made. Defaults to 'localhost'

@type  lookup:    implementor of {IEmailLookup}
@param lookup:    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.
                  
@type  customMesg: func
@param customMesg: A function that returns a tuple containing the text of
                   a custom message and its type. This function takes
                   the dict attrs which has the following values:

                   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, change).

                   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().

                   buildProperties - (Properties instance) Mapping of
                                     property names to values

                   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 - who made this change
                             revision - what VC revision is this change
                             branch - on what branch did this change occur
                             when - when did this change occur
                             files - what files were affected in this change
                             comments - 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 that contain the log name, log url,
                          and log contents as a list of strings.
@type  extraHeaders: dict
@param extraHeaders: A dict of extra headers to add to the mail. It's
                     best to avoid putting 'To', 'From', 'Date',
                     'Subject', or 'CC' in here. Both the names and
                     values may be WithProperties instances.

Parameters:
  • fromaddr (string) - the email address to be used in the 'From' header.
  • tree (string) - The Tinderbox tree to post to.
  • extraRecipients (tuple of string) - E-mail addresses of recipients. This should at least include the tinderbox daemon.
  • 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.
  • 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.
  • relayhost (string) - the host to which the outbound SMTP connection should be made. Defaults to 'localhost'
  • 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. This parameter is not significant for the tinderbox daemon.
  • binaryURL (string) - If specified, this should be the location where final binary for a build is located. (ie. http://www.myproject.org/nightly/08-08-2006.tgz) It will be posted to the Tinderbox.
  • logCompression (string) - The type of compression to use on the log. Valid options are"bzip2" and "gzip". gzip is only known to work on Python 2.4 and above.
  • errorparser (string) - The error parser that the Tinderbox server should use when scanning the log file. Default is "unix".
  • columnName (string) - When columnName is None, use the buildername as the Tinderbox column name. When columnName is a string this exact string will be used for all builders that this TinderboxMailNotifier cares about (not recommended). When columnName is a WithProperties instance it will be interpolated as such. See WithProperties for more detail.
  • useChangeTime (bool) - When True, the time of the first Change for a build is used as the builddate. When False, the current time is used as the builddate.
Overrides: twisted.application.service.MultiService.__init__

buildStarted(self, name, build)

source code 
Overrides: base.StatusReceiver.buildStarted

buildMessage(self, name, build, results)

source code 
Overrides: mail.MailNotifier.buildMessage

Class Variable Details [hide private]

compare_attrs

Value:
["extraRecipients", "fromaddr", "categories", "builders", "addLogs", "\
relayhost", "subject", "binaryURL", "tree", "logCompression", "errorpa\
rser", "columnName", "useChangeTime"]