Сontinuous integration как правильно организовать?
Есть некий скрипт автодеплоя CI .
он ходит по серверам при выпуске релиза и делает git pull
проблема в том что некоторые файлы должны отличатся в зависимости от сервера. например есть в репозитории файл
nginx.conf
но на сервере
на сервер 1 он nginx.conf немного измененный
на сервере 2 он еще немного измененный
и т.п.
я не могу просо игнорировать этот файл при деплое, потому что иногда в этот файл например добавляется новая директива или что то меняется и нужно что бы изменение применилось на всех серверах, но и остались уникальные значения для каждого сервера.
через incluide не предлагать потому что есть файлы и конфиги которые не поддерживают includes , например файл кронов
Вопрос как реализовывается у других подобные системы ?
На сколько git pull вообще оправдан?
Если файлы с CI загружать на сервера, то можно либо хранить в репозитории разные версии для разных серверов, либо генерировать эти версии по шаблону на CI и уже после этого загружать.
Как вариант - делаются отдельные ветки в git, которые от мастера отличаются изменениями в части данных файлов, а CI/CD следит за изменения в этих ветках и выливает на соответствующие сервера.
Эту ветку деплоим на этот сервер, а эту - на другой...