2017-08-22 11 views
0

edeliverがエラーメッセージ** (Mix) The task "release" could not be foundと一緒に失敗し、終了コード1とともに私のElixir/Phoenixアプリケーション用のUbuntu 16.04サーバーを設定しました。ビルドサーバー、gitは私のアプリケーションを引っ張ってMIX_ENV=prod mix releaseまたはちょうどmix releaseを実行した後、依存関係を取得すると、同じエラーが発生します。ミックスタスク "リリース"が見つかりませんでした

ただし、同じアプリケーションはローカルで問題なく動作します。

私のerlangバージョンはerts-9.0で、エリクシールバージョンはサーバとローカルコンピュータの両方で1.5.5です。 Hexバージョンも0.16.1と同じです。

Phoenixは、このコマンドを使用してインストールされました:mix archive.install https://github.com/phoenixframework/archives/raw/master/phx_new.ez

これは私のファイルです。次のように

defmodule MyApp.Mixfile do 
    use Mix.Project 

    def project do 
    [ 
     app: :MyApp, 
     version: "0.0.1", 
     elixir: "~> 1.4", 
     elixirc_paths: elixirc_paths(Mix.env), 
     compilers: [:phoenix, :gettext] ++ Mix.compilers, 
     start_permanent: Mix.env == :prod, 
     aliases: aliases(), 
     deps: deps() 
    ] 
    end 

    # Configuration for the OTP application. 
    # 
    # Type `mix help compile.app` for more information. 
    def application do 
    [ 
     mod: {MyApp.Application, []}, 
     extra_applications: [:comeonin, :logger, :runtime_tools, :earmark, :distillery, :edeliver] 
    ] 
    end 

    # Specifies which paths to compile per environment. 
    defp elixirc_paths(:test), do: ["lib", "test/support"] 
    defp elixirc_paths(_),  do: ["lib"] 

    # Specifies your project dependencies. 
    # 
    # Type `mix help deps` for examples and options. 
    defp deps do 
    [ 
     {:phoenix, "~> 1.3.0"}, 
     {:phoenix_pubsub, "~> 1.0"}, 
     {:phoenix_ecto, "~> 3.2"}, 
     {:mariaex, ">= 0.0.0"}, 
     {:phoenix_html, "~> 2.10"}, 
     {:comeonin, "~> 4.0"}, 
     {:phoenix_live_reload, "~> 1.0", only: :dev}, 
     {:gettext, "~> 0.11"}, 
     {:earmark, "~> 1.2.3"}, 
     {:cowboy, "~> 1.0"}, 
     {:edeliver, "~> 1.4.4"}, 
     {:distillery, "~> 1.5.1"} 
    ] 
    end 

    # Aliases are shortcuts or tasks specific to the current project. 
    # For example, to create, migrate and run the seeds file at once: 
    # 
    #  $ mix ecto.setup 
    # 
    # See the documentation for `Mix` for more info on aliases. 
    defp aliases do 
    [ 
     "ecto.setup": ["ecto.create", "ecto.migrate", "run priv/repo/seeds.exs"], 
     "ecto.reset": ["ecto.drop", "ecto.setup"], 
     "test": ["ecto.create --quiet", "ecto.migrate", "test"] 
    ] 
    end 
end 

マイedeliver設定ファイル.deliver/configは次のとおりです。

APP="MyApp" 

BUILD_HOST="1.1.1.1" 
BUILD_USER="ubuntu" 
BUILD_AT="/home/ubuntu/app_build" 

PRODUCTION_HOSTS="1.1.1.1" 
PRODUCTION_USER="ubuntu" 
DELIVER_TO="/home/ubuntu/app_release" 

pre_erlang_get_and_update_deps() { 
    local _prod_secret_path="/home/ubuntu/app_config/prod.secret.exs" 
    if [ "$TARGET_MIX_ENV" = "prod" ]; then 
    __sync_remote " 
     ln -sfn '$_prod_secret_path' '$BUILD_AT/config/prod.secret.exs' 
    " 
    fi 
} 

答えて

0

私の知る限り見ることができるように、サーバーにアプリケーションを提供するためにedeliverを使用しています。なぜあなたはサーバーから何かを実行しますか?

また、releaseのタスクはどこから来るべきですか? 、構築、展開、およびedeliverで生産を再開するための標準的な流れである

mix edeliver build release 
mix edeliver deploy release to production 
mix edeliver restart production 

:私はあなたのような何かを意味した、と信じています。残念ながら、上記の3つのコマンドはそのままではうまく動作せず、phoenixプロジェクトのためにedeliverを明示的に設定する必要があります(多くの良いチュートリアルがあります)。

+0

私が 'mix edeliver build release'を実行すると、コマンドは失敗します。 Edeliverは同じエラーメッセージを出力します。調べるために、私は手作業でビルドプロセスを行い、edeliverと同じエラーに遭遇しました。 –

+0

ローカルで実行しているときに 'edeliver'が同じエラーメッセージ_をどのように出力できるかは分かりません。 'mixed edeliver build release 'は、' edeliver'という名前の単一の 'mix'タスク_です。二つのパラメータで実行されます_。あなたが手動でビルドを行った場合、ターゲットホスト上でall_が利用可能な_no 'mix'があります。ビルドは、コンパイルされた内容を含む' tar'です。 – mudasobwa

+0

自分の言い換えをしましょう。 edeliver buildコマンドは開発マシンでは成功できないので、ビルドサーバーにssh-edを実行し、edeliverが実行するコマンドを手動で入力しました。同じタスクにエラーが見つかりません。これは、エデルベルにとって何かが間違っている可能性を排除します。私の勘違いは、エラーが私が気づいていないサーバー構成と関係があることです。 –

0

問題は忘れていました。最新の変更をgitにプッシュして、ソースを取得します。だからedeliverを追加した後、それは生成されたファイルを見つけることができませんでした。それをgitにプッシュすることで、今は私のために働く。

+0

これは機能しませんでした。私はきれいなUbuntuのインストールにサーバーをリセットして、すべてを再度インストールしました。それは働き始めた。 –

関連する問題