通过Powershell更新TFS构建状态

时间:2013-05-24 22:01:42

标签: powershell tfsbuild

我有一个TFS Build Definition设置,我执行powershell脚本以进行安全加固,应用最终补丁等。

有时这个powershell脚本可能会失败,我想将构建状态更改为un-successfull或failed。有没有办法通过PowerShell更改此TFS Build状态?

2 个答案:

答案 0 :(得分:0)

试试这个:

$script:TFServerName  = $ServerName
$script:TFServer      = [Microsoft.TeamFoundation.Client.TeamFoundationServerFactory]::GetServer($ServerName)
$script:TFBuildServer = $TFServer.GetService([Microsoft.TeamFoundation.Build.Client.IBuildServer])
$spec = $TFBuildServer.CreateBuildDetailSpec($TeamProject, $DefinitionName)
$spec.Status = 'Failed'

确保您拥有Add-Type正确版本的TFS程序集。我在这里假设,由于属性支持setter,它们会回传给服务器以影响更改。但我不是百分之百确定。

答案 1 :(得分:0)

这是我从MSDN拼凑而成的内容:

[Reflection.Assembly]::LoadWithPartialName("Microsoft.TeamFoundation.Build.Client")
[Reflection.Assembly]::LoadWithPartialName("Microsoft.TeamFoundation.Client")


$tfsServerAddress = "http://{tfs hostname}:{port}/{CollectionName}"
$build = "{build definition name}_{build date}.{build count for the day}"

#update build status
$tfsProject = [Microsoft.TeamFoundation.Client.TfsTeamProjectCollectionFactory]::GetTeamProjectCollection($tfsServerAddress)
$tfsBuildServer = $tfsProject.GetService([Microsoft.TeamFoundation.Build.Client.IBuildServer])
$spec = $tfsBuildServer.CreateBuildDetailSpec($teamProject)
$spec.BuildNumber = $build
$builds = $tfsBuildServer.QueryBuilds($spec).Builds

if ($builds[0].TestStatus -eq 'Succeeded'){
    echo "updating test status:" $builds[0].TestStatus "to $testOutcome"
    $builds[0].TestStatus = $testOutcome
}

if ($builds[0].Status -eq 'Succeeded'){
    echo "updating build status:" $builds[0].Status "to $testOutcome"
    $builds[0].Status = $testOutcome
}
$tfsBuildServer.SaveBuilds($builds)

请注意,您需要特殊权限才能更新构建状态