Классические конвейеры выпуска
Azure DevOps Services | Azure DevOps Server 2022 — Azure DevOps Server 2019
Классические конвейеры выпуска предоставляют разработчикам платформу для развертывания приложений в нескольких средах эффективно и безопасно. С помощью классических конвейеров выпусков можно автоматизировать процессы тестирования и развертывания, настроить гибкие стратегии развертывания, включить рабочие процессы утверждения и обеспечить плавный переход приложений на различных этапах.
Как работают конвейеры выпуска
В рамках каждого развертывания Azure Pipelines выполняет следующие действия:
Утверждение перед развертыванием:
При активации нового запроса развертывания Azure Pipelines проверяет, требуется ли утверждение предварительного развертывания перед развертыванием выпуска на этапе. Если утверждение требуется, он отправляет Уведомления по электронной почте соответствующим утверждателям.
Задание развертывания очереди:
Azure Pipelines планирует задание развертывания в доступном агенте.
Выбор агента:
Доступный агент выбирает задание развертывания. Конвейер выпуска можно настроить для динамического выбора подходящего агента во время выполнения.
Скачайте артефакты:
Агент извлекает и скачивает все артефакты, указанные в выпуске.
Выполните задачи развертывания:
Агент выполняет все задачи в задании развертывания.
Создание журналов хода выполнения:
Агент создает полные журналы для каждого шага развертывания и отправляет их обратно в Azure Pipelines.
Утверждение после развертывания:
После завершения развертывания на этапе Azure Pipelines проверяет, требуется ли утверждение после развертывания для конкретного этапа. Если утверждение не требуется или после получения необходимого утверждения, оно переходит к началу развертывания на следующем этапе.
Модель развертывания
Конвейеры выпуска Azure поддерживают широкий спектр источников артефактов, включая Jenkins, Azure Artifacts и Team City. В следующем примере показана модель развертывания с помощью конвейеров выпуска Azure:
В следующем примере конвейер состоит из двух артефактов сборки, поступающих из отдельных конвейеров сборки. Приложение изначально развертывается на этапе разработки , а затем выполняется на двух отдельных этапах качества обслуживания . Если развертывание успешно выполнено на обоих этапах качества обслуживания, приложение будет развернуто в кольце Prod 1 , а затем в Prod ring 2. Каждое рабочее кольцо представляет несколько экземпляров одного веб-приложения, развернутых в разных расположениях по всему миру.
Выпуски и развертывания
Выпуск — это конструкция, содержащая набор артефактов с версией, указанных в конвейере CI/CD. Он включает моментальный снимок всех сведений, необходимых для выполнения всех задач и действий в конвейере выпуска, таких как этапы, задачи, политики, такие как триггеры и утверждающие, и варианты развертывания. Существует несколько выпусков из одного конвейера выпуска, а сведения о каждом из них хранятся и отображаются в Azure Pipelines в течение указанного периода хранения.
Развертывание — это действие выполнения задач для одного этапа, которое может включать выполнение автоматических тестов, развертывание артефактов сборки и любые другие действия, указанные для этого этапа. Запуск выпуска запускает каждое развертывание на основе параметров и политик, определенных в исходном конвейере выпуска. Существует несколько развертываний каждого выпуска даже для одного этапа. При сбое развертывания выпуска на этапе можно повторно развернуть тот же выпуск на этом этапе. Чтобы повторно развернуть выпуск, просто перейдите к выпуску, который вы хотите развернуть и выбрать.
На следующей схеме показана связь между выпусками, конвейерами выпуска и развертываниями.
Вопросы и ответы
Вопрос. Почему не было активировано мое развертывание?
Ответ. Создание конвейера выпуска не запускается автоматически. Вот несколько причин, почему это может произойти:
Триггеры развертывания: определенные триггеры развертывания могут привести к приостановке развертывания. Это может произойти с запланированными триггерами или при задержке до завершения развертывания на другом этапе.
Политики очередей: эти политики определяют порядок выполнения и когда выпуски помещаются в очередь для развертывания.
Утверждения перед развертыванием или шлюзы. Для конкретных этапов может потребоваться утверждение предварительного развертывания или шлюзы, предотвращающее развертывание до выполнения всех определенных условий.
Вопрос. Как изменить переменные во время выпуска?
Ответ. На вкладке "Переменные" конвейера выпуска установите флажок Settable во время выпуска переменных, которые необходимо изменить при очереди выпуска.
Впоследствии при создании нового выпуска у вас есть возможность изменять значения этих переменных.
Вопрос. Когда лучше изменить выпуск вместо конвейера, определяющего его?
Ответ. Можно изменить утверждения, задачи и переменные экземпляра выпуска. Однако эти изменения будут применяться только к данному экземпляру. Если вы хотите, чтобы изменения применялись ко всем будущим выпускам, измените конвейер выпуска.
Вопрос. Каковы сценарии, в которых полезна функция "отказаться от выпуска"?
Ответ. Если вы не планируете повторно использовать выпуск или хотите предотвратить его использование, можно отказаться от выпуска следующим образом : Pipelines> (...) >Отказаться. Вы не можете отказаться от выпуска, пока развертывание выполняется, сначала необходимо отменить развертывание.
Вопрос: Разделы справки управлять именованием новых выпусков?
Ответ. Соглашение об именовании по умолчанию для конвейеров выпуска является последовательным нумерованием, где выпуски называются выпуском 1, выпуском 2 и т. д. Однако вы можете настроить схему именования, изменив маску формата имени выпуска. На вкладке "Параметры " конвейера выпуска перейдите на страницу "Общие " и измените свойство формата имени выпуска в соответствии с вашими предпочтениями.
При указании маски форматирования можно использовать следующие предопределенные переменные. Пример: следующий формат имени выпуска: release $(rev:rrr) для сборки $(Build.BuildNumber) $(Build.DefinitionName) создаст следующий выпуск: выпуск 002 для сборки 20170213.2 MySampleAppBuild.
«Переменная» | Description |
---|---|
Rev: rr | Автоматическое увеличение числа с по крайней мере указанным числом цифр. |
Date / Date: 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 или других источников артефактов. |
Пользовательская переменная | Значение глобального свойства конфигурации, определенное в конвейере выпуска. Вы можете обновить имя выпуска с помощью пользовательских переменных, используя команды ведения журнала выпуска. |
Вопрос. Как определить срок хранения для моих выпусков?
Ответ. Сведения о настройке политик хранения для конвейеров выпуска см. в политиках хранения.