Поддержка последовательных развертываний при использовании эксклюзивных проверок блокировки

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

Дополнительные сведения см. в следующих описаниях функций.

Azure Boards

Azure Pipelines (система конвейеров Azure)

Azure Boards

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

Azure Pipelines (система конвейеров Azure)

Поддержка последовательных развертываний вместо последней версии при использовании эксклюзивных проверок блокировки.

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

Отмена старых запусков является хорошим подходом, когда выпуски являются накопительными и содержат все изменения кода из предыдущих запусков. Однако существуют некоторые конвейеры, в которых изменения кода не являются накопительными. С помощью этой новой функции можно разрешить всем запускам продолжаться и последовательно развертываться в одной среде, или сохранить прежнее поведение с отменой старых запусков, разрешая только самый последний. Это поведение можно указать с помощью нового свойства под названием lockBehavior в YAML файле конвейера. Значение sequential подразумевает, что все операции последовательно получают блокировку на защищённый ресурс. Значение runLatest подразумевает, что только последний запуск получает блокировку для ресурса.

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

  1. Включите проверку монопольной блокировки в среде (или другом защищенном ресурсе).
  2. В файле YAML для конвейера укажите новое свойство lockBehavior. Это можно указать для всего конвейера или для определенного этапа:

Установите на сцене:

stages:
- stage: A
  lockBehavior: sequential
  jobs:
  - job: Job
    steps:
    - script: Hey!

Установите в конвейере:

lockBehavior: runLatest
stages:
- stage: A
  jobs:
  - job: Job
    steps:
    - script: Hey!

Если вы не указываете lockBehavior, предполагается, что это runLatest.

Поддержка версии ServiceNow в Квебеке

Azure Pipelines имеет существующую интеграцию с ServiceNow. Интеграция зависит от приложения в ServiceNow и расширения в Azure DevOps. Теперь мы обновили приложение для работы с версией ServiceNow в Квебеке. Классические и YAML-конвейеры теперь совместимы с Квебеком. Чтобы обеспечить работу этой интеграции, выполните обновление до новой версии приложения (4.188.0) из хранилища Service Now. Дополнительные сведения см. в разделе "Интеграция с serviceNow Change Management".

Изменение политики предварительной установки пакета SDK для .NET для агентов Windows и macOS, размещенных в Майкрософт

Недавно мы объявили об изменении политики предварительной установки пакета SDK для .NET в агентах Ubuntu, размещенных в Майкрософт. Теперь мы вносим такое же изменение для агентов Windows и macOS, размещенных в Microsoft.

В настоящее время мы устанавливаем все доступные и поддерживаемые версии пакета SDK для .NET (2.1.x, 3.1.x, 5.0.x) в агентах Windows и macOS, размещенных в Майкрософт. Этот подход будет изменен в пользу установки последней версии исправлений для каждой версии компонентов. Это изменение производится, чтобы предоставить вам больше свободного места и возможность делать новые запросы на инструменты.

Что это означает?

Версия пакета SDK состоит из следующих частей: x.y.znn z — это версия компонента и nn является версией исправления. Например, для версии 2.1.302 версия компонента — 3, а 02 — версия исправления. В соответствии с новым подходом мы установим только последнюю версию исправлений для каждой версии компонента, т. е. только 2.1.302 будет установлена только для 2.1.3x, только 2.1.403 для 2.1.4x и т. д. Все версии пакета SDK для .NET, которые не являются последними версиями исправлений, будут удалены из образов Windows и macOS 6 сентября. Это изменение влияет на все версии Windows и macOS на агентах, размещённых Microsoft.

Целевая дата

Развертывание обновленных образов начнется 6 сентября и займет 3–4 дня.

Возможное влияние

Если вы используете файлglobal.json, сборка будет затронута в следующих случаях:

Сборка завершится ошибкой, если файл global.json содержит rollForward: disable свойство и версию пакета SDK, которая не является последней версией исправления. Рассмотрим пример.

{
  "sdk": {
    "version": "3.1.100",
    "rollForward": "disable"
  }
}

Версия пакета SDK для .NET будет автоматически изменена на последнее исправление, если файл global.json содержит rollForward: patch свойство. Рассмотрим пример.

{
  "sdk": {
    "version": "3.1.100",
    "rollForward": "patch"
  }
}

Если поле rollForward не было указано в файле global.json, для вас ничего не изменится. Используется последний установленный уровень исправлений.

Если вам нужно использовать точную версию пакета SDK для .NET, которая не является последним исправлением, используйте UseDotNet задачу , чтобы установить ее как часть сборки:

steps:
- task: UseDotNet@2
  displayName: 'Use .NET Core sdk'
  inputs:
    version: <dotnet version>

Изменения задач PublishBuildArtifacts и DownloadBuildArtifacts

Azure Pipelines поддерживает два набора задач для публикации и скачивания артефактов. PublishPipelineArtifact и DownloadPipelineArtifact являются более новыми и рекомендуемыми задачами для выполнения этих действий.

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

Хотя мы хотели бы, чтобы все клиенты могли перейти к задачам PipelineArtifact, мы также должны были предпринять некоторые шаги, чтобы устранить масштабируемость старых задач BuildArtifact. В рамках недавнего обновления для повышения масштабируемости агенты Azure Pipelines теперь будут напрямую взаимодействовать с артефактами сборки через домены blobstore (вместо маршрутизации через домены tfs). Эти конвейеры начнут получать доступ к IP-адресам и доменам, которые уже давно находились в списке разрешений Azure DevOps, но, возможно, не использовались раньше определенными конвейерами.

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

Если ваши агенты выполняются в защищенных брандмауэром средах, которые не следовали указанным инструкциям, они могут сталкиваться с ошибками при обновлении агента или выполнении задач PublishBuildArtifacts и DownloadBuildArtifacts, пока не будет исправлена конфигурация брандмауэра.

Распространенным симптомом этой проблемы являются внезапные ошибки, связанные с подтверждением ssl или сбоями загрузки артефактов, как правило, в пулах развертывания, предназначенных для определений управления выпусками. Кроме того, если обновления агента были заблокированы, вы можете наблюдать, что релизы ожидают агента в пуле, который так и не приходит, или что агенты переходят в автономный режим на середине их обновления (это последнее связано со средами, которые по ошибке блокируют агентский CDN).

Дальнейшие шаги

Замечание

Эти функции будут развернуты в течение следующих двух-трех недель.

Перейдите к Azure DevOps и посмотрите.

Как предоставить отзыв

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

Внести предложение

Вы также можете получить советы и ответы на ваши вопросы от сообщества на Stack Overflow.

Спасибо,

Аарон Холлберг