1

我正在尝试使用 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),但似乎上述两个选项之一应该工作。

这是我为使其工作所做的工作:

  1. 像第一个示例一样添加项目。
  2. 从 Cruisecontrol.rb 的 repo 副本中删除除第一个以外的所有 changset。
  3. 只拉了我想要的分支。
  4. 为 Cruisecontrol.rb 的 hgrc 添加了以下别名:

    pull = pull --branch development
    
  5. 修改 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 的构造中执行此操作,因为所有文档似乎都表明这将得到支持。

4

0 回答 0