Наша система состоит из множества веб-сайтов .NET, библиотек классов и базы данных MSSQL. Мы используем SVN для управления версиями и TeamCity для автоматической сборки на тестовый сервер.
Наша команда обычно работает над 4-5 проектами одновременно. Мы стараемся объединить множество изменений в крупный выпуск каждые 2–4 недели.
Моя проблема в том, чтобы отслеживать все зависимости для развертывания. Пример:
Веб-сайт A не может работать, пока мы не развернем ветвь X библиотеки классов B, построенную, в свою очередь, на базе библиотеки классов C, для которой требуются обновления конфигурации Y и Z и обновление базы данных D, для которого требуется сценарий миграции E ...
Это становится еще более сложным - например, убедиться, что проекты каждого разработчика действительно совместимы с другими и строятся на одних и тех же версиях. Да, это не только технический вопрос, но и управленческий вопрос.
На данный момент наше неоптимальное решение:
- список функций доски, которые еще не были запущены
- полагаясь на нашу память и интуицию при планировании развертывания, пока мы не уверены, что мы все продумали ...
- пробный запуск нашей промежуточной среды. Это хороший показатель, но мы часто не уверены, что Staging на 100% синхронизирован с Live - часть проблемы, которую я надеюсь решить.
- некоторое количество крыла в день развертывания.
Пока все хорошо, за вычетом нескольких близких звонков. Но по мере роста нашей системы мне хотелось бы иметь более научную систему управления выпусками, обеспечивающую большую гибкость, например, возможность самостоятельно развернуть одно изменение или исправление, будучи уверенным в том, что это ничего не сломает.
Я предполагаю, что лучшее решение включает в себя какую-то систему нумерации версий и, возможно, использование инструмента управления проектами. Мы только начинаем, поэтому мы не слишком горячо придерживаемся жестких процессов, но мы рады начать, если это не увеличивает накладных расходов, чем того стоит.
Я хотел бы услышать советы от других команд, которые решили эту проблему.