使用 Buildbot Source Step:为什么 'codebase' 不能通过插值设置而 'repourl' 可以?

With Buildbot Source Step: why can 'codebase' not be set via Interpolate while 'repourl' can?

我有一个在多个构建器中使用的工厂,我通过 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 中的错误。查看 Buildbot 0.8.12 源代码,我可以看到在 buildbot/steps/source/git.py 中,在 class Git 中,renderables 属性包括 "codebase",这应该意味着您可以使用 Interpolate这样。大概其他一些代码假设它可以在解析配置时将 codebase 解释为字符串。

换句话说,据我所知,您正在做 Git class 声称支持的事情。

看起来 buildbot/steps/source/oldsource.py 中的旧式 Git 支持不支持 codebase 作为可渲染的,但在我看来您正在使用那。不过,我不是很确定,因为我不确定 steps.Git 指的是什么。