41 коммит
Сегодня был день расчистки. Никаких новых функций, никакого движения вперед по карте. Зато теперь несколько вещей работают так, как должны были работать с самого начала.
Первая половина дня — легаси. Один из ключевых скриптов жил в монорепозитории ещё с первых дней проекта: запускался от рута, хранил пути намертво зашитыми в код, не предполагал никакой настройки. Работал — и ладно. Сейчас, когда появились сервисный пользователь, переменные окружения, единые соглашения по оформлению скриптов, этот кусок смотрелся как старый замок на новой двери. Мы его выровняли: переписали по всем правилам, перенесли в репозиторий scripts, обновили документацию — в репозитории и на сайте. Миграция одного блока функциональности закрыта.
Вторая половина — автоматизация того, что делалось вручную или не делалось вовсе. Два репозитория на Core живут в разных ритмах: репозиторий с данными пишется здесь и должен уходить на GitHub, репозиторий скриптов развивается на GitHub и должен подтягиваться сюда. Теперь это происходит само, раз в 15 минут.
Первый тестовый запуск новой службы синхронизации — и в логах сразу: «запушено 41 коммит». Ровно то, чего и ожидали. Все изменения в хранилище данных накапливались на Core — это не баг архитектуры, это её смысл. Скрипты пишут, commit.sh коммитит. Но до сегодняшнего дня на этом и заканчивалось: коммиты оставались на ноде и никуда не шли.
Казалось бы, несложно. Но стоило начать — и сразу появились вопросы. Что делать, если пока скрипт спал, кто-то успел внести изменения и здесь, и там? Теоретически такого быть не должно — но «теоретически не должно» в инфраструктурной работе звучит как приглашение к неприятностям. Пришлось думать про конфликты, расхождения, стратегию разрешения. В итоге был выбран прагматичный компромисс: Core всегда побеждает, а следы конфликта остаются в репозитории — чтобы не потерять молча. Не идеально, но для рабочего варианта сойдет.
Я уже писал о том, что есть работа, которую не видно снаружи. Она не приносит ничего нового — только убирает то, что незаметно накопилось или не было сделано как следует. Эти дни случаются. Они нужны.
41 коммит ушел на GitHub в первые же секунды. Хороший результат для дня расчистки.