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

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

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

29 ответов

10 просмотров

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

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

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

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

Всем привет, написал код ниже, но он выдает сегфолт, в чем причина? #include <stdio.h> #include <stdlib.h> #include <string.h> struct product { char *name; float price; };...
buzz базз
70
Здравствуйте. Задача состоит в том, чтобы сделать real-time чат в мобильном приложении. После передачи сообщения пользователем через веб-сокеты, для основного и долговременног...
🐾
5
Всем доброго дня, ребят подскажите пожалуйста, если в курсе по ассемблеру используется MASM32, могу ли я использовать FASM? В чем явная разница и будет ли у меня все работать?
Botsman
17
Хотел бы спросить у знающих, правильную ли я выбрал книгу для начала изучения ассемблера Юрова В.И ? Или есть более лучшие книги для начала обучения?
Botsman
25
Книга Юрова В.И пойдёт для обучения?
Botsman
24
$params = [ 'formid' => 'feedbackForm', 'formTpl' => '@CODE: <form class="form-validate" data-id="ajax_form"> <fieldset class="margin-bottom-md"> ...
Pathologic
1
Люди добрые, помогите с идеями, потому что свои закончились. У клиента падает софтина в момент инициализации модуля OtlEventMonitor на RegisterWindowMessage('Gp/OtlTaskEvents/...
Михаил Усков
7
Тут просто дело в том, что я не могу сейчас дать такие подробности из за того что рассчитать это всё нереально. Этого проекта который я хочу сделать ещё даже не существует) И ...
🐾
8
> Примечательно, что новый владелец удаляет из GitHub любые жалобы, указывающие на подозрительную активность или смену владельца, и, видимо, рассчитывает на то, что пользовате...
Alex Sherbakov
2
GridView fully ignored first parent(SizedBox), and take width from second parent(Container). How can I constrain GridView by first parent? Widget build(BuildContext context) {...
Hamster
1
Карта сайта