我一直在使用 edeliver 构建一个 elixir 应用程序并将其部署到生产环境中。我现在已经将应用程序组织到一个伞形项目中,并且在配置 edeliver 以构建项目时遇到了困难。
我最初的想法是保护伞中的每个应用程序都需要自己的 .deliver/config
,我必须独立构建和部署保护伞中的每个应用程序,我对此很满意。当我在其中一个应用程序中运行 mix edeliver build release
时,它会启动构建过程。但是,它最终会为构建服务器上的每个应用程序创建一个构建。
最终,它在需要找到要下载的 tar 的地方失败,并提示 Please set RELEASE_VERSION=x
。每个应用程序在 mix 文件中都有自己的发布版本,这是之前为build设置发布版本所需的全部内容。
ls: cannot access /data/web/staging.my-app.com/build/rel/my-app/releases/*/: No such file or directory
Failed to detect generated release version at
deploy@192.168.0.1:/data/web/staging.my-app.com/build/rel/my-app/releases/
Please set RELEASE_VERSION=x
Detected several releases:
FAILED
2:
ssh
basename: illegal option -- o
usage: basename string [suffix]
basename [-a] [-s suffix] string [...]
ConnectTimeout=3
deploy@192.168.0.1
ls
basename: illegal option -- A
usage: basename string [suffix]
basename [-a] [-s suffix] string [...]
*
最佳答案
将 RELEASE_DIR
指向雨伞应用程序的正确目录为我解决了这个问题。需要在 apps
之后添加 build
文件夹,因为应用程序已移入该文件夹。我必须在每次构建之前手动 ssh 进入服务器并清除 rel
文件夹。我很确定这可以通过将其添加到 before 钩子(Hook)或正确配置 GIT_CLEAN_PATHS
来修复/自动化。我还从主应用程序文件夹启动伞形构建和部署。RELEASE_DIR="/my-app.com/build/apps/my_app/rel/my_app/"
BUILD_AT="/my-app.com/build"
关于deployment - Elixir:使用 edeliver 构建和部署伞形应用程序,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/36414854/