Предположим, что марионеточный агент находится в процессе обновления, и я останавливаю службу мастера марионеток. Есть ли какой-нибудь момент, что это потенциально может привести к удалению неполной или поврежденной установки, как я описываю ниже?
Задний план:
Я использую непрерывную интеграцию и контроль версий (Bamboo и Stash) для своих файлов конфигурации марионетки.
Я столкнулся с проблемами, которые возникли в процессе повторного развертывания. Это наиболее заметно, когда я делаю запрос на перенос для своей производственной ветки, но это происходит и в другом месте. Агент марионетки может пытаться получить доступ к файлу ресурсов, который был удален до того, как он был вытеснен обратно. Хотя это довольно редко, это вызывает разного рода хаос, особенно в модулях, которые используют оператор file для выталкивания всего каталога.
Самая разумная вещь, которую я придумал, - это остановить службу марионеточного мастера на время развертывания, а затем снова включить его, но я не вижу ничего о последствиях остановки марионеточного мастера, пока он еще может используемый.
Разве для рекурсивного развертывания это не должно быть проблемой, если ни один из файлов не изменился во время последнего запуска, поэтому файл, установленный ранее, будет таким же, как и после?
Правильно. Решение о замене файла принимается на основе сравнения хэшей md5 от клиента и сервера. Если вы остановите мастер в середине выполнения, он должен просто вывести из строя все оставшиеся файловые ресурсы - вы не получите частичную копию файла на месте.
Есть несколько отдельных частей марионеточного забега.
Таким образом, в зависимости от того, где вы находитесь в этом процессе, запуск либо завершится с ошибкой, либо запуск узла продолжится и завершится с ошибкой при создании отчетов.
Не должно быть проблем с поврежденными файлами, о которых вы упоминаете.