Управление версиями

Развертывайте из репозитория, который вы уже используете, — девять мест для размещения

Подключите учетную запись GitHub или GitLab, в которой вы работаете, и выполняйте развертывание прямо из ветки: в Cloudflare Pages, GitHub Pages, GitLab Pages, Netlify, Vercel, Render, Azure Static Web Apps или AWS Amplify — либо на наш собственный управляемый хостинг, где репозиторий и файлы сайта синхронизируются в обоих направлениях. Для каждого подключения отображаются необходимые права доступа, оно проверяется через API провайдера перед сохранением и хранится в Vault. Вы также можете входить в систему с помощью GitHub или GitLab.

Коммит, перемещающийся по конвейеру из репозитория на рабочий сайт.
  • GitHub + GitLabПодключите аккаунт, который у вас уже есть
  • Девять мест назначениявосемь пограничных хостов, плюс наш собственный парк
  • Двусторонняя синхронизациякаждый сайт, каждая строка
  • Сохранено в Vaultпроверено при вводе, никогда в журнале
  • Токен проверен перед сохранениемтокен с избыточной областью действия никогда не попадает в систему
  • Отправить для развертыванияподпись проверена, необязательно
  • Ваша ветка, ваша сборкаопубликуйте каталог или запустите собственный CI
  • Корректно отключитьмы удаляем именно тот хук, который создали

Подключитесь один раз и посмотрите, с чем вы соглашаетесь

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

Привилегии, указанные заранее

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

Проверено у поставщика, а не принято на веру

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

Хранится в Vault и нигде больше

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

Более одной учетной записи, выбранной для каждого сайта

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

Девять мест, где может оказаться репозиторий

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

Cloudflare Pages

Неограниченная пропускная способность, разрешенное коммерческое использование и управление apex-доменами у того же провайдера, который обычно обслуживает вашу зону DNS. По этим причинам это первый вариант, к которому мы обращаемся.

Хостинг Cloudflare Pages →

GitHub Pages

Публикуйте напрямую из репозитория, в котором уже находится код. Помечено в строке Footprint-Free, поскольку общая инфраструктура github.io сама по себе является следом.

Хостинг GitHub Pages →

GitLab Pages, Netlify, Vercel и остальные

GitLab Pages, Netlify, Vercel, Render, Azure Static Web Apps и AWS Amplify — это места назначения, на которые можно направить сайт с тем же подключением и той же историей развертывания.

Хостинг статических сайтов →

Наш собственный управляемый хостинг

Полноценное приложение, а не скомпилированный пакет — WordPress, PHP, Node. Это место назначения, для которого действует двусторонняя синхронизация, благодаря чему файлы на сервере и в ветке остаются согласованными.

Управляемый хостинг →

Сайты на чужом сетевом периметре

Сайт, опубликованный на хосте, который нам не принадлежит, все равно расходует лимит и продолжает отображаться в вашей панели управления вместе со своими развертываниями, временем безотказной работы и данными SEO рядом со всем остальным, чем вы управляете.

Квоты для внешних сайтов →

Или отредактируйте здесь

Встроенный в браузер редактор работает с теми же файлами, которые возвращает двусторонняя синхронизация, поэтому быстрое исправление из панели управления становится коммитом в вашей ветке, а не изменением, которое позже никто не сможет найти.

Веб-редактор →

Двусторонняя синхронизация

Ваш репозиторий и ваш рабочий сайт, в полном согласии

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

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

  • Изменения на нашем оборудовании становятся коммитами в вашей ветке
  • Коммиты в вашей ветке возвращаются на сайт
  • Синхронизируйте один каталог — тему, плагин — а не весь корневой каталог документов
  • По умолчанию отключено, в том числе на всех уже существующих сайтах
Файл, открытый в редакторе, и тот же файл, показанный как коммит в репозитории.

Опубликуйте каталог или позвольте вашей собственной системе CI собрать его

Два режима, и разница заключается в том, где выполняется сборка. Оба завершаются в одном и том же месте: ссылке, которую мы получаем и публикуем, при этом коммит фиксируется для развертывания.

  • Режим публикации берет вашу ветку в исходном виде и публикует указанный вами каталог — пустое поле означает корень репозитория.
  • Режим CI запускает вашу команду сборки в собственном конвейере вашего провайдера и фиксирует результат в отдельной ветке публикации, которую мы извлекаем как любую другую ссылку.
  • Ветка, из которой публикуется развертывание, всегда указывается явным образом и никогда не называется «веткой по умолчанию»: ветка по умолчанию может измениться без вашего ведома, а история, которая не может сказать, какая именно ветка была опубликована, — это не история.
  • Автоматическое развертывание включено по умолчанию и может быть отключено без удаления вебхука, что позволяет вам наблюдать за поступлением доставок до того, как разрешить их выполнение.
  • Каждое развертывание фиксирует свой коммит, результат и время и выполняется в фоновом режиме — страница обновляется по завершении сборки.
  • Отключение удаляет исключительно созданный нами вебхук по его идентификатору (id) и ничего более в вашем репозитории.

От репозитория к работающему сайту

  1. Подключить аккаунт

    GitHub или GitLab, в разделе «Подключения». Привилегии перечисляются до создания токена, и перед сохранением он проверяется у поставщика услуг.

  2. Направить сайт на репозиторий

    Владелец, репозиторий, ветка, а также то, публикуем ли мы каталог или получаем то, что собрал ваш CI. В рамках этого мы регистрируем вебхук для пуша.

  3. Толкните или нажмите кнопку

    Отправка (push) в указанную ветку запускает развертывание, или вы можете выполнить развертывание по запросу на вкладке Развертывание сайта. Сборки выполняются в фоновом режиме.

  4. Посмотрите его и при желании выполните повторную синхронизацию

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

Когда что-то пошло не так

«Подключено, но так и не доставлено» — это состояние, о котором мы обязательно вам сообщим

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

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

  • Время и сообщение о последней доставке на карточке
  • Указывается «Никогда не доставлялось», а не оставляется пустым
  • Подпись проверена для каждого поставщика перед запуском чего-либо
  • Созданный нами хук удаляется по идентификатору при отключении
Доставка вебхука поступает и проверяется перед запуском какого-либо действия.

Идентификатор

Войти с помощью GitHub или GitLab — или Google, или Microsoft

Наряду с адресом электронной почты и паролем вы можете входить в свою учетную запись Zinn Digital® с помощью GitHub, GitLab, Google или Microsoft. Уровень идентификации выполняет подтверждение связи (handshake); мы никогда не видим пароль вашего провайдера, а привязку учетной записи социальной сети к существующей учетной записи Zinn® по-прежнему необходимо подтверждать по электронной почте.

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

  • Вход через GitHub, GitLab, Google и Microsoft
  • Ключи доступа и двухфакторная аутентификация для одной учетной записи
  • Учетные данные для входа и развертывания остаются раздельными
Делегированный доступ для вашей команды
Несколько человек входят в одну учетную запись через разных поставщиков услуг.

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

Каких поставщиков систем управления версиями можно подключить?

GitHub и GitLab. Подключите аккаунт, в котором вы уже работаете, и мы сможем выполнять развертывание из его репозиториев, регистрировать в них вебхук для push-событий и — при желании — синхронизировать файлы вашего сайта в обратном направлении. Оба сервиса используют один и тот же механизм подключения аккаунтов, поэтому все сказанное ниже применимо к каждому из них.

Могу ли я войти с помощью GitHub или GitLab?

Да, а также с помощью Google или Microsoft. Наряду с адресом электронной почты и паролем вы можете войти в свою учетную запись Zinn Digital® с помощью любого из четырех способов. Уровень идентификации обрабатывает подтверждение связи (handshake), и мы никогда не видим пароль вашего провайдера. Вход с помощью GitHub — это отдельное действие, не связанное с подключением GitHub для развертывания: вы можете сделать что-то одно, и то и другое или ничего из этого.

Где я могу развернуть репозиторий?

В Cloudflare Pages, GitHub Pages, GitLab Pages, Netlify, Vercel, Render, Azure Static Web Apps или AWS Amplify для статического или собранного сайта — либо на наш собственный управляемый хостинг, где репозиторий и файлы сайта синхронизируются в обоих направлениях. Вы сами выбираете место назначения для сайта; подключение репозитория в обоих случаях одинаково.

Вы можете создать мой сайт, или он должен быть уже предварительно создан?

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

Выполняется ли автоматическое развертывание при push?

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

Что такое двусторонняя синхронизация?

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

Что произойдет, если обе стороны изменились?

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

Как защищен мой токен доступа?

Мы показываем привилегии, необходимые для подключения, до того, как вы его создадите, проверяем токен через собственный API провайдера при вводе — поэтому недействительный токен или токен с неверной областью действия никогда не сохраняется — и только затем записываем его в Vault. Он никогда не попадает в наш код, журнал, файл конфигурации среды или командную строку. Отозовите его у провайдера или удалите подключение здесь в любое удобное время.

Как узнать, действительно ли вы получаете мои отправки (push)?

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

Могу ли я использовать развертывание Pages на линии Footprint-Free?

Это предлагается и это отмечено флагом. GitHub Pages и GitLab Pages совместно используют инфраструктуру провайдера и публичные имена хостов github.io и gitlab.io, а это является следом (footprint) — единственной вещью, для избежания которой существует эта линейка. Для сети с нулевым следом (zero-footprint) развертывайте вместо этого на изолированном хостинге. Везде в остальном Pages работает по высшему разряду.

Почему я должен явно выбирать Vercel?

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

Могу ли я увидеть, что и когда было развернуто?

Да. Каждое развертывание фиксирует опубликованный коммит, время запуска и результат выполнения, а на вкладке «Развертывание» сайта отображается история вместе с активным URL-адресом. Развертывания выполняются в фоновом режиме, поэтому страница обновляется по мере завершения сборки, избавляя вас от ожидания индикатора загрузки.

Развернуть из вашего репозитория

Начните 14-дневный пробный период без привязки карты, подключите GitHub или GitLab и направьте сайт на ветку. Публикуйте на edge-хосте или на нашем собственном хостинге с двусторонней синхронизацией файлов.

Начать бесплатно