В случае сбоя выполнения конвейера можно использовать откат, чтобы вернуть среду к предыдущему стабильному состоянию. Чтобы использовать функцию отката, необходимо спланировать алгоритм отката и понять, как его реализовать.
В алгоритме отката указываются этапы, необходимые для устранения сбоя при развертывании. Такой алгоритм представляет собой конвейер отката, включающий в себя одну или несколько последовательных задач, зависящих от типа развертывания, выполнение которого завершилось сбоем. Например, развертывание и откат традиционного приложения отличается от развертывания и отката приложения контейнера.
- Сброс состояний и очистка сред.
- Запуск пользовательского сценария для отмены изменения.
- Развертывание предыдущей редакции развертывания.
Чтобы добавить откат в существующий конвейер развертывания, перед запуском конвейера развертывания необходимо присоединить конвейер отката к задачам или этапам в конвейере развертывания, который может потребовать отката.
Настройка отката
Чтобы настроить откат в развертывании, необходимо выполнить следующие действия.
- Создайте конвейер развертывания.
- Выявите потенциальные точки отказа в конвейере развертывания, которые будут инициировать откат, чтобы было можно присоединить конвейер отката. Например, можно присоединить конвейер отката к задаче условия или опроса, которая проверяет, успешно ли выполнена предыдущая задача. Дополнительные сведения о задачах условия см. в разделе Использование привязок переменных в задаче «Условие» для запуска или остановки конвейера в Code Stream.
- Определите уровень отказа, который будет запускать конвейер отката, например сбой задачи или этапа. Откат также можно присоединить к этапу.
- Определите, какую задачу или задачи отката нужно будет выполнить в случае сбоя. Создайте конвейер отката с этими задачами.
Конвейер отката можно создать вручную, либо его может создать Code Stream. Кроме того, для отката можно выбрать общий конвейер.
- С помощью пустого холста можно вручную создать конвейер отката, который выполняется параллельно с существующим конвейером развертывания. После этого можно присоединить конвейер отката к одной или нескольким задачам в конвейере развертывания, которые запускают откат при сбое.
- Используйте смарт-шаблон конвейера, чтобы настроить конвейер развертывания с действием отката. Затем Code Stream автоматически создаст один или несколько конвейеров отката по умолчанию с предварительно определенными задачами, которые откатят развертывание в случае сбоя.
Подробный пример настройки конвейера непрерывного предоставления, когда для отката применяется смарт-шаблон конвейера, см. в разделе Как откатить развертывание в Code Stream.
- Если для отката используется общий конвейер, не требуется создавать несколько конвейеров отката, выполняющих одну и ту же функцию. Общий конвейер можно выбрать для отката задач в конвейерах, относящихся к разным проектам.
Сведения о том, как настроить задачу конвейера с откатом с помощью общего конвейера, см. в разделе Создание и использование общих конвейеров в Code Stream.
Что происходит, если в моем конвейере развертывания есть несколько задач или этапов с откатом
При добавлении отката в... | Когда выполняется откат... |
---|---|
Параллельные задачи | Если одна из параллельных задач завершается сбоем, откат этой задачи происходит после завершения или сбоя всех параллельных задач. Откат не выполняется сразу после сбоя задачи. |
Как задача в рамках этапа, так и этап | Если происходит сбой задачи, выполняется ее откат. Если задача находится в группе параллельных задач, откат задачи выполняется после завершения или сбоя всех параллельных задач. Откат этапа выполняется после успешного или неудачного завершения отката задачи. |
Рассмотрим конвейер, который содержит следующее:
- этап переноса в производственную среду с откатом;
- группу параллельных задач, для каждой из которых настроен отдельный процесс отката.
Для задачи с именем 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 выполняется конвейер отката этапа.