Friday, April 26, 2013

TFS 2012 how to get Last Known good build via Powershell

The following script will return the last successful build on a given build definition. 

Save the following to a .ps1 file

$project = "testproject"
[URI]$Projecturi = "http://tfsserver:8080/tfs/DefaultCollection/"
function Wait-GetLKGBuild {
 [CmdletBinding()]
 PARAM (
  [Parameter(Mandatory=$true)]
        [string]$buildDefinitionName
    )

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

 $tfs = [Microsoft.TeamFoundation.Client.TeamFoundationServerFactory]::GetServer($Projecturi)
    $buildserver = $tfs.GetService([Microsoft.TeamFoundation.Build.Client.IBuildServer])
         
    $rbBuildDefinition = $buildserver.GetBuildDefinition($project, $buildDefinitionName)
 $build = $buildserver.GetBuild([Uri]($rbBuildDefinition.LastGoodBuildUri));
  New-Object PSObject -Property @{
                Buildnumber = $build.BuildNumber; 
    Requestedfor = $build.RequestedFor;
                Status = $build.Status;           
                CompilationStatus = $build.CompilationStatus;           
                Start = $build.StartTime;           
                End = $build.FinishTime;           
                DropLocation = $build.DropLocation;           
                SourceGetVersion = $build.SourceGetVersion;           
                }           
         }
}
Wait-GetLKGBuild $buildDefinitionName

5 comments:

Unknown said...

Thanks. Great post. Can know the build Agent number also?

Unknown said...

full detailled article and powershell kit to query tfs build using powershell can be found there : https://freakydinde.wordpress.com/2016/09/14/tfs-powershell/

Unknown said...

Perfect!

Any way to additionally query the TestRunStatus? Would be the perfect report:

CompilationStatus: Succeeded
TestRunStatus: Succeeded
etc...

freakydinde said...

sure,try this : https://freakydinde.wordpress.com/2016/09/14/tfs-powershell

Unknown said...

Thanks freaky :)