我在Windows7上运行Buildbot版本0.8.8。
我有配置(master.cfg
)文件,它使用一个小技巧创建所有构建器。我从subversion中读取了一个XML文件,其中列出了构建器的所有步骤。类似的东西:
<Builder name="BuilderA" description="Builds the A project">
<Command name="Clean">-v -t realclean -p my\\projA</Command>
<Command name="Release">-v -t release -p my\\projA</Command>
</Builder>
<Builder name="BuilderB" description="Builds the B project">
<Command name="Clean">-v -t realclean -p my\\projB</Command>
<Command name="Release">-v -t release -p my\\projB</Command>
</Builder>
我们的想法是,任何开发人员都可以更改subversion中的XML文件,然后buildmaster可以重新启动,以便拥有新的buildbot配置。
我使用以下命令启动buildbot:buildbot start C:\master_dir
我面临的问题是,当我尝试restart
buildbot时,它会抱怨 buildmaster没有运行。深入研究来源,我发现在尝试打开buildbot\scripts\stop.py:34
文件时twisted.pid
失败了。
pidfile = os.path.join(basedir, 'twistd.pid')
try:
with open(pidfile, "rt") as f:
pid = int(f.read().strip())
except:
if not config['quiet']:
print "buildmaster not running"
return 0
我不知道这个twisted.pid
文件是什么以及为什么buildbot正在寻找这个?任何帮助或想法将不胜感激。感谢。
答案 0 :(得分:1)
我遇到了同样的问题。在Windows上似乎没有创建文件twistd.pid
。我不确定bug来自何处,但我向buildbot团队报告了这个错误:http://trac.buildbot.net/ticket/3512
作为解决方法,我现在添加到master.cfg中:
import os
if not os.path.exists("twistd.pid"):
with open("twistd.pid", "w") as pidfile:
pidfile.write("{}".format(os.getpid()))
编辑:实际上,停止后似乎没有删除PID文件......所以我尝试了更多:
else:
realpid = os.getpid()
filepid = 0
with open("twistd.pid", "r") as pidfile:
filepid = int(pidfile.read())
if filepid == 0 or filepid != realpid:
with open("twistd.pid", "w") as pidfile:
pidfile.write("{}".format(realpid))
它似乎有效,但是当你真的没有运行时试图停止buildbot会出现错误,因为PID文件会产生错误的PID并且它会尝试杀死它
答案 1 :(得分:0)
到目前为止,您提供的信息未能显示出来 任何事情都是错误的。
twistd.pid
是buildmaster的进程ID文件。它的存在
表示buildmaster正在运行。它缺席表明了这一点
buildmaster没有运行。
重新启动buildmaster意味着停止它然后启动它。停止 它使buildbot检查buildmaster的pid文件。如果没有pid 文件,然后它通知你buildmaster没有运行,和 开始吧。
所以: -
除非您知道buildmaster 是,否则此消息非常有序 重新启动时运行并观察此消息。你知道吗?
除非buildmaster也无法启动,否则该消息是无害的信息。 你知道它无法启动吗?
如果你知道buildbot运行时,buildbot说它不是, 当你试图重新启动它时,它无法启动,然后是第一个 我想知道的是:你运行什么命令重启 buildmaster以及你在什么目录中运行它?