我们正在尝试使用edeliver
部署"热升级"凤凰Web应用程序到远程虚拟机实例。
我们的目标是建立一个"升级"每次版本的应用程序,以便应用程序可以"热"在没有停机的情况下升级生产。
我们成功地做到了这一点"热门升级"在" Hello World"凤凰app: https://github.com/nelsonic/hello_world_edeliver在构建通过时从Travis-CI自动部署 。见:https://travis-ci.org/nelsonic/hello_world_edeliver/builds/259965752#L1752
所以,在理论中,这种技术应该适用于我们的"真实的"应用
执行以下命令(以构建升级):
mix edeliver build upgrade --auto-version=git-revision --from=$(git rev-parse HEAD~) --to=$(git rev-parse HEAD) --verbose
即。 "构建从上一个git修订版升级到当前版本"
的升级到目前为止,这么好。 " 发布成功!"
vm.args: No such file or directory
当我们尝试部署升级时:
mix edeliver deploy upgrade to production --version=1.0.3+86d55eb --verbose
cat: /home/hladmin/healthlocker/releases/1.0.3+86d55eb/vm.args: No such file or directory
注意:我们有一个小的bash脚本,可以读取
.deliver/releases
中提供的最新升级版本并进行部署,请参阅:version.sh
有没有办法忽略缺少vm.args
文件而继续部署?
或 如果文件必需以完成部署,是否有关于如何创建文件的文档?
注意:我们已经阅读了酿酒厂"运行时配置" docs:https://github.com/bitwalker/distillery/blob/master/docs/Runtime%20Configuration.md并且可悲的是没有更聪明......
mix.exs
档案:https://github.com/healthlocker/healthlocker/blob/continuous-delivery/mix.exs edeliver
版本:1.4.4
distillery
版本:1.4.0
答案 0 :(得分:0)
正如其他人所说,BEAM运行发布需要vm.args
文件。在发布构建过程中,由酿酒厂创建默认文件,该文件应位于releases/<version>/vm.args
中。从您的日志输出看起来好像正在检查预期的目录。
/home/hladmin/healthlocker/releases/
的内容吗?vm.args
文件?您还问:
或者如果需要该文件来完成部署,是否有关于如何创建文件的文档?
如果使用默认vm.args
文件诊断问题无法到达任何地方,您也可以编写自己的文件并配置酒厂使用该文件而不是默认文件。详细信息请参见distillery configuration docs。简而言之,
将vm_args
设置添加到您的酿酒厂配置中,该设置应位于rel/config.exs
(相对于您的项目根目录),例如:
environment :prod do
set vm_args: "<path>/vm.args"
[...]
end