Python 自定义buildbot步骤类-如何使用remoteCommand/remoteShellCommand创建自己的

Python 自定义buildbot步骤类-如何使用remoteCommand/remoteShellCommand创建自己的,python,buildbot,Python,Buildbot,我正在尝试编写一个自定义步骤,它将运行几个命令,并根据特定条件返回pas或fail 到目前为止,我能够将ShellCommand子类化;所以我可以在从机上执行shell命令。现在,下一步是编写不仅执行一个shell命令,而且执行各种shell命令的程序,并分析这些命令的结果并相应地执行 虽然我在这方面没有取得成功。到目前为止,我只能将ShellCommand子类化;但这只允许我运行一个命令。 我发现ShellCommand使用buildstep.remoteCommand和remoteShell

我正在尝试编写一个自定义步骤,它将运行几个命令,并根据特定条件返回pas或fail

到目前为止,我能够将ShellCommand子类化;所以我可以在从机上执行shell命令。现在,下一步是编写不仅执行一个shell命令,而且执行各种shell命令的程序,并分析这些命令的结果并相应地执行

虽然我在这方面没有取得成功。到目前为止,我只能将ShellCommand子类化;但这只允许我运行一个命令。 我发现ShellCommand使用buildstep.remoteCommand和remoteShellCommand;但是我尝试将buildstep.buildstep子类化的尝试失败了

我想要实现的目标是运行有限数量的python或shell命令(无需编写shell脚本并从python调用它;我能够做到这一点),并分析来自这些操作的结果,这样我就可以指示步骤是通过还是失败,以及记录了什么

到目前为止,这就是我所拥有的:

class myclass(build step.BuildStep)

    def __init__(self, **kwargs):
        buildstep.BuildStep.__init__(self, **kwargs)


    def start(self):

    cmd=buildstep.RemoteShellCommand({'command':"ls -la"})
    self.setupEnvironment(cmd)
    d=self.runCommand(cmd)
    return d
这将运行,并且我将在RemoteShell命令行上得到一个错误,即

exceptions.TypeError: __init__() takes at least 3 arguments (2 given)
我尝试了remoteCommand和remoteShellCommand,结果是一样的。 检查这两个参数的init,我看不到3个参数,只看到命令,所以我不确定到底出了什么问题。我甚至尝试使用**kwargs,但我得到一个错误,说kwargs没有定义(有一个博客的例子,它会使用kwargs;所以我尝试了,但它无论如何都不起作用)

这是remoteShellCommand的原始文档: [原始Buildbot API文档][1]

您知道我在哪里可以找到一个示例,实际演示如何实现这一点,或者至少您实际如何使用remoteCommand/remoteShellCommand?原始文档乱七八糟,甚至谷歌也很少返回比原始文档更模糊的结果


欢迎任何建议;在过去的3天里,我一直在兜圈子,不知道下一步该去哪里。

让shellcommand执行多个命令的一种方法是向它传递脚本,而不是命令,如本例所示:

class CoverageReport(ShellCommand):
    def __init__(self):
        self.coverage_path = '/var/www/coverage'
        command = '''rm -rf htmlcov
coverage html
cp htmlcov/* %s/''' % self.coverage_path
        description = 'Generating coverage report'
        workdir = 'build/python'
        self.url = "https://XXXXXXXX/coverage"
        ShellCommand.__init__(self, command=command, description=description, workdir=workdir)
此Shellcommand执行三件事:

  • 删除旧报告
  • 生成新报告
  • 将报告复制到www文件夹
  • 返回的值将是相当于bash脚本的值,您可能可以使用bash返回您想要的任何内容


    另一个选项是在构建中添加多个步骤

    谢谢;我知道我可以使用脚本,事实上这是我已经使用过的,但是处理错误和边缘情况非常复杂,这就是为什么我尝试将Buildstep子类化来定制它。直到今天,我仍然不知道为什么没有关于可用命令以及如何使用它们的文档。谢谢你的回复