Как я могу предотвратить параллельные сборки в CruiseControl.NET? - PullRequest
11 голосов
/ 26 августа 2009

У нас есть несколько проектов в CruiseControl, и я заметил, что часто 2 или более проектов строятся одновременно. Это, кажется, вызывает конфликты. Часто сборка завершается неудачно, и если я смотрю на причину, ей не удается получить доступ к какому-либо файлу, и если я подожду, пока другая сборка не завершится, я могу просто принудительно собрать неудачную сборку, и она будет успешной.

Как я могу настроить CC так, чтобы он не запускал сборки одновременно, если они будут конфликтовать друг с другом?

Ответы [ 2 ]

10 голосов
/ 26 августа 2009

Вы должны сделать все сборки, которые зависят друг от друга, в одной очереди .

Элемент конфигурации проекта круиз-контроля имеет два атрибута для управления параллелизмом и порядком сборки:

<project name="Project 1" queue="Q1" queuePriority="1">

С помощью queue вы можете определить, в какую очередь будет создаваться проект, с помощью queuePriority вы можете определить порядок сборок при запросе нескольких сборок.

Итак, два проекта, которые нельзя построить параллельно, должны находиться в одной очереди, скажем, queue="Q1". Когда второй проект зависит от первого, второй проект должен иметь более высокий приоритет, чем первый.

7 голосов
/ 26 августа 2009

Вы можете использовать функцию Блокировка , чтобы определить очереди, которые не должны запускаться одновременно.

Это доступно в версии 1.4.3

Образец из документации:

<cruisecontrol>
  <queue name="Q1" lockqueues="Q2"/>
  <queue name="Q2" lockqueues="Q1"/>

  <project name="MyFirstProject" queue="Q1" queuePriority="1">
    ...
  </project>
  ...

  <project name="MySecondProject" queue="Q2" queuePriority="1">
    ...
  </project>
  ...
</cruisecontrol>
...