From d02ca64d3dbbd92923037c8005577aaf2ee8075b Mon Sep 17 00:00:00 2001 From: Artur Stolear Date: Mon, 20 Jan 2025 20:05:53 +0100 Subject: [PATCH] extract GetDockerTags as extension --- build/build/Tasks/DockerBuildBase.cs | 7 ++--- build/build/Tasks/DockerBuildDeps.cs | 14 ---------- build/build/Tasks/DockerBuildImages.cs | 23 ---------------- build/build/Utils/DockerImageExtensions.cs | 31 ++++++++++++++++++++++ 4 files changed, 33 insertions(+), 42 deletions(-) create mode 100644 build/build/Utils/DockerImageExtensions.cs diff --git a/build/build/Tasks/DockerBuildBase.cs b/build/build/Tasks/DockerBuildBase.cs index c9fe3b7..8cddbf6 100644 --- a/build/build/Tasks/DockerBuildBase.cs +++ b/build/build/Tasks/DockerBuildBase.cs @@ -34,7 +34,7 @@ protected virtual void DockerImage(BuildContext context, DockerDepsImage dockerI protected void DockerManifest(BuildContext context, DockerDepsImage dockerImage) { - var manifestTags = GetDockerTags(dockerImage, context.DockerRegistry); + var manifestTags = dockerImage.GetDockerTags(context.DockerRegistry); foreach (var tag in manifestTags) { var amd64Tag = $"{tag}-{Architecture.Amd64.ToSuffix()}"; @@ -62,7 +62,7 @@ protected virtual DockerBuildXBuildSettings GetBuildSettings(DockerDepsImage doc { var arch = dockerImage.Architecture; var suffix = arch.ToSuffix(); - var dockerTags = GetDockerTags(dockerImage, registry, arch).ToArray(); + var dockerTags = dockerImage.GetDockerTags(registry, arch).ToArray(); var buildSettings = new DockerBuildXBuildSettings { Rm = true, @@ -82,7 +82,4 @@ protected virtual DockerBuildXBuildSettings GetBuildSettings(DockerDepsImage doc } protected abstract DirectoryPath GetWorkingDir(DockerDepsImage dockerImage); - - protected abstract IEnumerable GetDockerTags(DockerDepsImage dockerImage, string dockerRegistry, - Architecture? arch = null); } diff --git a/build/build/Tasks/DockerBuildDeps.cs b/build/build/Tasks/DockerBuildDeps.cs index 0824123..8c0b86f 100644 --- a/build/build/Tasks/DockerBuildDeps.cs +++ b/build/build/Tasks/DockerBuildDeps.cs @@ -60,18 +60,4 @@ protected override DockerBuildXImageToolsCreateSettings GetManifestSettings(Dock ]; return settings; } - - protected override IEnumerable GetDockerTags(DockerDepsImage dockerImage, string dockerRegistry, - Architecture? arch = null) - { - var tags = new[] - { - $"{dockerRegistry}/{Constants.DockerImageDeps}:{dockerImage.Distro}" - }; - - if (!arch.HasValue) return tags; - - var suffix = arch.Value.ToSuffix(); - return tags.Select(x => $"{x}-{suffix}"); - } } diff --git a/build/build/Tasks/DockerBuildImages.cs b/build/build/Tasks/DockerBuildImages.cs index 8b35cc9..1dcc7af 100644 --- a/build/build/Tasks/DockerBuildImages.cs +++ b/build/build/Tasks/DockerBuildImages.cs @@ -73,29 +73,6 @@ protected override DockerBuildXImageToolsCreateSettings GetManifestSettings(Dock return settings; } - protected override IEnumerable GetDockerTags(DockerDepsImage dockerImage, string dockerRegistry, - Architecture? arch = null) - { - var (distro, version, variant, _) = (dockerImage as DockerImage)!; - - var tags = new List - { - $"{dockerRegistry}/{Constants.DockerImageName}:{distro}-{variant}-{version}" - }; - - if (version == Constants.DockerDistroLatest) - { - tags.AddRange( - [ - $"{dockerRegistry}/{Constants.DockerImageName}:{distro}-{variant}-latest" - ]); - } - - if (!arch.HasValue) return tags; - - var suffix = arch.Value.ToSuffix(); - return tags.Select(x => $"{x}-{suffix}"); - } private static void GenerateDockerfile(ICakeContext context, DirectoryPath? workDir, DockerDepsImage dockerImage) { diff --git a/build/build/Utils/DockerImageExtensions.cs b/build/build/Utils/DockerImageExtensions.cs new file mode 100644 index 0000000..b1cb373 --- /dev/null +++ b/build/build/Utils/DockerImageExtensions.cs @@ -0,0 +1,31 @@ +namespace Build; + +public static class DockerImageExtensions +{ + public static IEnumerable GetDockerTags(this DockerDepsImage dockerImage, string dockerRegistry, + Architecture? arch = null) + { + var tags = new List(); + + if (dockerImage is DockerImage image) + { + var (distro, version, variant, _) = image; + + tags.Add($"{dockerRegistry}/{Constants.DockerImageName}:{distro}-{variant}-{version}"); + + if (version == Constants.DockerDistroLatest) + { + tags.Add($"{dockerRegistry}/{Constants.DockerImageName}:{distro}-{variant}-latest"); + } + } + else + { + tags.Add($"{dockerRegistry}/{Constants.DockerImageDeps}:{dockerImage.Distro}"); + } + + if (!arch.HasValue) return tags; + + var suffix = arch.Value.ToSuffix(); + return tags.Select(x => $"{x}-{suffix}"); + } +}