Python Buildbot为某些调度程序停用邮件通知程序(不适用于构建程序)

Python Buildbot为某些调度程序停用邮件通知程序(不适用于构建程序),python,buildbot,email-notifications,Python,Buildbot,Email Notifications,我有一个buildbot和两个构建者一起运行。第一个构建器执行构建步骤,然后(通过triggerable scheduler)触发执行测试的第二个构建器。有3个调度程序:SingleBranch、Force和try,它们触发第一个生成器,还有2个邮件通知程序: for mode, builders in (('warnings', ['Build', 'Test']), ('passing', ['Test'])): c['status'].appen

我有一个buildbot和两个构建者一起运行。第一个构建器执行构建步骤,然后(通过triggerable scheduler)触发执行测试的第二个构建器。有3个调度程序:SingleBranch、Force和try,它们触发第一个生成器,还有2个邮件通知程序:

for mode, builders in (('warnings', ['Build', 'Test']),
                   ('passing', ['Test'])):
   c['status'].append(MailNotifier(fromaddr='...',
                                   sendToInterestedUsers=True,
                                   extraRecipients=['...'],
                                   mode=mode,
                                   builders=builders,
                                   ))
因此,一个通知程序为构建器和测试构建器发送失败报告,另一个通知程序仅为测试构建器发送成功报告(这意味着构建也成功)。当前,邮件通知程序为激活生成生成器的所有三个调度程序发送报告。 问题:是否可以让通知程序只为SingleBranch调度程序工作


提前谢谢。

要做到这一点,没有简单的方法。但是,您可以做您想做的事情:

class MyMailNotifier(MailNotifier):
    def isMailNeeded(self, build, results):
        if build.properties.getProperty('scheduler') == '<SingleBranchSchedulerName>':
            return MailNotifier.isMailNeeded(self, build, results)
        else:
            return False
类MyMailNotifier(MailNotifier):
def ISmailRequired(自我、构建、结果):
如果build.properties.getProperty('scheduler')='':
返回MailNotifier.isMailRequired(自我、构建、结果)
其他:
返回错误

虽然这段代码没有经过测试,但我很有信心它能满足您的需求。

谢谢,这是个好主意。尽管如此,testbuilder的调度器始终是可触发的,所以我不能不修改就使用这段代码。但我将尝试通过另一个参数传递上一个(建筑)生成器的调度程序。