Подтвердить что ты не робот

Как избежать ошибки развертывания Edeliver: "vm.args: Нет такого файла или каталога"?

Контекст

Мы пытаемся использовать edeliver для развертывания "Hot Upgrade" веб-приложения Phoenix на удаленный экземпляр виртуальной машины.

Наша цель - создавать "обновляемую" версию приложения каждый раз, чтобы приложение могло быть "горячим" обновлено в производстве без какого-либо простоя.

Нам удалось сделать это "горячее обновление" в приложении "Hello World" phoenix: https://github.com/nelsonic/hello_world_edeliver, который автоматически развертывается из Travis-CI при прохождении сборки. см. https://travis-ci.org/nelsonic/hello_world_edeliver/builds/259965752#L1752

Итак, теоретически этот метод должен работать для нашего "настоящего" приложения.

Попытка развертывания "реального" приложения Phoenix с помощью Edeliver

Отмените следующую команду (для создания обновления):

mix edeliver build upgrade --auto-version=git-revision --from=$(git rev-parse HEAD~) --to=$(git rev-parse HEAD) --verbose

то есть. "создайте обновление с предыдущей версии git до текущей"

До сих пор так хорошо. "Выпуск успешно построен!"

edeliver-upgrade-build-successful

Ошибка: vm.args: No such file or directory

Когда мы пытаемся развернуть обновление:

mix edeliver deploy upgrade to production --version=1.0.3+86d55eb --verbose

vm.args-no-such-file-or-directory

cat: /home/hladmin/healthlocker/releases/1.0.3+86d55eb/vm.args: No such file or directory

Примечание. У нас есть немного bash script, который читает последнюю версию обновления, доступную в .deliver/releases, и разворачивает ее: version.sh

Вопрос:

Есть ли способ игнорировать отсутствие файла vm.args и продолжить развертывание?

Или, если файл требуется для завершения развертывания, есть ли какая-то документация о том, как создать файл?

Примечание: мы прочитали документацию "Конфигурация времени выполнения": https://github.com/bitwalker/distillery/blob/master/docs/Runtime%20Configuration.md и, к сожалению, не имеют ничего...

Дополнительная информация

Окружающая среда

Этот вопрос также задавали: https://github.com/edeliver/edeliver/issues/234

4b9b3361

Ответ 1

Как уже упоминалось другими, файл vm.args необходим для запуска BEAM для выпуска. Файл по умолчанию создается ликеро-водочным заводом во время процесса сборки выпуска и должен располагаться в releases/<version>/vm.args. Из вашего выходного файла журнала он выглядит как ожидаемый каталог, который проверяется.

  • Вы можете показать нам содержимое /home/hladmin/healthlocker/releases/?
  • Можете ли вы подтвердить, что файл vm.args по умолчанию создается при создании выпуска и извлечении его (за пределами процесса обновления)?

Вы также спросили:

Или, если файл требуется для завершения развертывания, есть ли какая-то документация о том, как создать файл?

Если диагностика проблемы с файлом vm.args по умолчанию не доставит вас нигде, вы также можете написать свой собственный файл и сконфигурировать ликероводочный завод, чтобы использовать этот файл вместо стандартного. Подробные сведения об этом приведены в документах конфигурации дистиллятора. Вкратце, добавьте параметр vm_args в конфигурацию вашего ликероводочного завода, которая должна быть rel/config.exs (относительно вашего корня проекта), например:

environment :prod do
  set vm_args: "<path>/vm.args"
  [...]
end