Миграция из общих папок в Артефакты Azure

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

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

Основные понятия

Azure Artifacts предлагает несколько преимуществ по сравнению с общими папками:

  • Индексирования:

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

  • Неизменность.

    Каждую версию пакета можно отправить только в веб-канал один раз, чтобы обеспечить целостность зависимостей. Это гарантирует, что все ссылки на эту версию всегда будут точными. Однако если у вас есть рабочие процессы, которые публикуют пакеты с обновленными двоичными файлами, но без изменения номера версии эти рабочие процессы будут сталкиваться с проблемами при переходе на веб-каналы Артефактов Azure. Дополнительные сведения см. в разделе " Неизменяемость ".

  • Хорошо сформированность:

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

Проверка подлинности и авторизация

Если вы используете общие папки с поддержкой Active Directory, вероятно, что вы и локальные агенты сборки автоматически проходят проверку подлинности с помощью Windows NTLM. Для переноса пакетов в Артефакты Azure потребуется несколько настроек:

  • Проверка подлинности. Для отправки и восстановления пакетов необходимо предоставить доступ к клиенту NuGet.

    • Visual Studio: получение учетных данных происходит автоматически.
    • nuget.exe. Получение учетных данных происходит автоматически после установки поставщика учетных данных Azure Artifacts.
  • Авторизация. Убедитесь, что любой пользователь, служба, организация или группа, требующая доступа к пакетам, имеет необходимые разрешения. Дополнительные сведения см. в разделе разрешений .

Перенос пакетов — это 4-шаговый процесс:

  1. Инвентаризация существующих источников пакетов
  2. Планирование стратегии управления доступом
  3. Настройка веб-каналов
  4. Перенос пакетов

Инвентаризация существующих источников пакетов

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

  • Все файлы nuget.config в базе кода, скорее всего, в той же папке, что и файл решения (.sln).

  • Файл конфигурации NuGet по умолчанию:

    • Windows: %APPDATA%\NuGet\NuGet.Config
    • macOS/Linux: ~/.config/NuGet/NuGet.Config или ~/.nuget/NuGet/NuGet.Config

Определите путь сервера, связанный с источниками пакетов (например, <add key="SMBNuGetServer" value="\\server\share\NuGet" />) и сделайте его копию. Этот список путей к серверу будет использоваться в последующих разделах для процесса миграции.

Планирование стратегии управления доступом

При настройке новых веб-каналов у вас есть два варианта:

  • Настройте разрешения веб-канала для сопоставления разрешений существующих общих папок.
  • Выровняйте разрешения веб-канала с уже настроенными командами и группами в Azure DevOps.

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

  • Полный контроль

  • Чтение или список

  • Запись или изменение

Настройка веб-каналов

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

Для каждого общего ресурса S МБ следуйте инструкциям по созданию веб-канала:

  • Задайте имя канала для сопоставления имени папки S МБ общего ресурса.

  • Выберите видимость веб-канала, источники вышестоящего канала и область.

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

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

Разрешения общих папок Разрешения веб-канала
Полный контроль Владельцы
Запись или изменение Соавторы
Чтение или список Читатели

Перенос пакетов

Для каждого веб-канала перейдите к артефактам> Подключение для веб-канала, а затем выберите NuGet.exe. Скопируйте URL-адрес источника, указанный в разделе установки проекта. Этот исходный URL-адрес необходим для обновления конфигурации NuGet и переноса пакетов.

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

Примечание.

Мы рекомендуем использовать NuGet версии 5.5.x или более поздней версии, так как она включает критические исправления ошибок, которые устраняют отмены и время ожидания.

  1. Убедитесь, что файл конфигурации 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>/_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>/<PROJECT_NAME>/_packaging/<FEED_NAME>/nuget/v3/index.json" />
          </packageSources>
    </configuration>
    
  2. Выполните следующую push команду, чтобы опубликовать все пакеты в новом веб-канале. Можно указать любую строку в качестве значения аргумента ApiKey.

    nuget.exe push -Source <FEED_NAME> -ApiKey Az <PACKAGE_PATH>\*.nupkg
    

Совет

Для более крупных команд следует пометить каждую общую папку как доступную только для чтения перед выполнением nuget push операции, чтобы никто не добавлял или не обновлял пакеты во время миграции.

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