Open mthalman opened 7 hours ago
I couldn't figure out the best area label to add to this issue. If you have write-permissions please help me learn by adding exactly one area label.
I couldn't figure out the best area label to add to this issue. If you have write-permissions please help me learn by adding exactly one area label.
The
publishManifest
command is processing shared tags that don't necessarily need to be updated.For example, the build (internal link) that ran for https://github.com/dotnet/dotnet-docker/pull/6086 had no path filter set. The PR only updated 9.0 Dockerfiles. So all the .NET versions were cached, resulting in unchanged images for those versions. That was correctly indicated, via the
isUnchanged
field, in the image info file that was produced. But whenpublishManifest
ran, it ignored that data and processed all shared tags, such as6.0
. This was unnecessary processing since the6.0
manifest list remained identical to the current version. It also was problematic because it relied on those associated images existing within the ACR in order to produce the manifest list. In this scenario, those images didn't actually exist anymore because they were EOL and had been removed from the ACR but the Dockerfiles hadn't yet been removed. So that actually broke the build because of this behavior, which was worked around.The solution to this is for
publishManifest
to look at theisUnchanged
field of the images associated with the shared tag. If all those images haveisUnchanged
set totrue
, then the shared tag should be skipped.