Настройка Preview Deployments (Deploy Previews) для Pull Request

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

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

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

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

Предлагаемые услуги
Показано 1 из 1 услугВсе 2065 услуг
Настройка Preview Deployments (Deploy Previews) для Pull Request
Средняя
от 1 рабочего дня до 3 рабочих дней
Часто задаваемые вопросы

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

Этапы разработки

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

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

Настройка Preview Deployments (Deploy Previews) для Pull Request

Preview Deployment — это автоматически создаваемое временное окружение для каждого Pull Request с уникальным URL вида https://pr-123.preview.example.com. Ревьюер открывает живой сайт, кликает по интерфейсу, проверяет изменения без необходимости клонировать репозиторий и настраивать локальное окружение.

Платформы с встроенными Preview Deployments

Vercel — лучший вариант для Next.js и статических сайтов. Preview deployments работают из коробки при подключении GitHub репозитория. Каждый PR получает уникальный URL, ссылка добавляется в комментарий к PR автоматически.

Netlify — аналогичная функциональность для статических сайтов и JAMstack. Deploy Previews включены по умолчанию. Поддерживает split testing между preview и production.

Railway / Render — для full-stack приложений с базой данных. Railway создаёт изолированное окружение с отдельной БД для каждого PR.

Кастомная реализация на VPS

Для приложений, которые нельзя задеплоить на Vercel/Netlify (Docker-контейнеры, специфичные требования):

# .github/workflows/preview.yml
name: Preview Deployment
on:
  pull_request:
    types: [opened, synchronize, reopened]

jobs:
  deploy-preview:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4

      - name: Build Docker image
        run: |
          docker build -t app:pr-${{ github.event.pull_request.number }} .

      - name: Deploy to preview server
        uses: appleboy/ssh-action@v1
        with:
          host: ${{ secrets.PREVIEW_SERVER_HOST }}
          username: deploy
          key: ${{ secrets.PREVIEW_SSH_KEY }}
          script: |
            docker pull registry.example.com/app:pr-${{ github.event.pull_request.number }}
            docker stop app-pr-${{ github.event.pull_request.number }} || true
            docker run -d --name app-pr-${{ github.event.pull_request.number }} \
              -p 0:3000 \
              --label traefik.enable=true \
              --label "traefik.http.routers.pr-${{ github.event.pull_request.number }}.rule=Host(\`pr-${{ github.event.pull_request.number }}.preview.example.com\`)" \
              registry.example.com/app:pr-${{ github.event.pull_request.number }}

      - name: Comment PR with preview URL
        uses: actions/github-script@v7
        with:
          script: |
            github.rest.issues.createComment({
              issue_number: context.issue.number,
              owner: context.repo.owner,
              repo: context.repo.repo,
              body: `Preview: https://pr-${context.issue.number}.preview.example.com`
            })

Traefik автоматически маршрутизирует трафик на нужный контейнер по subdomain. Wildcard DNS запись *.preview.example.com указывает на preview-сервер.

Очистка устаревших окружений

# Удаляем preview при закрытии PR
on:
  pull_request:
    types: [closed]

jobs:
  cleanup:
    runs-on: ubuntu-latest
    steps:
      - name: Remove preview deployment
        uses: appleboy/ssh-action@v1
        with:
          script: |
            docker stop app-pr-${{ github.event.pull_request.number }}
            docker rm app-pr-${{ github.event.pull_request.number }}

База данных для preview окружений

Варианты:

  • Общая read-only база данных — быстро, но нельзя тестировать запись
  • Отдельная база на каждый PR — изоляция полная, но требует ресурсов. Neon (PostgreSQL) поддерживает database branching: создаёт branch БД мгновенно через copy-on-write
  • Seeded in-memory база — SQLite или PostgreSQL с фиксированными тестовыми данными

Сроки

Настройка Preview Deployments на Vercel/Netlify — 0,5 дня. Кастомная реализация с Docker, Traefik и очисткой окружений — 2–3 дня. Добавление database branching через Neon — 1 день.