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


Графы пакетов в артефактах Azure

Azure DevOps Services | Azure DevOps Server 2022 — Azure DevOps Server 2019

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

Создание набора доступных пакетов вышестоящий

Так как веб-каналы Azure Artifacts могут иметь другие веб-каналы как вышестоящий, есть потенциал для создания циклов источников вышестоящий, где канал A вышестоящий для канала B, который вышестоящий для канала C, и в конечном итоге канал C вышестоящий обратно в канал A. Такой цикл, если он не удается правильно, может привести к проблемам с запросами пакетов, создавая бесконечный цикл, в котором пользователь запрашивает пакет из канала A, а затем запросы от B, а затем запросы B из C и, наконец, запросы C обратно в A, формируя цикл.

Восходящие источники предназначены для предотвращения таких ситуаций. Когда веб-канал ищет пакет из своих вышестоящий источников, он получает пакеты в представлении, настроенном для этого вышестоящий источника. Это означает, что запрос веб-канала A не активирует транзитивный запрос для канала C (A -> B -> C), так как представления доступны только для чтения. В результате веб-канал A будет иметь доступ к любым пакетам из C, которые ранее были сохранены в B пользователем, но не полный набор пакетов, доступных в C.

Это ставит ответственность за веб-канал B, чтобы гарантировать, что его локальные пакеты представляют собой полный граф зависимостей. Таким образом, пользователи, использующие пакет B через вышестоящий источник из другого веб-канала, могут успешно устранить граф и установить нужный пакет B без возникновения проблем.

Пример: создание набора доступных пакетов

Рассмотрим три канала: Fabrikam, Contoso и AdventureWorks. На этом рисунке мы рассмотрим доступные пакеты для веб-канала Fabrikam, как мы представляем вышестоящий источники.

Изначально Fabrikam не имеет вышестоящий источников, что позволяет пользователям, подключенным к Fabrikam, устанавливать только версии 1.0.0 и 2.0.0 пакета мини-приложений. Аналогичным образом компания Contoso не имеет вышестоящий источников, ограничивая пользователей, подключенных к Contoso, только устанавливать версии 1.0.0 и 3.0.0 пакета Gizmos. Это же относится к веб-каналу AdventureWorks, где подключенные пользователи могут устанавливать только версии 1.0.0 и 2.0.0 пакета "Гаджеты" или версии 1.0.0 пакета "Вещи".

Иллюстрация, показывающая три разных канала без вышестоящий источников.

Теперь давайте рассмотрим сценарий, в котором Contoso добавляет AdventureWorks в качестве источника вышестоящий. Когда пользователь подключен к Contoso, он получает доступ к более широкому спектру пакетов. Они могут установить любую версию Gizmos, Гаджеты или Вещи. Например, если пользователь устанавливает Gadgets@2.0.0, эта конкретная версия пакета сохраняется в Contoso с ссылкой обратно на AdventureWorks.

Иллюстрация добавления AdventureWorks в качестве источника вышестоящий contoso.

Теперь рассмотрим ситуацию, когда веб-канал Fabrikam добавляет Contoso в качестве источника вышестоящий. Пользователь, подключенный к Fabrikam, может установить любую версию мини-приложений, любую версию Gizmos, но ТОЛЬКО СОХРАНЕННЫе версии гаджетов (2.0.0).

Иллюстрация добавления Fabrikam Contoso в качестве источника вышестоящий.

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

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