Я пытаюсь использовать 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.
- Вытащил только нужную мне ветку.
Добавлен следующий псевдоним в hgrc cruisecontrol.rb:
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, поскольку вся документация указывает на то, что это будет поддерживаться.