Skip to content

Instantly share code, notes, and snippets.

@macphil
Last active May 23, 2025 21:53
Show Gist options
  • Select an option

  • Save macphil/f860a59287d404ac404364d90265b2ca to your computer and use it in GitHub Desktop.

Select an option

Save macphil/f860a59287d404ac404364d90265b2ca to your computer and use it in GitHub Desktop.
[CmdletBinding()]
param(
[Parameter(Mandatory)]
[string]$ImageName = 'atlassian/bamboo-agent-base',
[string]$TagLike = '10.*-ubi9-jdk21',
[switch]$ShowAllTags = $false
)
begin {
$ErrorActionPreference = 'Stop'
$imagesToSync = @(
@{ImageName = 'atlassian/bamboo-agent-base'; TagLike = '10.*-ubi9-jdk21' },
@{ImageName = 'atlassian/bamboo-agent-base'; TagLike = '9.6*-ubi9-jdk17' },
@{ImageName = 'atlassian/bamboo-agent-base'; TagLike = '11*jdk21' }
)
function Get-ImageTags {
[CmdletBinding()]
param(
[Parameter(Mandatory)]
[string]$ImageName
)
$maxCount = 100
$uri = "https://registry.hub.docker.com/v2/repositories/$ImageName/tags?page_size=100"
$tags = @()
while ($uri) {
try {
Write-Progress -Activity "Retrieving tags for $ImageName" -Status 'Fetching tags...' -CurrentOperation $uri -PercentComplete (($tags.Count / $maxCount) * 100)
$response = Invoke-RestMethod -Uri $uri -Method Get
$tags += $response.results.name
$maxCount = $response.count
$uri = $response.next
} catch {
Write-Error "Error retrieving tags for $ImageName $_"
break
}
}
$tags | Sort-Object
}
function Get-MockedImageTags {
$tags = @(
'10', '10-jdk17', '10-jdk21', '10-ubuntu', '10.0', '10.0-jdk17', '10.0-ubuntu', '10.0.0', '10.0.0-jdk17', '10.0.0-rc3', '10.0.0-rc3-jdk17', '10.0.0-rc3-ubi9', '10.0.0-rc3-ubi9-jdk17', '10.0.0-rc3-ubuntu', '10.0.0-rc5', '10.0.0-rc5-jdk17', '10.0.0-rc5-ubi9', '10.0.0-rc5-ubi9-jdk17', '10.0.0-rc5-ubuntu', '10.0.0-ubi9', '10.0.0-ubi9-jdk17', '10.0.0-ubuntu', '10.0.1', '10.0.1-jdk17', '10.0.1-ubi9', '10.0.1-ubi9-jdk17', '10.0.1-ubuntu', '10.0.2', '10.0.2-jdk17', '10.0.2-ubi9', '10.0.2-ubi9-jdk17', '10.0.2-ubuntu', '10.0.3', '10.0.3-jdk17', '10.0.3-ubi9', '10.0.3-ubi9-jdk17', '10.0.3-ubuntu', '10.1', '10.1-jdk17', '10.1-jdk21', '10.1-ubuntu', '10.1.0', '10.1.0-jdk17', '10.1.0-jdk21', '10.1.0-ubi9', '10.1.0-ubi9-jdk17', '10.1.0-ubi9-jdk21', '10.1.0-ubuntu', '10.1.1', '10.1.1-jdk17', '10.1.1-jdk21', '10.1.1-ubi9', '10.1.1-ubi9-jdk17', '10.1.1-ubi9-jdk21', '10.1.1-ubuntu', '10.2', '10.2-jdk17', '10.2-jdk21', '10.2-ubuntu', '10.2.0', '10.2.0-jdk17', '10.2.0-jdk21', '10.2.0-ubi9', '10.2.0-ubi9-jdk17', '10.2.0-ubi9-jdk21', '10.2.0-ubuntu', '10.2.1', '10.2.1-jdk17', '10.2.1-jdk21', '10.2.1-ubi9', '10.2.1-ubi9-jdk17', '10.2.1-ubi9-jdk21', '10.2.1-ubuntu', '10.2.2', '10.2.2-jdk17', '10.2.2-jdk21', '10.2.2-ubi9', '10.2.2-ubi9-jdk17', '10.2.2-ubi9-jdk21', '10.2.2-ubuntu', '10.2.3', '10.2.3-jdk17', '10.2.3-jdk21', '10.2.3-ubi9', '10.2.3-ubi9-jdk17', '10.2.3-ubi9-jdk21', '10.2.3-ubuntu', '10.2.4', '10.2.4-jdk17', '10.2.4-jdk21', '10.2.4-ubi9', '10.2.4-ubi9-jdk17', '10.2.4-ubi9-jdk21', '10.2.4-ubuntu', '11', '11-jdk17', '11-jdk21', '11-ubuntu', '11.0', '11.0-jdk17', '11.0-jdk21', '11.0-ubuntu', '11.0.0', '11.0.0-jdk17', '11.0.0-jdk21', '11.0.0-rc4', '11.0.0-rc4-jdk17', '11.0.0-rc4-jdk21', '11.0.0-rc4-ubi9', '11.0.0-rc4-ubi9-jdk17', '11.0.0-rc4-ubi9-jdk21', '11.0.0-rc4-ubuntu', '11.0.0-ubi9', '11.0.0-ubi9-jdk17', '11.0.0-ubi9-jdk21', '11.0.0-ubuntu', '11.0.1', '11.0.1-jdk17', '11.0.1-jdk21', '11.0.1-ubi9', '11.0.1-ubi9-jdk17', '11.0.1-ubi9-jdk21', '11.0.1-ubuntu', '6.10', '6.10.2', '6.10.3', '6.10.4', '6.10.5', '6.10.6', '6.6', '6.6.1', '6.6.2', '6.6.3', '6.7', '6.7.0', '6.7.0-rc1', '6.7.0-rc2', '6.7.0-rc3', '6.7.1', '6.7.2', '6.7.3', '6.8', '6.8.0', '6.8.1', '6.8.2', '6.8.3', '6.9', '6.9.0', '6.9.1', '6.9.2', '7', '7-jdk8', '7-ubuntu', '7.0', '7.0.0-rc1', '7.0.0-rc2', '7.0.1', '7.0.2', '7.0.3', '7.0.4', '7.0.6', '7.1', '7.1-jdk8', '7.1-ubuntu', '7.1.0-rc1', '7.1.1', '7.1.1-jdk8', '7.1.1-ubuntu', '7.1.2', '7.1.2-jdk8', '7.1.2-ubuntu', '7.1.3', '7.1.3-jdk8', '7.1.3-ubuntu', '7.1.4', '7.1.4-jdk8', '7.1.4-ubuntu', '7.2', '7.2-jdk8', '7.2-ubuntu', '7.2.0', '7.2.0-jdk8', '7.2.0-ubuntu', '7.2.1', '7.2.1-jdk8', '7.2.1-ubuntu', '7.2.10', '7.2.10-jdk8', '7.2.10-ubuntu', '7.2.2', '7.2.2-jdk8', '7.2.2-ubuntu', '7.2.3', '7.2.3-jdk8', '7.2.3-ubuntu', '7.2.4', '7.2.4-jdk8', '7.2.4-ubuntu', '7.2.5', '7.2.5-jdk8', '7.2.5-ubuntu', '7.2.6', '7.2.6-jdk8', '7.2.6-ubuntu', '7.2.7', '7.2.7-jdk8', '7.2.7-ubuntu', '7.2.9', '7.2.9-jdk8', '7.2.9-ubuntu', '8', '8-jdk11', '8-ubuntu', '8.0', '8.0-jdk11', '8.0-ubuntu', '8.0.0', '8.0.0-jdk11', '8.0.0-rc1', '8.0.0-rc4', '8.0.0-ubuntu', '8.0.1', '8.0.1-jdk11', '8.0.1-ubuntu', '8.0.10', '8.0.10-jdk11', '8.0.10-ubuntu', '8.0.11', '8.0.11-jdk11', '8.0.11-ubuntu', '8.0.12', '8.0.12-jdk11', '8.0.12-ubuntu', '8.0.13', '8.0.13-jdk11', '8.0.13-ubuntu', '8.0.2', '8.0.2-jdk11', '8.0.2-ubuntu', '8.0.3', '8.0.3-jdk11', '8.0.3-ubuntu', '8.0.4', '8.0.4-jdk11', '8.0.4-ubuntu', '8.0.5', '8.0.5-jdk11', '8.0.5-ubuntu', '8.0.6', '8.0.6-jdk11', '8.0.6-ubuntu', '8.0.7', '8.0.7-jdk11', '8.0.7-ubuntu', '8.0.8', '8.0.8-jdk11', '8.0.8-ubuntu', '8.0.9', '8.0.9-jdk11', '8.0.9-ubuntu', '8.1', '8.1-jdk11', '8.1-ubuntu', '8.1.1', '8.1.1-jdk11', '8.1.1-ubuntu', '8.1.10', '8.1.10-jdk11', '8.1.10-ubuntu', '8.1.11', '8.1.11-jdk11', '8.1.11-ubuntu', '8.1.12', '8.1.12-jdk11', '8.1.12-ubuntu', '8.1.2', '8.1.2-jdk11', '8.1.2-ubuntu', '8.1.3', '8.1.3-jdk11', '8.1.3-ubuntu', '8.1.4', '8.1.4-jdk11', '8.1.4-ubuntu', '8.1.5', '8.1.5-jdk11', '8.1.5-ubuntu', '8.1.6', '8.1.6-jdk11', '8.1.6-ubuntu', '8.1.7', '8.1.7-jdk11', '8.1.7-ubuntu', '8.1.8', '8.1.8-jdk11', '8.1.8-ubuntu', '8.1.9', '8.1.9-jdk11', '8.1.9-ubuntu', '8.2', '8.2-jdk11', '8.2-ubuntu', '8.2.0', '8.2.0-jdk11', '8.2.0-ubuntu', '8.2.1', '8.2.1-jdk11', '8.2.1-ubuntu', '8.2.2', '8.2.2-jdk11', '8.2.2-ubuntu', '8.2.3', '8.2.3-jdk11', '8.2.3-ubuntu', '8.2.4', '8.2.4-jdk11', '8.2.4-ubuntu', '8.2.5', '8.2.5-jdk11', '8.2.5-ubuntu', '8.2.6', '8.2.6-jdk11', '8.2.6-ubuntu', '8.2.7', '8.2.7-jdk11', '8.2.7-ubuntu', '8.2.8', '8.2.8-jdk11', '8.2.8-ubuntu', '8.2.9', '8.2.9-jdk11', '8.2.9-ubuntu', '9', '9-jdk11', '9-jdk17', '9-jdk17-jammy', '9-ubuntu', '9.0', '9.0-jdk11', '9.0-jdk11-jammy', '9.0-ubuntu', '9.0.0', '9.0.0-jdk11', '9.0.0-jdk11-jammy', '9.0.0-rc1', '9.0.0-rc1-jdk11', '9.0.0-rc1-jdk8', '9.0.0-rc1-ubuntu', '9.0.0-ubuntu', '9.0.1', '9.0.1-jdk11', '9.0.1-jdk11-jammy', '9.0.1-ubuntu', '9.0.2', '9.0.2-jdk11', '9.0.2-jdk11-jammy', '9.0.2-ubuntu', '9.0.3', '9.0.3-jdk11', '9.0.3-jdk11-jammy', '9.0.3-ubuntu', '9.0.4', '9.0.4-jdk11', '9.0.4-jdk11-jammy', '9.0.4-ubuntu', '9.1', '9.1-jdk11', '9.1-jdk11-jammy', '9.1-ubuntu', '9.1.0', '9.1.0-jdk11', '9.1.0-jdk11-jammy', '9.1.0-ubuntu', '9.1.1', '9.1.1-jdk11', '9.1.1-jdk11-jammy', '9.1.1-ubuntu', '9.1.2', '9.1.2-jdk11', '9.1.2-jdk11-jammy', '9.1.2-ubuntu', '9.1.3', '9.1.3-jdk11', '9.1.3-jdk11-jammy', '9.1.3-ubuntu', '9.2', '9.2-jdk11', '9.2-jdk11-jammy', '9.2-ubuntu', '9.2.1', '9.2.1-jdk11', '9.2.1-jdk11-jammy', '9.2.1-ubuntu', '9.2.10', '9.2.10-jdk11', '9.2.10-jdk11-jammy', '9.2.10-ubuntu', '9.2.11', '9.2.11-jdk11', '9.2.11-jdk11-jammy', '9.2.11-ubuntu', '9.2.12', '9.2.12-jdk11', '9.2.12-jdk11-jammy', '9.2.12-ubuntu', '9.2.13', '9.2.13-jdk11', '9.2.13-jdk11-jammy', '9.2.13-ubuntu', '9.2.14', '9.2.14-jdk11', '9.2.14-jdk11-jammy', '9.2.14-ubuntu', '9.2.15', '9.2.15-jdk11', '9.2.15-jdk11-jammy', '9.2.15-ubuntu', '9.2.16', '9.2.16-jdk11', '9.2.16-jdk11-jammy', '9.2.16-ubuntu', '9.2.17', '9.2.17-jdk11', '9.2.17-ubuntu', '9.2.18', '9.2.18-jdk11', '9.2.18-ubuntu', '9.2.19', '9.2.19-jdk11', '9.2.19-ubuntu', '9.2.20', '9.2.20-jdk11', '9.2.20-ubuntu', '9.2.21', '9.2.21-jdk11', '9.2.21-ubuntu', '9.2.22', '9.2.22-jdk11', '9.2.22-ubuntu', '9.2.24-jdk11', '9.2.24-ubuntu', '9.2.3', '9.2.3-jdk11', '9.2.3-jdk11-jammy', '9.2.3-ubuntu', '9.2.4', '9.2.4-jdk11', '9.2.4-jdk11-jammy', '9.2.4-ubuntu', '9.2.5', '9.2.5-jdk11', '9.2.5-jdk11-jammy', '9.2.5-ubuntu', '9.2.6', '9.2.6-jdk11', '9.2.6-jdk11-jammy', '9.2.6-ubuntu', '9.2.7', '9.2.7-jdk11', '9.2.7-jdk11-jammy', '9.2.7-ubuntu', '9.2.8', '9.2.8-jdk11', '9.2.8-jdk11-jammy', '9.2.8-ubuntu', '9.2.9', '9.2.9-jdk11', '9.2.9-jdk11-jammy', '9.2.9-ubuntu', '9.3', '9.3-jdk11', '9.3-jdk11-jammy', '9.3-ubuntu', '9.3.0', '9.3.0-jdk11', '9.3.0-jdk11-jammy', '9.3.0-ubuntu', '9.3.1', '9.3.1-jdk11', '9.3.1-jdk11-jammy', '9.3.1-ubuntu', '9.3.2', '9.3.2-jdk11', '9.3.2-jdk11-jammy', '9.3.2-ubuntu', '9.3.3', '9.3.3-jdk11', '9.3.3-jdk11-jammy', '9.3.3-ubuntu', '9.3.4', '9.3.4-jdk11', '9.3.4-jdk11-jammy', '9.3.4-ubuntu', '9.3.5', '9.3.5-jdk11', '9.3.5-jdk11-jammy', '9.3.5-ubuntu', '9.3.6', '9.3.6-jdk11', '9.3.6-jdk11-jammy', '9.3.6-ubuntu', '9.4', '9.4-jdk11', '9.4-jdk17', '9.4-jdk17-jammy', '9.4-ubuntu', '9.4.0', '9.4.0-jdk11', '9.4.0-jdk17', '9.4.0-jdk17-jammy', '9.4.0-ubi9', '9.4.0-ubi9-jdk17', '9.4.0-ubuntu', '9.4.1', '9.4.1-jdk11', '9.4.1-jdk17', '9.4.1-jdk17-jammy', '9.4.1-ubi9', '9.4.1-ubi9-jdk17', '9.4.1-ubuntu', '9.4.2', '9.4.2-jdk11', '9.4.2-jdk17', '9.4.2-jdk17-jammy', '9.4.2-ubi9', '9.4.2-ubi9-jdk17', '9.4.2-ubuntu', '9.4.3', '9.4.3-jdk11', '9.4.3-jdk17', '9.4.3-jdk17-jammy', '9.4.3-ubi9', '9.4.3-ubi9-jdk17', '9.4.3-ubuntu', '9.4.4', '9.4.4-jdk11', '9.4.4-jdk17', '9.4.4-jdk17-jammy', '9.4.4-ubi9', '9.4.4-ubi9-jdk17', '9.4.4-ubuntu', '9.5', '9.5-jdk11', '9.5-jdk17', '9.5-jdk17-jammy', '9.5-ubuntu', '9.5.0', '9.5.0-jdk11', '9.5.0-jdk17', '9.5.0-jdk17-jammy', '9.5.0-ubi9', '9.5.0-ubi9-jdk17', '9.5.0-ubuntu', '9.5.1', '9.5.1-jdk11', '9.5.1-jdk17', '9.5.1-jdk17-jammy', '9.5.1-ubi9', '9.5.1-ubi9-jdk17', '9.5.1-ubuntu', '9.5.2', '9.5.2-jdk11', '9.5.2-jdk17', '9.5.2-jdk17-jammy', '9.5.2-ubi9', '9.5.2-ubi9-jdk17', '9.5.2-ubuntu', '9.5.3', '9.5.3-jdk11', '9.5.3-jdk17', '9.5.3-jdk17-jammy', '9.5.3-ubi9', '9.5.3-ubi9-jdk17', '9.5.3-ubuntu', '9.5.4', '9.5.4-jdk11', '9.5.4-jdk17', '9.5.4-jdk17-jammy', '9.5.4-ubi9', '9.5.4-ubi9-jdk17', '9.5.4-ubuntu', '9.6', '9.6-jdk11', '9.6-jdk17', '9.6-jdk17-jammy', '9.6-ubuntu', '9.6.0', '9.6.0-jdk11', '9.6.0-jdk17', '9.6.0-jdk17-jammy', '9.6.0-ubi9', '9.6.0-ubi9-jdk17', '9.6.0-ubuntu', '9.6.1', '9.6.1-jdk11', '9.6.1-jdk17', '9.6.1-jdk17-jammy', '9.6.1-ubi9', '9.6.1-ubi9-jdk17', '9.6.1-ubuntu', '9.6.10', '9.6.10-jdk11', '9.6.10-jdk17', '9.6.10-ubi9', '9.6.10-ubi9-jdk17', '9.6.10-ubuntu', '9.6.11', '9.6.11-jdk11', '9.6.11-jdk17', '9.6.11-ubi9', '9.6.11-ubi9-jdk17', '9.6.11-ubuntu', '9.6.12', '9.6.12-jdk11', '9.6.12-jdk17', '9.6.12-ubi9', '9.6.12-ubi9-jdk17', '9.6.12-ubuntu', '9.6.13', '9.6.13-jdk11', '9.6.13-jdk17', '9.6.13-ubi9', '9.6.13-ubi9-jdk17', '9.6.13-ubuntu', '9.6.2', '9.6.2-jdk11', '9.6.2-jdk17', '9.6.2-jdk17-jammy', '9.6.2-ubi9', '9.6.2-ubi9-jdk17', '9.6.2-ubuntu', '9.6.3', '9.6.3-jdk11', '9.6.3-jdk17', '9.6.3-jdk17-jammy', '9.6.3-ubi9', '9.6.3-ubi9-jdk17', '9.6.3-ubuntu', '9.6.4', '9.6.4-jdk11', '9.6.4-jdk17', '9.6.4-jdk17-jammy', '9.6.4-ubi9', '9.6.4-ubi9-jdk17', '9.6.4-ubuntu', '9.6.5', '9.6.5-jdk11', '9.6.5-jdk17', '9.6.5-ubi9', '9.6.5-ubi9-jdk17', '9.6.5-ubuntu', '9.6.6', '9.6.6-jdk11', '9.6.6-jdk17', '9.6.6-ubi9', '9.6.6-ubi9-jdk17', '9.6.6-ubuntu', '9.6.7', '9.6.7-jdk11', '9.6.7-jdk17', '9.6.7-ubi9', '9.6.7-ubi9-jdk17', '9.6.7-ubuntu', '9.6.8', '9.6.8-jdk11', '9.6.8-jdk17', '9.6.8-ubi9', '9.6.8-ubi9-jdk17', '9.6.8-ubuntu', '9.6.9', '9.6.9-jdk11', '9.6.9-jdk17', '9.6.9-ubi9', '9.6.9-ubi9-jdk17', '9.6.9-ubuntu', 'eap', 'eap-jdk11', 'eap-jdk8', 'eap-ubuntu', 'jdk11', 'jdk17', 'jdk17-jammy', 'jdk21', 'latest', 'ubi9', 'ubi9-jdk17', 'ubi9-jdk21', 'ubuntu'
)
return $tags
}
}
process {
foreach ($image in $imagesToSync) {
$ImageName = $image.ImageName.ToLowerInvariant()
$TagLike = $image.TagLike
Write-Host "Processing image: $ImageName with tag like: $TagLike" -ForegroundColor DarkGray
# $tags = Get-ImageTags -ImageName $ImageName
$tags = Get-MockedImageTags
if ($ShowAllTags) {
Write-Output "All tags for image '$ImageName':"
$tags | ForEach-Object { Write-Host $_ -ForegroundColor DarkGray }
Write-Host "Total tags: $($tags.Count)" -ForegroundColor DarkGray
}
$matchingTags = $tags | Where-Object { $_ -like $TagLike }
Write-Host "Matching tags for '$TagLike': $($matchingTags.Count)" -ForegroundColor Green
$matchingTags | ForEach-Object { Write-Output $_ }
}
}
end {
# Hier können Sie Aufräumarbeiten durchführen, wenn nötig.
}
# Beispielaufruf:
# Get-DockerHubImageTags -ImageName "library/nginx"
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment