【问题标题】:Buildbot and Multiple SVN BranchesBuildbot 和多个 SVN 分支
【发布时间】:2012-06-11 03:38:49
【问题描述】:

我的 SVN 存储库布局...

Project_Name(root)/trunk
            /branches/
            /branches/new_feature_of_trunk1
            /branches/new_feature_of_trunk2
            /tags/
            /tags/ETC1
            /tags/ETC2

我试图让 buildbot 构建我的存储库的多个分支,例如... /trunk 和 /branches/new_feature_of_trunk1 。这就是我编写代码的方式

from buildbot.changes.svnpoller import SVNPoller, split_file_branches
source_code_svn_url='http://domain.com/svn/Project_Name/'
c['change_source'].append(
    SVNPoller(
        svnurl=source_code_svn_url,
        split_file=split_file_branches,
        pollinterval=60,
        histmax=10,
    )
)

def modified_files(change):
    for name in change.files:
        if name.endswith(".c"):
            return True
        elif name.endswith(".h"):
            return True
    return False

from buildbot import scheduler
from buildbot.changes.filter import ChangeFilter
s1=scheduler.AnyBranchScheduler(
    name="Project_Test",
    treeStableTimer=2*60,
    change_filter=ChangeFilter(
        branch=[
            'trunk',
            'branches/new_feature_of_trunk1'
        ]
    ),
    builderNames=[
        "Windows-x64-VS10",
    ],
    fileIsImportant=modified_files
)

c['schedulers']=[s1]

from buildbot.process import factory
from buildbot.steps import source,shell
from buildbot.process.properties import WithProperties
from buildbot.config import BuilderConfig
step_source_svn=source.SVN(
    mode='copy',
    baseURL=source_code_svn_url,
    defaultBranch='trunk',
    retry=(30,2)
)

f2=factory.BuildFactory()
f2.addStep(step_source_svn)
f2.addStep(
    shell.Compile(
        command=[
            "devenv.com",
            "MakeMe.sln",
            "/build",
            "Release^|Win32"
        ],
        logEnviron=False
    )
)

问题是这个.. 我知道我添加了 defaultBranch='trunk'。但为什么它只结帐行李箱 不是整个根?然后每当我删除它defaultBranch。我收到了这个错误

exceptions.RuntimeError: 属于 builder 的 SVN 源步骤 'Windows-x64-VS10' 不知道使用哪个分支。这表示 更改源没有指定分支和 defaultBranch 是无。

然后我发布的代码是让我的 buildmaster 告诉从站是否在 /trunk 或 /branches/new_feature_of_trunk1 中存在 modified_files 进行构建。如果在同一 SVN 修订版的两个分支中都有修改。那么它会在 /branches/new_feature_of_trunk1 之前先编译 /trunk...

但正如我所说 它不像我想要的那样工作

【问题讨论】:

    标签: python svn buildbot


    【解决方案1】:

    如果单个更改集包含两个分支中的更改,则应创建两个更改,并为每个更改触发一个构建。

    【讨论】:

      【解决方案2】:

      我知道的旧帖子,但对于其他人来说,这可能会有所帮助:

      您需要为您的分支创建调度程序。现在看起来你只有一个分支建筑,但如果你有一个通过分支的调度程序,它可能会更好。

      Nightly(name="new1",          builderNames=["Project_Test"], branch="branches/new_feature_of_trunk1", onlyIfChanged=True, hour=range(0, 24, 2)),
      Nightly(name="new2",          builderNames=["Project_Test"], branch="branches/new_feature_of_trunk2", onlyIfChanged=True, hour=range(0, 24, 2)),
      

      如果您希望一次检查所有内容并且您的编译步骤生成所有分支,则您的 source_code_svn_url 需要高一个分支

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2011-07-27
        • 2012-01-29
        • 2012-06-20
        • 2013-09-19
        • 2013-05-28
        • 1970-01-01
        • 2013-04-11
        相关资源
        最近更新 更多