使用构建机器人源步骤:为什么不能通过插值设置'codebase',而'repourl'可以?



我有一个工厂,我在几个构建器中使用,我通过util.Propertyutil.Interpolate设置构建器特定的设置。虽然这适用于repourlbranch,但它根本不适用于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)
    )
)

没有代码库部分,一切都很好。然后我认为我需要为某些情况设置代码库,所以我添加了代码库行,导致以下错误:

[-] Configuration Errors:
[-]   error while parsing config file: sequence item 1: expected
      string, Interpolate found traceback in logfile

有人知道为什么不可能通过插值设置codebase,而用repourl做同样的事情是没有问题的吗?有人有一个想法,如何设置源代码步骤的代码库不同于",仍然不创建一个单独的工厂实例为每个构建器?

我认为这是Buildbot的一个bug。查看Buildbot 0.8.12源代码,我可以看到在buildbot/steps/source/git.pyclass Git中,renderables属性包括"codebase",这应该意味着您可以以这种方式使用Interpolate。可能有其他代码假设它可以在解析配置时将codebase解释为字符串。

换句话说,据我所知,你正在做一些Git类声称支持的事情。

看起来buildbot/steps/source/oldsource.py中的老式Git支持不支持codebase是可渲染的,但在我看来你并没有使用它。我不完全确定,虽然,因为我不确定steps.Git指的是什么。

最新更新