我有一个工厂,我在几个构建器中使用,我通过util.Property
和util.Interpolate
设置了特定于构建器的设置。虽然这适用于repourl
和branch
,但它根本不适用于codebase
。下面的代码显示了我想在Buildbot配置中使用它的源步骤。
factory.addStep(
steps.Git(repourl=util.Interpolate('git://repo_base_path/%(prop:build_repository)s', default=''),
branch=util.Property('build_branch', default='master'),
mode='full',
codebase=util.Interpolate('%(prop:build_repository)s', default=''),
method='copy', submodules=True, clobberOnFailure=True)
)
)
没有代码库部分一切正常。然后我想我需要为某些情况设置代码库,所以我添加了codebase行,导致以下错误:
[-] Configuration Errors:
[-] error while parsing config file: sequence item 1: expected
string, Interpolate found traceback in logfile
有人知道为什么不能通过Interpolate设置codebase
,而对repourl
做同样的事情是没有问题的吗?
有人知道如何将源步骤的代码库设置为不同于''并且仍然没有为每个构建器创建单独的工厂实例?
对此有任何见解以及任何有用的建议都非常感谢。
答案 0 :(得分:1)
我认为这是Buildbot中的一个错误。查看Buildbot 0.8.12源代码,我可以在buildbot/steps/source/git.py
class Git
中看到renderables
属性包含"codebase"
,这意味着您可以使用Interpolate
1}}这样。据推测,其他一些代码假设它可以在解析配置时将codebase
解释为字符串。
换句话说,就我所知,你正在做一些Git
阶级声称支持的事情。
看起来buildbot/steps/source/oldsource.py
中的旧式Git支持不支持codebase
是可渲染的,但它并不像我一样使用它。但我并不完全确定,因为我不确定steps.Git
指的是什么。