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

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

Чтобы вернуться к исправному состоянию развертывания, конвейер отката обычно выполняет следующие задачи.
  • Сброс состояний и очистка сред.
  • Запуск пользовательского сценария для отмены изменения.
  • Развертывание предыдущей редакции развертывания.

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

Настройка отката

Чтобы настроить откат в развертывании, необходимо выполнить следующие действия.

  • Создайте конвейер развертывания.
  • Выявите потенциальные точки отказа в конвейере развертывания, которые будут инициировать откат, чтобы было можно присоединить конвейер отката. Например, можно присоединить конвейер отката к задаче условия или опроса, которая проверяет, успешно ли выполнена предыдущая задача. Дополнительные сведения о задачах условия см. в разделе Использование привязок переменных в задаче «Условие» для запуска или остановки конвейера в Automation Pipelines.
  • Определите уровень отказа, который будет запускать конвейер отката, например сбой задачи или этапа. Откат также можно присоединить к этапу.
  • Определите, какую задачу или задачи отката нужно будет выполнить в случае сбоя. Создайте конвейер отката с этими задачами.

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

  • С помощью пустого холста можно вручную создать конвейер отката, который выполняется параллельно с существующим конвейером развертывания. После этого можно присоединить конвейер отката к одной или нескольким задачам в конвейере развертывания, которые запускают откат при сбое.
  • Используйте смарт-шаблон конвейера, чтобы настроить конвейер развертывания с действием отката. Затем Automation Pipelines автоматически создаст один или несколько конвейеров отката по умолчанию с предварительно определенными задачами, которые откатят развертывание в случае сбоя.

    Подробный пример настройки конвейера непрерывного предоставления, когда для отката применяется смарт-шаблон конвейера, см. в разделе Как откатить развертывание в Automation Pipelines.

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

    Сведения о том, как настроить задачу конвейера с откатом с помощью общего конвейера, см. в разделе Создание и использование общих конвейеров в Automation Pipelines.

Что происходит, если в моем конвейере развертывания есть несколько задач или этапов с откатом

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

Рассмотрим конвейер, который содержит следующее:

  • этап переноса в производственную среду с откатом;
  • группу параллельных задач, для каждой из которых настроен отдельный процесс отката.

Для задачи с именем UPD Deploy настроен конвейер отката RB_Deploy_US. Если задача UPD Deploy US завершается сбоем, откат выполняется в соответствии с процессом, заданным в конвейере RB_Deploy_US.

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

Если UPD Deploy US завершается сбоем, конвейер RB_Deploy_US запускается после того, как UPD Deploy UK и UPD Deploy AU также были выполнены или завершились сбоем. Откат не выполняется сразу после сбоя UPD Deploy US. Так как для этапа переноса в производственную среду также настроен откат, после выполнения конвейера RB_Deploy_US выполняется конвейер отката этапа.