🔥 Забирай разбор production Python кода от меня бесплатно, напиши слово ПРОДАКШН в тг-боте: t.me/ArtemShumeikoBot 🎓 Обучение самым современным и востребованным технологиям, которые нужны backend разработчику, на практике: artemshumeiko.ru
Сделай еще сжатый обзор github actions, ибо для большинства начинающих будет большим плюсом, если в пет проекте для собеса будет ci\cd) Я думаю там есть некоторые различия, в частности по раннеру
Зачем ставить Gitlab Runner на сервер если в итоге сборку образа делаете в облаке GitLab? Достаточно ведь просто прокинуть SSH подключение через переменные в настройках Gitlab, а на сервер просто Docker + compose. Или я чего-то не понимаю?
Спасибо, хорошее видео. На мой взгляд, необходимо пояснять, по какой причине мы выбираем настройки: 11:50 runner executor, 12:08 docker:dind, 12:30 volumes. По крайней мере кратко, иначе это просто некий magic code. Репозиторий проекта где-то доступен?
Подскажите, как раннер на этапе test видит образ my-backend-image, собранный на этапе build, если мы его никуда не выгружаем и в gitlab registry его тоже нет?
А на сколько норм запускать gitlab-runer на проде? Если в более реальных условиях, если есть пользователи которые пользуются приложением, в этот момент билд докера и прогон тестов-линтеров создают повышенную нагрузку на сервер.
Решение: просто использовать отдельный сервер под сборку. Я в Gitlab CI плохо понимаю, но эти раннеры по своей сути аналог агентов в Jenkins. Обычно билд сервер с агентом отдельный используется, где происходит сборка и деплой на целевые сервера, например, продовский с приложением
Ни на сколько. Смысл запуска runner на своём сервере только в экономии средств и настройке окружения. Облачная версия со всем справляется, у неё есть только квота минут. Автор видео не осилил сборку образа в облаке и загрузку его в gitlab registry...
Прям согласен с тобой, тоже обожаю Docker compose) Без него проектов меня не бывает) В крайностях если только если ручками запускать с помощью systemctl Было бы интересно узнать, какие практики ты используешь для защиты сервера и уязвимостей докера
Спасибо за видео! У меня вопрос: Не проще ли запускать тесты до сборки (build)? Я смотрю на примера фронта, build-которого создаст бандл для отдачи клиенту, в нем (в бандле, который получился после build) тесты уже не прогонишь, т.е. тесты нужно прогонять все равно отдельно, вне бандла и, если тесты упадут, то build придется перегонять заново после внесения изменений. Как будто прогнав вначале тесты мы сэкономим время, или это только на фронте так работает?
Полагаю, так сделано просто для примера, как это работает. В рабочем проекте массив stages был бы примерно в таком порядке - prepare, cache, test, code-scan, migration, build, clean-up, appsec, deploy, release
@@artemshumeiko На сколько я знаю, там синтаксис отличается от гитлабовского. Просто если у тебя уже проект на GitHub, если ли смысл переходить ради CI CD на GitLab
в целом да, сам процесс описан, но блин Docker in docker это извращение какое то же, нет ?!?! и в целом все равно не понятно осталось, как он решает что тот сервис надо погасить, перебилдить и запустить, или это за счет того что там docker compose делается?
При запуске пайплайна просит верифицироваться. Я выбрал способ через мобильный телефон, через РФ причём нельзя это сделать, арендовал номер, ввёл, в итоге меня перекинуло на способ верификации через кредитную карту, которой у меня нет. И что делать!
Ты используешь облачные раннеры гитлаба, надо использовать specify раннер который автор устанавливал в уроке И отключить переключатель Enable instance runners for this project в настройках проекта/ci-cd Остальную настройку очень долго объяснять, дальше уже сам. Но проблема в этом
@@naivrick9782 так специально для извращенцев, которые любят с таким возиться. но если без шуток, то арендую там европейский сервер и оно действительно так дешево. для каких нибудь тг ботов подойдет, но что то сурьезное там хостить я б конечно не стал:D
Если без кубера, то можно использовать nginx/haproxy в качестве балансировщика нагрузки и применять сине-зелёные развёртывания. Дожидаться, когда контейнер с новой версией приложения установится и будет доступ и маршрутизировать трафик на новый, удаляя старый. Что кубер что этот способ подразумевает какие-то навыки в области администрирования. Но даже так без кубера будет быстрее реализовать, если вообще не шаришь
Очень интересное видео, интересно как бы объединить frontend и backend такой схемой но чтобы они были в разных репозиториях ибо docker-compose один , а репозитория два
хм, ну по идеи можно собирать контейнеры отдельно друг от друга, и в докер композе уже подгружать с докерхаба или с другого сервиса с контейнерами. другой вопрос где тогда размещать композ... хз, может даже в отдельном репо?
А теперь весело попробуйте написать код для многоуровневого сервиса хотя-бы под балансировку, где один микросервис под windows, другая под linux с сегментацией сети между микросервисами и их взаимодействием через DNS, чтобы в браузере на IP на заходить. А то, что тут показывают это не CI/CD - это жонглирование поверхностной терминологией для кэлхер джунов. И вот таких, кто сразу льё фичу на прод окружение обычно выгоняют в конце спринта на мороз.
🔥 Забирай разбор production Python кода от меня бесплатно, напиши слово ПРОДАКШН в тг-боте: t.me/ArtemShumeikoBot
🎓 Обучение самым современным и востребованным технологиям, которые нужны backend разработчику, на практике: artemshumeiko.ru
Удивительно, но для меня это было одно из самых полезных видео, ибо практика прекрвсная. Спасибо, буду ждать еще видео :)
Просто превосходно. За 20 мин понял больше чем читал.
Артем, видео очень интересное и познавательное, спасибо за ваш труд, хотелось бы еще послушать про Jenkins и посмотреть, как его настраивать 🔥🔥🔥🔥
Спасибо за Ваш труд! Коммент в поддержку канала.
Огонь, спасибо! Выглядит лихо. Я пока только учусь. git + pycharm. Буду учиться вкручивать это все в ci cd
Черт, ты объясняешь довольно просто и ясно. Жаль пока не выполнил это
Ппц ты монстр!)) 👍👍👍
круто, теперь ждем k8s
красава! коротко и четко! mvp!
Как всегда на высоте Артём.
Видео просто кайф, очень быстро и информативно
Лучший! Спасибо большое за знания!
Спасибо большое за такой крутой видос! Ждал этого очень!!! 🎉 Может покажусь ленивым, но было бы славно, если бы была сборочка материала по теме 🥹
Великолепно!
👏👏👏👍🔥
Очень круто!
Спасибо. Полезно
Большое спасибо!
Специалис😃😃т ..! )) зачем sudo пишешь в командах под рутом? Лайк!
Сделай еще сжатый обзор github actions, ибо для большинства начинающих будет большим плюсом, если в пет проекте для собеса будет ci\cd)
Я думаю там есть некоторые различия, в частности по раннеру
Зачем? Кто использует GitHub actions в реальном мире?
@@artemshumeiko я) на самом деле много компаний используют github actions
@@artemshumeikoа что с ним не так? Как быть если проект изначально хранится на GitHub?
@@АнтонВитальевич-т7к перенеси на гитлаб
@@LionKingheh так а зачем всё-таки, если на GitHub есть все тоже самое? Чем он отличается или хуже?
Круто, спасибо!
Зачем ставить Gitlab Runner на сервер если в итоге сборку образа делаете в облаке GitLab? Достаточно ведь просто прокинуть SSH подключение через переменные в настройках Gitlab, а на сервер просто Docker + compose. Или я чего-то не понимаю?
Ну с таким пайпом даже до тестового не доедешь )))
"поняли" - ничего мы не поняли, но ознакомились.
Спасибо, хорошее видео.
На мой взгляд, необходимо пояснять, по какой причине мы выбираем настройки: 11:50 runner executor, 12:08 docker:dind, 12:30 volumes. По крайней мере кратко, иначе это просто некий magic code.
Репозиторий проекта где-то доступен?
Да, в описании есть ссылка на репозиторий
@@artemshumeiko Поясните указанные моменты?
Чувствую, ответа мы не дождёмся...
А можешь показать реальный пример например с битбакетом, дженкинсом и powershell на винде пожалуйста
Давай видео про кубер
+++
+++
Интересно а как добавить .env при всем этом деплое?
Подскажите, как раннер на этапе test видит образ my-backend-image, собранный на этапе build, если мы его никуда не выгружаем и в gitlab registry его тоже нет?
Всё происходит на сервере, на котором запущен раннер. Там собирается образ, тестируется и деплоится
Selectel бесплатно дают белый IP адрес, что-то не видел его в общей стоимости?
несколько лет делала такие процессы - только сейчас узнала, что это оказывается CI/CD 😂
после пуш, фикс сразу попадает в пайплайн и потом в дев или майн ветку для клиента, если пайплайн по ci/cd норм прошло?
Артём, спасибо вам. Отличный материал и подача. Где взять такую же классную футболку?😂
uniqlo :)
Хотелось бы больше видео по настройке ci/cd.
Теги, ветки, конфигурационные файлы разных веток)
Спасибо за ролик👍
А на сколько норм запускать gitlab-runer на проде? Если в более реальных условиях, если есть пользователи которые пользуются приложением, в этот момент билд докера и прогон тестов-линтеров создают повышенную нагрузку на сервер.
Решение: просто использовать отдельный сервер под сборку. Я в Gitlab CI плохо понимаю, но эти раннеры по своей сути аналог агентов в Jenkins. Обычно билд сервер с агентом отдельный используется, где происходит сборка и деплой на целевые сервера, например, продовский с приложением
Ни на сколько. Смысл запуска runner на своём сервере только в экономии средств и настройке окружения. Облачная версия со всем справляется, у неё есть только квота минут. Автор видео не осилил сборку образа в облаке и загрузку его в gitlab registry...
Сделай видео как добиться деплоймента без отключение или перезапуска сервиса
Прям согласен с тобой, тоже обожаю Docker compose)
Без него проектов меня не бывает)
В крайностях если только если ручками запускать с помощью systemctl
Было бы интересно узнать, какие практики ты используешь для защиты сервера и уязвимостей докера
Спасибо за видео! У меня вопрос:
Не проще ли запускать тесты до сборки (build)?
Я смотрю на примера фронта, build-которого создаст бандл для отдачи клиенту, в нем (в бандле, который получился после build) тесты уже не прогонишь, т.е. тесты нужно прогонять все равно отдельно, вне бандла и, если тесты упадут, то build придется перегонять заново после внесения изменений.
Как будто прогнав вначале тесты мы сэкономим время, или это только на фронте так работает?
Полагаю, так сделано просто для примера, как это работает.
В рабочем проекте массив stages был бы примерно в таком порядке - prepare, cache, test, code-scan, migration, build, clean-up, appsec, deploy, release
Спасибо большое за крутое видео, сделай пожалуйста ci/cd на проектах php (laravel/yii2)
Артем Python разработчик. Вам к другому спецу надо обратиться😊
Подскажи, ты пользуешься мышкой или тачпадом? Если мышкой, то какой?
Допустим он скажет что x7, дальше что? Пойдешь в магазин за такой же?
мышкой logitech, покупал на озоне за 2к
я не придаю значение клаве и мышке
Отличное видео! А будет такое же, но по настройке Github Actions ?
нет. А зачем?
@@artemshumeiko На сколько я знаю, там синтаксис отличается от гитлабовского. Просто если у тебя уже проект на GitHub, если ли смысл переходить ради CI CD на GitLab
@@zaskilovan у вас на работе GitHub используется для хранения кода?
@@artemshumeiko Я пока только учусь, по этому ещё не встречался с GitLab
лучше сразу с него начинать, чтобы на работе меньше учить)
Спасибо за ролик. Вопрос а как выбрать url на который я буду деплоить? Я просто не заметил Nginx конфига
в этом ролике мы не настраиваем домен и ssl сертификаты
Об этом я рассказывал в видео про деплой: ruclips.net/video/uLp-zgset00/видео.html
Артём, а ты смотрел на Kamal? Выглядит очень хорошо.
в целом да, сам процесс описан, но блин Docker in docker это извращение какое то же, нет ?!?!
и в целом все равно не понятно осталось, как он решает что тот сервис надо погасить, перебилдить и запустить, или это за счет того что там docker compose делается?
Он ничего не решает без твоей команды
Как опишешь в конфиге так и будет
да, это через компоуз разруливается. контейнер то один и тот же, поэтому он один убивает, а другой запускает
DIND это хорошо
@@alexandrfominenkov8390 чем? докер в докере, это виртуалка в виртуалке, что хорошего?
а как в гитлаб подтвердить аккаунт ?там требует выбрать страну России нет
Что такое джоба? Имеете ввиду джоб (job)? Сорри, совсем сленг не знаю.
да
При запуске пайплайна просит верифицироваться. Я выбрал способ через мобильный телефон, через РФ причём нельзя это сделать, арендовал номер, ввёл, в итоге меня перекинуло на способ верификации через кредитную карту, которой у меня нет. И что делать!
Ты используешь облачные раннеры гитлаба, надо использовать specify раннер который автор устанавливал в уроке
И отключить переключатель Enable instance runners for this project в настройках проекта/ci-cd
Остальную настройку очень долго объяснять, дальше уже сам. Но проблема в этом
Дружище, ты смог решить эту проблему?
@@Nick87rus я решил, но развертыванием своего инстанса гитлаба :)
У мире DevOps, какие дистры Linux часто используются ? .
Ubuntu
ох, кидайтесь в меня какашками, но мне больше нравится на базе RHEL. Для серверов AlmaLinux, для компа Fedora
чет селектел какой то дорогой.
та же вдсина с сервером в рф существенно интереснее
1 core
1 Gb
10 Gb
32 Tb *
2 ₽ / день
69 ₽ / месяц
Заказать
69руб?)
@@naivrick9782 так специально для извращенцев, которые любят с таким возиться. но если без шуток, то арендую там европейский сервер и оно действительно так дешево. для каких нибудь тг ботов подойдет, но что то сурьезное там хостить я б конечно не стал:D
Чет слишком дешево
согласен, далеко не самый дешевый сервис
это где это ты за 70 нашёл? звучит не очень надёжно
Странно, что там Руби появился. Гитлаб работает на Руби штоле?
Ну как работает, Гитлаб написан на рубине
Docker не хочет работать из СНГ
как-то это все бесплатно можно сделать, чтобы за аренду не платить? Чисто в целях самообучения
на собственном ПК запустить gitlab runner
а вообще, сервер можно купить за 300 рублей, оно того стоит
Давай теперь CircleCI
Давай что-нибудь посложнее
Хотя бы как убрать downtime
кубер в помощь
Если без кубера, то можно использовать nginx/haproxy в качестве балансировщика нагрузки и применять сине-зелёные развёртывания. Дожидаться, когда контейнер с новой версией приложения установится и будет доступ и маршрутизировать трафик на новый, удаляя старый. Что кубер что этот способ подразумевает какие-то навыки в области администрирования. Но даже так без кубера будет быстрее реализовать, если вообще не шаришь
@@MrMikhailDJ спасибо за совет ))
@@Alex.Shalda docker swarm вроде умеет бесшовный деплой делать
Очень интересное видео, интересно как бы объединить frontend и backend такой схемой но чтобы они были в разных репозиториях ибо docker-compose один , а репозитория два
хм, ну по идеи можно собирать контейнеры отдельно друг от друга, и в докер композе уже подгружать с докерхаба или с другого сервиса с контейнерами. другой вопрос где тогда размещать композ... хз, может даже в отдельном репо?
@@mideks о да надо подумать
а надо ли фронт и бэк разделять на два репо? 🤔🤔🤔🤔🤔🤔
@@mideks Тоже вопрос интересный
Да нафиг он нам ваш компост и не нужон
К сожалению не заработало у меня. Может что-то не так делаю
Не хватило примера использования env файла на реальном примере
приходите на курс, там подробно изучаем CI/CD: artemshumeiko.ru
docker build в 2024 лютий пон
а я всегда в кубере все разворачиваю, хоть и понимаю что в большинстве случаев это излишне. Хз почему
senior type shit :)
А теперь весело попробуйте написать код для многоуровневого сервиса хотя-бы под балансировку, где один микросервис под windows, другая под linux с сегментацией сети между микросервисами и их взаимодействием через DNS, чтобы в браузере на IP на заходить. А то, что тут показывают это не CI/CD - это жонглирование поверхностной терминологией для кэлхер джунов. И вот таких, кто сразу льё фичу на прод окружение обычно выгоняют в конце спринта на мороз.
Спасибо за видео, не хватает видео про мониторинг сервисов. Healthcheck, графана
да елы палы :-( опять про гитлаб, а если его нет :-)
А что у вас?
@@artemshumeiko у меня github, на gitlab не зарегаться нынче....
Может у меня плохое настроение, но какого дьявола были добавлены эти субтитры внизу? (Чёрная плашка, жёлтые буквы) Раздражает очень сильно.
в настройках берешь и отключаешь. В чем проблема?
@@nickouteen А ещё больше раздражают такие комментаторы... Будьте добры, перечитайте ещё раз, что я написал и начните смотреть видео...
Явно дело в настроении😅