GitLab: что это такое и как им пользоваться
2026-02-21 01:28 Diff

#статьи

  • 22 дек 2023
  • 0

Руководство для начинающих и тех, кому не понравился GitHub.

Иллюстрация: Оля Ежак для Skillbox Media

Программист, консультант, специалист по документированию. Легко и доступно рассказывает о сложных вещах в программировании и дизайне.

GitLab — это сервис для хранения кода, управления версиями и совместной разработки программного обеспечения. В статье мы подробно разберём его основные термины, поймём, для чего он используется и потренируемся на своём компьютере.

Вы узнаете:

GitLab — это веб-платформа для управления проектами и репозиториями программного кода, работа которой основана на популярной системе контроля версий Git. Чтобы понять, что она умеет и как именно помогает разработчикам, начнём с разбора основных понятий.

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

Коммит (commit) — это пакет изменений, хранящий информацию с добавленными, отредактированными или удалёнными файлами кода. Благодаря этому основной код проекта всегда можно вернуть в работоспособное состояние, восстановив его прошлые версии.

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

Ветки (branch). Это параллельные линии разработки, которые существуют независимо друг от друга. В Git-системах разработчики пишут код в отдельных ветках, избегая таким образом конфликтов между вносимыми изменениями.

Когда бэкендер, фронтендер или другой специалист завершает работу над кодом в своей ветке, он создаёт запрос на слияние (merge request) с главной веткой (master или main), где находится основной код программы, чтобы перенести туда свои изменения.

Слияние — это процесс объединения двух или более веток в одну.

Другие разработчики могут оценить изменения и прокомментировать их. После тестирования и утверждения со стороны сеньора или тимлида запрос на слияние выполняется. В GitLab можно настроить процесс разработки так, чтобы изменения автоматически вносились в основную ветку при выполнении определённых условий, например после успешного прохождения тестов.

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

В GitLab можно создавать задачи и группировать их в проекты, назначая ответственных и определяя дедлайны. Этим он похож на Jira, «Битрикс24» и другие приложения для менеджеров.

С его помощью тимлид или старший разработчик могут проверить скорость, с которой команда выполняет задачи. Это полезно при планировании спринтов, когда требуется определить времязатраты на разработку той или иной фичи в приложении.

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

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

Фото: cookie_studio / Freepik

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 не только предоставляет разработчикам хранилище кода со встроенной системой контроля версий 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 — это два популярных веб-сервиса для хостинга проектов с использованием системы контроля версий Git. Внешне они очень похожи, но между ними есть несколько различий:

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

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

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

Если у вас ещё нет учётной записи на GitLab, то начните с создания аккаунта на официальном сайте и заполните регистрационную форму:

  • Username: уникальное имя вашего аккаунта.
  • Email: рабочая или личная электронная почта.
  • Password: пароль с надёжной комбинацией.

После регистрации подтвердите её по ссылке из письма, отправленного на электронную почту. Теперь ваш аккаунт в GitLab создан и готов к работе.

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

Скриншот: GitLab / Skillbox Media

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

  • Project name: имя проекта.
  • Project slug определяется автоматически на основе Project name.
  • Visibility Level: Public — для всех, Private — только для вас и выбранных соавторов проекта.
  • Initialize repository with a README: автоматически создаст README в вашем репозитории. Это текстовый файл, который содержит информацию о проекте: описание его задач, принципов работы, инструкцию по установке и настройке.
Скриншот: GitLab / Skillbox Media

После заполнения данных нажмите кнопку Create Project. Теперь репозиторий готов к работе:

Скриншот: GitLab / Skillbox Media

SSH-ключи используются для аутентификации вашего компьютера на удалённом сервере, в данном случае на сервере GitLab. Благодаря этому вы можете подтверждать свою личность без ввода пароля.

Чтобы создать ключ, откройте терминал или командную строку и введите команду для генерации ключей ssh-keygen. Если вы хотите сгенерировать их в определённой папке, то введите путь до неё.

При генерации ключа можно указать пароль, но это необязательно
Скриншот: Skillbox Media

Теперь в указанной папке у вас появится два файла с ключами — приватный и открытый. Для создания ключей в GitLab нужен второй — файл с расширением .pub. Откройте его в текстовом редакторе и скопируйте содержимое в буфер обмена.

Перейдите в свой репозиторий на сайте GitLab, нажмите на кнопку Add SSH key:

Скриншот: GitLab / Skillbox Media

А затем на кнопку Add new key:

Скриншот: GitLab / Skillbox Media

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

Вы можете загрузить существующие файлы проекта в свой репозиторий или создать новые. Для этого нажмите на + и выберите New file или Upload file.

Скриншот: GitLab / Skillbox Media

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

Скриншот: GitLab / Skillbox Media

Репозиторий можно клонировать на свой компьютер и работать в удобном редакторе или IDE. Подробнее об этом напишем дальше.

Каждая ветка представляет собой отдельное направление работы. В них разработчики создают новые функции, исправляют ошибки, тестируют изменения и проводят эксперименты, которые не влияют на основной проект и другие ветки. После завершения работы в ветке производится её слияние с основной веткой.

По умолчанию в новом репозитории есть одна ветка — main. Обычно с кодом в main не работают напрямую, а вносят изменения посредством слияния с другими ветками.

Чтобы создать новую ветку нажмите на + и выберите пункт меню New branch.

Скриншот: GitLab / Skillbox Media

Новая ветка содержит копии всех файлов проекта. Теперь можно вносить изменения в код, добавлять новые фичи в ПО, исправлять ошибки, и это не будет влиять на основной код.

Чтобы перенести новый код в основную ветку, нажмите на кнопку Commit changes внизу страницы.

Скриншот: GitLab / Skillbox Media

А затем нажмите на кнопку Create merge request, создав запрос на слияние.

Скриншот: GitLab / Skillbox Media

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

Скриншот: GitLab / Skillbox Media

Чтобы принять изменения на следующей странице, нажмите кнопки Approve и Merge:

Скриншот: GitLab / Skillbox Media

На практике согласовывать и производить слияние, скорее всего, будет кто-то другой, например ваш тимлид.

Когда слияние веток будет выполнено, информация о нём появится в описании:

Скриншот: GitLab / Skillbox Media

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

Скриншот: GitLab / Skillbox Media

В новом окне нажмите Invite members, введите никнейм или адрес электронной почты пользователя, выберите для него роль и нажмите кнопку Invite.

Скриншот: GitLab / Skillbox Media

Большую часть времени вы будете писать код локально, в любимом редакторе или 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. Нажмите на неё и подтвердите, что вы действительно хотите удалить проект.

Скриншот: GitLab / Skillbox Media

Всё. Проект безвозвратно удалён.

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

  • GitLab — удобный и полезный инструмент для команд, занимающихся разработкой программного обеспечения. Он позволяет совместно работать над кодом и сохранять его промежуточные версии, к которым можно вернуться при необходимости.
  • Разработчики, которые используют GitLab, пишут код в отдельных ветвях или клонах репозитория на своих компьютерах. После дополнения, изменения или удаления кода они создают коммит, содержащий все изменения, которые будут внесены в основной репозиторий. Сеньор или тимлид проверяют их и принимают или отправляют на доработку.
  • GitLab включает в себя встроенные средства continuous integration (CI) и continuous deployment (CD), которые автоматизируют процессы тестирования, сборки приложения и развёртывания.
  • GitLab отличается от GitHub встроенным инструментом для CI/CD, возможностью развёртывания сервиса на собственном сервере и отсутствием ограничений на число групп пользователей с разным уровнем доступа.
Научитесь: Профессия Специалист по кибербезопас­но­сти + ИИ Узнать больше