我正在用exrm构建凤凰应用程序。
良好的实践表明,我应该对相同的二进制进行测试,我将推动生产。
Exrm使我能够在没有安装Erlang或Elixir的机器上部署菲尼克斯,这使得拖坞映像更快。
有没有一种方法可以针对由exrm构建的二进制文件启动mix test?
发布于 2015-10-01 00:25:09
应该注意的是,版本不是二进制文件。当然,它们被打包到tarball中,但这只是为了简化部署,它所包含的实际上是使用.beam生成的二进制MIX_ENV=prod mix compile文件,加上ERTS (如果您正在捆绑它)、Erlang/Elixir .beam文件以及启动应用程序的引导脚本/配置文件等等。
因此,简而言之,您的代码在发行版中的行为将与在MIX_ENV=prod中运行时相同(假设您运行了MIX_ENV=prod mix release)。唯一的实际区别在于,您是否正确地将应用程序配置为已打包到发行版中,并将其测试归结为对/tmp/<app>进行测试部署并引导它,以确保您不会忘记在mix.exs中向applications添加依赖项。
您需要测试的另一个元素是,如果您正在对应用程序进行热升级/降级,则需要在本地进行测试部署,以确保升级/降级按预期的方式应用,因为exrm会为您生成默认的.appup文件,这些文件可能并不总是做正确的事情,或者您需要做的任何事情,在这种情况下,您需要适当地编辑它们。为此,我将部署到/tmp/<app>,启动旧版本,然后将升级tarball部署到/tmp/<app>/releases/<new version>/<app>.tar.gz,运行/tmp/<app>/bin/<app> upgrade <version>并测试应用程序是否按预期升级,然后运行上一个版本的降级命令,以查看它是否正确回滚。测试的性质取决于您所做的代码更改,但这是它的要点。
希望这能帮助回答你的问题!
https://stackoverflow.com/questions/32877335
复制相似问题