我正在尝试使用cruisecontrol.rb进行持续集成。正在构建的代码驻留在Mercurial存储库中。
我希望CI只有在将更改推送到特定分支时才能运行。文档指出this is supported。我试过了:
./cruise add my_project -r repository_location -s hg -b development
我还尝试在cruise_config.rb中使用this approach作为项目:
Project.configure do |project|
project.source_control = SourceControl::Mercurial.new(:repository => 'repository_location', :branch => 'development')
end
无论分支尖端指向什么,这两者似乎都会导致项目从尖端构建。
最终,我可以使它工作(更多基于我对Mercurial的了解而不是cruisecontrol.rb),但似乎上面两个选项中的一个应该有用。
以下是我的工作:
在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的构造中执行此操作,因为所有文档似乎都表明这将得到支持。