gpt4 book ai didi

python - 自定义 buildbot 步骤类 - 如何使用 remoteCommand/remoteShellCommand 制作自己的步骤类

转载 作者:行者123 更新时间:2023-12-01 05:16:11 26 4
gpt4 key购买 nike

我正在尝试编写一个自定义步骤,它将运行几个命令,并根据某些条件返回 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 命令做了三件事:

  1. 删除旧报告
  2. 生成新报告
  3. 将报告复制到 www 文件夹

返回值将是等效的 bash 脚本之一,您可以使用 bash 来返回您想要的任何内容

另一个选项是向您的构建添加多个步骤

关于python - 自定义 buildbot 步骤类 - 如何使用 remoteCommand/remoteShellCommand 制作自己的步骤类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23193025/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com