Обновлено 20 февраля 2020
Сводка
Azure Сборка конвейера DevOps не может найти пакет NuGet из нашего частного фида в разделе Артефакты.
Наша Azure среда DevOps
В Azure у нас есть компания "space": dev. azure .com / OurCompany
Under что у нас есть несколько проектов, поэтому, например, представьте эти три:
- Зеленый: в нем содержатся приложения определенного типа
- Синий: в нем содержатся приложения другого типа
- Красный: здесь хранится наш «общий» вспомогательный код
RED
RED содержит весь наш общий вспомогательный код - библиотеки DLL, используемые приложениями в GREEN и СИНИЙ. Они доступны в виде пакетов NuGet.
В разделе Артефактов RED мы видим «канал организационной области», называемый «OurCompany». Мы поняли, что не можем использовать это, потому что эти пакеты NuGet должны быть доступны каждому в OurCompany, что означает не только на Azure, но и на наших компьютерах DeskTop в нашей корпоративной сети (где мы запускаем Visual Studio). «Я не думаю, что« канал организации »имеет отношение к нашей корпоративной сети.
Поэтому мы создали новый канал в соответствии с артефактами RED. При просмотре разрешений я вижу следующие записи:
- {me}: (Владелец)
- [OurCompany] \ Администраторы коллекций проектов: (Владелец)
- [RED] \ Администраторы проекта: (Владелец)
- Служба сборки RED (OurCompany): (Автор)
- Служба сборки коллекции проектов (OurCompany): (Участник)
- [ RED] \ Contributors (Contributor)
Corporate
Итак, вернувшись в Corporate, мы добавляем фид пакетов NuGet в нашу Visual Studio и затем пакеты NuGet по сравнению с Azure.
ЗЕЛЕНЫЙ и СИНИЙ
Здесь у нас есть наши продукты. Мы создаем конвейер сборки и добавляем шаг восстановления NuGet:
- task: NuGetCommand@2
displayName: 'Restore for Our Application'
inputs:
command: 'restore'
restoreSolution: '**/*.sln'
feedsToUse: 'select'
vstsFeed: '{Guid1}/{Guid2}'
Две гида были заполнены, когда мы пикетировали фид Azure Artifacts из выпадающего списка.
ЗЕЛЕНЫЙ или СИНИЙ сбой восстановления NuGet
Так что именно здесь мы сталкиваемся с нашей проблемой. Когда выполняется шаг восстановления NuGet, происходит сбой со следующим сообщением:
Unable to find version 'nnnn.n.n' of package 'TheNuGetPackage'.
Вывод журнала огромен, но характерные строки выглядят так:
2020-02-18T18:36:35.2838118Z [command]C:\hostedtoolcache\windows\NuGet\5.4.0\x64\nuget.exe sources Add -NonInteractive -Name {Guid2} -Source https://pkgs.dev.azure.com/OurCompany/{Guid1}/_packaging/{Guid2}/nuget/v3/index.json
-ConfigFile d:\a\1\Nuget\tempNuGet_356.config 2020-02-18T18:36:35.7513495Z Package source with Name: {Guid2} added successfully. 2020-02-18T18:36:41.1671856Z [CredentialProvider.183638]Command-line v0.1.20+a5d37185a1a95acb4f0g997b9c23cab99508: "d:\a\_tasks\NuGetCommand_333b11bd-d341-40d9-bdbd-b32d5ce6f23b\2.164.0\CredentialProviderV2\plugins\netfx\CredentialProvider.Microsoft\CredentialProvider.Microsoft.exe"
-Plugin 2020-02-18T18:36:41.1673979Z [CredentialProvider]Handling 'Request' 'GetAuthenticationCredentials'. Time elapsed in ms: 3 - Payload: {"Uri":"https://pkgs.dev.azure.com/OurCompany/{Guid1}/_packaging/{Guid2}/nuget/v3/index.json","IsRetry":false,"IsNonInteractive":true,"CanShowDialog":true} 2020-02-18T18:36:41.1674299Z [CredentialProvider]Handling auth request, Uri: https://pkgs.dev.azure.com/OurCompany/{Guid1}/_packaging/{Guid2}/nuget/v3/index.json, IsRetry: False, IsNonInteractive: True, CanShowDialog: True 2020-02-18T18:36:41.1674465Z [CredentialProvider]URI: https://pkgs.dev.azure.com/OurCompany/{Guid1}/_packaging/{Guid2}/nuget/v3/index.json 2020-02-18T18:36:41.1674818Z [CredentialProvider]Skipping NuGetCredentialProvider.CredentialProviders.VstsBuildTaskServiceEndpoint.VstsBuildTaskServiceEndpointCredentialProvider, cannot provide credentials for https://pkgs.dev.azure.com/OurCompany/{Guid1}/_packaging/{Guid2}/nuget/v3/index.json 2020-02-18T18:36:41.1675261Z [CredentialProvider]VstsBuildTaskCredentialProvider - https://dev.azure.com/OurCompany/ 2020-02-18T18:36:41.1675425Z [CredentialProvider]VstsBuildTaskCredentialProvider - https://pkgs.dev.azure.com/OurCompany/ 2020-02-18T18:36:41.1675722Z [CredentialProvider]VstsBuildTaskCredentialProvider - https://pkgs.dev.azure.com/OurCompany/ 2020-02-18T18:36:41.1676021Z [CredentialProvider]VstsBuildTaskCredentialProvider - https://pkgs.dev.azure.com/OurCompany/ 2020-02-18T18:36:41.1676161Z [CredentialProvider]VstsBuildTaskCredentialProvider - Matched prefix: https://pkgs.dev.azure.com/OurCompany/ 2020-02-18T18:36:41.1676330Z [CredentialProvider]VstsBuildTaskCredentialProvider - Found credentials for endpoint https://pkgs.dev.azure.com/OurCompany/{Guid1}/_packaging/{Guid2}/nuget/v3/index.json 2020-02-18T18:36:41.1680820Z https://pkgs.dev.azure.com/OurCompany/{Guid1}/_packaging/{Guid2}/nuget/v3/index.json: Unable to load the service index for source https://pkgs.dev.azure.com/OurCompany/{Guid1}/_packaging/{Guid2}/nuget/v3/index.json. 2020-02-18T18:36:41.1680996Z Response status code does not indicate success: 404 (Not Found - VS800075: The project with id 'vstfs:///Classification/TeamProject/{Guid1}' does not exist, or you do not have permission to access it. (DevOps Activity ID: 0628EDE7-6E7E-465D-A6AE-7B6B0AA065D2)).
Это выглядит как вещь разрешения для меня. Но то, что кажется странным, это то, что канал артефакта в RED обнаруживался при создании YAML для конвейерной сборки, когда у нас тогда не было разрешений на его использование.
Я попытался добавить разрешения для канала в RED. Нажав на кнопку «Добавить пользователей / группы». Я нашел следующее и добавил их в качестве читателя или участника, но безуспешно.
- [ЗЕЛЕНЫЙ] \ Green Team
- GREEN Build Services
Итак:
- Я поступаю неправильно? Если так, что я должен делать (я думал, что довольно точно следовал инструкциям Azure DevOps)
- Правильно ли я поступаю? Если так, что я пропустил?
Обновление # 1
Подробное сообщение об ошибке с шага восстановления
https://api.nuget.org/v3/index.json: Пакет 'Package1.nnnn.nn' не найден в источнике 'https://api.nuget.org/v3/index.json'.
https://pkgs.dev.azure.com/OurCompany/ {Guid1} / _ package / {Guid2} /nuget/v3/index.json: невозможно загрузить индекс службы для источника https://pkgs.dev.azure.com/OurCompany/ {Guid1} / _ packaging / {Guid2} /nuget/v3/index.json , Код состояния ответа не указывает на успех: 404 (Не найдено - VS800075: проект с идентификатором 'vstfs: /// Classification / TeamProject / {Guid1}' не существует, или у вас нет разрешения на доступ к нему. (Операция DevOps ID: {Guid})).