FYI, I modified the script provided to delete releases. Thought I’d post it in case it helps anyone else out:
param(
$OctopusURL = "https://localhost",
[parameter(Mandatory=$true)][SecureString]$SecurePassword,
$KeepDates = @{
dev = (Get-Date).AddDays(-90)
release = (Get-Date).AddDays(-90)
ci = (Get-Date).AddDays(-90)
mac = (Get-Date).AddDays(-90)
united = (Get-Date).AddDays(-90)
}
)
$Credentials = New-Object System.Management.Automation.PSCredential -ArgumentList "Domain\User", $SecurePassword
$octopusAPIKey = $Credentials.GetNetworkCredential().Password
$header = @{ "X-Octopus-ApiKey" = $octopusAPIKey }
$ErrorActionPreference = "Stop";
#$spaceName = "default"
# Get space
#$space = (Invoke-RestMethod -Method Get -Uri "$OctopusURL/api/spaces/all" -Headers $header -SkipCertificateCheck) | Where-Object {$_.Name -eq $spaceName}
$channels = Invoke-RestMethod -Method Get -Uri "$OctopusURL/api/channels/all" -Headers $header -SkipCertificateCheck
# Get project
$projects = Invoke-RestMethod -Method Get -Uri "$OctopusURL/api/$($space.Id)/projects/all" -Headers $header -SkipCertificateCheck
foreach ($project in $projects) {
$chs = $channels | Where-Object { $_.ProjectId -eq $project.Id }
#$project = $projects | Where-Object {$_.Name -eq $projectName}
foreach ($ch in $chs) {
Write-Host "Project [$($project.Name)] Channel [$($ch.slug)] - Getting releases"
# Get releases for project
#$releases = Invoke-RestMethod -Method Get -Uri "$OctopusURL/api/$($space.Id)/projects/$($project.Id)/releases?take=1000" -Headers $header -SkipCertificateCheck
$releases = Invoke-RestMethod -Method Get -Uri "$OctopusURL/api/channels/$($ch.Id)/releases?take=1000" -Headers $header -SkipCertificateCheck
# Loop through list
if ($releases -and $releases.Items) {
foreach ($release in $releases.Items)
{
$keepDate = $keepDates[$ch.Slug]
if ($release -and $release.Assembled -lt $keepDate) {
Write-Host "Project [$($project.Name)] Channel [$($ch.slug)] - Deleting Release [$($release.Version)]"
# Delete release
Invoke-RestMethod -Method Delete -Uri "$OctopusURL/api/$($space.Id)/releases/$($release.Id)" -Headers $header -SkipCertificateCheck
}
}
}
}
}