Ртутные ветки, похоже, не соблюдаются CruiseControl - PullRequest
1 голос
/ 26 февраля 2012

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

    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, поскольку вся документация указывает на то, что это будет поддерживаться.

...