我正在用 exrm 构建 phoenix 应用程序。
良好的实践表明,我应该针对同一个二进制文件进行测试,我将推动生产。
Exrm 让我能够在没有安装 Erlang 或 Elixir 的机器上部署 phoenix,这使得拉取 docker 镜像更快。
有没有办法从mix test
exrm 构建的二进制文件开始?
我正在用 exrm 构建 phoenix 应用程序。
良好的实践表明,我应该针对同一个二进制文件进行测试,我将推动生产。
Exrm 让我能够在没有安装 Erlang 或 Elixir 的机器上部署 phoenix,这使得拉取 docker 镜像更快。
有没有办法从mix test
exrm 构建的二进制文件开始?
应该注意的是,发行版不是二进制文件。当然,它们被打包到一个 tarball 中,但这只是为了简化部署,它包含的实际上是.beam
使用.启动应用程序等MIX_ENV=prod mix compile
.beam
因此,简而言之,您的代码在发布时的行为与运行时的行为相同MIX_ENV=prod
(假设您运行MIX_ENV=prod mix release
)。唯一实际的区别是您是否已正确配置应用程序以将其打包到发布中,而对此进行测试归结为进行测试部署/tmp/<app>
并启动它以确保您没有忘记将依赖项添加到applications
混合.exs。
您需要测试的另一个元素是您是否正在对应用程序进行热升级/降级,在这种情况下,您需要在本地进行测试部署以确保按预期应用升级/降级,因为 exrm 会生成默认.appup
文件你,这可能并不总是做正确的事情,或者你需要他们做的一切,在这种情况下,你需要适当地编辑它们。我通过部署来/tmp/<app>
启动旧版本,然后将升级 tarball 部署到/tmp/<app>/releases/<new version>/<app>.tar.gz
,并运行/tmp/<app>/bin/<app> upgrade <version>
并测试应用程序是否按预期升级,然后运行以前版本的降级命令以查看它是否正确回滚。测试的性质取决于您所做的代码更改,但这就是它的要点。
希望这有助于回答您的问题!