无法重新启动buildbot主服务器

时间:2014-11-27 16:28:37

标签: python twisted buildbot

我在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正在寻找这个?任何帮助或想法将不胜感激。感谢。

2 个答案:

答案 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以及你在什么目录中运行它?