如何在TeamCity Nuget Feed上删除特定版本的软件包?

mat*_*dev 56 teamcity nuget nuget-package nuget-server teamcity-7.0

有没有人知道在TeamCity Nuget Feed上删除特定版本的软件包?

the*_*Dmi 43

现在,通过Web UI支持此功能

只需打开构建并选择Actions>即可删除有问题的构建Remove.这将从TeamCity中的列表中删除构建,并且还会从Nuget源中删除该特定构建的所有构建工件.

  • 如果您有一个由构建生成的包并且只想删除其中一个包,该怎么办? (8认同)

Kin*_*ger 35

我知道这是很久以前问过的,但我仍然偶尔遇到这个问题而且我总是忘记怎么做,所以我想我会发布我的解决方案,我认为可能会稍微容易一些(取决于你看起来的样子)在它).

基本上,我运行了一个TeamCity构建,不幸的是我创建了第三方软件包的duff版本,我尝试重新创建但有一些修改.它没有用,但这意味着我总是在包管理器中提供这个duff包,它将保持这样,直到第三方发布更新的版本.因此我想从TeamCity Nuget服务器中删除该包,我唯一能找到的方法是删除构建,这也会删除文物(在这种情况下为duff Nuget包).

现在,我看不到删除构建的方法,除了使用REST API,这就是我使用的东西(我希望我不是傻瓜,实际上有一种从UI中删除构建的简单方法).我使用fiddler生成DELETE命令.只需发布类似于我在下面显示的删除请求即可实现此目的:

从提琴手转到Composer窗口.选择"删除"而不是"获取",然后在下面的表单中输入您的TeamCity网址:

http://<server>:<port>/httpAuth/app/rest/builds/<build ID>
Run Code Online (Sandbox Code Playgroud)

当您从TeamCity中选择要删除的构建时,只需检查URL即可找到构建ID(查找'buildId'查询参数后面的数字).唯一的另一个步骤是将授权标头添加到命令中.在"请求标头"窗口中的"用户代理"下面的行中输入以下内容.

Authorization: Basic (Username:Password encoded as base64)
Run Code Online (Sandbox Code Playgroud)

要将您的用户名/密码编码为base64,请转到fiddler中的工具 - >文本向导,然后以此格式输入您的TeamCity详细信息 - 用户名:密码.最后,您应该选择"执行"按钮,一切正常,构建将与Nuget包一起删除.

这对我有用,但在做这一切时显然要小心,因为你不想删除错误的构建.首先备份/快照您的TeamCity服务器可能是谨慎的.

希望这有助于某人.

  • 这看起来非常激烈 (6认同)
  • 我能够从构建历史记录页面中删除构建.在右上角有一个**Actions**下拉,带有**Remove ...**选项.这就是诀窍.我正在运行TeamCity 8.1.5 (4认同)

Set*_*thO 17

首先,似乎在TeamCity中尚未直接支持删除ad-hoc NuGet包.JetBrains 有一个未解决的问题,但目前没有计划修复.也就是说,我们设计了一种解决方案,让我们解决了我们的具体问题,并可能对您有所帮助.

我们有一系列使用不正确(加速)版本的nupkg文件.因此,它们似乎比我们现在创建的包更"新".如果没有办法只删除不正确的版本,我们将每个TeamCity构建配置的"清理工件"策略设置为一个短窗口(2天)并运行清理.您需要系统管理员权限才能执行此操作.

这删除了比最后一个工件早一天的所有工件,并清除了所有坏包.我们通过NuGet命令行List命令验证了这一点.由于最近的软件包是正确的,我们现在只在NuGet feed中宣传好的软件包.

不可否认,这是一个"精确核武器"选项,并不适合所有人.我希望TeamCity在不久的将来完全支持NuGet命令行API.

  • 在Administration - > Build History Clean-Up(在Projects下) - >配置清理规则下找到它 (3认同)

小智 8

这是我第三次发现这篇文章,因为我有类似的问题.事实证明,使用jetbrains的票证很久以前就关闭了 - 现在TeamCity(至少我们的版本9.1)通过打开特定构建的详细信息直接支持这一点,单击"Actions"下拉列表,然后选择"Remove .. ".这将从TeamCity中删除构建以及nuget包存储库中的工件 - 从而完全消除了以稍微复杂的方式调用REST api的需要.

发布这个之后,我甚至可能会记住它,下次我需要这样做.