Azure DevOps: 用户无权完成此操作。您需要有“ AddPackage”

我得到一个错误:

User XXX lacks permission to complete this action. You need to have 'AddPackage'

当试图推动一个 nuget 包到 Azure DevOps 工件时,我是管理员 这就是舞台:

  - stage:
displayName: 'Release'
condition: succeeded()
jobs:
- job: 'Publish'
displayName: 'Publish nuGet Package'
steps:
- download: current
artifact: $(PIPELINE_ARTIFACT_NAME)
displayName: 'Download pipeline artifact'
- script: ls $(PATH_PIPELINE_ARTIFACT_NAME)
displayName: 'Display contents of downloaded articacts path'
- task: NuGetAuthenticate@0
displayName: 'Authenticate in NuGet feed'
- script: dotnet nuget push $(PATH_PIPELINE_ARTIFACT_NAME)/**/*.nupkg --source $(NUGET_FEED) --api-key $(NUGET_API_KEY)
displayName: 'Uploads nuGet packages'

确切的错误是:

error: Response status code does not indicate success: 403 (Forbidden - User '4a2eb786-540d-4690-a12b-013aec2c86e5' lacks permission to complete this action. You need to have 'AddPackage'. (DevOps Activity ID: XXXXXXX-6DF9-4A98-8A4E-42C556C6FC56)).
##[error]Bash exited with code '1'.
Finishing: Uploads nuGet packages

Git 回购在 GitHub 上。不确定谁被认为是用户,但我不知道还要修改哪些其他权限

41020 次浏览

我似乎通过将 BuildService 作为贡献者添加到提要的权限设置中来修复这个问题。

这有点令人困惑,但现在工作正常。

enter image description here

伟大的发现! 允许项目范围内的构建... 菜单为我工作。

但是为了能够将包从 Azure 管道推送到 Azure 工件提要,我必须在 dotnet build 和 dotnet push 之前的 dotnet 恢复步骤中添加与 Target 提要相同的提要。https://learn.microsoft.com/en-us/azure/devops/artifacts/nuget/dotnet-exe?view=azure-devops

对于那些像我一样完全迷路的人来说,@diegosasw 提到的页面是在“工件”菜单中,而不是在“任务”或“管道”中:

enter image description here

步骤:

  1. 点击左侧的 艺术品
  2. 从下拉列表中选择提要(通常默认选择)
  3. 单击右上角的 饲料设置齿轮。
  4. 许可
  5. 单击 添加用户/组并搜索 建立服务并添加为 投稿人

enter image description here

正确的答案是,在工件设置页面(您可以按照上面的解释访问) ,您需要向名为 pattern [ project _ name ] Build Service 的用户添加贡献者权限。例如,如果您的项目名称是“ IoT”,您需要在上面所示的权限选项卡的 Add user/groups 中找到用户“ IoT Build Service”,并分配贡献者权限。

如果仍然存在错误,也可以尝试将团队添加为贡献者。

希望有用。

[ project _ name ][ project _ name ]团队-贡献者

Project _ name Build Service (Org _ name)-贡献者

至少在2022-07年,Azure Devops 的网络界面发生了一些变化。尽管基本面似乎没有改变,但之前提到的 ...按钮已经不复存在。下面是我在写作时想到的步骤。从一个 有点抱怨的博客文章中提取,它有更多的细节和上下文。

artifacts tab in AZ menu

创建一个新提要,将范围设置为项目:

feed creation settings

默认情况下,为新提要创建的权限列表如下所示。请注意,默认情况下,organisation_name Build Service (project_name)用户或组具有 Collaborator角色。这可能是用户绊倒的关键绊脚石。

default feed permissions

您不能更改角色; 必须删除 organisation_name Build Service (project_name)用户或组,并使用 Contributor角色再次添加它。

corrected feed permissions

我的解决方案略有不同。在管道 > 编辑 > 选项 > 生成作业 > 生成作业授权范围下,新管道默认为“当前项目”。这需要改为“项目收集”,这解决了问题:

enter image description here

看看 ArkadiuszKozie-6872的回答: Https://learn.microsoft.com/en-us/answers/questions/723164/granting-read-privileges-to-azure-artifact-feed.html

还得把 ContributorProject Collection Build Service (<YOUR-ORG-NAME>)修好了。

我的问题就是这个。在 饲料设置-> 权限下,我可以找到具有参与者权限的 Project Collection Build Service (Organization),但是没有工作。作为一个解决方案,我删除了,并添加了 "Project Name" Build Service (Organization)。这是我专门在其上创建管道的项目的构建服务。

只是一个注意事项-确保将构建服务设置为 投稿人。 我有我的作为 同伙,这是一个完全不同的作用,我没有注意到的差异,因为他们只是出现非常相似。