Elixir依赖:使用edeliver(+酒厂)进行构建时,在伞形项目中找不到AMQP

时间:2016-08-25 09:28:02

标签: elixir edeliver

我有一个伞形项目,目前只有一个简单的应用程序具有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

在与此斗争了很长一段时间之后,我意识到这里发生了无数的问题。

  1. 清理并不真正起作用,导致:找不到AMQP 错误。通过--skip-mix-clean开关暂时补救。
  2. 之后,edeliver抱怨它无法决定是否应该使用exrm或酒厂。好的,我确实在release项目根目录下混合了release.init。还将.deliver文件夹移动到伞形项目的根目录,将根据mixin.exs添加到edeliver和酒厂deps。 (我不知道这是否正确)。经过混合释放测试,是的,酿酒厂建设在当地开展。
  3. 编译仍无法在构建主机上运行:amqp无法编译。 为使用amqp的应用添加了{:amqp_client,git:“https://github.com/dsrosario/amqp_client.git”,branch:“erlang_otp_19”,覆盖:true}。这工作,编译现在适用于具有erlang 19的构建主机。
  4. 现在我得到:未能检测到生成的发布版本: 的/ tmp / edeliver / abotti /构建/应用/ abotti /相对/ abotti /发行/ 我想这意味着我的RELEASE_DIR与.deliver文件夹中的配置不一致。
  5. 好的总结一下,在我完成了edeliver wiki为一个伞形项目here所做的一切之后,仍然清理并释放dir问题。 我只能使用--skip-mix-clean编译edeliver并尝试对RELEASE_DIR进行大量调整,但我总是得到“未能检测到发布版本错误”。

    非常感谢任何帮助。

0 个答案:

没有答案