在buildbot中的shellcommand的evaluatecommand中添加邮件通知

时间:2016-03-27 09:35:28

标签: buildbot

基本上我继承了ShellCommand来覆盖evaluatecommand。 在evaluatecommand中,我解析日志并找到包的实际维护者以发送邮件通知。

除了邮件通知之外的所有内容都无法正常工作。

    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 中添加邮件通知程序时,它可以正常工作,但在evaluate命令中不起作用。 任何指针都会受到赞赏。

1 个答案:

答案 0 :(得分:1)

我不是buildbot专家,我刚刚开始在我的新工作中使用它。但在这里我认为MailNotifier与主服务器相关,更准确地说与配置相关。对于ShellCommand,我认为主服务器在加载其配置时执行__init__。但我认为evaluateCommand只能在运行时由奴隶执行,而且他们无法改变主人的配置......

这里我们编写了一个外部脚本来发送失败构建的个性化邮件。它有一个建筑师,每天一次,每天早上在夜间建筑完成之后和人们到达办公室之前触发它。我们将调查如何更普遍地这样做,因为我们的项目中只有一个具有此功能,其他项目的失败在发送给每个人的一般邮件中汇总。也许与SetProperty有关,但我现在还不知道......