Skip to content

Commit bd24d1a

Browse files
[release/9.0.1xx] Allow users to set a specific ContainerImageFormat to force OCI support (#46138)
Co-authored-by: Chet Husk <[email protected]> Co-authored-by: Chet Husk <[email protected]>
1 parent 14158f8 commit bd24d1a

File tree

3 files changed

+19
-2
lines changed

3 files changed

+19
-2
lines changed

src/Containers/Microsoft.NET.Build.Containers/Resources/Strings.Designer.cs

Lines changed: 0 additions & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/Containers/Microsoft.NET.Build.Containers/Tasks/CreateNewImage.cs

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -143,6 +143,24 @@ internal async Task<bool> ExecuteAsync(CancellationToken cancellationToken)
143143
}
144144
}
145145

146+
// forcibly change the media type if required
147+
if (ImageFormat is not null)
148+
{
149+
if (Enum.TryParse<KnownImageFormats>(ImageFormat, out var imageFormat))
150+
{
151+
imageBuilder.ManifestMediaType = imageFormat switch
152+
{
153+
KnownImageFormats.Docker => SchemaTypes.DockerManifestV2,
154+
KnownImageFormats.OCI => SchemaTypes.OciManifestV1,
155+
_ => imageBuilder.ManifestMediaType // should be impossible unless we add to the enum
156+
};
157+
}
158+
else
159+
{
160+
Log.LogErrorWithCodeFromResources(nameof(Strings.InvalidContainerImageFormat), ImageFormat, string.Join(",", Enum.GetValues<KnownImageFormats>()));
161+
}
162+
}
163+
146164
Layer newLayer = Layer.FromDirectory(PublishDirectory, WorkingDirectory, imageBuilder.IsWindows, imageBuilder.ManifestMediaType);
147165
imageBuilder.AddLayer(newLayer);
148166
imageBuilder.SetWorkingDirectory(WorkingDirectory);

src/Containers/packaging/build/Microsoft.NET.Build.Containers.targets

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -255,8 +255,8 @@
255255
BaseRegistry="$(ContainerBaseRegistry)"
256256
BaseImageName="$(ContainerBaseName)"
257257
BaseImageTag="$(ContainerBaseTag)"
258-
ImageFormat="$(ContainerImageFormat)"
259258
BaseImageDigest="$(ContainerBaseDigest)"
259+
ImageFormat="$(ContainerImageFormat)"
260260
LocalRegistry="$(LocalRegistry)"
261261
OutputRegistry="$(ContainerRegistry)"
262262
ArchiveOutputPath="$(ContainerArchiveOutputPath)"

0 commit comments

Comments
 (0)