3

我正在用 exrm 构建 phoenix 应用程序。

良好的实践表明,我应该针对同一个二进制文件进行测试,我将推动生产。

Exrm 让我能够在没有安装 Erlang 或 Elixir 的机器上部署 phoenix,这使得拉取 docker 镜像更快。

有没有办法从mix testexrm 构建的二进制文件开始?

4

1 回答 1

4

应该注意的是,发行版不是二进制文件。当然,它们被打包到一个 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>并测试应用程序是否按预期升级,然后运行以前版本的降级命令以查看它是否正确回滚。测试的性质取决于您所做的代码更改,但这就是它的要点。

希望这有助于回答您的问题!

于 2015-10-01T00:25:09.763 回答