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


Источники вышестоящего потока артефактов Azure

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

Используя вышестоящий источник, вы можете удобно хранить пакеты из различных источников в одном канале. К ним относятся пакеты, которые вы публикуете и используете из внешних веб-каналов и общедоступных реестров, таких как NuGet.org, npmjs.com, Maven Central и PyPI. После включения вышестоящих источников любой пакет, установленный из этих вышестоящих источников, копия будет автоматически сохранена в веб-канале.

Примечание.

Чтобы сохранить пакеты из вышестоящих версий, необходимо иметь роль "Канал" и "Средство чтения выше" ("Совместная работа") или более поздней версии. Дополнительные сведения см. в разделе "Управление разрешениями ".

Достоинства

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

  • Простота. При публикации всех пакетов в один веб-канал это упрощает файлы конфигурации, такие как NuGet.config, npmrc или settings.xml. Используя только один веб-канал в файле конфигурации, вы снижаете вероятность ошибок и ошибок, упрощая настройку.

  • Детерминизм: веб-канал разрешает запросы пакетов по порядку, что приводит к большей согласованности при перестроении кода.

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

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

Рекомендации — потребители пакетов

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

Используйте один веб-канал в файле конфигурации:

Чтобы веб-канал предоставил детерминированное восстановление, убедитесь, что файл конфигурации, например nuget.config или Npmrc, ссылается только на один канал с включенными вышестоящими источниками. См. пример ниже:

<packageSources>
  <clear />
  <add key="FabrikamFiber" value="https://pkgs.dev.azure.com/fabrikam/_packaging/FabrikamFiber/nuget/v3/index.json" />
</packageSources>

Примечание.

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

registry=https://pkgs.dev.azure.com/fabrikam/_packaging/FabrikamFiber/npm/registry/
always-auth=true

Упорядочить исходящие источники намеренно:

Если вы используете исключительно общедоступные реестры, такие как nuget.org или npmjs.com, порядок вышестоящих источников не имеет значения. Запросы на веб-канал соответствуют последовательности, подробно описанной в разделе заказа поиска.

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

В некоторых уникальных сценариях некоторые организации выбирают настройку пакетов программного обеспечения с открытым кодом (OSS). Это может быть связано с решением проблем безопасности, повышением функциональности или выполнением конкретных требований, требующих внутренней перестройки пакета, а не непосредственного получения его из общедоступный репозиторий. Если ваша организация следует этой практике, рекомендуется разместить вышестоящий источник, содержащий эти измененные пакеты OSS перед руководителями общедоступных пакетов. Это позволяет использовать настраиваемые версии вашей организации.

Используйте предлагаемое представление по умолчанию:

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

Рекомендации. Владельцы веб-каналов и издатели пакетов

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

Используйте представление по умолчанию:

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

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

Создание графа пакета:

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

Порядок поиска

Для общедоступных диспетчеров пакетов, поддерживающих несколько веб-каналов, таких как NuGet и Maven, порядок запросов веб-каналов иногда может быть неясным или недетерминированным. Например, в NuGet параллельные запросы отправляются во все веб-каналы в файле конфигурации, а ответы обрабатываются в первую очередь (FIFO).

Источники вышестоящего потока решают эту недетерминированную поведение, выполнив поиск в веб-канале и его вышестоящих источниках в следующем порядке:

  1. Пакеты, опубликованные непосредственно в веб-канале.

  2. Пакеты, сохраненные из вышестоящего источника.

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

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

Примечание.

Поиск пакетов в вышестоящих источниках с помощью обозревателя пакетов NuGet не поддерживается.

Сохранить пакеты из вышестоящего источника

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

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

Примечание.

Пользовательские источники вышестоящего уровня поддерживаются только для пакетов npm.

Переопределение пакетов из вышестоящих источников

При включении вышестоящих источников важно отметить, что публикация версии пакета, которая уже существует в вышестоящем источнике, не будет возможным. Например, если включить вышестоящий пакет NuGet.org, вы не сможете опубликовать пакет Newtonsoft.Json 10.0.3 , так как эта точную версию уже существует в NuGet.org.

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

  1. Отключите соответствующий вышестоящий источник.
  2. Опубликуйте пакет.
  3. Повторно включите вышестоящий источник.

Примечание.

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

Состояние работоспособности вышестоящих источников

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

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

  2. Выберите артефакты и выберите веб-канал в раскрывающемся меню.

  3. Щелкните значок Значок шестеренки шестеренки, чтобы перейти к параметрам веб-канала, а затем выберите источники вышестоящей передачи.

    Снимок экрана: состояние последней синхронизации вышестоящих источников.

  4. При возникновении каких-либо сбоев отобразится предупреждающее сообщение. Если щелкнуть состояние "Сбой " , вы получите дополнительные сведения, включая причину сбоя и инструкции по ее устранению.

    Снимок экрана: сведения о сбое синхронизации.

Примечание.

В случае общедоступных реестров, таких как NuGet.org, задержка в течение 3-6 часов между отправкой пакета в общедоступный реестр и когда она становится доступной для скачивания. Эта задержка зависит от времени задания и распространения данных. Однако если вышестоящий источник является каналом Артефактов Azure, задержка обычно не превышает несколько минут.

Автономные источники вышестоящего потока

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

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

Вопрос: Я не могу найти мой пакет, даже если я могу увидеть его в одном из вышестоящих каналов моего канала?

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

Вопрос. Что такое представления веб-канала?

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

Вопрос. Не удается найти веб-канал, который я хочу настроить в качестве вышестоящего источника?

Ответ. Убедитесь, что владелец веб-канала предоставляет общий доступ к представлению в качестве вышестоящего источника.

Вопрос. Может ли пользователь с ролью чтения веб-каналов скачать пакеты из вышестоящего источника?

Ответ. Нет. Пользователь с ролью читателя веб-канала Azure Artifacts может скачать только пакеты, сохраненные в веб-канале. Пакеты сохраняются в веб-канале при установке этих пакетов из вышестоящего модуля чтения (участника), издателя веб-канала или владельца веб-канала.

Вопрос. Что происходит при удалении или отмене публикации пакета, сохраненного из вышестоящего источника?

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

Вопрос. Что происходит, когда пользователь не рекомендует пакет, сохраненный из вышестоящего источника?

Ответ. Если пользователь нерекомендует пакет, в метаданные пакета добавляется предупреждающее сообщение, которое отображается при просмотре или установке пакета из веб-канала.