Ссылка на артефакты сборки из сборки svn: external в проекте .Net - PullRequest
2 голосов
/ 03 октября 2008

Это продолжение вопроса из предыдущего вопроса Я задал

Теперь у меня есть каталог / externals в корне дерева моего проекта. Внутри этого у меня есть ссылка на другой проект. Я умею создавать сценарии для сборки всех своих внешних компонентов в основном проекте сценария NAnt. Результат этих сборок следующий:

/ внешние / внешнего project1 / сборки / buildartifacts / {DLLs | HTML | JS}

/ внешние / внешнего project2 / сборки / buildartifacts / {DLLs | HTML | JS}

Это все хорошо, но теперь мне интересно, как мой основной проект должен ссылаться на эти артефакты сборки. Например, предположим, что внешний проект создает библиотеку DLL, от которой зависит моя кодовая база. Должен ли я просто ссылаться на библиотеку DLL в каталоге артефактов сборки или я должен реализовать другую задачу NAnt, которая копирует их в папку / thirdparty / libs /?

Это означает, что моя сборка теперь зависит от возможности сборки этого внешнего проекта (который может быть как внутренним, так и сторонним). Стоит ли проверять последний набор артефактов сборки, чтобы убедиться, что основная сборка не сломается из-за поломки зависимых сборок?

Надеюсь, это достаточно ясно. Просто записав это, я как минимум прояснил проблему: -).

- Edit -

Спасибо, ребята. Я думаю, что я собираюсь реализовать «проверку ревизии», но поскольку сборки настолько быстрые, я не собираюсь проверять какие-либо артефакты сборки. Также придется выяснить, как обращаться с зависимостями внешнего проекта (например, prototype, swfobject и т. Д.).

Ответы [ 2 ]

1 голос
/ 03 октября 2008

Одна из моих рекомендаций (которые, как мне кажется, были взяты из книги Pragmatic Version Control Mike Mason), касающейся конкретной ревизии в вашей внешней системе, так что вы всегда получаете одну и ту же версию внешней зависимости, пока не решите явно измени это.

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

Если вы решили использовать косвенное обращение, и по какой-то причине сборка не удалась на внешнем устройстве, возможно, это будет пропущено, поскольку следующая задача nant подберет предыдущий двоичный файл.

1 голос
/ 03 октября 2008

Я бы сказал, что собираю их один раз и проверяю артефакты сборки в / public / ext / some_dependency / ref (очевидно, что имя этой папки зависит от вас :-)) и ссылаюсь на них оттуда.

Моя главная причина в том, что вам редко нужно создавать внешние зависимости каждый раз, когда вы делаете сборку вашего продукта. Вообще внешние зависимости должны меняться редко. Кроме того, вам нужен строгий контроль при изменении внешних зависимостей, чтобы избежать нестабильности на этапе кодирования.

В качестве дополнения к этому, я бы добавил отдельную задачу CI, которая бы строила только внешние зависимости и проверяла их в вышеупомянутой папке при каких-то внешних условиях - фиксация в папке источника зависимости или что-то еще.

...