Мы хотим использовать NuGet для совместного использования сборок среди разработчиков в нашей организации. В настоящее время мы изучаем настройку трех каналов NuGet, например:
- Release-feed: Стабильные версии версий сборки.
- QA-feed: Ассембли, созданные в главной ветки (наша ветка интеграции).
- Разработка: Ассембли, созданные в любой из ветвей функций (совместное продвижение).
Локальные сборки на машинах разработчиков не должны отправляться ни одному из этих каналов. Для этого требуется только сборка, созданная сервером сборки. Наш сервер сборки выполняет три разных типа сборки, в зависимости от веток, отделов разработки, контроля качества и выпуска. Каждый из них имеет соответствующие конфигурации сборки, которые запускаются при изменении источника. При построении каждый из них будет выталкивать встроенные сборки-nuget-пакеты в соответствующий фид. В сборках разработки будет добавлен "-dev" к версии. Строки QA добавят к версии "-qa", а в сборках выпусков будет "чистый" номер версии.
Теперь вопросы:
-
Что было бы лучшим решением для разработчика, чтобы контролировать, какие пакеты использовать? Я думаю, разработчику вручную нужно отредактировать параметр источника зависимостей, чтобы явно определить, какие каналы собирать сборки from: Иногда вам нужна сборка релизов, иногда сборка QA, и иногда вам даже нужна версия для разработки.
-
Мы также рассматриваем возможность добавления локальных пакетов сборки в локальный частный канал на каждой собственной машине своих разработчиков, чтобы ускорить сборку. Было бы проблематично, с какой фид можно получить?
-
Если эти определения создаются разработчиком в файле зависимостей (который также обязательно контролируется версией), то этот параметр будет внесен в фид разработки, когда источник привязан к репо (тот же фокус для строить как разработчик, просто делиться с другими). Это может быть или не быть правильным для фида разработки?
-
Когда источник затем объединяется в qa-ветвь, фиды, определенные в зависимостях, по-прежнему будут такими, как это сделал разработчик, возможно, получая сборки из фидов разработки. Для построения QA я думаю, что это, вероятно, не то, что мы хотим. Строки QA должны, вероятно, ограничивать каналы только для выпуска сборок, так как вы хотите увидеть, будут ли изменения работать так, как ожидалось, с компонентами Release. Вы не хотите тестировать его с помощью других "непроверенных" сборок QA. Означает ли это смысл и для других?
-
В релиз-сборке выпускные сборки должны использовать только сборки релизов, я полагаю? У меня такое ощущение, что на этом может быть консенсус, так что, возможно, на самом деле не вопрос все:).
Итак, подведем итог предлагаемому процессу... Во время сборки мы должны:
- Следуйте за источниками, установленными разработчиком в спецификациях зависимостей для локальных и сборных версий.
- При создании QA и Release сборки фид должен быть ограничен линией Release.
В качестве побочного примечания, каналы QA фактически не будут использоваться никакими другими сборками. Но они будут использоваться отделом QA, поскольку они будут использовать их для тестирования.