Код
#статьи

GitLab: что это такое и как им пользоваться

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

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

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

Вы узнаете:


Что такое GitLab

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

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

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

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

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

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

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

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

Зачем нужен 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 делает командную разработку удобнее

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 / 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-ключи

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

Больше интересного про код — в нашем телеграм-канале. Подписывайтесь!

Изучайте IT на практике — бесплатно

Курсы за 2990 0 р.

Я не знаю, с чего начать
Научитесь: Профессия Специалист по кибербезопас­но­сти Узнать больше
Понравилась статья?
Да

Пользуясь нашим сайтом, вы соглашаетесь с тем, что мы используем cookies 🍪

Ссылка скопирована