How to: List all Release Definitions and their latest executions on Azure DevOps

Vinicius Moura
2 min readNov 3, 2021

--

This script and report list all Release Definitions and respective latest executions within the Azure DevOps organization

The original script is available on my GitHub repository. See below this script:

Let’s understand each command used.

  1. PowerShell script will receive the following parameters:
  • $PAT = Personal Access token to connect on Azure DevOps;
  • $Organization = Organization URL to list all Team Projects, Release Definitions and latest executions;
  • $Connstr = connection string to Azure SQL Database that stores the report information. To create this report, it’s necessary to create previously an Azure SQL Server and Database and run a script below:

2. Projects List = uses this REST API to list all Team Projects on Azure DevOps organization

$AzureDevOpsAuthenicationHeader = @{Authorization = 'Basic ' + [Convert]::ToBase64String([Text.Encoding]::ASCII.GetBytes(":$($PAT)")) }$UriOrganization = "https://dev.azure.com/$($Organization)/"$uriProject = $UriOrganization + "_apis/projects?`$top=500"$ProjectsResult = Invoke-RestMethod -Uri $uriProject -Method get -Headers $AzureDevOpsAuthenicationHeaderForeach ($project in $ProjectsResult.value)
{
Write-Host $project.name
}

3. Definitions List = uses this REST API to list all Release Definitions on each Team Project

$uriReleaseDefinitions = $uriReleases + "$($project.id)/_apis/release/definitions?api-version=6.1-preview.4"    $ReleaseDefintionsResult = Invoke-RestMethod -Uri $uriReleaseDefinitions -Method get -Headers $AzureDevOpsAuthenicationHeader    Foreach ($releaseDef in $ReleaseDefintionsResult.value)    
{
Write-Host $releaseDef.name
}

4. Releases List = uses this REST API to get the latest Release for a Release Definition

$uriLatestRelease = $uriReleases + "$($project.id)/_apis/release/releases?definitionId=$($releaseDef.id)&queryOrder=descending&`$top=1&`$expand=environments&api-version=6.0"        $LatestReleaseResult = Invoke-RestMethod -Uri $uriLatestRelease -Method get -Headers $AzureDevOpsAuthenicationHeader        if ($LatestReleaseResult.count -gt 0)        
{
Write-Host $LatestReleaseResult.value[0].name
}

5. After extract all Team Projects, Release Definitions and the latest Release executions, this information is stored in a table in Azure SQL.

6. After insert information into a table, connect this database on Power BI:

  • Project Name (1) = Filter report using Project Name field;
  • Release Definition Name (2) = Filter report using Release Definition Name field;
  • Release Environment Name (3) = Filter report using Release Environment Name field;
  • Release Environment Result (4) = filter report using Release Environment Result field;
  • Requested For (5) = filter report using Requested For field;
  • Release Definitions and latest executions (6) = List all information about Team Projects, Release Definitions, Environment Name, Release Number, Release Start Time, Release Result, Release Requested For, and respective Link to redirect it to Azure DevOps;
  • Charts (7) = Charts to view aggregate information about this report.

--

--