簡體   English   中英

如何在powershell腳本中獲得TFS Build質量?

[英]How to get TFS Build quality in powershell script?

我需要 powershell 腳本來獲得成功構建的構建質量(已發布或拒絕或試用構建)。

嘗試使用以下腳本:問題是如果我有 4-5 個以上的發布版本,我如何獲取版本列表???? 下面的腳本為我提供了更改 MaxBuildsPerDefinition=2 或 3 的值的即時和下一個。我需要獲取所有發布候選版本。

[string] $tfsLocation = "http://serverURL/tfs"
[string] $projectName = "ProjectName"
[string] $buildDefinitionName = "BuildDefinition"
Add-Type -Path "C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\IDE\CommonExtensions\Microsoft\TeamFoundation\Team Explorer\Microsoft.TeamFoundation.Client.dll"
Add-Type -Path "C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\IDE\CommonExtensions\Microsoft\TeamFoundation\Team Explorer\Microsoft.TeamFoundation.Build.Client.dll"
$tfsUri = New-object Uri($tfsLocation)
$teamProjectCollection = [Microsoft.TeamFoundation.Client.TfsTeamProjectCollectionFactory]::GetTeamProjectCollection($tfsUri)
$service = $teamProjectCollection.GetService([Type]"Microsoft.TeamFoundation.Build.Client.IBuildServer")
$spec = $service.CreateBuildDetailSpec($projectName, $buildDefinitionName)
$spec.MaxBuildsPerDefinition = 2
$spec.QueryOrder = [Microsoft.TeamFoundation.Build.Client.BuildQueryOrder]::FinishTimeDescending
$results = $service.QueryBuilds($spec)

if ($results.Builds.Length -eq 2) 
{
   Write-Host $results.Builds[0].Quality
if ($results.Builds[0].Quality = "Released")
{
  <<My Script Here>>

} else { 
<<My Script Here>>
}
} else { 

Write-Error "No builds found." 
}

您可以嘗試使用REST API來檢索成功構建的構建質量。 您可以根據您的要求相應地指定過濾器。 您也可以將構建列表導出到.CSV文件。

$collectionurl = "http://serverURL/tfs"
$projectName= "ProjectNname"
$BuildDefinitionId = "74"    
$baseUrl = "$collectionurl/$projectName/_apis/build/builds?api-version=2.0&definitions=$BuildDefinitionId&statusFilter=completed&resultFilter=succeeded"    # Set the filter based on your requirements.        
$builds = (Invoke-RestMethod -Uri $baseUrl -Method Get -UseDefaultCredential).value|where({$_.quality -in 'Released', 'Rejected','Trial'})  # filter the builds which have quality elements.

    $BuildResults = @()

    foreach($build in $builds){

        $customObject = new-object PSObject -property @{
              "BuildDefinition" = $build.definition.name
              "BuildId" = $build.id
              "BuildNumber" = $build.buildNumber
              "status" = $build.status
              "result" = $build.result
              "BuildQuality" = $build.quality
              "finishTime" = $build.finishTime
              "sourceBranch" = $build.sourceBranch
            } 

        $BuildResults += $customObject      
    }

    $BuildResults | Select `
                    BuildDefinition,
                    BuildId, 
                    BuildNumber, 
                    status,
                    result,
                    BuildQuality,
                    finishTime,
                    sourceBranch #|export-csv -Path E:\$projectName-Build.csv -NoTypeInformation

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM