Last active
May 23, 2025 21:53
-
-
Save macphil/f860a59287d404ac404364d90265b2ca to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| [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