Current shell error with edeliver

Mine is just:

#!/bin/sh

export MIX_ENV=prod
export PORT=3080
cd assets
npm install
./node_modules/.bin/brunch build --production
cd ..
mix deps.get
mix phx.digest
mix release "${@}"

I just git pull, run that script, run a test or two then swap to the new version via system-ctl (which I could put in script too, and probably should since I always run the same commands anyway…).

You could easily push those over SSH as well, that’d be fairly trivial.

Thanks so much. I guess you run this script on the production server?

Yep, you always want to run the build on either the production setup or on something that is absolutely identical. The production VM for this is idle enough that I just build it straight on it.

Thanks immensely for this great information.

So I am following this thread to solve the same issue without success. I will appreciate your help in this matter.

Environment

Elixir 1.6.6 (compiled with OTP 20)
edeliver v1.4.5 | https://github.com/boldpoker/edeliver
distillery 1.5.3
OpenSuse Leap 15 (my laptop) with name: linux-6h0b
Build Server: Ubuntu 16.04
Production Server: Ubuntu 16.04

The problem

BUILDING RELEASE OF EPR APP ON BUILD HOST

-----> Authorizing hosts
-----> Ensuring hosts are ready to accept git pushes
ssh: connect to host linux-6h0b port 22: Connection refused

A remote command failed on:

  jalcerro@linux-6h0b

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

FAILED with exit status 255:

    current_shell="$0" || :
    [ -z "$current_shell" ] && current_shell="$SHELL"
    case "$current_shell" in
      (*bash*) echo 'bash is installed and the default shell' &> /dev/null ;;
      (*zsh*)  echo  'zsh is installed and the default shell' &> /dev/null ;;
      (*)
       echo
       echo "You are using an unsupported shell: '$current_shell'"
       echo "edeliver requires either bash or zsh to be installed"
       echo "and the default shell for the build user 'jalcerro'"
       echo "on your build host: 'linux-6h0b'."
       exit 1
       ;;
    esac
    set -e
    if [ ! -d /home/jalcerro/app_build ]
    then
      mkdir -p /home/jalcerro/app_build
      cd /home/jalcerro/app_build
      git init &> /dev/null
      git config receive.denyCurrentBranch ignore
    else
      cd /home/jalcerro/app_build
      git config receive.denyCurrentBranch ignore
    fi

My .deliver/config file

#!/usr/bin/env zsh

APP="epr"

BUILD_HOST="build-server.local"
BUILD_USER="jalcerro"
BUILD_AT="/home/jalcerro/app_build"

PRODUCTION_HOSTS="prod-app.local"
PRODUCTION_USER="support" 
DELIVER_TO="/home/support/epr" 

pre_erlang_get_and_update_deps() {
  local _prod_secret_path="/home/jalcerro/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
}

I have configured

  • I am able to ssh into my build server without password
  • Configured .ssh/config file proppery
  • Used ssh-copy-id to add key to authorized-keys file
  • check my shell to by zsh in passwd

I don’t understand

  • Why is edeliver trying to use my computer name “linux-6h0b” instead of the the build_host “build-server.local”?

Thanks for your help.