
Alexander
25.08.2016
14:21:19
1 команда и билд и выкатка и миграции

Dmitry ?
25.08.2016
14:21:31
Грустно как-то

Alexander
25.08.2016
14:21:56
да там вот вот пулл примут который посикс совместимые терминалы принимает
чтобы хуета с [[ не вылазила

Google

Евгений
25.08.2016
14:22:09
это вам не gem install capistrano


Alexander
25.08.2016
14:22:30
я раньше миной феникс деплоил, но без релизов
сейчас edeliver + destillery
edeliver - тупо набор баш скриптов, обернутых зачем-то в эликсир
типа моднее наверное
в итоге ошибки в нем ниочем
exit 128
вот и все что он может сказать
#!/usr/bin/env bash
APP="m_d"
AUTO_VERSION=git-revision+branch+commit-count-branch
BUILD_HOST="IP_ADDRESS" # host where to build the release
BUILD_USER="deploy" # local user at build host
BUILD_AT="/home/deploy/repo/$APP/builds" # build directory on build host
RELEASE_DIR="/home/deploy/repo/$APP/builds/rel/$APP"
# RELEASE_VERSION=0.0.2
GIT_CLEAN_PATHS="_build rel priv/generated"
# GIT_CLEAN_PATHS="build rel priv/static/generated"
# SKIP_GIT_CLEAN="true"
# SKIP_MIX_CLEAN="true"
PRODUCTION_HOSTS="IP_ADDRESS" # deploy / production hosts separated by space
PRODUCTION_USER="deploy" # local user at deploy hosts
DELIVER_TO="/home/deploy/app/$APP" # deploy directory on production hosts
START_DEPLOY=true
RELEASE_STORE="${BUILD_USER}@${BUILD_HOST}:~/releases/"
pre_erlang_clean_compile() {
status "Preparing assets with: brunch build and phoenix.digest"
__sync_remote "
[ -f ~/.profile ] && source ~/.profile # load profile (optional)
set -e
cd '$BUILD_AT'
mkdir -p priv/static
npm install
brunch build --production
APP='$APP' MIX_ENV=prod $MIX_CMD phoenix.digest
"
}
как-то так
это позволит выкатывать
после первого билда в 3 команды и если апп начал бегать, то можно edeliver upgrade production --branch=master
тогда будет тебе хоткод релоад

Google

Alexander
25.08.2016
14:27:32
запуск миграций - отдельная тема

Dmitry ?
25.08.2016
14:28:44
Спасибо, попробую у себя сделать

Alexander
25.08.2016
14:28:54
вообще феникс не приспособлен к выкатакам в реальный мир, половина либ в hex.pm написаны так, что никогда не будут работать на продакшне
причем авторы об этом не узнают, т.к никто не тестит релизы
к примеру если в коде написать if Mix.env == “prod” и чегонибудь, то релиз на сервере не запустится
а erl_crashdump вообще ниочем
10 мегабайт скобок

Dmitry ?
25.08.2016
14:30:31
У тебя вот тут /home/deploy/repo/$APP/builds есть git repo?

Alexander
25.08.2016
14:30:50
наверное, я создавал только repo папку
оно там само сделает гит

Dmitry ?
25.08.2016
14:32:42
У меня почти такой конфиг, сравнил
Проблема с удаленной prod машиной
В общем была ошибка на prod машине
FAILED with exit status 128:
set -e
if [ ! -d /tmp/erlang/***/builds ]
then
mkdir -p /tmp/erlang/***/builds
cd /tmp/erlang/***/builds
git init &> /dev/null
git config receive.denyCurrentBranch ignore
else
cd /tmp/erlang/***/builds
git config receive.denyCurrentBranch ignore
fi
Сделал rm -r /tmp/erlang/***/builds
Ошибка пропала
В /tmp/erlang/***/builds ничего не было, но сама папка была

Евгений
25.08.2016
14:50:34
WUUUUT O_O

Alexander
25.08.2016
14:50:48
граблей нет, т.к нет нормального флоу
я на костылях собрал хуком из дистилери через rpc вызов моего модуля, который прогонит миграции и напишет мне какие

Google

Dmitry ?
25.08.2016
14:52:58
У меня exrm сейчас

Alexander
25.08.2016
14:56:09
https://tjournal.ru/33365-pervii-v-mire-servis-dostavki-picci-bespilotnikami-zapustyat-v-novoi-zelandii

Dmitry ?
25.08.2016
14:56:19
Можно вроде флаг добавить --run-migrations при деплое

Alexander
25.08.2016
14:56:39
упс не туда запостил

Dmitry ?
25.08.2016
15:30:56
FAILED with exit status 1:
[ -f ~/.profile ] && source ~/.profile
set -e
cd /tmp/erlang/***/builds
git checkout Node
Что за файл Node?

Alexander
25.08.2016
15:31:27
имя твоей программы для еделивера
он их нодами называет
exit status 1 - хэппи дебагинг! ))

Dmitry ?
25.08.2016
15:31:53
Как этот файл тут должен появиться?
Ну падает на git checkout Node

Alexander
25.08.2016
15:32:20
твой проект изначально в гите?

Dmitry ?
25.08.2016
15:32:27
Да

Alexander
25.08.2016
15:32:48
git remote -v
в папке проекта
должен быть там твой deploy@имя_сервера

Dmitry ?
25.08.2016
15:33:27
Есть

Alexander
25.08.2016
15:34:59
deply@111.111.111.111 deply@111.111.111.111:/home/deploy/repo/m_d/builds (fetch)
deply@111.111.111.111 deply@111.111.111.111:/home/deploy/repo/m_d/builds (push)
вот так?

Google

Alexander
25.08.2016
15:35:31
там путь конечно другой
но не суть

Dmitry ?
25.08.2016
15:35:38
Да

Alexander
25.08.2016
15:36:06
тогда значит на сервере что-то не так
или у твоего билд юзера прав нет
я кстати признаюсь честно, так и не смог завести все под нормальными пользователями
так что у меня билд из под рута

Admin
ERROR: S client not available

Alexander
25.08.2016
15:37:17
потом перекладывается релиз в хомяк к деплой юзеру
и тот его уже сам у себя выкачивает
оцени архитектуру edeliver - если хост один и тот же для билда и деплоя, то он сам в себя ssh сделает
иногда кажется, что mina или капистрано просто немного заточенные под билд релизов будут намного лучше справлятся
вернее не иногда, а каждый день об этом думаю

Dmitry ?
25.08.2016
15:39:49
Да я вот как раз сейчас сам в себя деплою :))
По ssh

Alexander
25.08.2016
15:40:01
=)))

Dmitry ?
25.08.2016
15:40:23
Есть другие варианты кроме edeliver?
Для ansible видел что-то

Alexander
25.08.2016
15:40:41
был relisa хороший вариант
но его бросили

Google

Alexander
25.08.2016
15:41:01
к сожалению ансибл хуже еделивера
так то деплоить можно хоть бат скриптами из под винды
но чем дальше в лес тем менее странным кажется edeliver
он конечно говно
но когда дело дойдет до переезда с exrm на дистилери и conform для конфигов, то еделивер уже не так плох
не говоря о том, что он развивается довольно шустро
говорят будут хоткод откаты
сейчас все происходит руками, хотя я для удобства и сделал автоверсии по инкрименту
типа выкатил 180, значит могу откатить на 179

Dmitry ?
25.08.2016
16:37:22
А умеет edeliver сам удалять за собой старые релизы?
@noma4i вроде бы всё получилось, отрабатывает, спасибо

Dmitry
25.08.2016
20:23:56
Ребят, почему экто суёт в insert запрос id, если автогенерэйт
Блин, тут есть insert_or_update и это решает проблему(

Alexander
25.08.2016
23:34:10
Я свой форк пилю
Утро чатик
У кого какие боли с фениксом/тулзами, пишите, решим )

Taras ?
25.08.2016
23:43:06
добро утро) гризу кактус сам ? если не получится - спать пойду, потом утром еще погризу, и уж потом - спрашивать помощи) так ничего не научусь если самому не погризть кактус)

Alexander
26.08.2016
00:57:54
и правильно )