def masterConfig(): c = {} from buildbot.config import BuilderConfig from buildbot.process.factory import BuildFactory from buildbot.plugins import steps, schedulers, reporters c['schedulers'] = [ schedulers.AnyBranchScheduler(name="sched", builderNames=["testy"]) ] f = BuildFactory() f.addStep(steps.ShellCommand(command='echo hello')) c['builders'] = [ BuilderConfig(name="testy", workernames=["local1"], factory=f) ] notifier = reporters.PushoverNotifier( '1234', 'abcd', mode="all", watchedWorkers=['local1'], messageFormatter=MessageFormatter(template='This is a message.'), messageFormatterMissingWorker=MessageFormatterMissingWorker( template='No worker.')) c['services'] = [ reporters.MailNotifier("*****@*****.**", mode="all"), notifier ] return c
def reconfigService(self, user_key, api_token, mode=("failing", "passing", "warnings"), tags=None, builders=None, buildSetSummary=False, messageFormatter=None, subject="Buildbot %(result)s in %(title)s on %(builder)s", schedulers=None, branches=None, priorities=None, otherParams=None, watchedWorkers=None, messageFormatterMissingWorker=None): if messageFormatter is None: messageFormatter = DefaultMessageFormatter(template_type='html', template_filename='default_notification.txt') if messageFormatterMissingWorker is None: messageFormatterMissingWorker = MessageFormatterMissingWorker( template_filename='missing_notification.txt') super(PushoverNotifier, self).reconfigService(mode, tags, builders, buildSetSummary, messageFormatter, subject, False, False, schedulers, branches, watchedWorkers, messageFormatterMissingWorker) self.user_key = user_key self.api_token = api_token if priorities is None: self.priorities = {} else: self.priorities = priorities if otherParams is None: self.otherParams = {} else: self.otherParams = otherParams self._http = yield httpclientservice.HTTPClientService.getService( self.master, 'https://api.pushover.net')
def reconfigService( self, mode=("failing", "passing", "warnings"), tags=None, builders=None, buildSetSummary=False, messageFormatter=None, subject="Buildbot %(result)s in %(title)s on %(builder)s", addLogs=False, addPatch=False, schedulers=None, branches=None, watchedWorkers=None, messageFormatterMissingWorker=None): self.mode = self.computeShortcutModes(mode) self.tags = tags self.builders = builders self.schedulers = schedulers self.branches = branches self.subject = subject self.addLogs = addLogs self.addPatch = addPatch if messageFormatter is None: messageFormatter = DefaultMessageFormatter() self.messageFormatter = messageFormatter if messageFormatterMissingWorker is None: messageFormatterMissingWorker = MessageFormatterMissingWorker() self.messageFormatterMissingWorker = messageFormatterMissingWorker self.buildSetSummary = buildSetSummary self._buildset_complete_consumer = None if watchedWorkers is None: self.watchedWorkers = () else: self.watchedWorkers = watchedWorkers
def reconfigService(self, secret, mode=("failing", "passing", "warnings"), tags=None, builders=None, buildSetSummary=False, messageFormatter=None, subject="Buildbot %(result)s in %(title)s on %(builder)s", schedulers=None, branches=None, levels=None, base_url='https://api.pushjet.io', watchedWorkers=None, messageFormatterMissingWorker=None): secret = yield self.renderSecrets(secret) if messageFormatter is None: messageFormatter = DefaultMessageFormatter(template_type='html', template_filename='default_notification.txt') if messageFormatterMissingWorker is None: messageFormatterMissingWorker = MessageFormatterMissingWorker( template_filename='missing_notification.txt') yield super().reconfigService(mode, tags, builders, buildSetSummary, messageFormatter, subject, False, False, schedulers, branches, watchedWorkers, messageFormatterMissingWorker) self.secret = secret if levels is None: self.levels = {} else: self.levels = levels self._http = yield httpclientservice.HTTPClientService.getService( self.master, base_url)
class WorkerMissingGenerator(util.ComparableMixin): compare_attrs = ['workers', 'formatter'] wanted_event_keys = [ ('workers', None, 'missing'), ] def __init__(self, workers=None, message_formatter=None): self.workers = workers self.formatter = message_formatter if self.formatter is None: self.formatter = MessageFormatterMissingWorker() def check(self): if not (self.workers == 'all' or self.workers is None or isinstance(self.workers, (list, tuple, set))): config.error( "workers must be 'all', None, or list of worker names") @defer.inlineCallbacks def generate(self, master, reporter, key, worker): if not self._is_message_needed(worker): return None msg = yield self.formatter.formatMessageForMissingWorker( master, worker) body = msg['body'].encode(ENCODING) if 'subject' in msg: subject = msg['subject'] else: subject = "Buildbot worker {name} missing".format(**worker) assert msg['type'] in ('plain', 'html'), \ "'{}' message type must be 'plain' or 'html'.".format(msg['type']) return { 'body': body, 'subject': subject, 'type': msg['type'], 'builder_name': None, 'results': None, 'builds': None, 'users': worker['notify'], 'patches': None, 'logs': None, 'worker': worker['name'] } def generate_name(self): name = self.__class__.__name__ if self.workers is not None: name += "_workers_" + "+".join(self.workers) return name def _is_message_needed(self, worker): return (self.workers == 'all' or worker['name'] in self.workers) and worker['notify']
def _create_default_generators(self): return [ BuildStatusGenerator( add_patch=True, message_formatter=MessageFormatter(template_type='html')), WorkerMissingGenerator( workers='all', message_formatter=MessageFormatterMissingWorker(template_type='html')), ]
def reconfigService(self, fromaddr, mode=("failing", "passing", "warnings"), tags=None, builders=None, addLogs=False, relayhost="localhost", buildSetSummary=False, subject="buildbot %(result)s in %(title)s on %(builder)s", lookup=None, extraRecipients=None, sendToInterestedUsers=True, messageFormatter=None, extraHeaders=None, addPatch=True, useTls=False, useSmtps=False, smtpUser=None, smtpPassword=None, smtpPort=25, name=None, schedulers=None, branches=None, messageFormatterMissingWorker=None): if extraRecipients is None: extraRecipients = [] self.extraRecipients = extraRecipients self.sendToInterestedUsers = sendToInterestedUsers self.fromaddr = fromaddr self.mode = self.computeShortcutModes(mode) self.tags = tags self.builders = builders self.schedulers = schedulers self.branches = branches self.addLogs = addLogs self.relayhost = relayhost self.subject = subject if lookup is not None: if isinstance(lookup, string_types): lookup = Domain(str(lookup)) self.lookup = lookup if messageFormatter is None: messageFormatter = DefaultMessageFormatter() self.messageFormatter = messageFormatter if messageFormatterMissingWorker is None: messageFormatterMissingWorker = MessageFormatterMissingWorker() self.messageFormatterMissingWorker = messageFormatterMissingWorker self.extraHeaders = extraHeaders self.addPatch = addPatch self.useTls = useTls self.useSmtps = useSmtps self.smtpUser = smtpUser self.smtpPassword = smtpPassword self.smtpPort = smtpPort self.buildSetSummary = buildSetSummary self._buildset_complete_consumer = None self.watched = []
def masterConfig(build_set_summary): c = {} from buildbot.config import BuilderConfig from buildbot.process.factory import BuildFactory from buildbot.plugins import steps, schedulers, reporters c['schedulers'] = [ schedulers.AnyBranchScheduler( name="sched", builderNames=["testy"]) ] f = BuildFactory() f.addStep(steps.ShellCommand(command='echo hello')) c['builders'] = [ BuilderConfig(name="testy", workernames=["local1"], factory=f) ] formatter = MessageFormatter(template='This is a message.') formatter_worker = MessageFormatterMissingWorker(template='No worker.') if build_set_summary: generators_mail = [ BuildSetStatusGenerator(mode='all'), WorkerMissingGenerator(workers='all'), ] generators_pushover = [ BuildSetStatusGenerator(mode='all', message_formatter=formatter), WorkerMissingGenerator(workers=['local1'], message_formatter=formatter_worker), ] else: generators_mail = [ BuildStatusGenerator(mode='all'), WorkerMissingGenerator(workers='all'), ] generators_pushover = [ BuildStatusGenerator(mode='all', message_formatter=formatter), WorkerMissingGenerator(workers=['local1'], message_formatter=formatter_worker), ] c['services'] = [ reporters.MailNotifier("*****@*****.**", generators=generators_mail), reporters.PushoverNotifier('1234', 'abcd', generators=generators_pushover) ] return c
def __init__(self, workers=None, message_formatter=None): self.workers = workers self.formatter = message_formatter if self.formatter is None: self.formatter = MessageFormatterMissingWorker()