Во время выполнения проекта UnitTest в конвейере сборки Azure. Я получаю следующую ошибку:
Restoring NuGet package Microsoft.Portal.TestFramework.UnitTest.6.672.0.5.
GET https://msazure.pkgs.visualstudio.com/_packaging/ae95f9fe-9452-4aa1-b167-92a7fcfc670f/nuget/v3/flat2/microsoft.portal.testframework.unittest/6.672.0.5/microsoft.portal.testframework.unittest.6.672.0.5.nupkg
GET https://msazure.pkgs.visualstudio.com/_packaging/d387a8da-063b-4a96-afb8-093924314a98/nuget/v3/flat2/microsoft.portal.testframework.unittest/6.672.0.5/microsoft.portal.testframework.unittest.6.672.0.5.nupkg
GET https://msazure.pkgs.visualstudio.com/_packaging/ab5b6ade-9b91-4eb5-8dc6-eacc4a5cdda7/nuget/v3/flat2/microsoft.portal.testframework.unittest/6.672.0.5/microsoft.portal.testframework.unittest.6.672.0.5.nupkg
MSBuild auto-detection: using msbuild version '16.8.2.56705' from 'C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\MSBuild\Current\Bin'.
GET https://api.nuget.org/v3-flatcontainer/microsoft.portal.testframework.unittest/6.672.0.5/microsoft.portal.testframework.unittest.6.672.0.5.nupkg
NotFound https://api.nuget.org/v3-flatcontainer/microsoft.portal.testframework.unittest/6.672.0.5/microsoft.portal.testframework.unittest.6.672.0.5.nupkg 57ms
[CredentialProvider]Using the ADAL UI flow for uri https://msazure.pkgs.visualstudio.com/_packaging/Toolset/nuget/v3/index.json. User sign-in required in a pop-up authentication window.
В нем указано, что требуется аутентификация.
Согласно этому сообщению Как передать Azure Auth при развертывании пакета NuGet через Nuke.Common/NuGet.CommandLine предлагаемое решение — «обновить дату истечения срока действия пароля DevOps».
Может ли кто-нибудь сказать, как я могу обновить дату истечения срока действия Azure DevOps. У меня не было большой репутации, чтобы комментировать этот пост, поэтому мне пришлось создать новый пост.
Для пароля в этом случае, я полагаю, это означает PAT или токен личного доступа. Для любого пользователя, который был сгенерирован, этот токен, как этот пользователь в Azure Devops, щелкните пользовательские настройки -> токены личного доступа. Затем найдите нужный токен и нажмите «Изменить», затем выберите новую желаемую дату истечения срока действия.
Обновление: обязательно добавьте задачу аутентификации nuget в определение конвейера yaml, определенное здесь.
Может быть, мы должны сделать шаг назад и проверить некоторые вещи. Этот фид nuget находится в той же организации, что и ваш конвейер сборки, верно? Как у вас настроена проверка подлинности nuget в вашем конвейере? Я думаю, что этот документ может вам помочь: learn.microsoft.com/en-us/azure/devops/pipelines/tasks/package/…
Да, похоже, мне не хватало аутентификации nuget. На самом деле я использую файл .npmrc для аутентификации npm для восстановления nuget. После того, как я добавил эту задачу в свой конвейер сборки вместе с задачей восстановления NuGet в конвейере перед запуском UnitTest, все заработало. Спасибо!
Я рад, что у вас все получилось! Если вы можете пойти дальше и отметить это как принятый ответ, этот вопрос перестанет отображаться в списке без ответа. Я обновлю свой ответ, чтобы включить задачу.
В задаче восстановления вашего конвейера вы выбираете следующий параметр:
Обычно выбор этой опции не требует аутентификации.
Если вы выберете второй вариант, вы можете добавить задачу проверки подлинности NuGet перед задачей восстановления, чтобы настроить инструменты NuGet для проверки подлинности с помощью артефактов Azure и других репозиториев NuGet.
Помимо использования подключаемого модуля учетных данных NuGet, вы также можете использовать dotnet cli для добавления учетных данных в источник nuget.
RUN dotnet nuget add source "your-source-url" --name "source-name" --username "useless" --password "$PAT" --store-password-in-clear-text
RUN dotnet restore
Вот кейс, на который вы можете сослаться.
Я использую второй вариант «Каналы в моем NuGet.config», потому что у меня есть файл NuGet.config для проекта UnitTest, для которого я хочу восстановить пакеты.
Вы можете попробовать добавить задачу проверки подлинности NuGet перед задачей восстановления или использовать dotnet cli для добавления учетных данных в источник nuget.
Как обновить срок действия пароля в Azure DevOps
Согласно журналу ошибок, вы должны убедиться, что можете получить доступ к URL-адресу:
https://msazure.pkgs.visualstudio.com/_packaging/Toolset/nuget/v3/index.json
Это фид, для доступа к которому требуются определенные разрешения. Вы можете открыть этот URL-адрес в своем браузере в приватном режиме, чтобы проверить, есть ли у вас разрешение на доступ к вашей учетной записи.
Если бы вы могли получить доступ к этому URL-адресу, вы могли бы попробовать добавить следующее в свой nuget.config
:
<?xml version = "1.0" encoding = "utf-8"?>
<configuration>
<packageSources>
<add key = "MyAzureFeed" value = "https://msazure.pkgs.visualstudio.com/_packaging/Toolset/nuget/v3/index.json" />
<add key = "nuget.org" value = "https://api.nuget.org/v3/index.json" />
</packageSources>
<packageSourceCredentials>
<MyAzureFeed>
<add key = "Username" value = "YouAccount" />
<add key = "ClearTextPassword" value = "xxxx(could be your PAT)" />
</MyAzureFeed>
</packageSourceCredentials>
</configuration>
Если вы используете частный агент для построения конвейера, вы также можете напрямую обновить пароль на сервере:
Частный канал NuGet — запоминание пароля
Примечание. Даже если бы я мог открыть этот URL-адрес в своем браузере, но я все равно не смог бы найти этот пакет из этого канала после того, как я добавил этот источник канала в свою Visual Studio в качестве теста, смог бы найти только пакет microsoft.portal.testframework
(Не уверен, что мои разрешения недостаточный):
Да, я могу получить доступ к URL. Однако в моем случае я не могу добавить PAT в файл nuget.config, так как тот же файл добавляется в производство. Используемый здесь режим аутентификации — файл .npmrc, и после его добавления в конвейер сборки моя сборка заработала. Спасибо за подробную информацию. Это дало мне больше ясности в отношении аутентификации, и теперь я знаю, что аутентификацию также можно выполнить в файле nuget.config. Спасибо!
Я смог решить, получив помощь от членов сообщества. Однако я опубликовал свое окончательное решение, которое может помочь другим членам сообщества. Спасибо!
Получив помощь от членов сообщества, я публикую свое окончательное решение, которое помогло мне запустить UnitTest в конвейере сборки AzureDevOps. Шаги, которые я добавил перед запуском UnitTests:
Вот скриншот конвейера сборки.
В настройках пользователя я проверил PAT, все токены активны и срок их действия не истек. Существует ли какая-либо другая авторизация помимо PAT, которая требуется при запуске конвейера в Azure DevOps?