2009-11-05 2 views
8

Например:Как настроить CruiseControl.net для создания совместных проектов?

Я хочу построить Project A. Проект A Зависит от проекта B и C. Проект

Edit: Каждый проект имеет свой собственный ствол в SVN: [хранилище]/Projecta/багажник [хранилище]/ProjectB/багажник [хранилище]/ProjectC/багажник

Мой вопрос имеет несколько частей:

  1. Каков подход/конфигурация для CCNET для достижения этой «зависимой» сборки?
  2. Как настроить проекты так, чтобы был сконструирован проект B или C, затем он запускает сборку проекта A?
  3. Как каждый проект получает зависимости, каков масштабируемый подход/конфигурация для масштабирования процесса сборки?

Я новичок в CCNET, поэтому, если есть некоторые основные понятия, пожалуйста, не предполагайте, что я знаю о них. Детали моего друга :-D

Редактировать: Я использую SVN в качестве поставщика исходного кода.

+1

Не могли бы вы добавить более подробную информацию о своей структуре subversion для этих проектов? Все проекты находятся под одним багажником или существуют разные хранилища? –

+0

Спасибо, что спросил Джейсон, посмотрите на первое редактирование в вопросе. – Achilles

+0

http://confluence.public.thoughtworks.org/display/CCNET/Project+Trigger – Achilles

ответ

10

Вы можете использовать Project Trigger начать Projecta когда ProjectB успешно построен, как это:

<project name="ProjectA"> 
    <triggers> 
     <projectTrigger project="ProjectB"> 
      <triggerStatus>Success</triggerStatus> 
      <innerTrigger type="intervalTrigger" 
          seconds="60" 
          buildCondition="ForceBuild" /> 
     </projectTrigger> 
    </triggers> 
    ... 
</project> 

Это опрашивает результат сборки для ProjectB каждые 60 секунд, и если есть новая удачная сборка затем ProjectA является срабатывает. По умолчанию он будет искать проект на том же сервере CCNET, но вы можете указать его на другой с атрибутом serverUri. Вы можете добавить еще один триггер для ProjectA, если вы также захотите его создать, когда обновлен репозиторий Subversion.

Если вы используете сборки на одном сервере, вы можете поместить их в одну и ту же очередь, если они могут каким-либо образом мешать друг другу, иначе вы могли бы одновременно создать их одновременно.

+0

Это похоже на то, что мне нужно. Я заткнись и посмотрю, как хорошо это работает. – Achilles

3

Я создал систему построения около 20 решений и, возможно, 100 проектов с использованием сценариев NAnt с CCNet в качестве механизма сборки. Чтобы обрабатывать зависимости между решениями, я использовал инструмент на основе Java Ivy.

Ivy использует двоичные зависимости, в которых зависимость зависит от информации о версии. Результат компиляции хранится в двоичном репозитории, то есть в файловой системе или даже в подрывной деятельности. При компиляции бинарных зависимостей загружаются в файловую систему.

Этот подход отлично подходит для проекта, где у вас есть относительно свободные соединительные модули (представленные MS Solution), которые эволюционируют относительно независимо друг от друга. Для такой установки, как ваша, где у вас есть отдельный багажник для каждого проекта/решения, проекты/решения действительно должны быть слабо связаны, иначе вы обнаружите, что вы делаете очень много тегов и ветвлений, когда система становится больше.

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

Примечание: Ivy должен быть вызван как исполняемый файл командной строки, и вы не получите приятную интеграцию с Java Ant.

+0

Перемещение проектов в ту же туловище было бы идеальным, но я хочу, чтобы они легко организовывали их в репозитории. Во время процесса сборки я предполагаю, что построение структуры каталогов решения в рабочем каталоге позволит скомпилировать проекты вместе? – Achilles

Смежные вопросы