Источники артефактов в классических конвейерах выпуска

Сервисы Azure DevOps | Azure DevOps Server | Azure DevOps Server 2022

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

Источники артефактов

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

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

При связывании нескольких артефактов можно указать, какой из них является основным источником (по умолчанию). Источник первичного артефакта используется для задания нескольких предопределенных переменных, а также может использоваться для именования выпусков .

Снимок экрана, на котором показано, как задать первичный исходный артефакт.

Параметры выпадающего списка "Версия по умолчанию" зависят от типа источника связанного определения сборки. Параметры Specify at the time of release creationSpecific versionи Latest поддерживаются всеми типами репозитория. Однако Latest from the build pipeline default branch with tags не поддерживается определениями сборки XAML.

В следующих разделах описывается, как работать с различными типами источников артефактов:

Примечание.

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

Azure Pipelines

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

Функция Описание
Выпуски автоматического триггера Новые выпуски можно создавать автоматически, когда доступен новый артефакт (включая сборки XAML). См. триггеры классического выпуска для более подробной информации.
Переменные артефакта Ряд артефактных переменных поддерживается для артефактов, упомянутых в классическом выпуске.
Рабочие элементы и коммиты Свяжите рабочие элементы, чтобы отобразить их в сведениях о выпуске. Фиксации будут отображаться при использовании Git или TFVC.
Скачивание артефактов По умолчанию артефакты конвейера загружаются на узел, выполняющий конвейер. Вы также можете настроить шаг на этапе, чтобы пропустить скачивание артефакта при необходимости.
Этапы развертывания Сводка конвейера содержит список всех этапов развертывания, в которых развернут артефакт.

Примечание.

Чтобы опубликовать артефакт конвейера в классическом конвейере, необходимо добавить в конвейер задачу PublishPipelineArtifact. В конвейерах YAML артефакт drop публикуется неявно.

Ограничение области авторизации задания

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

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

  1. Войдите в организацию Azure DevOps.

  2. Выберите параметры организации в левом нижнем углу.

  3. Выберите Пайплайны>Параметры *.

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

    Снимок экрана, на котором показано, как задать область авторизации задания для организации.

Чтобы задать область авторизации задания для определенного проекта:

  1. Войдите в организацию Azure DevOps и перейдите к проекту.

  2. Выберите параметры проекта в левом нижнем углу.

  3. Выберите Пайплайны>Параметры *.

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

    Снимок экрана, на котором показано, как задать область авторизации задания для проекта.

Примечание.

Если область задана на уровне организации, ее нельзя изменить по отдельности в каждом проекте.

Примечание.

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

Azure Repos, GitHub и TFVC

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

  • Разработка приложения PHP или JavaScript, не требующего явного конвейера сборки.

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

  • Управление инфраструктурой и конфигурацией в виде кода в репозитории управления версиями.

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

Azure Pipelines поддерживает репозитории Azure Repos, система управления версиями Team Foundation (TFVC) и репозитории GitHub. Конвейер выпуска можно связать с любым репозиторием Git или TFVC в коллекции проектов, если у вас есть доступ на чтение. Дополнительная настройка не требуется при развертывании артефактов управления версиями в той же коллекции.

При связывании репозитория GitHub и выборе ветви можно изменить свойства артефактов по умолчанию после сохранения артефакта. Это полезно, если изменяется стабильная ветвь версии, обеспечивая, что выпуски непрерывной доставки используют правильную ветвь для более новых версий артефактов. Вы также можете указать сведения о проверке, такие как подмодули, включение файлов, отслеживаемых Git LFS, и глубина неглубокого клонирования.

При связывании ветви TFVC можно указать набор изменений, который будет развернут во время создания релиза.

При использовании Azure Repos, Git и TFVC в качестве источника артефактов доступны следующие функции:

Функция Описание
Выпуски автоматического триггера Новые выпуски можно создавать автоматически, когда доступен новый артефакт (включая сборки XAML). Обратитесь к триггерам выпуска для получения более подробной информации.
Переменные артефакта Ряд артефактных переменных поддерживается для артефактов, упомянутых в классическом выпуске.
Рабочие элементы и коммиты Свяжите рабочие элементы, чтобы отобразить их в сведениях о выпуске. Фиксации будут отображаться при использовании Git или TFVC.
Скачивание артефактов По умолчанию артефакты конвейера загружаются на узел, выполняющий конвейер. Вы также можете настроить шаг на этапе, чтобы пропустить скачивание артефакта при необходимости.

Примечание.

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

Примечание.

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

Azure Artifacts

Ниже приведены некоторые сценарии, в которых можно использовать Артефакты Azure в качестве источника артефактов:

  • Двоичный файл вашего приложения опубликован в Azure Artifacts, и вы хотите получить доступ к пакету в конвейере релизов.

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

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

Доступны следующие функции при использовании артефактов Azure в качестве источника артефактов:

Функция Описание
Выпуски автоматического триггера Новые выпуски можно создавать автоматически, когда доступен новый артефакт (включая сборки XAML). Обратитесь к триггерам выпуска для получения более подробной информации.
Переменные артефакта Ряд артефактных переменных поддерживается для артефактов, упомянутых в классическом выпуске.
Рабочие элементы и коммиты Свяжите рабочие элементы, чтобы отобразить их в сведениях о выпуске. Фиксации будут отображаться при использовании Git или TFVC.
Скачивание артефактов По умолчанию артефакты конвейера загружаются на узел, выполняющий конвейер. Вы также можете настроить шаг на этапе, чтобы пропустить скачивание артефакта при необходимости.

Примечание.

При использовании веб-канала с 1000 пакетами или более пакеты, перечисленные в раскрывающемся списке пакетов для источника Azure Artifacts, могут быть усечены. Чтобы обойти эту проблему, создайте новое пользовательское представление и продвигайте пакеты в это представление. Затем в конвейере выпуска укажите представление в источнике Azure Artifacts. Кроме того, можно указать идентификатор пакета. Инструкции см. в разделе "Получение пакетов " Сведения о артефакте".

Обработка моментальных снимков Maven

При использовании Maven-снимков можно одновременно скачать несколько версий (например myApplication-2.1.0.BUILD-20190920.220048-3.jar, myApplication-2.1.0.BUILD-20190820.221046-2.jar, myApplication-2.1.0.BUILD-20190820.220331-1.jar). Возможно, вам потребуется удалить старые версии и сохранить только последний артефакт перед развертыванием.

Выполните следующую команду в командной строке PowerShell, чтобы удалить все копии, кроме копии с наибольшим лексографическим значением:

Get-Item "myApplication*.jar" | Sort-Object -Descending Name | Select-Object -SkipIndex 0 | Remove-Item

Примечание.

В веб-канале можно хранить до 30 моментальных снимков Maven. При достижении этого предела Azure Artifacts автоматически удаляют старые моментальные снимки, оставляя только последние 25.

Репозиторий контейнеров Azure и Центр Docker

При развертывании контейнерных приложений образ контейнера сначала помещается в реестр контейнеров. Затем вы можете развернуть образ контейнера в веб-приложении Azure для контейнеров или в кластере Docker/Kubernetes. Для этого необходимо сначала создать подключение к службе для проверки подлинности с помощью Azure или Docker Hub. Дополнительные сведения см. в разделе "Подключение к службе реестра Docker".

Следующие функции доступны при использовании репозитория контейнеров Azure или Docker Hub в качестве источника артефакта:

Функция Описание
Выпуски автоматического триггера Новые выпуски можно создавать автоматически, когда доступен новый артефакт (включая сборки XAML). Обратитесь к триггерам выпуска для получения более подробной информации.
Переменные артефакта Ряд артефактных переменных поддерживается для артефактов, упомянутых в классическом выпуске.
Рабочие элементы и коммиты Свяжите рабочие элементы, чтобы отобразить их в сведениях о выпуске. Фиксации будут отображаться при использовании Git или TFVC.
Скачивание артефактов По умолчанию артефакты конвейера загружаются на узел, выполняющий конвейер. Вы также можете настроить шаг на этапе, чтобы пропустить скачивание артефакта при необходимости.

Jenkins

Чтобы использовать артефакты Jenkins, необходимо создать служебное соединение для аутентификации с сервером Jenkins. Дополнительные сведения см. в разделе "Подключение службы Jenkins". Кроме того, ваш проект Jenkins должен быть настроен на выполнение действия после сборки для публикации ваших артефактов.

Артефакты, созданные сборками Jenkins, обычно поступают в хранилищные репозитории для архивирования и совместного использования. Хранилище BLOB-объектов Azure является одним из таких хранилищ, которое позволяет использовать проекты Jenkins, которые публикуют в службе хранилища Azure в качестве источников артефактов в конвейере выпуска. Azure Pipelines автоматически скачивает эти артефакты из Azure в агент, на котором запущен конвейер. В этом сценарии подключение между агентом и сервером Jenkins не требуется, и агенты, размещенные на платформе Microsoft, можно использовать без подключения сервера Jenkins к интернету.

Следующие возможности доступны при использовании Jenkins в качестве источника артефакта:

Функция Описание
Выпуски автоматического триггера Новые выпуски можно создавать автоматически, когда доступен новый артефакт (включая сборки XAML). Обратитесь к триггерам выпуска для получения более подробной информации.
Переменные артефакта Ряд артефактных переменных поддерживается для артефактов, упомянутых в классическом выпуске.
Рабочие элементы и коммиты Свяжите рабочие элементы, чтобы отобразить их в сведениях о выпуске. Фиксации будут отображаться при использовании Git или TFVC.
Скачивание артефактов По умолчанию артефакты конвейера загружаются на узел, выполняющий конвейер. Вы также можете настроить шаг на этапе, чтобы пропустить скачивание артефакта при необходимости.

Примечание.

Служба Azure Pipelines может не иметь возможности выполнить команду ping на сервере Jenkins, если он находится в частной корпоративной сети. В таких случаях можно интегрировать Azure Pipelines с Jenkins, настроив локальный агент, имеющий доступ к серверу Jenkins. Хотя имена проектов Jenkins могут не отображаться при связывании с конвейером, можно вручную ввести имя проекта в текстовом поле URL-адреса.

Псевдоним источника артефакта

Чтобы обеспечить уникальность каждого скачиваемого артефакта, каждый источник артефакта, связанный с конвейером выпуска, автоматически назначается определённый путь загрузки, известный как алиас источника. К этому расположению можно получить доступ с помощью переменной: $(System.DefaultWorkingDirectory)\[source alias]

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

По умолчанию исходный псевдоним — это имя источника артефакта, префиксированного символом подчеркивания (например, _mslearn-tailspin-spacegame-web). Исходный псевдоним может соответствовать имени конвейера сборки, имени задания, имени проекта или имени репозитория в зависимости от типа источника артефакта. Вы можете изменить исходный псевдоним на вкладке артефактов в конвейере выпуска.m вкладка артефактов конвейера выпуска.

Скачивание артефакта

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

Уникальная папка создается на агенте для каждого потока публикации при инициации релиза, и в эту папку загружаются артефакты:$(System.DefaultWorkingDirectory).

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

Чтобы пропустить автоматическое скачивание артефактов, перейдите к конвейеру выпуска>Задачи>Задание агента>Скачивание артефактов и снимите флажки напротив всех артефактов или укажите определенные артефакты, которые необходимо пропустить.

Скриншот, на котором показано, как избежать автоматической загрузки артефактов в классическом конвейере развертывания в Azure DevOps Services.

Чтобы пропустить автоматическую загрузку артефактов, перейдите к конвейеру выпуска>Задачи>Задача агента>Дополнительные параметры и установите флажок Пропустить загрузку артефактов.

Снимок экрана, на котором показано, как пропустить автоматическую загрузку артефактов в классическом конвейере выпуска на Azure DevOps Server.