Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import os
- from twisted.internet import defer
- from buildbot.process.build import Build
- LOGS_ROOT = '/var/log/buildbot/builds'
- class LogSaverBuild(Build):
- @defer.inlineCallbacks
- def saveLogToFile(self):
- logs_folder = '%s/%s' % (LOGS_ROOT, self.builder.name)
- if not os.path.exists(logs_folder):
- os.makedirs(logs_folder)
- log_path = '%s/%d.log' % (logs_folder, self.buildid)
- with open(log_path, 'w') as log_f:
- for step in self.executedSteps:
- log_data = yield self.master.data.get(('steps', step.stepid, 'logs', 'stdio', 'raw'))
- if not log_data:
- continue
- log_f.write(log_data['raw'])
- @defer.inlineCallbacks
- def buildFinished(self, text, results):
- res = yield Build.buildFinished(self, text, results)
- self.saveLogToFile()
- defer.returnValue(res)
- # example usage in config file
- from buildbot.config import BuilderConfig
- from buildbot.process.factory import BuildFactory
- build_factory = BuildFactory() # also add steps to factory as usual
- build_factory.buildClass = LogSaverBuild # setting custom build type
- # and setup builder as usual
- builder = BuilderConfig(
- name='builder_name',
- workernames=['worker1', 'worker2'],
- factory=build_factory
- )
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement