Skip to main content

Развертывание кода

Проверка проверок перед развертыванием, выбор стратегий слияния и эффективное управление ветвями при развертывании кода.

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

Проверка проверок перед развертыванием

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

Репозитории часто требуют определенных условий, прежде чем запрос на вытягивание может объединиться, в том числе:

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

Защищенные ветви применяют эти требования, чтобы ветви развертывания оставались стабильными.

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

Слияние кода с выпуском или основной ветвью

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

  • Фиксация слияния сохраняет каждую фиксацию из ветви запроса на вытягивание и добавляет явную точку слияния.
  • Squash и merge объединяет все фиксации в одну фиксацию для краткой истории.
  • Перебазировать и объединить добавляет каждую фиксацию в базовую ветвь для линейной истории без фиксации слияния.

Лучшая стратегия зависит от того, сколько деталей ваша команда хочет сохранить.

Применение требований в масштабе

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

  • Для защиты правил и ветвей может потребоваться up-to-date branch, подписанные фиксации, линейная история или определенные проверки состояния перед слиянием.
  • Очередь слияния позволяет ветвь с высоким трафиком принимать множество запросов на вытягивание без нарушения. Он проверяет каждую из них по последней версии базовой ветви и объединяет их в порядке после прохождения проверки. Если ветвь использует очередь слияния, доступные параметры слияния отличаются от стандартного слияния.

Примечание.

Очереди слияния по запросу на вытягивание доступны в любых общедоступный репозиторий, принадлежащих организации, или в частных репозиториях, принадлежащих организациям с помощью GitHub Enterprise Cloud. См . раздел AUTOTITLE.

Подключение слияний к развертыванию

Объединение часто является триггером, который поставляет код. GitHub Actions может выполнять рабочие процессы развертывания при слиянии запроса на вытягивание в выпуск или главную ветвь. Среды развертывания добавляют еще один уровень безопасности перед развертыванием: вы можете требовать конкретных рецензентов, таймеров ожидания или ограничений ветви перед продолжением развертывания, и они отображаются вместе с другими проверками.

Восстановление после слияния

Даже при проверке некоторые слияния должны быть отменены. Вы можете вернуть объединенный запрос на вытягивание, чтобы создать новый запрос на вытягивание, который изменяет изменения. Помните, что запрос на вытягивание можно пометить как объединенный косвенно в редких случаях, если его фиксации достигают базовой ветви через другой путь. Это может обойти защиту для этого конкретного запроса на вытягивание. См. раздел [AUTOTITLE и Отмена запроса на вытягивание](/pull-requests/reference/pull-request-merges#indirect-merges).

Закрытие запросов на вытягивание, которые не будут объединены

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

После объединения или закрытия запроса на вытягивание его головной ветви часто не требуется. Удаление неиспользуемых ветвей упрощает навигацию репозитория.

Дополнительные материалы