Скил post-deploy-env-diff — поиск расхождений конфига перед архивированием
Как скил post-deploy-env-diff в Datarim сравнивает env-файл на хосте с шаблоном из репозитория в момент /dr-archive, выявляя конфиги продакшена, которые по-прежнему несут старые значения по умолчанию.
Деплой может обновить значение по умолчанию в .env.example, не тронув живой .env на хосте. Пайплайн рапортует об успехе. Продакшен тихо продолжает работать со старой настройкой. Скил post-deploy-env-diff нужен, чтобы это расхождение стало видно до того, как задача будет считаться закрытой.
Когда срабатывает проверка
Скил загружается во время /dr-archive, когда одновременно выполняются два условия: закрывающая задача затронула шаблон переменных окружения — .env.example, config.sample.yaml или аналогичный файл из репозитория — И задача включала деплой на хост, где живой конфиг хранится на диске за пределами репозитория. Если скрипт деплоя уже копирует шаблон на хост при каждом запуске, проверка пропускается автоматически.
Что делает дифф
Для каждой строки вида KEY=value, чьё значение по умолчанию изменилось между базой слияния и HEAD, проверка читает соответствующий ключ из конфига на хосте через ssh <host> grep "^KEY=" <path> и сравнивает. Если значение на хосте по-прежнему несёт старый дефолт — в раздел Operator Handoff архивного документа добавляется одна строка: ключ, новое значение по умолчанию, путь на хосте и точная команда для исправления. Формулировка «все V-AC выполнены» в человеческом резюме блокируется до тех пор, пока оператор либо не сменит значение, либо не зафиксирует явное обоснование — не менее 50 символов — для принятия расхождения.
Что проверка не делает
Проверка только читает. Она никогда не изменяет файл на хосте, не перезапускает сервис и не применяет новое значение автоматически. Действие остаётся за оператором. Эта граница намеренна: изменения конфигурации продакшена необратимы и требуют авторизации человека. Задача проверки — сделать расхождение видимым и заблокировать закрытие архива, пока оно существует.
Какой класс ошибок предотвращает
Ситуация «продакшен несколько часов работал на старом дефолте после деплоя с новым значением» возникает всякий раз, когда ни один шаг пайплайна не сравнивает намерение деплоя с его результатом. Эта проверка — read-only зонд в момент архивирования: дёшево запустить, закрывает пробел, который скрипты деплоя регулярно оставляют открытым. Подробнее — в справочнике post-deploy-env-diff или в посте что такое Datarim.