2016-03-27 2 views
0

私は基本的に評価コマンドを上書きするためにShellCommandを継承しました。 評価コマンドでは、ログを解析して、メール通知を送信するパッケージの実際の管理者を見つけます。buildbotのシェルコマンドの評価コマンドでメール通知を追加

郵便通知以外はすべて正常に動作しません。

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私は、スレーブによって実行時にのみ実行され、マスターの設定を変更することはできないと考えています。

ここでは、失敗したビルド用のパーソナライズドメールを送信するための外部スクリプトを作成しました。それには、夜間のビルドが完了した後、そして人々がオフィスに到着する前に、1日に1回、早朝にトリガーするビルダーがあります。私たちのプロジェクトのうちの1つだけがこの機能を持っているので、これをより一般的に行う方法を調査します。他のプロジェクトの失敗は全員に送信される一般的なメールに要約されます。たぶん、SetPropertyと関係がありますが、今は言えません。

関連する問題