我正在尝试使用 Cruisecontrol.rb 进行持续集成。正在构建的代码位于 Mercurial 存储库中。
我希望 CI 仅在将更改推送到特定分支时运行。文档表明这是受支持的。我努力了:
./cruise add my_project -r repository_location -s hg -b development
我还尝试在项目的 Cruise_config.rb 中使用这种方法:
Project.configure do |project|
project.source_control = SourceControl::Mercurial.new(:repository => 'repository_location', :branch => 'development')
end
无论分支提示指向什么,这些似乎都会导致从提示构建项目。
最终,我可以让它工作(更多地基于我对 Mercurial 的了解而不是 Cruisecontrol.rb),但似乎上述两个选项之一应该工作。
这是我为使其工作所做的工作:
- 像第一个示例一样添加项目。
- 从 Cruisecontrol.rb 的 repo 副本中删除除第一个以外的所有 changset。
- 只拉了我想要的分支。
为 Cruisecontrol.rb 的 hgrc 添加了以下别名:
pull = pull --branch development
修改 Cruisecontrol/lib/source_control/mercurial/log_parser.rb 中的以下代码:
def parse(message) ... entries.each do |entry| next unless entry.match(/^changeset:\s+\d+:(.....)/) # Added only this line. ... end end
到目前为止,它似乎按预期工作。我将为其他分支添加构建,我们将拭目以待。
但是,我希望有人可以告诉我如何在 Cruisecontrol.rb 的构造中执行此操作,因为所有文档似乎都表明这将得到支持。