首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用edeliver和酿酒厂构建升级版本

使用edeliver和酿酒厂构建升级版本
EN

Stack Overflow用户
提问于 2017-02-22 11:16:29
回答 3查看 786关注 0票数 1

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

灵丹妙药: 1.4.0

操作系统: Ubuntu 14.04 LTS

酒厂配置:

代码语言:javascript
复制
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

交付配置:

代码语言:javascript
复制
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 command requires --from= or --with argument.

如果有edeliver或者我错过了任何配置,难道不是应该由AUTO_VERSION来处理这个问题吗?

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

代码语言:javascript
复制
==> 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
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2017-02-23 12:28:13

糟了。这个问题与https://github.com/boldpoker/edeliver/issues/182有关。

票数 1
EN

Stack Overflow用户

发布于 2017-02-22 12:56:14

mix edeliver upgrade production --branch=development --verbose上的这个错误看起来好像您的发行版存储中没有先前的版本。

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

希望有帮助:)

票数 1
EN

Stack Overflow用户

发布于 2017-02-22 16:24:02

我一段时间前就开始做这件事了,我没能把它从盒子里弄出来。最后,我自己做了一个副本(符号链接):

.deliver/config

代码语言:javascript
复制
# 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生成升级之前执行的。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42389736

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档