03- DevOps практика: GitlLab CI+Runners. Создание CI CD Pipeline.
Вставка
- Опубліковано 15 лип 2024
- GitLab - веб-инструмент жизненного цикла DevOps с открытым исходным кодом.
Рассмотрим как работает GitLab CI, что такое Runners, как они настраиваются и подключаются
В видео показано CI и CD различия. А так же создание простого Pipeline.
00:00:00 | Что такое CI/CD
00:03:35 | CI/CD Pipeline
00:06:44 | Что такое Runner
00:14:30 | Установка Docker Runner 1/2
00:19:22 | Решение проблемы с SSL при подключении Runner
00:26:15 | Установка Docker Runner 2/2
00:28:10 | Первый простой Pipeline
00:39:05 | Gitlab CI Artifacts
00:42:00 | GitLab Runner Shell. Установка и настройка
00:46:24 | Shared Runner
00:48:27 | Добавление Stages
00:51:45 | Allow Failure. Управление ошибками
00:53:42 | Добавление прав для gitlab-runner. visudo
01:00:00 | Переменные (variables) в Pipeline
01:02:53 | Глобальная переменная
01:06:11 | Расширяем Pipeline. Установка Apache2
01:14:01 | Добавление очередного Stage
Команды в видео: github.com/RomNero/UA-cam-In...
Установка GitLab: about.gitlab.com/install/?ver...
Gitlab Runner: docs.gitlab.com/runner/
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Буду очень благодарен за поддержку в виде чашечки ☕️:
www.buymeacoffee.com/RomNero
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Предложениям пишите на: infotube@romnero.de
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Всегда понятно, доступно и спокойно объясняешь. Спасибо!
Спасибо👍 очень приятно
Классный урок, спасибо! "билЬд" немного резал ухо, немецкий учил наверное)))
Спвсибо. Да, я в Германии живу.
Подсказка тебе была когда он указывал адрес runner .de. JA JA NATURLICH DAST IS BILD MEIN SCHULLER))
спасибо за подробный урок, круто получилось!
Это очень крутой урок! Огромное спасибо!
Большое спасибо! Очень полезный курс
Прекрасное видео! Спасибо!
Очень полезно даже не смотря на бильд!
Благодарен за грамотные обзоры. Спасибо за труды и старания!
Спасибо))
Отличная работа! Огромное спасибо за материал!
Спасибо за отзыв. Мне очень важно знать, что материал понятно изложен))
Очень хороший урок. Для начинающих очень подходит.
Автору плюс в карму за труд.
Спасибо😉 больше получился не как урок, а пример использования.
По Gitlab CI ещё сделаю полноценное видео
Огромное тебе спасибо за твоё подробное творчество. :)
Спасибо за оценку👍🏻
Хороший урок. Спасибо!
Спасибо тебе за твои труды!
Спасибо за отзыв 👍🏻😊
Спасибо за уроки, темпы что надо с разъяснениями.
Спасибо за отзыв. Значит буду продолжать в таком же стиле 👍🏻😊
Спасибо за такой подробный урок!
Всегда пожалуйста. Рад помочь.
урок супер, все четко и без воды
Благодарю автора за время и материал!) Всё отлично работает, после нескольких дней мучений. Оставлю это здесь на случай аналогичных проблем!
Спасибо за позитивный отзыв 👍😀
спасибо тебе милый человек, ты открыл мне глаза на гитлаб си
Спасибо Вам
Очень интересно
Благодарю! Все очень понятно! Получилось разобраться в CI/CD и пайплайнах. Все очень подробно и сразу понятно!
Спасибо за отзыв 👍🏻 двигаемся в таком же нарравлении
Отличный урок!
Спасибо большое. Очень интересно. Мне очень помогло
Спасибо братанчик за старания!💪👍 Благодарим!
Всегда пожалуйста 😉
Мужик, ты просто лучший!
просто супер, все ясно и подробно
Спасибо за отзыв😊👍🏻
Отличный урок, особенно на фоне отсутствия иных на русском языке)
Огромное спасибо, теперь есть представление о всем процессе
Спасибо. Рад помочь
Мега классный туториал. Удачи автору!
Спасибо👍
огромное спасибо за труд! круто изложил
Спасибо. Возможно только примеры не очень корректно подобрал. Но цель была показать как работает gitlab CI.
Топовый урок, спасибо!
Спасибо за отзыв))
Как всегда чётко, портяно, последовательно!
Спасибо большое 😉👍 мега приятно
Просмотрел и не добавил лайк, вернулся исправился))) Спс за гайды, очень круто. Благодаря этому гайду потом хоть знаешь что гуглить и искать дальше
Спасибо 👍🏻
Спасибо большое за видео!
Топовый видос. Сам изучаю Jenkins, но про gitlab было интересно
Спвсибо. Jenkins классный и мощный инструмент.
spasibo, kak wsegda wsio kruto :)
Блин спасибо друг капец помог разобраться без воды
Всегда пожалуйста. Рад помочь))
Большое спасибо. спасибо за ваш труд.
Очень полезный курс.
Спасибо за отзыв 👍
Супер! Спасибо
Супер, все сделал по вашему и собрал полностью лабу
Отлично 👍
Спасмбо огромное! Смотрю твои видео в режиме нон-стоп, так как готовлюсь стать девопсом))
Спасибо за отзыв.
Успехов в этом не лёгком пути к devops😉
Спасибо за видео. Реализовал у себя такую схему: есть локальный гитлаб, есть два сервера. Поставил на оба сервера shell-runner и ansible. Раннеры подключил к гиту и создал репозиторий с плейбуками ansible. Gitlab-runner запускает команду ansible-pull который тянет с гита нужную конфигурацию и применяет. На выходе получаю следующее: со своего рабочего места в IDE правлю код ансибла, делаю коммит и пуш в гитлаб - изменения сразу же применяются на обоих серверах. По-моему достаточно удобно.
Круто. Спасибо!!! Очень чётко все описал. Побольше бы таких коментов ;)
И отдельное спасибо за ansible-pull 👍🏻
можешь скинуть, playbook и gitlab ci файл?
@@123sultans ютуб удаляет ссылки
если у вас деплоу происходит сразу после изменения кода то так не должно быть, нужны сначала тесты и после них удачи деплой в прод.
@@cranebird1467 Это когда ты работаешь в крупной конторе и пишешь совместный код. А для меня это просто замена того, что я и так сделал бы сейчас, зайдя по ssh, т.к я не кодер а админ. Плюс это какой-никакой бекап конфига. Я знаю, что если я разверну новый сервер и подключу к нему этот конфиг, то сервер сам настроит себя до требуемого состояния. На это уходит много времени при первоначальной конфигурации, но потом это окупается.
Супер видос! Спасибо
Всегда пожалуйста😉
спасибо за видео, без воды, с разбором ошибок, единственное хорошее на рускоязычном ютубе про ci в gitlab
Спасибо. Очень приятно 👍
Супер все понятно! есть и простые примеры и посложнее. Спасибо!
Спасибо за полезный отзыв👍
Спасибо, очень круто! Очень! ))
Спасибо 👍
Пожалуй лучшее видео по обучению gitlab
Спасибо. Ещё в планах есть видео по gitlab. Вышли новые версии и добавилось несколько функций
@@RomNeroЭто Вам спасибо! Docker изучил по Вашим видео, теперь использую его в работе.
Очень приятно слышать, что мои видео помогли Вам👍
Спасибо, огромное!
Рад помочь👍🏻
СПАСИБО!!!
Красавчик. Побольше бы примеров для ymlов
Переменные, экранирование, примеры использования вот это все.
А так да, низкий поклон. В кои то веки не бросил разбираться и теперь буду использовать.
Спасибо за позитивный отзыв.
Хочу ещё сделать несколько видео по gitlab. Нужно только найти время🙂
Спасибо за видео, удалось понять основы CI/CD и научиться писать простенькие пайнплайны, только я за место трех виртуалок поднял две, на втором ранере сделал теги test и stage, дабы сэкономить себе оперативную память :)
Отлично. Поздравляю с первыми шагами в CI 👍
Спасибо! Интересно еще как работает мониторинг в гитлаб.
Спасибо за видео.
Плюсую за gitlab container registry.
Пошаговый рецепт был бы очень кстати.
Спасибо. Ещё хочу сделать docker in docker Pipeline.
Спс, буквально из-за твоего видео за две недели написал CI CD для PG Pro Ent: установка, настройка Data, изменение conf файлов, передачу бекапов в докер и еще куча всего))) Передал бекапы программистам, теперь заявки по базам для дев ушли с отдела))) Теперь Swarm изучаю
Спасибо за отзыв. Приятно слышать, что мои видео помогли.
Я бы оставил swarm, а время лучше инвестировать в K8s
@@RomNero да проблема что нет годных гайдов по нем, а отзывы такие, что прод на нем будешь запускать долго, а swarm это почти сразу.
Согласен. Гайдов конкретных мало. Нужно искать постоянно решения проблем. Но swarm никто уже не использует. Всё же лучше попытаться изучить kubernetes.
По нему хочу делать видео, но оно не скоро будет.
огонь!
Спасибо
Спасибо чувак )))
спасибо
жестко
В каком плане?
👍
Интересно послушать про гитлаб ригистри, как образы можно передавать между стейджами и вообще про докер ранер, там же проблема использовать докер образы, потому что получается docker-in-docker. В общем я бы про работу с образами в гитлабе послушал )))
Спасибо. Видео будет о docker CI и docker in docker.
Используем dind для построения образов в Jenkins - проблем не было. Ну и есть kaniko как альтернатива dind
@@erics8362 спасибо, почитаю
Благодарю, отличный труд! От себя добавлю, удобно иметь инструкцию сборки в репозитории. Настройка ос и сборка с++ проектов годичной давности без conan кошмар, так и не вспомнишь где и какие взять зависимости.
Спасибо за отзыв))
Огромное спасибо за проделанную Вами работу. Видео смотрятся легко и без напряга. При регистрации runner правда у меня возникла ошибка: " x509: certificate relies on legacy Common Name field, use SANs instead". Победить так и не смог, не силен в работе с сертификатами. ОС Centos 7, openssl version 1.0.2.
Спасибо за отзыв. С сертификаты постоянно какие-то проблему будут возникать, если использовать не официальные или хотя бы letsencrypt
решил? такая же проблема
@@erzhana8708 проверь версию openssl
@@user-ze8si2co2f 1.1.1f
@@RomNero, спасибо за подобный цикл.
У меня возникла такая же проблема как и ТС ветки. Подскажите куда копать, т.к. в гугле решения найти не удалось? У меня ВМ на которой развернул ubuntu. На ней по вашему видео поднял Gitlab. Подключить gitlab-runner в докере на этой же ВМ не удается (вы в видео показали только решение проблемы с сертификатом на gitlab-runner shell).
P.S. Белый адрес есть, но он динамический. Решил проблему пробросом портов через VPN-туннель с купленного VPS, но сертификат letsencript получить не удалось из-за ошибки таймаута, хотя времени прошло достаточно (более 72 часов) для обновления dns-записей (и сервер доступен из других точек мира по http и https).
Как выполнить команду на всех раннерах с общим тегом? Получается сейчас если указать тег например shell, то гитлаб выбирает только один сервер рандомно с тегом shell и делает на нем джоб. А как на всех заставить?
Познавательно, спасибо! Не подскажешь планируется ли видео о запуске GitLab вместе с Ansible через Molecule ? Так называемая Infrastructure As Code. Было бы очень полезно
Спасибо за отзыв. Molecule это же для теста плейбуков.
А по IaaS буду делать видео.
@@RomNero да, точно, спасибо большое
отличное видео! просто шикарное! а планируется ли аналогичное,но по работе именно с контейнерами? чтоб собирался контейнер по скриптам, сохранялся в репозитории гитлаба и заливался уже измененный по всем нужным стадиям?
Спасибо за отзыв. Спасибо за идею👍
Подобное видео сделаю в теме по Devops примерам.
Здравствуйте, очень помогает ваша инструкция в работе, спасибо. Только можно уточнение, что значит на клиенте на 24:45, это какой то другой сервер или что извините?
Спасибо за отзыв.
В данном случае (в видео) клиенты - это были серверы, на которых работали gitlab-runner. И на эти же клиенты производился деплоймент.
Добрый день, а где найти ссылку если ее у меня нет в Project runners?
Спасибо все круто, я не поня одно, как происходит деплой на сервере staging, где вы указываете чтобы деплоит на 10.10.10.127?
Заранее блогадарю.
Все происходит по тегам от gitlab runner.
спасибо понял@@RomNero
Чувак, крутой урок. Не понял одну вещь - почемы мы артефакты сохраняем на машине gitlab, а потом обращаемся к ним с машины test. Или они шарятся в рамках пайплайна и это как подмонтированный volume, который доступен на любом из stage пайплайна?
P.S. попробуй слепую печать подтянуть, у меня тоже раньше было много опечаток.
Спвсибо за отзыв.
Артефакты доступны внутри Pipeline. Они хранятся на gitlab определённое время. Этот timeout так же можно выставить.
на 14:03 "также есть дополнительные два сервера..."
Откуда они взялись? Как нам их локально развернуть?
Добрый день!
Хочу запускать скрип на хосте, такаая ошибка, а так npm установлен через root. pipline выполняется через user gitlab-runner.
как запускать на рууте в определенном папке, npm install
$ ssh root@10.11.12.13 'bash -s' < /opt/deploy.sh
bash: line 3: npm: command not found
bash: line 5: npm: command not found
/usr/bin/env: ‘node’: No such file or directory
Заранее блогадарю.
Спасибо большое. Очень полезно. Правда так и не смог подключить runner в docker'е на хосте с gitlab, ошибка с сертификатом.
Спасибо за отзыв.
Да, это проблема у многих, кто использует не официальные сертификаты. Хотя для обучения можно импортировать любые сертификаты. И все будет работать.
docs.gitlab.com/runner/configuration/tls-self-signed.html
Спасибо за урок! А что за клиент для SSH с табами?
Это MobaXTerm ua-cam.com/video/tFVGS_Dp-gs/v-deo.html
Вы проводите персональные уроки по DEVOPS?
Пока не думал обэтом😄
Надо прям через root?
Всё это хорошо, легко и просто, но в тепличных условиях.
У меня есть машинка, но докер туда никак. И вот кагбы усьо...
При деплое появляются "особенности", начинаешь изучать Ansible и выкручиваться как только можно :)
+ бюрократия добавляет веселия...
А вообще да, CI/CD - хорошее дело.
Полностью согласен. Отличные условия там, где нет ограничений, от этого страдает и безопасность.
В Pipeline просто закинуть команды для ansible. И все так же можно автоматизировать))
@@RomNero Но это еще один инструмент, хотя и полезный :)
Я наверное и на канал этот попал, потому что искал инфо по ansible )))
P.S. Я то уже нормально подразобрался, но по AWX как-то мало информации(ну или я плохо искал). Особенно тонкостей типа привязки credential Ansible Galaxy к организации. Иначе requirement.yaml не поедет. И оно зараза не в ошибку падает, а пишет msg в логе джобы ))) Еще были моменты, но не такие мучительные как этот )
Успехов!
25:17 Делал всё по шагам, у меня нет gitlab-runner, мы же контейнер запускаем(по крайней мере до этого момента). Что произошло я не понял, gitlab-runner в одной вкладке у автора всё норм, вернулся на старую вкладку с установкой докером у него тоже всё норм. У меня при старте контейнера как ругался на сертификат так и ругается
Вопрос, когда ты переходишь на сервер (gitlab test и staging) и пишешь там команды, куда ты переходиш где это... у меня гитлаб на vm azure где мне писать эти команды ?
По ssh можно подключится к серверам даже в azure
Здраствуйте, здесь вы использовали самоподписанный сертификат да ? , потому что вы не создали запрос для подписывание сертификата
Да, здесь использовался самоподписанный сертификат. Но лучше сделать нормальный (например, Let'sEncrypt)
Почему этап Проверка качества кода идёт до сборки?
Нашёл на ютубе сначала курс какой-то из университета, много воды лишнего... Иии честно опять вы меня спасли :)) В первые ставил Gitlab, благодаря вам быстрее разобрался. Спасибо вам за качественный контент!
У меня такой вопрос, смотрите допустим у нас есть общий runner, если 2 человека в команде одновременно пушат разные проекты, то это дело будет два Pipeline выполнять и не будут конфликта? Я просто создал по способу через докер и не создавал общий runner. От CI \ CD мне важно, чтобы он прогнал unit-тесты написанные.
И вопрос по docker'у, допустим у меня 2 микросервиса они все изолированы в docker , мне стоит под базу данных \ nginx отдельный докер и всё? Или есть вариант по лучше?
База данных у меня на localhost и в будущим если нужен будет 2 сервер я хотел бы SSH туннелировать.
Спасибо за отзыв.
По runner: можно использовать 1 runner, но у 2го пользователя должны быть права на проект.
По DB: можно использовать как контейнер. Или если планируется использовать БД для многих ресурсов, то можно поставить на отдельную машину или ещё лучше сделать центральный кластер. Вот пример: ua-cam.com/video/n8EfzZkPADg/v-deo.htmlsi=sFkGQAHBNvqoKj9g
@@RomNero Понял, а то есть я могу например взять в докер и поместить туда базу данных, а при добавление микросервиса, когда я упаковывать буду то просто пропишу в конфиге данные от бд?
В основном верно. Смотря какие приложения и какие цели стоят. И стоит обращать внимание в какой сети будут находится отдельные контейнеры.
@@RomNero Спасибо, понял.
22:45 а где команда-то из видео openssl?
CD это continuous delivery/deployment
вот бы так подробно но для SpringBoot и запуск dev в docker....
Пожалуйста сделайте отдельный выпуск Docker для чайников, вы тут пихаете докер, хотя мы понятия не имеем что у него под капотом и для чего он нужен, ну или хотя бы оставьте ссылку под этот комментарии хороший ресурс для его изучения на русском, заранее благодарен
Спасибо. О докере будет видео. Но немного позже.
Привет) Установил первый ранер в докере как у тебя, с теми же командам в gitlab-ci.yml - все хорошо, также работает и выполняется. Но добавил другую команду('./mvnw package'), сборки архива java, и stage падает с ошибкой '/bin/bash: Permission denied' как у тебя во втором случае. Пытался выдать права внутри докера, но почти любая команда внутри контейнера не выполняется(даже статус ранера не могу узнать), и не думаю, что менять что-то внутри докера это вообще хорошо, я хотел хоть как-то заставить ранер выполнить джобу. Как можно разрешить эту проблему? з.ы. Докер с контейнером ранера стоит на винде, не уверен, что это важно, но все же.
Привет. Я бы посмотрел именно скрипт mvnw. Возможно, он пытается использовать какие-то системные ресурсы.
Попробуй запустить скрипт так: sh mvnw.
Проверь права на файлы в проекте.
нужна помощь, застрял на том, что не могу найти URL. Registration token- есть, URL не могу найти
Можно же показать где что сохраняется
CD = Continuous Delivery и Continues Deployment, насколько я представляю. А не Continues Development.
Не так ли?
В сочетании CI/CD - именно Delivery и Deployment, как доставка и развёртывание.
У вас есть test и staging как вы их создали?
Здесь просто показали что есть у вас сервера ua-cam.com/video/jAIhhULc7YA/v-deo.html а как их создать?
У меня сервера созданы в proxmox.
Если есть трудности с созданием серверов. То лучше начать изучать изначально эти вещи, а потом уже переходить к cicd
@@RomNero Не понял что за сервера. Можете ссылочку кинуть? ) Где почитать как сервера сделать?
Очень наглядный урок, только не очень понятно что есть gitlab server, его предоставляет gitlab? Как к нему подключится?
Посмотри начальные видео. Это 3-е видео из серии.
Я новенький, подскажите это линукс, сендос или что стоит на серверах?
Для видео использую Ubuntu
беда с этими сертификатами для локальной сети, самоподписные не работают в браузере, отсюда и раннер не зарегистрируешь
Добрый день. А можно ссылку на проект?)
Приветствую. На какой проект? Это использовался gitlab в локальной сети
ссылка на команды в видео уже не работает?
Спасибо.
Ссылку исправил.
do this courses in english so that more people can take benefit from it
Thank you. I will make a separate channel for tutorials in English
а как сейчас бегуна зарегать?Ошибку выдает при реге
А где yaml для ci/cd? Набирать с экрана?(
Ой, нужно закинуть. Спасибо. Я не заметил.
а как зайти в админ панель? а то у меня нету такой вкладки
Должны быть права админа. Справа вверху есть меню. В меню снизу будет "Admin"
mkdir -p
если директория существует, то ругаться не будет
Всё классно, только не понятно зачем такая дичь на стейж и прод без докера? Как минимум с привязкой к хост системе начнутся проблемы с версиями того же питона и енвы не помогут (что собственно и указано в доках). Три шага назад получается. По идее после второго шага нужно слить конты в докер режистри, а на продах уже готовый конт вытягивать. При этом в енвах на проде DEVELOP=False.
Второй момент. Проще готовый скрипт запускать, чем формировать его на лету. Получается код не самодостаточный и уже без гитлаба не работает. Для группы серверов достаточно одного ранера с ансиблом.
Но я думаю это здесь чисто для примера. Спасибо за видео.
Спасибо за комментарий.
Согласен с Вами. Это чисто что бы показать как работает CI и что бы без сильных наворотов. В прод так делать не стоит 😄
Привет! Смотрю твои видео в 2023 и не перестаю удивляться)!
Только вот ошибка при регистрации ранера на сервере так и осталась "x509: certificate signed by unknown authority"
Сервер и ранер с докером запускаю на локальной машине без домена.
Не могу понять где не прав...
Спасибо.
Проблема с сертификатом. Используется самосозданный сертификат. Решается импортом CA сертификата в раннер.
@@RomNero спасибо, сейчас попробую посмотреть где это и как) А в ранер в etc/ssl/ ???
@@daadshaman2095 Решил проблему?
@@ibragimProtopopov нет, не решил...