用户没有完成此操作的权限。你需要有“AddPackage”

ibe*_*dev 33 nuget azure-devops azure-pipelines azure-artifacts

我收到一个错误:

User XXX lacks permission to complete this action. You need to have 'AddPackage'
Run Code Online (Sandbox Code Playgroud)

尝试将 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'
Run Code Online (Sandbox Code Playgroud)

和确切的错误:

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
Run Code Online (Sandbox Code Playgroud)

git 存储库位于 GitHub 中。不确定谁被认为是用户,但我不知道要修改哪些其他权限

ibe*_*dev 67

似乎我通过将构建服务作为贡献者添加到提要的权限设置来修复。

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

在此处输入图片说明

  • 顺便说一句,它位于删除旁边的“...”菜单中,称为“添加项目范围的构建” (33认同)
  • 以防万一有人遇到它,单击“添加用户/组”后搜索用户不适用于部分名称。即,搜索“build”或“Build Service”不会找到适当的帐户,但如果您搜索“<project> Build Service (<org>)”,它会按预期出现。弄清楚这一点相当烦人。 (28认同)
  • 与 Kord 类似,我作为用户拥有“项目集合构建服务 (XXXXXX-XXXXXX)”,我必须将其删除,然后使用“....”图标并单击“添加构建和发布”,通过单击重新-添加了具有适当权限的用户...。我现在可以在管道中成功使用 mvn deploy 并部署到 azure 工件区域 (3认同)
  • 我将构建服务作为贡献者,并且在某个时候开始收到错误(在此之前它工作正常)。对我来说,它解决的问题是从权限列表中删除构建服务并重新添加它。 (2认同)

小智 24

截至 2022 年 7 月,至少 Azure Devops Web 界面发生了一些变化。虽然基本面看起来没有变化,但...前面提到的按钮已经消失了。以下是我在撰写本文时想到的步骤。摘自一篇抱怨的博客文章,其中有更多细节和上下文。

AZ 菜单中的工件选项卡

创建一个新的 feed,将范围设置为项目:

Feed 创建设置

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

默认提要权限

您无法更改角色;您必须删除organisation_name Build Service (project_name)用户或组,然后使用角色再次添加它Contributor

更正了提要权限

  • 要更改角色,您不需要删除它们,只需重新添加它们,角色就会发生变化。 (5认同)

Gab*_*son 22

对于像我这样完全迷路的人,diegosasw说的页面是在Artifacts菜单里,不是在Task里,也不是在Pipeline里:

在此处输入图片说明

  • 感谢您再次指出这一点。我也迷路了,你的截图帮助了我! (3认同)

Duc*_*ing 14

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

在此输入图像描述


Xav*_*ohn 8

脚步:

  1. 单击左侧的“工件”。
  2. 从下拉列表中选择您的提要(通常默认选择)
  3. 点击右上角的“Feed Setting”齿轮。
  4. 点击“权限”
  5. 单击“添加用户/组”并搜索 {your org} Build Service 并添加为贡献者。

在此处输入图片说明

  • 谢谢。这是详细的。通过突出显示要单击的关键项目来修改答案。 (2认同)

小智 8

正确的答案是,在工件设置页面(您可以按照上面的说明进行访问),您需要向名称模式为 [project_name] Build Service 的用户添加贡献者权限。例如,如果您的项目名称是“IoT”,则需要在如上所示的权限选项卡中的添加用户/组中找到用户“IoT Build Service”,并分配贡献者权限。


Kay*_*yes 8

请参阅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>)这为我解决了这个问题。


小智 6

很棒的发现!在 ... 菜单中允许项目范围的构建对我有用。

但是为了能够将包从 Azure Pipelines 推送到 Azure Artifacts 提要,我必须在 dotnet build 和最后 dotnet push 之前的 dotnet restore 步骤下添加与 Target feed 相同的提要。https://docs.microsoft.com/en-us/azure/devops/artifacts/nuget/dotnet-exe?view=azure-devops