Public/Get-DockerImageBuildHistory.ps1

<#
.Synopsis
    Get Docker image build history
 
.Description
    Get Docker image build history
    Build history is available only for some automated builds.
 
.Parameter Name
    Docker repository (image) name
 
.Parameter MaxResults
    Maximum number of results to return. Default is 100.
 
.Example
    Get-DockerImageBuildHistory -Name 'jwilder/nginx-proxy'
 
    Get build history for 'jwilder/nginx-proxy' image
#>

function Get-DockerImageBuildHistory
{
    [CmdletBinding()]
    Param
    (
        [Parameter(Mandatory = $true, ValueFromPipeline = $true, ValueFromPipelineByPropertyName = $true)]
        [ValidateNotNullOrEmpty()]
        [string[]]$Name,

        [int]$MaxResults = 100
    )

    Begin
    {
        $RequestTpl = 'repositories/{0}/buildhistory/'

        # https://github.com/badges/shields/issues/241
        $StatusMap = @{
            0 = 'Queued'
            -1 = 'Error'
            3 = 'Building'
            10 = 'Success'
        }
    }

    Process
    {
        $Request = $Name | ForEach-Object {
            $RequestTpl -f ($_ | Resolve-DockerHubRepoName)
        }

        Invoke-DockerHubWebRequest -Request $Request -Paginated -UsePageSize -MaxResults $MaxResults |
            Select-Object -Property (
                @{n = 'Tag' ; e = {$_.dockertag_name}},
                @{n = 'Status' ; e = {$StatusMap.($_.status)}},
                @{n = 'Id' ; e = {$_.id}},
                @{n = 'BuildCode' ; e = {$_.build_code}},
                @{n = 'Cause' ; e = {$_.cause}},
                @{n = 'Created' ; e = {[Nullable[DateTime]]$_.created_date}},
                @{n = 'Updated' ; e = {[Nullable[DateTime]]$_.last_updated}}
            ) | Add-TypeName -TypeName $PSCmdlet.MyInvocation.MyCommand.Name
    }
}