Azure DevOps PowerShell Scripts - List all release definitions
If you want to list all the Azure Pipelines Release Definitions for all projects in an Azure DevOps organisation, this script will return a list of their names, the date of the latest release and a link to view the definition within the web UI.
Note that Release definitions are part of the "classic" release pipelines. If you're using YAML-based deployments then those will be viewable via the Pipelines script.
See Personal access tokens for instructions on how to create the personal access token.
param (
[string] $organisation,
[string] $personalAccessToken
)
$base64AuthInfo= [System.Convert]::ToBase64String([System.Text.Encoding]::ASCII.GetBytes(":$($personalAccessToken)"))
$headers = @{Authorization=("Basic {0}" -f $base64AuthInfo)}
$result = Invoke-RestMethod -Uri "https://dev.azure.com/$organisation/_apis/projects?api-version=6.0" -Method Get -Headers $headers
$projectNames = $result.value.name
$projectNames | ForEach-Object {
$project = $_
$result = Invoke-RestMethod -Uri "https://vsrm.dev.azure.com/$organisation/$project/_apis/release/definitions?api-version=6.1-preview.4&`$expand=lastRelease" -Method Get -Headers $headers
$result.value | Select-Object name, @{ Name="CreatedOn"; Expression= { $_.lastRelease.createdOn }}, @{ Name = "Url"; Expression = { $_._links.web.href }}
} | Sort-Object
It makes use of the Definitions - List REST API. Note that the documentation for that API is slightly misleading in the examples. You do need to pass in $expand=lastRelease
to get the lastRelease
property populated.
Categories: Azure DevOps, Azure Pipelines, PowerShell