- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试编写一个自定义步骤,它将运行几个命令,并根据某些条件返回 pas 或失败。
到目前为止,我能够对 ShellCommand 进行子类化;这样我就可以在从机上执行 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
这将运行,我将在remoteShellCommand行上收到一个错误,说
exceptions.TypeError: __init__() takes at least 3 arguments (2 given)
我尝试了remoteCommand和remoteShellCommand,结果是相同的。检查两者的 init ,我看不到 3 个参数,而只看到命令,所以我不太确定出了什么问题。我什至尝试使用 **kwargs 但出现错误,指出 kwarg 未定义(博客中有一个示例,该示例将使用 kwargs;所以我尝试了,但无论如何它都不起作用)。
这是remoteShellCommand的原始文档:[原始 Buildbot API 文档][1]
你知道我在哪里可以找到一个实际向我展示如何完成此操作的示例,或者至少如何实际使用remoteCommand/remoteShellCommand?原始文档一团糟,即使谷歌返回的结果也很少比原始文档更晦涩难懂。
欢迎任何建议;过去三天我一直在兜圈子,不知道下一步该去哪里。
最佳答案
让 shell 命令执行多个命令的一种方法是向其传递脚本而不是命令,如本示例所示:
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)
这个 Shell 命令做了三件事:
返回值将是等效的 bash 脚本之一,您可以使用 bash 来返回您想要的任何内容
另一个选项是向您的构建添加多个步骤
关于python - 自定义 buildbot 步骤类 - 如何使用 remoteCommand/remoteShellCommand 制作自己的步骤类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23193025/
我正在尝试编写一个自定义步骤,它将运行几个命令,并根据某些条件返回 pas 或失败。 到目前为止,我能够对 ShellCommand 进行子类化;这样我就可以在从机上执行 shell 命令。现在,下一
我是一名优秀的程序员,十分优秀!