Packagerの主要部分。
def prepare(self):
client= pysvn.Client()
try:
print "checking out"
print self.src
client.checkout(self.src, self.working_dir)
except pysvn.ClientError, e:
print 'failed to checkout'
print e
pass
def build(self):
bdist = popen2.Popen3(
'python %s/setup.py %s'%(self.working_dir, self.subcommand),
capturestderr=True)
return os.WIFEXITED(bdist.wait())
デーモン化
class PackageDaemon(Daemon):
default_conf = '/home/nori/Desktop/work/autopackaging/my.conf'
section = 'Package'
def run(self):
server = SimpleXMLRPCServer(('localhost', 9000))
server.register_function(on_commit)
server.serve_forever()
buildbotなるものがあるので調べることにしよう。
3 件のコメント:
こうやってソースを見ると、serverを作るタイミングはroot setupな気がしてきた。そうしないと1000以下のportを使えない。たいしたことではないが。
Buildbotの発表資料:
build bot at pycon 2003
そんなことよりexceptionをどうしようか。(bool, result)のtupleを返してもいいが、面倒。
Pass error (exception) message to XMLRPC clien @ Twisted-Python
Transmitting exceptions through XML-RPC @ ASPN
まあ、この場合は外に出すrpcじゃないので全部通してもいいのだが。
pythonのxmlrpcのexception周りになにかあるらしい @ cherrypy
os.WIFEXITED, os.WEXITSTATUS @ google code
を見る限り、os.WTERMSIGも呼んでチェックするほうがよさそう。
コメントを投稿