Подключение к веб-каналу Артефактов Azure (dotnet)

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

Azure Artifacts позволяет разработчикам без труда публиковать пакеты в лентах и предоставлять к ним частный доступ или, для существующих общедоступных проектов, общий доступ в зависимости от параметров видимости ленты. В этом руководстве описано, как настроить проект и выполнить проверку подлинности с помощью веб-канала Артефактов Azure.

Необходимые условия

Продукт Требования
Azure DevOps — Организация Azure DevOps.
— проект Azure DevOps .
— канал Azure Artifacts .
— Скачайте и установите пакет SDK .NET версии 9.0.200 или более поздней версии.

Настройка поставщика учетных данных Azure Artifacts

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

dotnet tool install --global Microsoft.Artifacts.CredentialProvider.NuGet.Tool

Если на уровне репозитория nuget.config настроено использование только Azure Artifacts источников, выполните команду установки за пределами этого каталога или явно задайте nuget.org в качестве источника:

dotnet tool install --global Microsoft.Artifacts.CredentialProvider.NuGet.Tool --source https://api.nuget.org/v3/index.json

При необходимости закрепите инструмент на основной версии (например, в образах контейнеров, где важна воспроизводимость):

dotnet tool install --global Microsoft.Artifacts.CredentialProvider.NuGet.Tool --version 2.* --source https://api.nuget.org/v3/index.json

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

  • Запустите с параметром --interactive, чтобы dotnet мог предложить вам пройти проверку подлинности.
  • Передача учетных данных через переменные среды (например, в неинтерактивных сценариях).

Если доступна интерактивная авторизация, перейдите в каталог проекта и выполните следующую команду:

dotnet restore --interactive

Эта команда выполняет вход в систему и получает токен. После успешного входа вы можете выполнять команды, требующие аутентификации, без --interactive, пока не истечёт срок действия токена. Дополнительные сведения см. в разделе Session token cache locations.

Подключитесь к ленте

  1. Выберите Артефакты и затем выберите ваш канал из раскрывающегося меню.

  2. Выберите Подключиться к каналу, а затем выберите dotnet в разделе NuGet.

  3. Добавьте в проект файлnuget.config . Поместите его в ту же папку, что и csproj или .sln-файл , и вставьте фрагмент кода, указанный в разделе установки Проекта . Файл nuget.config должен выглядеть следующим образом:

    • веб-канал с областью действия проекта:

      <?xml version="1.0" encoding="utf-8"?>
      <configuration>
        <packageSources>
          <clear />
          <add key="<FEED_NAME>" value="https://pkgs.dev.azure.com/<ORGANIZATION_NAME>/<PROJECT_NAME>/_packaging/<FEED_NAME>/nuget/v3/index.json" />
        </packageSources>
      </configuration>
      
    • лента на уровне организации:

      <?xml version="1.0" encoding="utf-8"?>
      <configuration>
        <packageSources>
          <clear />
          <add key="<FEED_NAME>" value="https://pkgs.dev.azure.com/<ORGANIZATION_NAME>/_packaging/<FEED_NAME>/nuget/v3/index.json" />
        </packageSources>
      </configuration>
      
  1. Войдите в коллекцию Azure DevOps и перейдите к проекту.

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

  3. Выберите "Подключиться к каналу" и выберите dotnet слева.

  4. Добавьте в проект файлnuget.config . Поместите его в ту же папку, что и csproj или .sln-файл , и вставьте фрагмент кода, указанный в разделе установки Проекта .

    Снимок экрана, показывающий, как подключиться к каналу в Azure DevOps Server версий 2020 и 2022.

Аутентификация с использованием сервисных принципалов

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

Эта переменная должна определить URL-адрес веб-канала, идентификатор приложения (клиента) принципала службы, а также имя субъекта сертификата или путь к файлу сертификата (требуется только один из этих двух вариантов).

$env:ARTIFACTS_CREDENTIALPROVIDER_FEED_ENDPOINTS = @'{
    "endpointCredentials": [
        {
            "endpoint": "<FEED_URL>",
            "clientId": "<SERVICE_PRINCIPAL_APPLICATION_(CLIENT)_ID>",
            "clientCertificateSubjectName": "<SERVICE_PRINCIPAL_CERTIFICATE_NAME>",
            "clientCertificateFilePath": "<SERVICE_PRINCIPAL_CERTIFICATE_PATH>"
        }
    ]
}
'@