【问题标题】:How do I use copy mode when checking out multiple git repositories in buildbot在 buildbot 中签出多个 git 存储库时如何使用复制模式
【发布时间】:2012-02-28 19:31:42
【问题描述】:

我有多个 git 存储库,它们之间存在一些相互依赖关系。在进行完整的系统构建时,我需要检查所有这些。
使用 buildbot,我可以将 mode='clobber' 参数用于 Git 源类构造函数,但这会导致每次都检出所有存储库:

factory.addStep(Git(repourl='ssh://build@build/repo1', mode='clobber', workdir='build/repo1'))
factory.addStep(Git(repourl='ssh://build@build/repo2', mode='clobber', workdir='build/repo2'))
factory.addStep(Git(repourl='ssh://build@build/repo3', mode='clobber', workdir='build/repo3'))

我想使用mode='copy',但是当我这样做时,所有三个存储库的源都会在同一个位置签出,例如。 .../source/ 而不是 .../source/repo1 .../source/repo2 .../source/repo3

有没有办法指示 buildbot 分别保留每个存储库的干净副本?

提前致谢!

【问题讨论】:

  • 你可以使用 subrepos 来捆绑不同的 repos 吗?
  • 这可能是我唯一的选择...由于官僚问题,我试图避免这种情况。

标签: git buildbot


【解决方案1】:

使用 buildbot 0.8.5 及更高版本,您可以使用新的主端源步骤(位于buildbot.steps.source.git.Git 而不是builbot.steps.source.Git),然后Git(..., mode='full', ...) 将执行结帐加上git clean -xfd

此外,正在开展工作以正确支持对多个源代码的使用,这将在 buildbot 0.8.7 发布时包含在内。

【讨论】:

    【解决方案2】:

    您应该考虑使用将由 buildbot 在source/ 中签出的父存储库。
    除了父仓库会将您的所有其他仓库引用为 submodules
    并且当子模块在父 repo 中签出时,它将在其自己的 (repo1, repo2, ...) 目录中签出。

    您只需调整 buildbot Git parameters 以考虑子模块。

    submodules
    

    (可选):在初始化/更新 Git 存储库时,这决定 buildbot 是否应该考虑 git 子模块。
    默认值:假。

    【讨论】:

    • 听起来这可能是我唯一的选择,除了改变 buildbot 来获取额外的参数......
    猜你喜欢
    • 1970-01-01
    • 2013-07-29
    • 2017-01-20
    • 1970-01-01
    • 1970-01-01
    • 2011-10-29
    • 2017-09-30
    • 1970-01-01
    • 2019-05-06
    相关资源
    最近更新 更多