Настройка поведения вышестоящих источников

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

Благодаря источникам вышестоящий артефактов Azure разработчики получают удобство использования единого веб-канала для публикации и использования пакетов из веб-каналов Артефактов и популярных общедоступных реестров, таких как NuGet.org или npmjs.com. Ранее веб-каналы Artifact объединили список доступных версий пакетов как самого веб-канала, так и всех настроенных вышестоящий источников.

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

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

После включения вышестоящий поведения, когда пакет публикуется в веб-канале Azure Artifacts, любая версия из общедоступного реестра заблокирована и недоступна для скачивания.

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

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

Примечание.

Новое поведение не повлияет на версии пакетов, которые в настоящее время используются, так как они сохраняются в @local представлении веб-канала.

Применимые сценарии

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

Общедоступные версии заблокированы

Общедоступная версия частного пакета

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

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

Наличие частных и общедоступных пакетов

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

Иллюстрация с доступными частными и общедоступными пакетами.

Общедоступные версии не будут заблокированы

Все пакеты являются частными*

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

Иллюстрация, показывающая веб-канал только с частными пакетами.

Все пакеты являются общедоступными

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

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

Общедоступный пакет, закрытый

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

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

Разрешить внешние версии

Примечание.

Вы должны быть владельцем канала, чтобы разрешить внешние исходные версии. Дополнительные сведения см. в разделе "Разрешения веб-канала".

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

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

  3. Выберите пакет и нажмите кнопку с многоточием для получения дополнительных параметров. Выберите "Разрешить внешние исходные версии".

    Снимок экрана: разрешение внешних исходных версий.

  4. Нажмите кнопку переключателя, чтобы разрешить внешние версии. Нажмите кнопку "Закрыть ", когда вы закончите.

    Снимок экрана: включение внешних версий.

Разрешить внешние версии с помощью REST API

Разрешить внешние версии с помощью PowerShell

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

    Снимок экрана: выбор разрешений на упаковку.

  2. Создайте переменную среды для личного маркера доступа.

    $env:PATVAR = "YOUR_PERSONAL_ACCESS_TOKEN"
    
  3. Преобразуйте личный маркер доступа в строку в кодировке Baser64 и создайте заголовок HTTP-запроса.

    $token = [Convert]::ToBase64String(([Text.Encoding]::ASCII.GetBytes("username:$env:PatVar")))
    $headers = @{
        Authorization = "Basic $token"
    }
    
  4. Создайте URL-адрес конечной точки. Пример: //pkgs.dev.azure.com/MyOrg/MyProject/_apis/packaging/feeds/MyFeed/nuget/packages/pkg1.0.0.nupkg/вышестоящий ing?api-version=6.1-preview.1

    • Веб-канал project-область d:

      $url = "https://pkgs.dev.azure.com/<ORGANIZATION_NAME>/<PROJECT_NAME>/_apis/packaging/feeds/<FEED_NAME>/<PROTOCOL>/packages/<PACKAGE_NAME>/upstreaming?api-version=6.1-preview.1"
      
    • Веб-канал область организации:

      $url = "https://pkgs.dev.azure.com/<ORGANIZATION_NAME>/_apis/packaging/feeds/<FEED_NAME>/<PROTOCOL>/packages/<PACKAGE_NAME>/upstreaming?api-version=6.1-preview.1"
      

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

Invoke-RestMethod -Uri $url -Headers $headers