Я использую Azure DevOps для проекта в течение достаточно долгого времени, но вдруг публикация в канале моей организации/коллекции приводит к ошибке 403.
Я создал фид и могу выбрать его на этапе сборки nuget push
, но он не работает. Я создал новый канал для публикации пакетов NuGet, и он снова отлично работает. Мне кажется, что срок действия токена истек, но я никогда его не создавал и не использовал для аутентификации. Я также не хочу менять свой фид NuGet на новый, так как хочу использовать и старые пакеты.
Это конвейер сборки:
А это трассировка стека:
Active code page: 65001 SYSTEMVSSCONNECTION exists true SYSTEMVSSCONNECTION exists true SYSTEMVSSCONNECTION exists true
[warning]Could not create provenance session: {"statusCode":500,"result":{"$id":"1","innerException":null,"message":"User
'a831bb9f-aef5-4b63-91cd-4027b16710cf' lacks permission to complete this action. You need to have 'ReadPackages'.","typeName":"Microsoft.VisualStudio.Services.Feed.WebApi.FeedNeedsPermissionsException, Microsoft.VisualStudio.Services.Feed.WebApi","typeKey":"FeedNeedsPermissionsException","errorCode":0,"eventId":3000}} Saving NuGet.config to a temporary config file. Saving NuGet.config to a temporary config file. [command]"C:\Program Files\dotnet\dotnet.exe" nuget push d:\a\1\a\Microwave.0.13.3.2019072215-beta.nupkg --source https://simonheiss87.pkgs.visualstudio.com/_packaging/5f0802e1-99c5-450f-b02d-6d5f1c946cff/nuget/v3/index.json --api-key VSTS error: Unable to load the service index for source https://simonheiss87.pkgs.visualstudio.com/_packaging/5f0802e1-99c5-450f-b02d-6d5f1c946cff/nuget/v3/index.json. error: Response status code does not indicate success: 403 (Forbidden - User 'a831bb9f-aef5-4b63-91cd-4027b16710cf' lacks permission to complete this action. You need to have 'ReadPackages'. (DevOps Activity ID: 2D81C262-96A3-457B-B792-0B73514AAB5E)).
[error]Error: The process 'C:\Program Files\dotnet\dotnet.exe' failed with exit code 1
[error]Packages failed to publish
[section]Finishing: dotnet push to own feed
Есть ли вариант, который я упускаю из виду, когда мне нужно как-то аутентифицировать себя? Это так странно.
🤔 А знаете ли вы, что...
.NET Core поддерживает современные архитектурные стили, такие как микросервисы.
"message":"User 'a831bb9f-aef5-4b63-91cd-4027b16710cf' lacks permission to complete this action. You need to have 'ReadPackages'.
Согласно этому сообщению об ошибке, полученная вами ошибка, вызванная пользователем (a831bb9f-aef5-4b63-91cd-4027b16710cf), не имеет прав доступа к вашему каналу.
А также, как я проверил из бэкэнда, a831bb9f-aef5-4b63-91cd-4027b16710cf
— это VSID вашей учетной записи Build Service. Итак, попробуйте добавить этого пользователя (Служба сборки Micxxxave (sixxxxss87)) в целевой канал и назначить этому пользователю роль разрешений Автор или выше в канале.
Кроме того, здесь есть документ, на который вы можете сослаться:
В разделе «Разрешения на ленту» появился новый пользовательский интерфейс:
Для дальнейшего расширения решения Merlin и связанных ссылок (в частности, это о размахе), если в вашем решении есть только ОДИН проект, Azure Pipelines автоматически ограничивает область действия агента задания самим агентом. В результате у него нет видимости каких-либо служб за его пределами, включая ваши собственные частные репозитории NuGet, хранящиеся в конвейерах.
Решения с несколькими проектами автоматически разблокируются, что позволяет агентам сборки видеть ваши частные каналы NuGet, хранящиеся в конвейерах.
Я обнаружил, что самый простой способ снять ограничения области действия для одиночных сборок проекта — это:
Привет, ваша ошибка 403 во время ваших сборок с использованием частных каналов NuGet теперь должна исчезнуть!
Все еще интересно, где находится этот параметр «Ограничить область авторизации задания текущим проектом», мне потребовалось некоторое время, чтобы найти его, в настройках проекта, скриншот ниже должен помочь
Я хочу добавить немного больше информации на тот случай, если у кого-то возникнет такая же проблема. Вся информация, предоставленная другими пользователями, верна, есть еще одно предостережение, которое следует учитывать. Параметры политик заменяются параметрами организации. Если вы обнаружите, что не можете изменить настройки или они выделены серым цветом, щелкните логотип «Azure DevOps» в левой верхней части экрана.
Нажмите «Настройки организации» в левом нижнем углу.
Перейдите в Pipeline --> Settings и проверьте текущую конфигурацию.
Когда я создавал свою организацию, она ограничивала область действия на уровне организации. Мне потребовалось некоторое время, чтобы понять, что это заменяет проект.
Это может быть не сразу очевидным или интуитивно понятным, но эта ошибка также возникает, когда проект, в котором работает ваш конвейер, является общедоступным, а фид, к которому он обращается, — нет. Это может иметь место, например, при доступе к каналу на уровне организации.
В этом сценарии есть три возможных решения:
Инструкции для последнего варианта включены в @Merlin Liang - отличный ответ MSFT, но другие варианты могут быть предпочтительнее в зависимости от ваших требований.
Как минимум, мы надеемся, что это даст дополнительное представление о типах обстоятельств, которые могут привести к этой ошибке.
Вы можете установить это для каждого фида, нажав «Разрешить сборки на уровне проекта» (для меня выделено серым цветом, так как оно уже включено).
Это отличается от принятого ответа, так как вам не нужно явно добавлять пользователя и устанавливать разрешения.
Еще одна вещь, которую нужно проверить, если вы используете файл yaml для конвейеров, это наличие файла название канала верное.
Я знаю, что это может показаться спорным вопросом, но я потратил много времени на отладку ошибки ..lacks permission to complete this action. You need to have 'AddPackage'.
только для того, чтобы обнаружить, что я ссылался на неправильный фид в своем файле azure-pipelines.yaml
.