Advertisement
MikeAlexeev

Untitled

Mar 28th, 2017
118
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.34 KB | None | 0 0
  1. import os
  2.  
  3. from twisted.internet import defer
  4. from buildbot.process.build import Build
  5.  
  6.  
  7. LOGS_ROOT = '/var/log/buildbot/builds'
  8.  
  9.  
  10. class LogSaverBuild(Build):
  11.     @defer.inlineCallbacks
  12.     def saveLogToFile(self):
  13.         logs_folder = '%s/%s' % (LOGS_ROOT, self.builder.name)
  14.         if not os.path.exists(logs_folder):
  15.             os.makedirs(logs_folder)
  16.  
  17.         log_path = '%s/%d.log' % (logs_folder, self.buildid)
  18.         with open(log_path, 'w') as log_f:
  19.             for step in self.executedSteps:
  20.                 log_data = yield self.master.data.get(('steps', step.stepid, 'logs', 'stdio', 'raw'))
  21.                 if not log_data:
  22.                     continue
  23.                 log_f.write(log_data['raw'])
  24.  
  25.     @defer.inlineCallbacks
  26.     def buildFinished(self, text, results):
  27.         res = yield Build.buildFinished(self, text, results)
  28.         self.saveLogToFile()
  29.         defer.returnValue(res)
  30.  
  31.  
  32. # example usage in config file
  33.  
  34. from buildbot.config import BuilderConfig
  35. from buildbot.process.factory import BuildFactory
  36.  
  37. build_factory = BuildFactory()  # also add steps to factory as usual
  38.  
  39. build_factory.buildClass = LogSaverBuild    # setting custom build type
  40.  
  41. # and setup builder as usual
  42. builder = BuilderConfig(
  43.     name='builder_name',
  44.     workernames=['worker1', 'worker2'],
  45.     factory=build_factory
  46. )
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement