Что важно понимать про автоматическую выкладку
Конвейер сборки и выкладки — инструмент простой по идее и требовательный к дисциплине. Он даёт результат, когда команда договорилась о правилах, и почти не даёт, когда правила есть, но их обходят «в порядке исключения».
Автоматизировать нужно то, что уже работает
Первый шаг — не выбор инструмента, а описание текущего процесса. Мы садимся и по шагам разбираем, что происходит от изменения кода до работающей системы. Обычно уже на этом этапе находятся вещи, о которых знал один человек: параметр, который меняют вручную, служба, которую нужно перезапустить второй, файл, который не попадает в сборку. Конвейер потом просто закрепляет то, что стало понятным.
Откат важнее скорости выкладки
Мы всегда настраиваем и проверяем возврат к предыдущей версии до того, как через конвейер пойдёт первый рабочий релиз. Причина простая: пока откат не проверен на практике, он существует только в теории, и убеждаться в этом в момент аварии — дорого. Отдельно смотрим на изменения в базе данных: необратимая миграция превращает откат приложения в бессмысленную операцию, поэтому такие изменения планируются совместимыми с обеими версиями.
Тестовый контур должен быть похож на рабочий
Тестовая среда, собранная «примерно так же», создаёт ложную уверенность. Проверка проходит успешно, а на рабочей системе всплывает разница в версии библиотеки или в настройке сервера. Поэтому контуры мы поднимаем из одних и тех же артефактов, а различия сводим к данным и доступам. Проще всего это делается на контейнерах, но достижимо и без них — просто требует аккуратности.
Секреты не должны лежать в репозитории
Пароли, ключи и строки подключения в коде — привычная и опасная практика: они попадают в историю изменений, копируются вместе с проектом и остаются доступными всем, кто когда-либо имел к нему отношение. Правильная схема проще, чем кажется: значения лежат в защищённом хранилище, конвейер подставляет их при выкладке, у тестовой и рабочей среды они разные. Заодно появляется возможность сменить пароль, не трогая код.
Выкладка без наблюдения — половина дела
Автоматический релиз ускоряет доставку изменений, в том числе неудачных. Поэтому конвейер имеет смысл только вместе с мониторингом: после обновления система проверяет, что сервис отвечает и ошибок не прибавилось, а команда видит состояние в реальном времени. Если проверка не проходит, выкладка отменяется автоматически, не дожидаясь звонков пользователей.
Конвейер живёт на инфраструктуре
Сборка требует ресурсов, артефакты — хранилища, контуры — серверов и разграниченного доступа. Мы готовим эту часть в том же проекте: виртуальные машины, реестр артефактов, права, резервные копии и защищённое подключение для администрирования. Дальше конвейер можно вести самим или передать нам вместе с сопровождением.