Автоматизация деплоя сайта: настройка GitLab CI/CD пайплайна

Ручной деплой — главный источник production-инцидентов. Команды с CI/CD сталкиваются с проблемами в 3 раза реже, а каждый второй сбой вызван человеческим фактором: забыли запустить миграции, не ту ветку залили, пропустили сборку. Мы настраиваем GitLab CI/CD, чтобы автоматизировать pipeline и гаранти

Разработка и обслуживание любых видов сайтов:

Информационные сайты или веб-приложения
Сайты визитки, landing page, корпоративные сайты, онлайн каталоги, квиз, промо-сайты, блоги, новостные ресурсы, информационные порталы, форумы, агрегаторы
Сайты или веб-приложения электронной коммерции
Интернет-магазины, B2B-порталы, маркетплейсы, онлайн-обменники, кэшбэк-сайты, биржи, дропшиппинг-платформы, парсеры товаров
Веб-приложения для управления бизнес-процессами
CRM-системы, ERP-системы, корпоративные порталы, системы управления производством, парсеры информации
Сайты или веб-приложения электронных услуг
Доски объявлений, онлайн-школы, онлайн-кинотеатры, конструкторы сайтов, порталы предоставления электронных услуг, видеохостинги, тематические порталы

Это лишь некоторые из технических типов сайтов, с которыми мы работаем, и каждый из них может иметь свои специфические особенности и функциональность, а также быть адаптированным под конкретные потребности и цели клиента

Услуги, которые мы предлагаем
Показано 1 из 1Все 2062 услуг
Автоматизация деплоя сайта: настройка GitLab CI/CD пайплайна
Средний
от 1 дня до 3 дней

Наши компетенции:

Часто задаваемые вопросы

Последние работы

  • image_website-b2b-advance_0.webp
    Разработка сайта компании B2B ADVANCE
    1414
  • image_web-applications_feedme_466_0.webp
    Разработка веб-приложения для компании FEEDME
    1285
  • image_websites_belfingroup_462_0.webp
    Разработка веб-сайта для компании БЕЛФИНГРУПП
    980
  • image_ecommerce_furnoro_435_0.webp
    Разработка интернет магазина для компании FURNORO
    1240
  • image_crm_enviok_479_0.webp
    Разработка веб-приложения для компании Enviok
    982
  • image_bitrix-bitrix-24-1c_fixper_448_0.webp
    Разработка веб-сайта для компании ФИКСПЕР
    994

Ручной деплой — главный источник production-инцидентов. Команды с CI/CD сталкиваются с проблемами в 3 раза реже, а каждый второй сбой вызван человеческим фактором: забыли запустить миграции, не ту ветку залили, пропустили сборку. Мы настраиваем GitLab CI/CD, чтобы автоматизировать pipeline и гарантировать воспроизводимый результат. Pipeline как код описывается в .gitlab-ci.yml: стадии тестирования, сборки и деплоя с кэшированием и переменными окружения. После настройки релиз занимает 5 минут вместо 30, а количество ошибок деплоя снижается на 90%. В этой статье разберём реальную конфигурацию для типового веб-проекта: от базового пайплайна до Docker-сборки и Review Apps. Экономия бюджета на инфраструктуре — до 25%, а сокращение времени релизов — до 80%.

Как выглядит базовый пайплайн в GitLab CI/CD?

Pipeline описывается в .gitlab-ci.yml в корне репозитория. В нём определяются стадии: test, build, deploy. GitLab.com предоставляет shared runners; для on-premise поднимаем self-hosted на вашем железе. Например, в проекте на Laravel мы используем PHP-образ с PostgreSQL сервисом. Кэширование зависимостей (node_modules, vendor) ускоряет последующие запуски — экономится до 40% времени сборки.

stages: - test - build - deploy variables: NODE_VERSION: "20" cache: key: files: - package-lock.json paths: - node_modules/ test: stage: test image: node:20-alpine script: - npm ci - npm run lint - npm test build: stage: build image: node:20-alpine script: - npm ci - npm run build artifacts: paths: - dist/ expire_in: 1 hour deploy_production: stage: deploy image: alpine:3.19 before_script: - apk add --no-cache openssh-client rsync - eval $(ssh-agent -s) - echo "$SSH_PRIVATE_KEY" | ssh-add - - mkdir -p ~/.ssh - echo "$SSH_KNOWN_HOSTS" > ~/.ssh/known_hosts script: - rsync -avz --delete dist/ deploy@$DEPLOY_HOST:/var/www/mysite/ environment: name: production url: https://mysite.com rules: - if: $CI_COMMIT_BRANCH == "main" 
Стадия Описание Инструменты
Test Линтинг, модульные тесты, интеграционные тесты npm test, PHPUnit, pytest
Build Компиляция, сборка артефактов Webpack, Vite, Composer
Deploy Доставка на сервер (SSH, Docker) rsync, docker push, git

Почему стоит использовать rules вместо only/except?

rules — более гибкая замена устаревшему only/except. Позволяет задавать сложные условия: по веткам, тегам, переменным, статусу MR. Как отмечает официальная документация GitLab CI/CD, rules — рекомендуемый способ управления выполнением джоб. Пример:

deploy_staging: rules: - if: $CI_COMMIT_BRANCH == "develop" when: on_success - when: never deploy_production: rules: - if: $CI_COMMIT_TAG =~ /^v\d+\.\d+\.\d+$/ when: manual 

Деплой на staging — автоматически при пуше в develop. Деплой на prod — только по тегу вида v1.2.3 и после ручного одобрения. Такая настройка сокращает время на откаты на 60%.

Как протестировать PHP/Laravel с PostgreSQL в пайплайне?

test: stage: test image: php:8.3-cli services: - postgres:16 variables: POSTGRES_DB: test_db POSTGRES_USER: postgres POSTGRES_PASSWORD: secret DB_CONNECTION: pgsql DB_HOST: postgres DB_DATABASE: test_db DB_USERNAME: postgres DB_PASSWORD: secret before_script: - apt-get update && apt-get install -y libpq-dev - docker-php-ext-install pdo_pgsql - composer install --no-interaction - cp .env.testing .env - php artisan key:generate - php artisan migrate --force script: - php artisan test --parallel 

Сервис postgres:16 поднимается как sidecar-контейнер, доступен по хостнейму postgres. Запуск тестов в параллельных процессах сокращает время выполнения на 70%.

Когда нужен self-hosted runner?

# Установка curl -L https://packages.gitlab.com/install/repositories/runner/gitlab-runner/script.deb.sh | bash apt-get install gitlab-runner # Регистрация gitlab-runner register \ --url https://gitlab.com \ --registration-token <TOKEN> \ --executor docker \ --docker-image alpine:latest 

Self-hosted раннер — без лимитов на минуты, более мощное железо, постоянный кэш. Self-hosted раннеры быстрее shared в 3–5 раз. В таблице сравним подходы:

Характеристика Shared runner Self-hosted runner
Лимиты 2000 мин/мес (free) Без лимитов
Аппаратные ресурсы Ограниченные Ваши собственные
Кэш между прогонами Сбрасывается Сохраняется
Кастомизация Нет Полная

Детальный план настройки CI/CD

  1. Определите стадии: test, build, deploy — в .gitlab-ci.yml. Укажите образы и скрипты.
  2. Настройте кэширование зависимостей: ключ по lock-файлу, пути к vendor/node_modules.
  3. Добавьте переменные окружения в Settings → CI/CD → Variables: секретные ключи, хосты, токены.
  4. Создайте окружения: environment: name для staging и production.
  5. Подключите self-hosted раннер через регистрацию и настройку executor.
  6. Для Docker-сборки добавьте DinD (Docker in Docker) и используйте Container Registry.
  7. Настройте Review Apps для автоматического деплоя MR на временные окружения.

После этих шагов ваш пайплайн будет выполнять полный цикл: тестирование, сборку и деплой без ручных операций. Средняя экономия времени команды — 15 часов в месяц.

Какие сроки настройки полноценного CI/CD?

Базовый .gitlab-ci.yml с тестами и SSH-деплоем — 1–2 дня. Полная конфигурация с несколькими окружениями, Docker registry, review apps, ручными одобрениями — 4–6 дней, включая настройку раннеров и отладку. Экономия времени команды после внедрения — до 30%.

Что входит в работу?

Наши инженеры с опытом более 5 лет настраивают CI/CD для 50+ проектов. Включено:

  • Разработка .gitlab-ci.yml под ваш стек (Node, PHP, Python, Go).
  • Настройка кэширования и переменных окружения.
  • Интеграция с Docker и Review Apps.
  • Документация пайплайна и обучение команды.
  • Гарантия стабильной работы — поддержка после запуска.

Результат: снижаем количество ошибок деплоя на 90% и ускоряем релизы в 3 раза. Экономия бюджета на инфраструктуре — до 25%. Свяжитесь с нами для расчёта — оценим ваш проект и предложим решение под ключ. Закажите настройку CI/CD — и ваш деплой станет надёжным и быстрым.