Я пытаюсь упростить текущий репозиторий исходного кода и настройку решения. Прямо сейчас это очень сложно и огромно, и внесение изменений даже в самый простой фрагмент кода может занять очень много времени.
Для простоты предположим, что у меня есть следующая настройка:
- У меня есть 1 проект веб-сайта (W1)
- У меня есть 2 проекта веб-сервиса (S1, S2)
- У меня есть 3 проекта библиотеки классов (L1, L2, L3)
Они управляются 3 решениями:
- 1 решение, содержащее W1, L1, L2, L3 и использующее служебные ссылки на S1 и S2
- 1 раствор, содержащий S1, L1, L2, L3
- 1 раствор, содержащий S2, L1, L2, L3
Все это в настоящее время контролируется одним единственным репозиторием исходного кода, в котором я применяю схему ветвления, которая постоянно использует ветки Main, Development и Release.
Как видите, на библиотечные проекты ссылаются несколько раз, и, как и следовало ожидать, это иногда приводит к конфликтам, когда несколько разработчиков работают над одной и той же библиотекой. Как я упоминал ранее, на самом деле у меня гораздо больше библиотечных проектов. Сейчас есть решения, содержащие более 50 проектов, и почти все решения содержат одни и те же проекты. Чтобы сделать их более удобными в сопровождении, я хотел бы переместить проекты библиотек в их собственное решение и создать из них пакеты NuGet.
У меня также есть три среды, в которых развертываются вещи:
- Среда TST, в которую ежедневно загружаются сборки ветки разработки.
- Среда QA, в которую передаются сборки ветки Release.
- ЖИВАЯ среда, в которую передаются сборки основной ветки
Проблема, с которой я столкнулся, заключается в том, что я не совсем понимаю, как мне включить пакеты NuGet в эту стратегию развертывания, поскольку разработка происходит во всех проектах в течение одного спринта, и если разработчик извлекает ветвь Release или основную ветвь. чтобы создать исправление, я не хочу, чтобы он испортил упомянутые пакеты NuGet и случайно добавил пакет разработки в основную ветку.
С точки зрения сборки можно просто использовать ту же стратегию ветвления при создании проектов библиотек и публиковать пакеты NuGet каждой ветви в другом репозитории. С точки зрения разработчика, я не знаю, как легко переключаться между несколькими репозиториями. Я не могу беспокоить разработчиков требованием изменить URL-адрес своего репозитория NuGet при проверке другого проекта или ветки.
Итак, вопрос: как правильно параллельно разрабатывать набор библиотек и интерфейсных проектов?
Я не думаю, что то, чем я хочу заниматься, настолько сложно или что я один хочу этого. Тем не менее, я не нахожу соответствующей документации по этому поводу. Я смотрю на это совершенно неправильно?