1

我有一个 TFS 构建定义设置,我在其中执行一个用于加强安全性、应用最终补丁等的 powershell 脚本。

有时这个 powershell 脚本可能会失败,我想将构建的状态更改为不成功或失败。有没有办法通过 powershell 更改此 TFS 构建状态?

4

2 回答 2

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 程序集。我在这里假设由于属性支持设置器,它们与服务器通信以影响更改。但我不是 100% 确定这一点。

于 2013-05-24T23:24:32.743 回答
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)

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

于 2015-01-22T19:58:56.450 回答