2017-12-28 31 views
-4

成功したビルドのビルド品質(リリース済みまたは拒否済みまたは試用ビルド)を取得するには、powershellスクリプトが必要です。PowerShellスクリプトでTFSビルドの品質を得るには?

次のスクリプトで試してみました:問題は、リリースビルドが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." 
} 
+0

はいい考えです。何をお試しいただきましたので、お手伝いします。あなたのスクリプトを投稿する方法がわからない場合。 [How to Ask](https://stackoverflow.com/help/how-to-ask)と[最小限で完全で検証可能なサンプルを作成する方法](https://stackoverflow.com/)をご覧ください。ヘルプ/ mcve) – ShanayL

+0

上記の試用版スクリプトを追加しました – Bala

答えて

0

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 
+0

パーフェクト。それは私をたくさん助けます。ありがとうございました – Bala

関連する問題