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

Как уже говорили другие - использование «динамического» ключевого слова в c # 4. Вот простой пример - он гораздо более лаконичен, чем «InvokeMethod»

dynamic xl = Activator.CreateInstance(Type.GetTypeFromProgID("Excel.Application"));
dynamic books = xl.Workbooks;
dynamic book = books.Add();

Console.WriteLine(books.Count);     //Writes 1

foreach (dynamic b in books)        
{
Console.WriteLine(b.Name);      //Writes "Book1"
}
8
задан Achilles 5 November 2009 в 20:32
поделиться

2 ответа

Вы можете использовать Триггер проекта для запуска 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.

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

10
ответ дан 5 December 2019 в 12:59
поделиться

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

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

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

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

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

3
ответ дан 5 December 2019 в 12:59
поделиться
Другие вопросы по тегам:

Похожие вопросы: