【问题标题】:VSO Build - NuGet Publish 409 ConflictVSO 构建 - NuGet 发布 409 冲突
【发布时间】:2016-04-15 10:30:11
【问题描述】:

我的 VSO 构建定义出现 409 冲突,该定义打包并发布到 VSO 源。

所以每次构建运行都是失败的。

但是,包最终会出现在提要中。

有什么线索吗?谢谢。

【问题讨论】:

  • 你能分享你的构建定义吗?
  • 在第一步“获取资源”中勾选 Clean = true

标签: tfsbuild azure-devops


【解决方案1】:

您看到的错误消息通常是由于 VSO 提要已经包含与您正在发布的包具有相同名称和版本号的包。但根据第二张截图,包是在构建过程中发布的。所以我想知道这个包是否在这个过程中被发布了两次。您需要检查您的构建定义以查看该包是否在构建期间发布了两次,或者有两个构建定义同时执行相同的操作。

更新: 您可以将“自动包版本控制”设置为“使用内部版本号”并将“内部版本号格式”设置为“1.2$(Rev:.r)”,以便 nuget 包版本为 1.2.* 并在每次构建后增加。

【讨论】:

  • 嗨,埃迪,我喜欢你的想法。这是一个很好的理论。可悲的是,我已经删除了定义并从我的办公桌返回手动构建和发布(这是一个个人项目)。这部分是因为构建队列有时会超过 30 分钟,我等不及要更新库并继续处理主项目。
  • @LukePuplett 您在桌面构建和发布 nuget 包时是否增加了它的版本?
  • 肯定总是更新版本号。我知道 409 是在工作中设置 VSO NuGet 提要的版本冲突。顺便说一句,我真的希望能够在版本属性中使用 1.2.*,并且 VSO 构建只会使用自动标记构建并推送它,但发现 VSO 构建不支持它,请参阅链接,这是不追求使用 VSO 构建的另一个因素。这些天我需要破解,我太忙于解决新技术中的问题。 stackoverflow.com/questions/36630381/…
  • @LukePuplett 要检查的另一件事:您使用的是什么构建代理,托管构建代理还是您自己的构建代理?如果您使用自己的构建代理,您是否在运行下一个构建之前删除了上次构建生成的 nuget 包?如果没有,nuget 发布者任务将发布旧包,这也会导致 409 错误。版本归属地,详细请参考我的回答中的信息。
  • 有一天我有时间时可能会重新设置所有这些,我会检查所有这些。感谢版本格式,我现在将标记为答案。
【解决方案2】:

我遇到了同样的问题。解决方案是在构建开始时添加一个删除旧 .nupkg 文件的步骤。超级简单...

  1. 添加删除文件步骤。
  2. 移至开始构建。
  3. 设置源文件夹= $(Build.Repository.LocalPath)
  4. 设置内容 = *.nupkg
  5. 享受新的绿色建筑。

【讨论】:

  • 嘿山姆,谢谢你的回答。这样做的问题是,您可能需要所有分支的完整包历史记录 - 一些开发人员在几周前的分支上工作 - 以及何时/如果您需要回滚部署或返回并运行旧版本一个应用程序,也许是为了调试你认为几个月前悄悄发生的回归。
  • 我明白了。开发人员会从构建服务器获取旧包吗?我是新手,所以可能是一个愚蠢的问题。该包也将在部署服务器上。
  • 是的,你所有版本的包都将在你的 NuGet 服务器上,不是永远,而是很长一段时间。显然,这取决于您的情况和项目。如果您有一个庞大的团队和许多项目,每个项目都有许多分支,那么您可能会引用 20 个不同版本的 nupkg。
  • +1 作为答案,甚至没有考虑过这一点。没有人应该从构建服务器中提取文件,期间。
  • 我的文件没有按照你的说明被删除,有什么关于如何调试的建议吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-03-22
  • 2017-05-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多