场景:我有各种构建器,它们触发构建器B.构建器B需要知道一个特定的数据,这是一个字符串,因此它知道必须执行什么操作。
示例:3个构建器构建同一软件的3个版本,但每个构建器用于不同的架构;我需要将架构传递给构建器B,后者进行测试,因此它会对正确的架构进行测试。因此,当构建器启动时,触发B,将架构作为参数,并将其传递给步骤。
如何通过构建器A中的可触发构建器步骤传递值,然后构建器B中的步骤将使用该步骤吗?
我可以简单地避免使用构建器B并为每个构建器运行一个工作实例
任何代码示例都会非常受欢迎;在任何地方都找不到任何工作示例的痕迹。
更新
好吧,我猜我越来越近了;使用属性;你需要
导入属性
from buildbot.process.properties import Property
然后在可触发的步骤中,您需要创建一个属性
f.builderA.addStep (trigger.Trigger(schedulerNames= ['scheduler1']. set_properties={ "arch":Property("x86")}))
最后一步是插入参数并在builderB的步骤中使用它:
f.builderB.addStep(testarch (architecture=(Interpolate(%(prop:arch))))
问题是:我在重启master时遇到错误,因为我的步骤是期望一个字符串用于arch,而是说它得到一个" interpolate"
exceptions.TypeError:无法连接' str'和'插值'对象
为什么没有按预期传递字符串?我尝试将其转换为str(),它只是打印Interpolate命令,就像它没有被处理一样。