2011-01-27 2 views
0

Я недавно был назначен команде разработчиков релизов, чтобы сделать процесс сборки более управляемым. В истории нашего продукта мы просто построили все в нашем хранилище для управления версиями с каждой сборкой, так как это не так уж и много значит для этого. Это включает сторонние продукты, для которых у нас есть источник (включая, например, корпоративную библиотеку), собственный собственный код инфраструктуры и, наконец, сам продукт. Однако после нескольких лет устойчивого роста продукта этот процесс стал очень громоздким.TFS: Как кэшировать фреймворки для облегчения процесса сборки?

Это означает, что мы хотели бы создать своего рода многоуровневую систему сборки, в которой только продукты (которые меняются каждый день) создаются ежедневно, в то время как наш рамочный код (который меняется гораздо реже) и наша третья сторона код (почти никогда) строятся только тогда, когда они меняются. У нас есть символ & исходный сервер, созданный для облегчения кода отладки, например, наши библиотеки фреймворков, которые не были недавно созданы, каждая из которых, но мы все еще выясняем, как это сделать. Для записи мы используем TFVC для управления источником.

Мои вопросы таковы: какие виды практики используются для такого рода вещей? Разрабатываем ли мы отдельные командные проекты для каждого «уровня» этой сборки (т. Е. Командный проект для третьей стороны, для структуры, для продуктов) и разделить их друг на друга? Мы когда-либо проверяем сборки продуктов одного уровня в следующем, чтобы гарантировать, что зависимости решаются? Если нет, где живут бинарные файлы? Будут ли эти требования требовать использования GAC?

И, наконец, если есть какие-либо указания в отношении такого рода вещей, которые я люблю делать с чтением; но, поскольку я новичок в создании/выпуске техники, я еще не знаю, где искать.

Спасибо!

ответ

1

Чтобы ответить на ваш последний вопрос, необходимо указать конфигурацию и управление конфигурацией excellent book from Microsoft.

Что касается вашего первого вопроса: мы обрабатываем наши зависимости отдельно. У нас есть сборка, которая компилирует нашу структуру. У нас есть еще одна сборка, которая объединяет наши собственные проекты.

Однако, как часть процесса нашей второй сборки, мы устанавливаем установку из нашей структуры на buildmachine перед компиляцией нашего собственного проекта.

Таким образом, мы можем освободить нашу инфраструктуру отдельно от наших проектов. Наши проекты могут определить (путем изменения конфигурации сборки), когда начать использовать новую версию.

Проект и структура имеют свои собственные проекты TFS.

+0

Невероятные. Это подход, о котором я мечтал, грубо говоря. Однако идея автоматической установки рамки очень интересна! Эта часть, которую я не представлял, вместо этого как-то использовал источник управления для управления двоичными файлами. Однако есть определенная привлекательность в том, что разные сборки связаны только с использованием установщика. Означает ли это, что, когда вы отправляете товар, необходимо установить несколько инсталляторов для установки продукта, или это зависимости, переупакованные в установщике конечного продукта? – bwerks

+0

Кроме того, я предполагал, что указанная вами ссылка будет http://www.amazon.com/Inside-Microsoft-Build-Engine-Foundation/dp/0735645248/ref=sr_1_1?ie=UTF8&qid=1312987188&sr=8- 1, но я счастлив, что это было что-то еще! Я немного подслушиваю, что это не на разжигании, но я приказал это независимо - взволнованно читать! – bwerks

+1

Мы сделали отдельную установку. Таким образом, клиент должен сначала установить структуру, а затем приложение. Но вы можете создать отдельный установщик, который сочетает в себе как вашу инфраструктуру, так и приложение. Просто создайте mergemodule для каждого и создайте установщик, который ничего не делает, кроме установки mergemodules. – Sardaukar

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