在Buildbot中,可以通过使用Properties来实现被触发的构建器向父构建器返回值。Properties是Buildbot中用于存储和传递数据的对象。可以在构建器中定义Properties,并在构建过程中对其进行设置和访问。
要让被触发的构建器向父构建器返回值,可以通过以下步骤实现:
以下是一个示例代码:
from buildbot.plugins import util
# 父构建器
f = util.BuildFactory()
f.addStep(util.Trigger(schedulerNames=["child_scheduler"], waitForFinish=True))
f.addStep(util.SetPropertyFromCommand(command=["echo", "Parent build"], property="result"))
# 子构建器
c = util.BuildFactory()
c.addStep(util.ShellCommand(command=["echo", "Child build"]))
c.addStep(util.SetPropertyFromCommand(command=["echo", "Child build result"], property="result"))
# 配置构建器
c['properties'] = {'result': 'child_result'}
f['properties'] = {'result': util.Property('child_result')}
# 配置触发器
t = util.Triggerable(name="child_scheduler")
t.setBuilderNames(["child_builder"])
# 添加构建器和触发器到Buildbot配置
c['builders'] = [util.BuilderConfig(name="child_builder", factory=c)]
f['builders'] = [util.BuilderConfig(name="parent_builder", factory=f)]
c['schedulers'] = [t]
# 返回父构建器的结果
f.addStep(util.SetPropertyFromCommand(command=["echo", util.Property('child_result')], property="result"))
# 配置Buildbot
c['schedulers'] = [t]
c['builders'] = [util.BuilderConfig(name="child_builder", factory=c)]
f['builders'] = [util.BuilderConfig(name="parent_builder", factory=f)]
在上述示例中,父构建器通过SetPropertyFromCommand步骤将子构建器的返回值存储到属性result中。子构建器通过SetPropertyFromCommand步骤将自己的返回值存储到属性result中。然后,父构建器通过SetPropertyFromCommand步骤获取子构建器的返回值,并将其存储到属性result中。
这样,父构建器就可以访问子构建器的返回值,并进行后续处理。
请注意,以上示例中的代码仅用于演示目的,实际使用时需要根据具体情况进行适当的修改和配置。
关于Buildbot的更多信息和详细配置,请参考腾讯云的产品文档:Buildbot产品介绍。
领取专属 10元无门槛券
手把手带您无忧上云