【问题标题】:tfsbuild delete/destroy - founds no builds for build specificationtfsbuild delete/destroy - 没有发现构建规范的构建
【发布时间】:2019-01-16 02:24:15
【问题描述】:

无论保留设置如何,我们的构建定义中都会无限期地保留 100 个构建:我想删除带有脚本的构建,我正在尝试从远程 PC 运行。我们的 tfs 服务器是 2015.2。

tfsbuild destroy /collection:http://tfsserver:8080/tfs/ProjectCollection /dateRange:01/01/2017~31/12/2017 /buildDefinition:teamProject\Builddefintion

输出显示:没有找到符合构建规范的构建。即使有许多构建符合标准。任何帮助表示赞赏。谢谢!

【问题讨论】:

  • 您是在谈论 XAML 构建还是更新的构建系统?
  • 嗨,它的新版本 - vNext 构建

标签: tfs tfsbuild tfs-2015


【解决方案1】:

Tfsbuild delete/destroy 仅适用于 Xaml 构建。并且需要先delete 然后destroy

对于 vNext 构建,您可以尝试使用 REST API (Delete a build) 删除它们:

DELETE http://server:8080/tfs/DefaultCollection/ProjectName/_apis/build/builds/{build Id}?api-version=2.0

您可以使用下面的 PowerShell 脚本删除所有在 2017 年完成的特定构建定义的构建:

Param(
   [string]$collectionurl = "http://server:8080/tfs/Collection",
   [string]$projectName = "ProjectName",
   [string]$builddefinitionID = "56",
   [string]$keepForever = "true",
   [string]$user = "username",
   [string]$token = "password"
)

# Base64-encodes the Personal Access Token (PAT) appropriately
$base64AuthInfo = [Convert]::ToBase64String([Text.Encoding]::ASCII.GetBytes(("{0}:{1}" -f $user,$token)))

#Get builds list which completed in the year 2017
$buildsUrl = "$($collectionurl)/$projectName/_apis/build/builds?definitions=$builddefinitionID&statusFilter=completed&api-version=2.0"   
$builds = (Invoke-RestMethod -Uri $buildsUrl -Method Get -Headers @{Authorization=("Basic {0}" -f $base64AuthInfo)}).value | where({$_.finishTime -like '*2017*'})

#Delete the builds 
foreach ($build in $builds.id)
{
$deleteurl = "$($collectionurl)/$projectName/_apis/build/builds/$build"+"?api-version=2.0"

$result = (Invoke-RestMethod -Uri $deleteurl -Method Delete -Headers @{Authorization=("Basic {0}" -f $base64AuthInfo)})

Write-Host "Builds deleted with the ID" : $build 
}

【讨论】:

  • 您好,感谢您的快速帮助。我在本地使用 tfs2015。我没有在选项中看到标记。您能告诉我使用脚本的其他身份验证方式吗?
  • @chandu 创建一个*.txt 文件,将上面的脚本复制到*.txt 文件中, --> 提供正确的参数,保存为*.ps1 文件。 (将文件扩展名,*.txt改为*.ps1)-->,运行*.ps1文件
  • @chandu 可以将账户的password设置为token。总之,忽略'token',只需在上面的脚本中指定你的用户名和密码等参数。然后在本地或任何可以连接到TFS服务器的机器上运行它,不需要在TFS中运行。跨度>
  • 嗨,谢谢,现在尝试一下,第一次,它显示为 Build deleted with id =5032,然后在我收到此消息后 Invoke-RestMethod :操作已超时。在 C:\Work\scripts\delBuilds.ps1:15 char:12 + $builds = (Invoke-RestMethod -Uri $buildsUrl -Method Get -Headers @{Authorizatio ... + ~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : InvalidOperation: (系统.Net.HttpWebRequest:HttpWebRequest) [Invoke-RestMethod], WebExc eption + FullyQualifiedErrorId : WebCmdletWebResponseException,Microsoft.PowerShell.Commands.InvokeRestMethodCommand
  • 似乎,很少有构建被部分删除,我仍然可以看到摘要,没有信息,当我再次尝试相同的脚本时,我总是收到上述超时错误。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-09-16
  • 2010-11-22
  • 2023-03-18
相关资源
最近更新 更多