2017-02-22 4 views
1

Versionen: (beide bauen und Produktionssysteme gleich sind)Build-Upgrade-Version mit edeliver und Brennerei

Elixir: 1.4.0

OS: Ubuntu 14.04 LTS

Distillery config:

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 config:

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 
} 

Meine erste Veröffentlichung erfolgreich mit mix edeliver update production --branch=development --start-deploy und die App läuft gut. Wenn ich zu heißen Code nachladen versuchen,

mix edeliver build upgrade --branch=development

es mit dem Befehl nicht

build command requires --from= or --with argument.

Ist das nicht edeliver soll dafür sorgen, wenn es AUTO_VERSION ist oder ich habe verpasst irgendeine Konfiguration?

auch den Befehls mix edeliver upgrade production --branch=development --verbose, Ergebnisse in dem Fehler Ausführung

==> 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: 

    [email protected]_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 

Antwort

0

Dieser Fehler auf mix edeliver upgrade production --branch=development --verbose wie Sie die vorherige Version auf Ihrem Release Speicher haben nicht sieht.

Sie können versuchen, diese Version erneut zu erstellen, sie auf Ihren Servern bereitzustellen und zu versuchen, ein Upgrade durchzuführen.

Hoffnung, das hilft :)

+0

Ich habe meine alte Version unter my_project_root/.deliver/veröffentlicht. Aber es versucht nicht, das zu finden. Stattdessen versucht es abzurufen bei _build/prod/rel / –

1

ich in diesen vor einiger Zeit ging, und ich war nicht in der Lage, um es aus dem Kasten heraus zu arbeiten. Ich landete selbst zu tun, die Kopie (symbolischen Link):

.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 
} 

Dieser Haken ausgeführt wird, nachdem die Freigabe gebaut und vor erlang ist das Upgrade zu erzeugen.

Verwandte Themen