170 похожих чатов

Ребят, а кто как деплоит приложеньки с гитлаба? Хочу пример

с ансиблом найти..

29 ответов

25 просмотров

А как у тебя приложение в прод должно поставляться?

Yury- Автор вопроса
Alexey Shumkin
А как у тебя приложение в прод должно поставляться...

Без докера. Склонировать, собрать, остановить старое, скопировать бинарь, запустить. Все выглядит так, как ансибл, но пока не получается найти подробно как из гитлаб ci запустить плейбук

Можно без ансибла через докер https://habr.com/ru/post/449952/

Yury- Автор вопроса
Andrew ᛉ
Можно без ансибла через докер https://habr.com/ru/...

Надо без докера, но статейку не видел, может чего почерпну,спасибо)

Yury
Без докера. Склонировать, собрать, остановить стар...

раз без докера, тогда лучше тогда RPM/DEB-пакет собирать

Yury
а разница?

спроси у админов ))))) они тебе расскажут

Вот пример с деплоем по SSH без докера и ансибла. https://golangforall.com/ru/post/go-build-and-deploy-ssh-gitlab.html

Yury
а разница?

Собрать RPM (или deb) - это не сложно. Плюсом имеешь быстрое обновление, плюс историю, в которой можешь всегда сделать rollback на нужный шаг.

Yury
а разница?

но отвечая на вопрос: ты можешь поставить, удалить, обновить, задаунгрейдить/откатить приложение средствами ОС банально узнать какая его версия стоит - тоже в пакете (нормального приложения) есть дока, релиз-ноутс ,etc при установке, обновлении, откате выполнить определённые действия в ОС - тоже... и т.п.

Alexey Shumkin
но отвечая на вопрос: ты можешь поставить, удалить...

+ инфа о том, где оно установлено какие файлы использует (необходимы для работы) не изменено ли оно с момента установки.. на эти вопросы легко получить ответ админу без обращения к разработчику

Elmanov Anton
Вот пример с деплоем по SSH без докера и ансибла. ...

вот это — ssh -p$SSH_PORT $SSH_USER@$SSH_HOST 'sudo service project stop && cp ~/binary_tmp /var/www/project/binary && sudo service project restart' прям доставляет у меня первый вопрос, откуда на хосте, например, изначально взялся project.service (т.е. /etc/systemd/system/project.service`) файл?

Yury- Автор вопроса
Alexey Shumkin
+ инфа о том, где оно установлено какие файлы испо...

тогда по хорошему надо ещё репу поднимать, верно?

Yury
тогда по хорошему надо ещё репу поднимать, верно?

ну, это прям совсем по хорошему, да приложение собирается и релизится в репу (или в артифактори/нексус) и ансиблом(если ансибл) уже деплоится из репы на все хосты (мы же помним, что на проде у нас может быть не один инстанс)

Alexey Shumkin
вот это — ssh -p$SSH_PORT $SSH_USER@$SSH_HOST...

есть некоторая предварительная работа на хосте - там должен появиться systemd (что дефолтно для многих систем, собственно он и использован потому как дефолтный, иначе можно было бы еще в supervisord закопаться). ну и надо создать деплой юзера с sudo правами на перезапуск сервиса.

Alexey Shumkin
вот это — ssh -p$SSH_PORT $SSH_USER@$SSH_HOST...

"прям доставляет" деплой без виртуализации вообще я бы сказал - мне кажется, это огромная редкость и потому там кругом кастомные операции, зависящие от системы. И тот же ансибл у каждого свой. Если на хосте больше 500 мб оперативы - то я бы все же рекомендовал докер. Небольшой оверхед на его работу, но зато все сразу встает на рельсы.

Elmanov Anton
есть некоторая предварительная работа на хосте - т...

не, про системд всё понятно.. я про файл с описанием сервиса... т.е. с нуля (первый раз) приложение этим скриптом не поставишь.. это - хрень, как по мне )) вредный совет от автора

Yury- Автор вопроса
Alexey Shumkin
не, про системд всё понятно.. я про файл с описани...

у меня мейкфайлом системд сервис создается

Elmanov Anton
"прям доставляет" деплой без виртуализации вообще ...

про докер соглашусь про "огромная редкость" - сомневаюсь, что прям редкость... к тому же мы говорим про Го, который "один бинарник", ему докер как бы не очень прям сильно нужен

Yury- Автор вопроса
Elmanov Anton
"прям доставляет" деплой без виртуализации вообще ...

у меня lxc контейнеры под проксмоксом, докер в виртуалке поднимать спецом не хочется

Yury
у меня мейкфайлом системд сервис создается

нуу.. это не значит, что это best practice

Yury- Автор вопроса
Alexey Shumkin
нуу.. это не значит, что это best practice

согласен, но рпм/деб пакеты также делают)

Yury
согласен, но рпм/деб пакеты также делают)

они это делают стандартным всем админам понятным способом

Alexey Shumkin
про докер соглашусь про "огромная редкость" - сомн...

с одним бинарником как раз удобство в деплое образов FROM scratch, вес которых равен весу бинарника, только есть инфраструктура докера для деплоя

Elmanov Anton
с одним бинарником как раз удобство в деплое образ...

да я не против докера )) я к тому, что не у всех есть докеры/куберы, и приложение на Го вполне себе счастливо может жить без проблем с зависимостями в ОС

Yury
у меня lxc контейнеры под проксмоксом, докер в вир...

Тогда, я бы предпочел выстроить систему деплоя и найти ansible роли (или как оно там называлось), которые по сути сделают тот же деплой. С deb я видел в реализации отдельного деб-репозитория - может потребоваться время. Про плюсы в виде различных версий - не то, чтобы был солюшн решаем только deb-пакетами. При обычном деплое по SSH, можно делать папки с новой версией, старые оставлять (например, 10 последних) и менять только симлинк.

Yury- Автор вопроса
Elmanov Anton
Тогда, я бы предпочел выстроить систему деплоя и н...

вот я тоже склоняюсь к ансиблу. хранить исходники на боевой машине это требование такое, поэтому деб пакет не совсем мое, хоть и заманчивое. пока не могу найти вменяемого руководства по запуску плейбуков из гитлаб ci

Похожие вопросы

Обсуждают сегодня

а через ESC-код ?
Alexey Kulakov
29
30500 за редактор? )
Владимир
47
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
13
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Как передать управляющий символ в открытую через CreateProcess консоль? Собсна, есть процедура: procedure TRedirectThread.WriteData(Data: OEMString); var Written: Cardinal;...
Serjone
6
в JclConsole объявлено так: function CtrlHandler(CtrlType: DWORD): BOOL; stdcall; - где ваше объявление с stdcall? у вас на картинке нет stdcall
Karagy
8
Ребят в СИ можно реализовать ООП?
Николай
33
program test; {$mode delphi} procedure proc(v: int32); overload; begin end; procedure proc(v: int64); overload; begin end; var x: uint64; begin proc(x); end. Уж не знаю...
notme
6
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Карта сайта