GitLab для начинающих
Полное руководство по DevOps-платформе с встроенным CI/CD
Что такое GitLab и почему это больше чем GitHub?
GitLab — это полная DevOps-платформа, которая объединяет в себе не только хостинг кода (как GitHub), но и все инструменты для полного цикла разработки: планирование, разработка, безопасность, развёртывание, мониторинг.
Ключевые отличия от GitHub:
- Встроенный CI/CD — не нужно подключать сторонние сервисы
- Container Registry — собственный реестр Docker-образов
- DevSecOps — инструменты безопасности встроены в процесс
- GitLab Pages — бесплатный хостинг статических сайтов
- Полный цикл DevOps — от идеи до production
| Этап DevOps | Инструмент GitLab | Для чего используется |
|---|---|---|
| Планирование | Issues, Milestones | Постановка задач и отслеживание прогресса |
| Разработка | Git Repository, Web IDE | Написание и хранение кода |
| Сборка | CI/CD Pipelines | Автоматическая сборка приложения |
| Тестирование | Automated Tests | Проверка кода на ошибки |
| Развёртывание | Auto DevOps | Автоматический деплой на сервер |
| Мониторинг | Metrics, Logs | Отслеживание работы приложения |
Регистрация и создание проекта
Шаг 1: Регистрация на GitLab
- Перейдите на gitlab.com
- Нажмите "Register" в правом верхнем углу
- Заполните форму или войдите через Google/GitHub
- Подтвердите email (важно для активации всех функций)
Шаг 2: Создание нового проекта
В GitLab есть два типа контейнеров для проектов:
Проект
Отдельный репозиторий с кодом
Группа
Объединение нескольких проектов
Для простого сайта создайте проект:
- На главной нажмите "New project"
- Выберите "Create blank project"
- Укажите имя проекта (например,
my-gitlab-site) - Для главного сайта можно использовать
username.gitlab.io - Установите видимость "Public" (для бесплатного хостинга)
- Нажмите "Create project"
GitLab Pages: Хостинг статических сайтов
GitLab Pages работает аналогично GitHub Pages, но с более гибкими настройками через CI/CD. Создайте .gitlab-ci.yml в корне проекта:
# Самый простой конфиг для статического сайта
pages:
stage: deploy
script:
- mkdir -p public
- cp -r * public/ # Копируем все файлы в папку public
artifacts:
paths:
- public
only:
- main # Запускать только при пуше в основную ветку
После добавления этого файла и коммита в репозиторий:
- GitLab автоматически запустит pipeline
- После успешного выполнения перейдите в "Deploy" → "Pages"
- Ваш сайт будет доступен по адресу:
https://username.gitlab.io/project-name
🚀 Визуализация GitLab CI/CD Pipeline
Push кода
Вы отправляете изменения в репозиторий
Запуск Pipeline
GitLab автоматически запускает CI/CD пайплайн
Сборка
Выполняются команды из .gitlab-ci.yml
Деплой
Сайт автоматически публикуется на GitLab Pages
Мощные возможности GitLab
Security
SAST, DAST, dependency scanning
Container Registry
Хранение Docker образов
Auto DevOps
Автоматизация всего цикла
Analytics
Аналитика кода и производительности
Container Registry - встроенный Docker-репозиторий
GitLab имеет собственный registry для Docker-образов. Чтобы его использовать:
build:
stage: build
script:
- docker build -t $CI_REGISTRY_IMAGE:$CI_COMMIT_REF_SLUG .
- docker push $CI_REGISTRY_IMAGE:$CI_COMMIT_REF_SLUG
only:
- main
Преимущества встроенного registry:
- Бесплатно для публичных проектов
- Интеграция с CI/CD пайплайнами
- Веб-интерфейс для управления образами
- Автоматическая очистка старых образов
Практическое задание: DevOps Pipeline
Создайте автоматизированный пайплайн для статического сайта:
Бонус: Добавьте этап тестирования в пайплайн (например, проверку HTML через htmlhint)
Кому подходит GitLab?
Выберите GitLab, если:
- Нужен полный цикл DevOps "из коробки"
- Хотите встроенный CI/CD без сторонних сервисов
- Работаете с Docker и нужен Container Registry
- Цените безопасность (DevSecOps)
- Работаете в команде и нужны продвинутые инструменты
Может не подойти, если:
- Нужен только простой хостинг кода (лучше GitHub)
- Работаете в экосистеме Atlassian (лучше Bitbucket)
- Хотите максимально простой интерфейс (лучше SourceHut)
Для углубленного изучения
Изучите официальную документацию по CI/CD и попробуйте интерактивные туториалы GitLab.