From a3634ea907c5b259c0659c939522b123408022ef Mon Sep 17 00:00:00 2001 From: Matt Thalman Date: Thu, 2 May 2024 18:52:39 -0500 Subject: [PATCH] Include client payload data --- action.yml | 14 +++++++++++--- container/Dockerfile | 1 + container/check-image.ps1 | 33 ++++++++++++++++++++++++++++----- container/entrypoint.ps1 | 2 +- 4 files changed, 41 insertions(+), 9 deletions(-) diff --git a/action.yml b/action.yml index e197118..adfc438 100644 --- a/action.yml +++ b/action.yml @@ -46,7 +46,7 @@ runs: throw "'dockerfile' input not provided. This is required when 'base-image-name' is not provided." } - $dockerBumpCheckerVersion = "0.2.0" + $dockerBumpCheckerVersion = "dev" $containerName = "docker-bump-checker" $containerSrcPath = "/src" @@ -79,8 +79,15 @@ runs: if ($LASTEXITCODE -ne 0) { throw "command failed" } - - echo "SEND_DISPATCH=$result" >> "$env:GITHUB_ENV" + + echo "Result: $result" + + $result = $result | ConvertFrom-Json + + echo "Result: $result" + + echo "SEND_DISPATCH=$($result.sendDispatch))" >> "$env:GITHUB_ENV" + echo "UPDATE_RESULTS=$($result.updates))" >> "$env:GITHUB_ENV" - name: Repository Dispatch if: env.SEND_DISPATCH == 'true' uses: peter-evans/repository-dispatch@v3 @@ -88,6 +95,7 @@ runs: token: ${{ inputs.token }} repository: ${{ inputs.repository }} event-type: ${{ inputs.event-type }} + client-payload: ${{ env.UPDATE_RESULTS }} - name: Report Status id: report-status shell: pwsh diff --git a/container/Dockerfile b/container/Dockerfile index 063b318..dd94bad 100644 --- a/container/Dockerfile +++ b/container/Dockerfile @@ -15,6 +15,7 @@ COPY --from=installer /usr/share/powershell /usr/share/powershell COPY --from=installer /root/.dotnet/tools /home/app/.dotnet/tools COPY --from=installer ["/symlinks", "/usr/bin"] COPY *.ps1 /scripts/ +COPY *.psm1 /scripts/ # Returns 'true' in the output if the image is out-of-date in relation to its base image; otherwise, 'false'. ENTRYPOINT ["pwsh", "-c", "/scripts/entrypoint.ps1"] diff --git a/container/check-image.ps1 b/container/check-image.ps1 index ed35fea..c1fdbf2 100644 --- a/container/check-image.ps1 +++ b/container/check-image.ps1 @@ -7,23 +7,46 @@ param( [string]$BaseImage, [Parameter(Mandatory = $True)] - [string]$Architecture + [string]$Architecture, + + [string]$DockerfilePath ) $ErrorActionPreference = 'Stop' $ProgressPreference = 'SilentlyContinue' Set-StrictMode -Version 2.0 -Import-Module $PSScriptRoot/common.psm1 +function GetDigest($imageName) { + $digestCmd = "dredge image digest $imageName --os linux --arch $Architecture" + $digest = $(InvokeTool $digestCmd "dredge image digest failed") + return $digest +} -$cmd = "dredge image compare layers --output json $BaseImage $TargetImage --os linux --arch $Architecture" -$layerComparisonStr = $(InvokeTool $cmd "dredge image compare failed") +Import-Module $PSScriptRoot/common.psm1 +$compareCmd = "dredge image compare layers --output json $BaseImage $TargetImage --os linux --arch $Architecture" +$layerComparisonStr = $(InvokeTool $compareCmd "dredge image compare failed") $layerComparison = $layerComparisonStr | ConvertFrom-Json $imageUpToDate = [bool]$($layerComparison.summary.targetIncludesAllBaseLayers) $sendDispatch = ([string](-not $imageUpToDate)).ToLower() +$targetDigest = $(GetDigest $TargetImage) +$baseDigest = $(GetDigest $BaseImage) + LogMessage "Send dispatch: $sendDispatch" -return $sendDispatch +$result = @{ + sendDispatch = $sendDispatch + updates = @( + @{ + targetImageName = $TargetImage + targetImageDigest = $targetDigest + dockerfile = $DockerfilePath + baseImageName = $BaseImage + baseImageDigest = $baseDigest + } + ) +} | ConvertTo-Json + +return $result diff --git a/container/entrypoint.ps1 b/container/entrypoint.ps1 index 258b482..cd3668e 100644 --- a/container/entrypoint.ps1 +++ b/container/entrypoint.ps1 @@ -21,6 +21,6 @@ if (-not $BaseImage) { $BaseImage = $(& $PSScriptRoot/get-base-image.ps1 -DockerfilePath $DockerfilePath -BaseStageName $BaseStageName) } -$result = $(& $PSScriptRoot/check-image.ps1 -TargetImage $targetImage -BaseImage $BaseImage -Architecture $Architecture) +$result = $(& $PSScriptRoot/check-image.ps1 -TargetImage $targetImage -BaseImage $BaseImage -Architecture $Architecture -DockerfilePath $DockerfilePath) return $result