GitLab

GitLab Код

Що таке GitLab?

GitLab – це вебплатформа для спільної розробки програмного забезпечення, яка поєднує систему контролю версій Git із засобами для планування, тестування й автоматизації.

У цій статті ми пояснимо, як працює GitLab, розберемо його основні функції та дамо конкретні поради щодо використання. Посібник для початківців і тих, кому не сподобався GitHub.

Робота з GitLab

GitLab – це веб-платформа для управління проектами та репозиторіями програмного коду, робота якої заснована на популярній системі контролю версій Git. Щоб зрозуміти, що вона вміє і як саме допомагає розробникам, почнемо з розбору основних понять.

Система контролю версій Git використовується для зберігання проміжних версій коду. Наприклад, коли розробник вносить до нього зміни або додає нові частини, то в Git він робить це за допомогою коммітів.

Комміт (commit) – це пакет змін, що зберігає інформацію з доданими, відредагованими або видаленими файлами коду. Завдяки цьому основний код проєкту завжди можна повернути в працездатний стан, відновивши його минулі версії.

Репозиторій. Місце, де зберігається код і додаткові файли, необхідні для його роботи або верстки вікон програми: іконки, картинки тощо. Репозиторій схожий на звичайну папку на комп’ютері, тільки з додатковими функціями. Наприклад, у кожного файлу, який він зберігає, є історія змін.

Гілки (branch). Це паралельні лінії розробки, які існують незалежно одна від одної. У Git-системах розробники пишуть код в окремих гілках, уникаючи таким чином конфліктів між внесеними змінами.

Коли бекендер, фронтендер або інший фахівець завершує роботу над кодом у своїй гілці, він створює запит на злиття (merge request) з головною гілкою (master або main), де міститься основний код програми, щоб перенести туди свої зміни.

Злиття – це процес об’єднання двох або більше гілок в одну.

Інші розробники можуть оцінити зміни та прокоментувати їх. Після тестування і затвердження з боку сеньйора або тімліда запит на злиття виконується. У GitLab можна налаштувати процес розробки так, щоб зміни автоматично вносилися в основну гілку після виконання певних умов, наприклад після успішного проходження тестів.

GitLab допомагає командам спільно розробляти програмне забезпечення: планувати процеси, тестувати код, збирати проект і публікувати релізи.

Планування розробки

У GitLab можна створювати завдання і групувати їх у проєкти, призначаючи відповідальних і визначаючи дедлайни. Цим він схожий на Jira, «Бітрікс24» та інші додатки для менеджерів.

З його допомогою тімлід або старший розробник можуть перевірити швидкість, з якою команда виконує завдання. Це корисно під час планування спринтів, коли потрібно визначити часозатрати на розробку тієї чи іншої фічі в застосунку.

Написання коду

Учасники можуть спільно працювати над проектом у GitLab завдяки системі репозиторіїв і гілок. Розробники пишуть код паралельно один з одним, не турбуючись про сумісність нових або змінених частин програми.

Після написання або оновлення частини коду розробник подає запит на злиття своєї гілки з головним репозиторієм проєкту. Сеньйор-розробник або тімлід перевіряють його і приймають запит на злиття або ж відправляють код на доопрацювання, залишаючи коментарі.

Тестування коду

GitLab автоматизує процеси тестування при внесенні будь-якої зміни в код. Наприклад, коли в проєкт додають нову функцію або змінюють стару, GitLab відправляє її в центральний репозиторій, де автоматично запускається тестування.

Зазвичай цей процес влаштований таким чином:

  • Система перевіряє код на помилки компіляції.
  • Після цього запускаються тести, написані розробниками: модульні – для перевірки окремих частин коду, інтеграційні, що перевіряють роботу нового коду зі старим, та інші. Мета всіх тестів – переконатися, що нові зміни не ламають наявну функціональність застосунку.
  • Розробник отримує звіт про пройдені тести і за необхідності допрацьовує код. Коли всі необхідні зміни буде внесено, GitLab інтегрує їх в основний репозиторій проєкту.

Збірка проєкту

У GitLab є репозиторії контейнерів – автономних виконуваних пакетів, що містять усе необхідне для роботи програми: бібліотеки, файли конфігурацій та інше. Завдяки цьому вони запускаються в будь-якій системі, незалежно від її оточення. Контейнери створюються, розгортаються і управляються на платформі Docker.

У репозиторії проєкту можна зберігати різні версії контейнерів для свого застосунку та налаштувати їхнє автоматичне оновлення в разі зміни коду.

Реліз застосунку

Вбудовані засоби continuous integration (CI) і continuous deployment (CD) автоматизують увесь процес від складання коду до завантаження застосунку або його нової версії в середовище виконання: на веб-сервер, мобільний пристрій або іншу платформу.

Розробник може визначити тип оточення, наприклад, вибравши продакшен-сервер, і автоматично розгортати застосунок у ньому після тестування.

У GitLab вбудовано кілька варіантів розгортання «з коробки». Їх вибирають залежно від завдань:

  • Синьо-зелене розгортання (blue-green deployment). Використовується два середовища: робоче («синє») і тестове («зелене») – для перевірки роботи програми після внесення змін. Коли нову версію коду перевірили, вона стає «зеленою».
  • Канаркине розгортання (canary deployment). Спочатку нова версія застосунку розгортається для невеликої частини користувачів. Так її тестують у реальних умовах, обмеженій аудиторії, а потім стає основною для всіх.
  • Плавне розгортання (rolling deployment). Застосунок замінюється новою версією без переривання роботи. Якщо у команди кілька серверів, вона оновлює код на одному з них, потім на наступному і так далі.

Ці стратегії знижують ризики, що виникають під час встановлення нових версій застосунку. Наприклад, пов’язані з його несумісністю з конкретними користувацькими пристроями. У разі синьо-зеленого або канаркового розгортання можна швидко відкотитися до стабільної версії застосунку.

І це не все. У GitLab є готові шаблони CI/CD templates. Це набори інструкцій або конфігурацій для автоматизованого складання, тестування і розгортання коду. Замість того щоб щоразу створювати конфігурацію з нуля, розробники можуть використовувати готовий шаблон і налаштувати його параметри для свого застосунку.

Моніторинг

GitLab збирає різноманітні метрики процесу CI/CD і продуктивності застосунку: час складання, відсоток успішного проходження тестів, кількість виявлених помилок та інші. Якщо їх не вистачає, то можна інтегрувати сторонні інструменти моніторингу, наприклад Prometheus або Grafana.

Чим зручний GitLab для команди

GitLab не тільки надає розробникам сховище коду з вбудованою системою контролю версій Git, а й полегшує роботу за допомогою додаткових можливостей.

Гнучкі налаштування доступу до репозиторіїв із кодом. У проєкті може працювати кілька десятків фахівців. GitLab дає змогу налаштувати їхні права доступу до репозиторіїв – визначити, хто може читати, редагувати або завантажувати код. Наприклад, користувачі з гостьовим доступом до репозиторію можуть переглядати його, але не вносити зміни. Це підвищує безпеку проєкту і полегшує управління розробкою.

Можна налаштувати доступ до окремих гілок, а також створити групи користувачів, які беруть участь у кількох проєктах одночасно.

Інструменти управління CI/CD. Continuous integration (CI) і continuous deployment (CD) – підхід у розробці програмного забезпечення, що автоматизує процеси складання, тестування та розгортання застосунку.

Безперервна інтеграція (continuous integration, CI) – це практика, за якої код регулярно, найчастіше кілька разів на день, зливають у загальний репозиторій з автоматизованим складанням проєкту. Завдяки цьому можна швидко виявити баги в коді та проблеми сумісності з наявною кодовою базою.

Безперервне розгортання (continuous deployment, CD) – продовження CI. Коли код успішно проходить тестування після злиття, система автоматично розгортає зміни в робочому середовищі. Це означає, що нова версія застосунку одразу стає доступною для замовників і користувачів.

База знань. У GitLab є інструменти для створення вікі-сторінок із документацією проєкту. Вони підтримують різні формати: текст, зображення, відео та таблиці.

Завдяки базі знань про проект нові співробітники можуть швидко зрозуміти, як налаштувати робоче середовище, які версії бібліотек використовувати тощо.

Проекти та завдання. У GitLab реалізована система управління розробкою. У ній можна створювати завдання для членів команди, вибираючи відповідальних і встановлюючи дедлайни, і описувати результати роботи.

Інтеграція з іншими інструментами. GitLab підтримує інтеграцію з популярними платформами та сервісами, що використовуються в розробці: Docker, Kubernetes, Jira, Slack та іншими.

Загалом, GitLab – це централізоване місце не тільки для зберігання коду, а й для управління проєктами, ведення бази знань та автоматизації процесів розробки.

Відмінність GitLab від GitHub

GitLab і GitHub – це два популярні веб-сервіси для хостингу проєктів з використанням системи контролю версій Git. Зовні вони дуже схожі, але між ними є кілька відмінностей:

  • GitHub – це хмарний сервіс, що належить Microsoft, на якому ви можете зберігати свої проєкти та керувати ними. На відміну від нього, GitLab можна розгорнути на своєму власному сервері.
  • У GitHub для роботи з CI/CD доведеться використовувати додатковий інструмент – GitHub Actions. GitLab – це повністю інтегроване рішення з вбудованими інструментами CI/CD.
  • У безкоштовній версії GitHub у приватних репозиторіях використовується два рівні доступу: власник (owner) і співавтор (collaborator). У GitLab таких обмежень немає. Кількість користувачів із різним рівнем доступу не обмежена.

Загалом і GitLab, і GitHub надають однаковий набір можливостей. Різниця лише в тому, що в GitHub частина з них доступна через інтеграції зі сторонніми додатками, а в GitHub вони є за замовчуванням.

Як працювати з GitLab

Робота з GitLab проходить у кілька кроків: створення акаунта і репозиторію, додавання користувачів і гілок, завантаження файлів проєкту, внесення змін до коду і злиття гілок.

Як створити обліковий запис і проєкт
Якщо у вас ще немає облікового запису на GitLab, то почніть зі створення акаунта на офіційному сайті та заповніть реєстраційну форму:

  • Username: унікальне ім’я вашого акаунта.
  • Email: робоча або особиста електронна пошта.
  • Password: пароль із надійною комбінацією.

Після реєстрації підтвердіть її за посиланням із листа, надісланого на електронну пошту. Тепер ваш акаунт у GitLab створений і готовий до роботи.

Репозиторій

На головній сторінці або в бічній панелі натисніть на значок + і виберіть пункт New project/repository:

Створити проєкт у GitLab можна кількома способами: з нуля, на основі шаблону, імпортувати його з іншого сервісу чи комп’ютера або за допомогою CI/CD. Ми почнемо працювати з порожнього проєкту, тому виберіть Create blank project і заповніть інформацію:

  • Project name: ім’я проєкту.
  • Project slug визначається автоматично на основі Project name.
  • Visibility Level: Public – для всіх, Private – тільки для вас і обраних співавторів проєкту.
  • Initialize repository with a README: автоматично створить README у вашому репозиторії. Це текстовий файл, який містить інформацію про проєкт: опис його завдань, принципів роботи, інструкцію зі встановлення та налаштування.

SSH-ключі

SSH-ключі використовуються для автентифікації вашого комп’ютера на віддаленому сервері, в даному випадку на сервері GitLab. Завдяки цьому ви можете підтверджувати свою особистість без введення пароля.

Щоб створити ключ, відкрийте термінал або командний рядок і введіть команду для генерації ключів ssh-keygen. Якщо ви хочете згенерувати їх у певній папці, то введіть шлях до неї.

Тепер у зазначеній папці у вас з’явиться два файли з ключами – приватний і відкритий. Для створення ключів у GitLab потрібен другий – файл із розширенням .pub. Відкрийте його в текстовому редакторі та скопіюйте вміст у буфер обміну.

Перейдіть у свій репозиторій на сайті GitLab, натисніть на кнопку Add SSH key.

А потім на кнопку Add new key.

Вставте скопійований ключ у поле Key і дайте йому осмислене ім’я, наприклад, таке, що збігається з ім’ям репозиторію.

Файли

Ви можете завантажити наявні файли проєкту у свій репозиторій або створити нові. Для цього натисніть на + і виберіть New file або Upload file.

Тепер ви можете редагувати код безпосередньо у веб-інтерфейсі. Для цього натисніть кнопку Edit.

Репозиторій можна клонувати на свій комп’ютер і працювати в зручному редакторі або IDE. Детальніше про це напишемо далі.

Гілки

Кожна гілка являє собою окремий напрямок роботи. У них розробники створюють нові функції, виправляють помилки, тестують зміни та проводять експерименти, які не впливають на основний проєкт та інші гілки. Після завершення роботи в гілці відбувається її злиття з основною гілкою.

За замовчуванням у новому репозиторії є одна гілка – main. Зазвичай із кодом у main не працюють безпосередньо, а вносять зміни за допомогою злиття з іншими гілками.

Щоб створити нову гілку натисніть на + і виберіть пункт меню New branch.

Нова гілка містить копії всіх файлів проекту. Тепер можна вносити зміни в код, додавати нові фічі в ПЗ, виправляти помилки, і це не впливатиме на основний код.

Злиття гілок

Щоб перенести новий код в основну гілку, натисніть на кнопку Commit changes внизу сторінки.

На сторінці, що відкрилася, введіть назву злиття, опишіть його, вказавши, що саме ви змінили, і виберіть відповідальних за перевірку. Тепер натисніть на кнопку Create merge request внизу сторінки.

Щоб прийняти зміни на наступній сторінці, натисніть кнопки Approve і Merge.

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

Коли злиття гілок буде виконано, інформація про нього з’явиться в описі.

Користувачі у проєкти

Ви можете додавати до свого проєкту учасників із різними рівнями доступу. Для цього виберіть на панелі ліворуч пункт Members.

У новому вікні натисніть Invite members, введіть нікнейм або адресу електронної пошти користувача, виберіть для нього роль і натисніть кнопку Invite.

Клонування репозиторію

Більшу частину часу ви будете писати код локально, в улюбленому редакторі або IDE, а не в панелі GitLab. Для цього потрібно буде клонувати репозиторій – після завершення роботи його також можна буде злити з основним репозиторієм.

Як працювати локально:

  • Скопіюйте URL репозиторію. На своєму комп’ютері відкрийте командний рядок або термінал і виконайте команду git clone <URL сховища> для завантаження сховища на локальну машину.
  • У створеному клоні сховища вносьте зміни до файлів проєкту або додавайте нові.
  • Після завершення роботи з кодом відкрийте командний рядок або термінал у папці вашого проєкту. Виконайте команду git add ., щоб додати всі зміни в стейдж. Стейдж (staging area) у Git – це місце, де збираються зміни перед коммітом. Якщо ви хочете додати тільки конкретні файли, використовуйте команду git add <ім’я_файлу>.
  • Щоб подивитися, які файли перебувають у стейджі та які зміни готові до коміту, використовуйте команду git status.
  • Для створення коміта наберіть команду git commit -m «Ваш коментар до змін». У лапках можете написати короткий коментар, наприклад: «Додано нові функції» або “Виправлено помилки”.
  • Щоб відправити коміт на сервер, використовуйте команду git push.

Видалення проєкту

Видалити проєкт у GitLab може адміністратор проєкту або користувач із відповідними правами доступу.

Увійдіть у GitLab і перейдіть у проєкт, який хочете видалити. Відкрийте розділ Settings і виберіть General. Прокрутіть сторінку вниз до розділу Advanced і відкрийте його. Внизу ви побачите кнопку Delete project. Натисніть на неї і підтвердіть, що ви дійсно хочете видалити проєкт.

А потім натисніть на кнопку Create merge request, створивши запит на злиття.

Усе. Проект безповоротно видалено.

Що в підсумку

Пробіжимося по тому, що дізналися сьогодні:

  • GitLab – зручний і корисний інструмент для команд, що займаються розробкою програмного забезпечення. Він дає змогу спільно працювати над кодом і зберігати його проміжні версії, до яких можна повернутися за потреби.
  • Розробники, які використовують GitLab, пишуть код в окремих гілках або клонах репозиторію на своїх комп’ютерах. Після доповнення, зміни або видалення коду вони створюють комміт, що містить усі зміни, які будуть внесені в основний репозиторій. Сеньйор або тімлід перевіряють їх і приймають або відправляють на доопрацювання.
  • GitLab містить у собі вбудовані засоби continuous integration (CI) і continuous deployment (CD), які автоматизують процеси тестування, збирання застосунку та розгортання.
  • GitLab відрізняється від GitHub вбудованим інструментом для CI/CD, можливістю розгортання сервісу на власному сервері та відсутністю обмежень на кількість груп користувачів із різним рівнем доступу.

Висновок

GitLab обʼєднує всі етапи розробки в одному середовищі.

Він допомагає команді працювати злагоджено, економити час і зменшувати кількість помилок. Якщо потрібно налагодити спільну роботу над проєктом, цей інструмент стане надійною опорою.

Павлов Максим

Founder & CEO Onpage School

Оцініть автора
Onpage School