Azure DevOps Server 上的 NuGet 推送出现“允许跳过重复项”警告和 409 错误

Neo*_*Neo 5 nuget azure-devops azure-devops-server-2019

在 Windows Server 2019 代理上运行的 Azure DevOps Server(版本 2019.0.1)中,为 NuGet 推送任务选择“允许跳过重复项”选项时,会显示警告:

“允许跳过重复项”选项当前仅在 Azure Pipelines 上可用。如果 NuGet.exe 遇到冲突,任务将失败。

该任务会导致以下错误,导致任务失败,表明上述警告适用:

响应状态代码不表示成功:409(冲突 - 源已包含“MyPackage XYZ”。(DevOps 活动 ID:1A57312F-3C56-4E4D-9E78-73C7072A288F))。

我想知道这个问题是否是 Azure DevOps Server(而不是 Azure DevOps Services)特有的,或者我是否做错了什么,或者是否有其他解决方法。我注意到其他人在另一个问题的评论中也有同样的问题,其中提到在有人询问如何忽略错误 409(重复包)后该选项可用。

我想使用 NuGet 任务忽略重复的包,最好使用 Azure DevOps Server 上的“允许跳过重复项”选项。我知道可以使用脚本来解决这个问题,但如果可能的话我宁愿避免这种情况。任何帮助表示赞赏。

Tom*_*rek 5

如果您使用的是NuGetCommand@2Azure Pipelines 任务,则可以使用该allowPackageConflicts参数。

allowPackageConflicts

即使您的某些包因 409 冲突错误而被拒绝,它也允许任务报告成功。此选项当前仅在 Azure Pipelines 上可用并使用 Windows 代理。如果 NuGet.exe 遇到冲突,任务将失败。如果您位于代理环境中,此选项将不起作用并且发布将失败。

- https://learn.microsoft.com/en-us/azure/devops/pipelines/tasks/package/nuget

  • 即使返回 409,此任务上的此参数在推送到 nuget.org 时似乎不起作用 (3认同)
  • @Jeff,我以为我遇到了同样的问题,但对我来说,事实证明我没有使用“NuGetCommand@2”,而是使用“DotNetCoreCli@2”,它看起来很相似,但没有相同的选项:“allowPackageConflicts”不是支持的。也许这有帮助? (2认同)

ziv*_*kan 4

我不了解Azure DevOps任务,但如果升级到nuget.exe 5.1,则可以使用新-SkipDuplicate选项。这应该适用于任何正确实现 NuGet 协议的 NuGet 服务器以及任何 CI 服务器/代理。

  • 我使用 NuGet Tool Installer 任务来指定 5.1.0,但这个问题是关于使用 Azure DevOps NuGet 任务使其正常工作。正如我所提到的,我知道它可以使用脚本来解决(我会直接调用 nuget.exe),但我想避免这种情况。这更多的是关于对 Azure DevOps 管道任务的深入了解。 (3认同)