I am trying to get all the running builds (in progress) + with a template parameter in a specific definition. I am using Powershell@2 task in Azure DevOps to accomplish this but multiple conditions are not running using Where-Object. Below is the code:
$token = "123"
$organization = "foo"
$project = "abc"
$base64AuthInfo = [Convert]::ToBase64String([Text.Encoding]::ASCII.GetBytes(("{0}:{1}" -f $user,$token)))
$ThisBuildDefinitionID = "8430"
[int]$ThisBuildID = "1571327"
$GET_BUILDS_BY_DEFINITION_URL = "https://azure.com/$organization/$project/_apis/build/builds?api-version=6.0&definitions=$ThisBuildDefinitionID"
do
{
$GET_BUILDS_BY_DEFINITION_RESPONSE = ""
try
{
$GET_BUILDS_BY_DEFINITION_RESPONSE = Invoke-RestMethod -Uri $GET_BUILDS_BY_DEFINITION_URL `
-Method GET `
-ContentType "application/json" `
-Headers @{Authorization=("Basic {0}" -f $base64AuthInfo)}
}
catch
{
continue
}
Write-Host $GET_BUILDS_BY_DEFINITION_RESPONSE.value
[array]$runningBuilds = $GET_BUILDS_BY_DEFINITION_RESPONSE.value | Where-Object {"status" -eq "inProgress" -and "templateParameters.param1" -eq "myparam"}
Write-Host "running builds count: " $runningBuilds.count
if ($runningBuilds.count -gt 0) {
[int]$currentRunningBuild = ($runningBuilds | Sort-Object -Property "Id")[0].Id
}
Write-Host "This Build ID: " $ThisBuildID
Write-Host "Currently Running Build ID: " $currentRunningBuild
Write-Host "Waiting..."
Write-Output ""
Start-Sleep -Seconds 5
}
while($ThisBuildID -ne $currentRunningBuild)
Write-Host "Waiting Complete."
Write-Host "Starting Build: " $ThisBuildID
Start-Sleep -Seconds 5
Where-Object {"status" -eq "inProgress" -and "templateParameters.param1" -eq "myparam"} is the part where I am having issues as to what would be condition to get this running fine.
When I use only one single condition like Where-Object "status" -eq "inProgress", it works fine and gets me the builds in progress but I want to also include a template parameter condition
Can someone assist me what I am doing wrong?
PS: Credit to Devin Lambert's script in the visualstudio developer community.