我有一个伞形项目,目前只有一个简单的应用程序具有amqp依赖项。一切都在本地工作正常,但当我尝试使用“mix edeliver build release”构建它时,我在尝试编译代码时得到“:AMQP not found”。
当我进入构建主机并手动编译应用程序时,它也可以正常工作。我还可以从edeliver调试日志中看到,获取依赖项工作得很好。
我怀疑edeliver失败了,因为这是一个伞形项目。接下来试试这个没有雨伞但是我当然希望能够使用雨伞项目。
错误如下所示:
编译2个文件(.ex)
==文件lib / heartbeat_consumer.ex ==上的编译错误 **(CompileError)lib / heartbeat_consumer.ex:3:模块AMQP未加载且无法找到 (elixir)扩展宏:Kernel.use / 1 lib / heartbeat_consumer.ex:3:HeartBeatConsumer(模块) (elixir)lib / kernel / parallel_compiler.ex:116:Kernel.ParallelCompiler.spawn_compilers / 1中的匿名fn / 4
错误'\ n远程命令失败:
builder@buildhost.net
上面显示了命令的输出,并在其上执行了命令 主机打印在下面用于调试目的:
退出状态1失败:\ n [-f~ / .profile]&&来源〜/ .profile 设置-e cd / tmp / edeliver / myapp / builds if [“mix”=“rebar”];然后 echo“使用rebar编译文件” [[“”!=“true”]]&& ./rebar clean skip_deps = true || : ./rebar编译 elif [“mix”=“mix”]&& [“mix”=“mix”];然后 echo“检查是否必须为混合版本1.3.0编译deps” #见https://github.com/boldpoker/edeliver/issues/94 如果混合--version | grep'\''混合1.3.0'\''> / dev / null 2>& 1;然后 echo“编译deps,因为混合版本1.3.0被使用” APP =“abotti_server”MIX_ENV =“prod”mix deps.compile 科幻 if [[“”=“true”]];然后 APP =“abotti_server”MIX_ENV =“prod”AUTO_VERSION =“”SKIP_RELUP_MODIFICATIONS =“”RELUP_MODIFICATION_MODULE =“”混合做 编 其他 APP =“abotti_server”MIX_ENV =“prod”AUTO_VERSION =“”SKIP_RELUP_MODIFICATIONS =“”RELUP_MODIFICATION_MODULE =“”混合干净, 编 科幻 elif [“mix”=“mix”];然后 echo“使用mix编译文件” if [[“”=“true”]];然后 if [[-n“”]];然后 hint_message'\''使用--auto-version和--skip-mix-clean不起作用!'''' 科幻 APP =“abotti_server”MIX_ENV =“prod”AUTO_VERSION =“”BRANCH =“master”SKIP_RELUP_MODIFICATIONS =“” RELUP_MODIFICATION_MODULE =“”混合做deps.compile,编译 其他 APP =“abotti_server”MIX_ENV =“prod”AUTO_VERSION =“”BRANCH =“master”SKIP_RELUP_MODIFICATIONS =“” RELUP_MODIFICATION_MODULE =“”混合干净,deps.compile,编译 科幻 fi \ n'
和我的应用程序mix.exs是这样的:
defmodule AbottiServer.Mixfile do
use Mix.Project
def project do
[app: :abotti_server,
version: "0.1.0",
build_path: "../../_build",
config_path: "../../config/config.exs",
deps_path: "../../deps",
lockfile: "../../mix.lock",
elixir: "~> 1.3",
build_embedded: Mix.env == :prod,
start_permanent: Mix.env == :prod,
deps: deps]
end
# Configuration for the OTP application
#
# Type "mix help compile.app" for more information
def application do
[applications: [:logger, :amqp, :edeliver],
mod: {AbottiServer, []}]
end
# Dependencies can be Hex packages:
#
# {:mydep, "~> 0.3.0"}
#
# Or git/path repositories:
#
# {:mydep, git: "https://github.com/elixir-lang/mydep.git", tag: "0.1.0"}
#
# To depend on another app inside the umbrella:
#
# {:myapp, in_umbrella: true}
#
# Type "mix help deps" for more examples and options
defp deps do
[
{:amqp_client, git: "https://github.com/dsrosario/amqp_client.git", branch: "erlang_otp_19", override: true},
{:amqp, "~> 0.1.4"},
{:edeliver, "~> 1.4.0"},
{:distillery, ">= 0.8.0", warn_missing: false}
]
end
end
在与此斗争了很长一段时间之后,我意识到这里发生了无数的问题。
好的总结一下,在我完成了edeliver wiki为一个伞形项目here所做的一切之后,仍然清理并释放dir问题。 我只能使用--skip-mix-clean编译edeliver并尝试对RELEASE_DIR进行大量调整,但我总是得到“未能检测到发布版本错误”。
非常感谢任何帮助。