Поделиться через


Классические конвейеры выпуска

Azure DevOps Services | Azure DevOps Server | Azure DevOps Server 2022 | Azure DevOps Server 2020

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

Как работают конвейеры выпуска

В рамках каждого развертывания Azure Pipelines выполняет следующие действия:

  1. Утверждение перед развертыванием:

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

  2. Задание на развертывание очереди:

    Azure Pipelines планирует задание развертывания в доступном агенте.

  3. Выбор агента:

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

  4. Скачайте артефакты:

    Агент извлекает и скачивает все артефакты, указанные в выпуске.

  5. Выполните задачи развертывания:

    Агент выполняет все задачи в задании развертывания.

  6. Создание журналов прогресса

    Агент создает полные журналы для каждого шага развертывания и отправляет их обратно в Azure Pipelines.

  7. Утверждение после развертывания:

    После завершения развертывания на этапе Azure Pipelines проверяет, нужно ли последующее утверждение для данного этапа. Если утверждение не требуется или после получения необходимого утверждения, оно переходит к началу развертывания на следующем этапе.

Снимок экрана: этапы развертывания в Azure Pipelines.

Модель развертывания

Конвейеры выпуска Azure поддерживают широкий спектр источников артефактов, включая Jenkins, Azure Artifacts и Team City. В следующем примере показана модель развертывания с помощью конвейеров выпуска Azure:

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

Снимок экрана: этапы развертывания конвейера выпуска.

Выпуски и развертывания

Выпуск — это конструкция, содержащая версионированный набор артефактов, указанный в конвейере CI/CD. Он включает моментальный снимок всех сведений, необходимых для выполнения всех задач и действий в конвейере выпуска, таких как этапы, задачи, политики, такие как триггеры и утверждающие, и варианты развертывания. Существует несколько выпусков из одного конвейера выпуска, а сведения о каждом из них хранятся и отображаются в Azure Pipelines в течение указанного периода хранения.

Развертывание — это действие выполнения задач для одного этапа, которое может включать выполнение автоматических тестов, развертывание артефактов сборки и любые другие действия, указанные для этого этапа. Запуск выпуска инициирует каждое развертывание на основе параметров и политик, определенных в исходном потоке выпуска. Для каждого релиза может быть несколько развертываний даже на одном этапе. При сбое развертывания релиза на стадии можно повторно развернуть тот же релиз на этой стадии. Чтобы повторно развернуть выпуск, просто перейдите к выпуску, который вы хотите развернуть, и выберите «Развернуть».

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

Схема, иллюстрирующая разницу между выпусками и развертываниями.

Вопросы и ответы

Почему не было запущено мое развертывание?

Создание конвейера выпуска не запускает развертывание автоматически. Вот несколько причин, почему это может произойти:

Вопрос. Как изменить переменные во время релиза?

Вкладка «Переменные» в вашем конвейере выпуска: установите флажок «Может быть изменено при выпуске» для тех переменных, которые вы хотите изменить при постановке выпуска в очередь.

Снимок экрана, на котором показано, как включить функцию, которую можно настроить во время выпуска.

Впоследствии при создании нового выпуска у вас есть возможность изменять значения этих переменных.

Снимок экрана, показывающий, как изменить переменные при выпуске.

Вопрос: Когда уместнее изменить релиз вместо потока, определяющего его?

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

Вопрос. Каковы сценарии, в которых полезна функция "отказаться от выпуска"?

Ответ. Если вы не планируете повторно использовать выпуск или хотите предотвратить его использование, можно отказаться от выпуска следующим образом : Pipelines> (...) >Отказаться. Вы не можете отказаться от выпуска, пока развертывание выполняется, сначала необходимо отменить развертывание.

Снимок экрана, показывающий, как отказаться от выпуска.

Как управлять наименованием новых выпусков?

Ответ. Соглашение об именовании по умолчанию для выпускных пайплайнов заключается в последовательном нумеровании, где выпуски называются Выпуск-1, Выпуск-2 и так далее. Однако вы можете настроить схему именования, изменив маску формата имени выпуска. На вкладке "Параметры " конвейера выпуска перейдите на страницу "Общие " и измените свойство формата имени выпуска в соответствии с вашими предпочтениями.

При указании маски форматирования можно использовать следующие предопределенные переменные. Пример: следующий формат имени выпуска: Выпуск $(Rev:rrr) для сборки $(Build.BuildNumber) $(Build.DefinitionName) создаст следующий выпуск: Выпуск 002 для сборки 20170213.2 MySampleAppBuild.

«Переменная» Описание
Ред: rr Номер, который автоматически увеличивается и содержит по крайней мере указанное число цифр.
Дата и дата: MMddyy Текущая дата с форматом по умолчанию MMddyy. Поддерживаются любые сочетания M/MM/MMM/MMMM, d/dd/ddd/dddd, y/yy/yyyy/yyyy, h/hh/H/HH, m/mm, s/ss.
System.TeamProject Имя проекта, к которому относится данная сборка.
Release.ReleaseId Идентификатор выпуска, уникальный для всех выпусков в проекте.
Release.DefinitionName Имя конвейера выпуска, к которому относится текущий выпуск.
Build.BuildNumber Номер сборки, содержащейся в выпуске. Если выпуск содержит несколько сборок, это номер основной сборки.
Build.DefinitionName Имя конвейера сборки, содержащейся в выпуске. Если в выпуске несколько сборок, то это имя конвейера, относящееся к основной сборке.
Artifact.ArtifactType Тип источника артефактов, связанного с выпуском. Например, это может быть Azure Pipelines или Jenkins.
Build.SourceBranch Ветвь первичного источника артефактов. Для Git это значение в форме main, если ветвь имеет вид refs/heads/main. Для системы управления версиями Team Foundation это значение в форме branch, если путь к корневому серверу для рабочей области имеет вид $/teamproject/branch. Эта переменная не задана для Jenkins или других источников артефактов.
Пользовательская переменная Значение глобального свойства конфигурации, определенное в конвейере выпуска. Вы можете обновить имя выпуска с помощью пользовательских переменных, используя команды ведения журнала выпуска.

В: Как определить срок хранения для моих релизов?

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