Добавление почтового уведомления в комманде 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, но пока не могу сказать...

Другие вопросы по тегам