Добавление почтового уведомления в комманде shell команды в buildbot
По сути, я унаследовал ShellCommand, чтобы перезаписать команду оценки. При оценке команды я анализирую журнал и нахожу фактического сопровождающего пакета для отправки почтового уведомления.
Все, кроме mailnotification не работает нормально.
class CustomShellCommand(ShellCommand):
command = None
parser = None
haltOnFailure = True
buildername = ''
ci = None
def __init__(self,command, ci, buildername, **kwargs):
self.ci = ci
self.command = command
self.buildername = buildername
ShellCommand.__init__(self, **kwargs)
if len(self.command) > 0 and self.command[0] == 'make_isolated':
self.parser = ParseLog()
self.addLogObserver('stdio', self.parser)
self.setDefaultWorkdir("build")
def evaluateCommand(self, cmd):
if self.parser is not None:
self.parser.packages
for pkg in self.parser.packages:
emails = get_maintainer_emails()
if cmd.rc > 0:
mn = add_mail_notifiers([self.buildername], emails[-1])
self.ci.masterconfig['services'].append(mn)
return util.FAILURE
else:
return util.SUCCESS
Но когда я добавляю почтовые уведомления в init, это работает, но не работает в команде оценки. Любые указатели будут оценены.
1 ответ
Я не эксперт по buildbot, я только начал использовать его 2 месяца назад на моей новой работе. Но здесь я думаю, что MailNotifier связан с мастером, а точнее с конфигом. Для тебя ShellCommand
Я полагаю, мастер выполняет __init__
когда он загружает свой конфиг. Но evaluateCommand
Я думаю, что выполняется только во время выполнения ведомым, и они не могут изменить конфиг мастера...
Здесь мы написали внешний скрипт для отправки персонализированной почты для неудачных сборок. У него есть строитель, который запускает его один раз в день, рано утром после завершения ночных сборок и до прибытия людей в офис. Мы рассмотрим, как это сделать в более общем плане, поскольку эта функция есть только у одного из наших проектов, а сбои других проектов обобщаются в обычной почте, разосланной всем. Может быть, что-то делать с SetProperty
, но пока не могу сказать...