Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/elixir/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Deployment 使用edeliver和distillery构建升级版本_Deployment_Elixir_Edeliver_Distillery - Fatal编程技术网

Deployment 使用edeliver和distillery构建升级版本

Deployment 使用edeliver和distillery构建升级版本,deployment,elixir,edeliver,distillery,Deployment,Elixir,Edeliver,Distillery,版本:(构建和生产系统都相同) 长生不老药:1.4.0 操作系统:Ubuntu 14.04 LTS 蒸馏厂配置: use Mix.Releases.Config, default_release: :default, default_environment: :prod environment :dev do set dev_mode: true set include_erts: false set cookie: :"cookie" end environme

版本:(构建和生产系统都相同)

长生不老药:1.4.0

操作系统:Ubuntu 14.04 LTS

蒸馏厂配置:

use Mix.Releases.Config,
    default_release: :default,
    default_environment: :prod

environment :dev do
  set dev_mode: true
  set include_erts: false
  set cookie: :"cookie"
end

environment :prod do
  set include_erts: true
  set include_src: false
  set cookie: :"cookie"
end

release :my_app do
  set version: current_version(:my_app)
end
Edeliver配置:

APP="my_app"

AUTO_VERSION=git-revision+build-date

BUILD_HOST="my_build_host"
BUILD_USER="deployer"
BUILD_AT="/tmp/my_app"

PRODUCTION_HOSTS="same_as_build_host"
PRODUCTION_USER="deployer"
DELIVER_TO="/home/my_app"

# For *Phoenix* projects, symlink prod.secret.exs to our tmp source
pre_erlang_get_and_update_deps() {
  local _prod_secret_path="/home/xxx/config/prod.secret.exs"
  if [ "$TARGET_MIX_ENV" = "prod" ]; then
    __sync_remote "
      ln -sfn '$_prod_secret_path' '$BUILD_AT/config/prod.secret.exs'
    "
  fi
}
我的首次发布成功了
mix-edeliver-update-production--branch=development--start-deploy
,应用程序运行良好。当我尝试重新加载热代码时

mix-edeliver-build-upgrade--branch=development

命令失败

build命令需要--from=或--with参数。

当有
AUTO\u版本
或者我错过了任何配置时,
edeliver
是否应该处理这个问题

另外,执行命令
mix-upgrade-production--branch=development--verbose
,会导致错误

==> Upgrade from 0.0.1+297b4ff-20170221 to 0.0.1+f9ffa04-20170222 failed:
  0.0.1+297b4ff-20170221 does not exist at _build/prod/rel/my_app/releases/0.0.1+297b4ff-20170221
==> Failed to build release:
    :bad_upgrade_spec

A remote command failed on:

  deployer@my_host

Output of the command is shown above and the command executed
on that host is printed below for debugging purposes:

FAILED with exit status 1:

    [ -f ~/.profile ] && source ~/.profile
    set -e
    cd /tmp/jn
    if [ "mix" = "rebar" ]; then
      echo "using rebar to generate release"
      ./rebar   -f generate
    elif [ "mix" = "relx" ]; then
      echo "using relx to generate release"
      ./relx release
    elif [ "mix" = "mix" ]; then
      echo "using mix to generate release"
      MIX_ENV="prod" LINK_SYS_CONFIG="" LINK_VM_ARGS="" APP="jn" AUTO_VERSION="git-revision+build-date" BRANCH="development" SKIP_RELUP_MODIFICATIONS="" RELUP_MODIFICATION_MODULE="" USING_DISTILLERY="true" mix do release.version  --verbose,  release --verbose --env="prod" --name="jn" --upgrade --upfrom="0.0.1+297b4ff-20170221"
    fi

mix-edeliver-upgrade-production--branch=development--verbose上的错误看起来您的发布存储中没有以前的版本

您可以尝试再次构建该版本,将其部署到服务器并尝试升级


希望这能有所帮助:)

我前一段时间研究过这个问题,但无法在开箱即用。最后我自己做了复制(符号链接):

.deliver/config

# Fix
# ==> Upgrade from 0.0.3+71-7a01b46 to 0.0.4+87-6c98597 failed:
#  0.0.3+71-7a01b46 does not exist at _build/prod/rel/...
pre_erlang_generate_release() {
  if [ "$TARGET_MIX_ENV" = "prod" ]; then
    __sync_remote "
      ln -sfn '$REL_DIR' '$BUILD_AT/_build/prod/'
    "
  fi
}

这个钩子在发行版构建之后、erlang生成升级之前执行。

Oops。这一问题与政治有关

我在我的_项目_root/.deliver/releases下有我的旧版本。但它并没有试图找到那个。相反,它尝试在_build/prod/rel获取/