From a02b7b2b72b5fe971cb523ba4d07cd124422f7bb Mon Sep 17 00:00:00 2001 From: Artur Stolear Date: Thu, 24 Jan 2019 10:42:34 +0200 Subject: [PATCH] GH-1572 - Docker naming scheme --- build.cake | 16 +++---- build/utils.cake | 46 +++++++++++++------ src/Docker/Readme.md | 14 +++--- .../{fullfx => debian/net472}/Dockerfile | 2 +- .../netcoreapp2.1}/Dockerfile | 0 .../netcoreapp2.1}/Dockerfile | 0 .../net472}/Dockerfile | 0 7 files changed, 48 insertions(+), 30 deletions(-) rename src/Docker/linux/{fullfx => debian/net472}/Dockerfile (95%) rename src/Docker/linux/{dotnetcore => debian/netcoreapp2.1}/Dockerfile (100%) rename src/Docker/windows/{dotnetcore => nano/netcoreapp2.1}/Dockerfile (100%) rename src/Docker/windows/{fullfx => windowsservercore/net472}/Dockerfile (100%) diff --git a/build.cake b/build.cake index 11a0e67171..29bb5ea533 100644 --- a/build.cake +++ b/build.cake @@ -403,13 +403,13 @@ Task("Docker-Build") { if (parameters.IsRunningOnWindows) { - DockerBuild("windows", "dotnetcore", parameters); - DockerBuild("windows", "fullfx", parameters); + DockerBuild("windows", "nano", "netcoreapp2.1", parameters); + DockerBuild("windows", "windowservercore", "net472", parameters); } else if (parameters.IsRunningOnLinux) { - DockerBuild("linux", "dotnetcore", parameters); - DockerBuild("linux", "fullfx", parameters); + DockerBuild("linux", "debian", "netcoreapp2.1", parameters); + DockerBuild("linux", "debian", "net472", parameters); } }); @@ -626,13 +626,13 @@ Task("Publish-DockerHub") if (parameters.IsRunningOnWindows) { - DockerPush("windows", "dotnetcore", parameters); - DockerPush("windows", "fullfx", parameters); + DockerPush("windows", "nano", "netcoreapp2.1", parameters); + DockerPush("windows", "windowservercore", "net472", parameters); } else if (parameters.IsRunningOnLinux) { - DockerPush("linux", "dotnetcore", parameters); - DockerPush("linux", "fullfx", parameters); + DockerPush("linux", "debian", "netcoreapp2.1", parameters); + DockerPush("linux", "debian", "net472", parameters); } DockerLogout(); diff --git a/build/utils.cake b/build/utils.cake index 80d74c4a7d..58ad0fc4b1 100644 --- a/build/utils.cake +++ b/build/utils.cake @@ -125,17 +125,17 @@ void PublishILRepackedGitVersionExe(bool includeLibGit2Sharp, DirectoryPath targ CopyFileToDirectory("./src/GitVersionExe/bin/" + configuration + "/" + dotnetVersion + "/GitVersion.xml", outputDir); } -void DockerBuild(string platform, string variant, BuildParameters parameters) +void DockerBuild(string os, string distro, string targetframework, BuildParameters parameters) { - var workDir = DirectoryPath.FromString($"./src/Docker/{platform}/{variant}"); + var workDir = DirectoryPath.FromString($"./src/Docker/{os}/{distro}/{targetframework}"); - var sourceDir = variant == "dotnetcore" + var sourceDir = targetframework.StartsWith("netcoreapp") ? parameters.Paths.Directories.ArtifactsBinNetCore.Combine("tools") : parameters.Paths.Directories.ArtifactsBinFullFxCmdline.Combine("tools"); CopyDirectory(sourceDir, workDir.Combine("content")); - var tags = GetDockerTags(platform, variant, parameters); + var tags = GetDockerTags(os, distro, targetframework, parameters); var buildSettings = new DockerImageBuildSettings { @@ -150,9 +150,9 @@ void DockerBuild(string platform, string variant, BuildParameters parameters) DockerBuild(buildSettings, workDir.ToString()); } -void DockerPush(string platform, string variant, BuildParameters parameters) +void DockerPush(string os, string distro, string targetframework, BuildParameters parameters) { - var tags = GetDockerTags(platform, variant, parameters); + var tags = GetDockerTags(os, distro, targetframework, parameters); foreach (var tag in tags) { @@ -160,18 +160,36 @@ void DockerPush(string platform, string variant, BuildParameters parameters) } } -string[] GetDockerTags(string platform, string variant, BuildParameters parameters) { - var name = $"gittools/gitversion-{variant}"; +string[] GetDockerTags(string os, string distro, string targetframework, BuildParameters parameters) { + var name = $"gittools/gitversion"; var tags = new List { - $"{name}:{platform}", - $"{name}:{platform}-{parameters.Version.Version}" + $"{name}:{parameters.Version.Version}-{os}-{distro}-{targetframework}", + $"{name}:{parameters.Version.SemVersion}-{os}-{distro}-{targetframework}", }; - tags.Add($"{name}:{platform}-{parameters.Version.SemVersion}"); - - if (variant == "dotnetcore" && parameters.IsStableRelease()) { - tags.Add($"{name}:latest"); + if (distro == "debian" && targetframework == "netcoreapp2.1" || distro == "nano") { + tags.AddRange(new[] { + $"{name}:{parameters.Version.Version}-{os}", + $"{name}:{parameters.Version.SemVersion}-{os}", + + $"{name}:{parameters.Version.Version}-{targetframework}", + $"{name}:{parameters.Version.SemVersion}-{targetframework}", + + $"{name}:{parameters.Version.Version}-{os}-{targetframework}", + $"{name}:{parameters.Version.SemVersion}-{os}-{targetframework}", + }); + + if (parameters.IsStableRelease()) + { + tags.AddRange(new[] { + $"{name}:latest", + $"{name}:latest-{os}", + $"{name}:latest-{targetframework}", + $"{name}:latest-{os}-{targetframework}", + $"{name}:latest-{os}-{distro}-{targetframework}", + }); + } } return tags.ToArray(); diff --git a/src/Docker/Readme.md b/src/Docker/Readme.md index 6aecca9f86..39bf28ea09 100644 --- a/src/Docker/Readme.md +++ b/src/Docker/Readme.md @@ -1,16 +1,16 @@ -# There are 4 variants of docker image : +# There are 4 variants of docker image - based on **microsoft/dotnet-framework:4.7.2-runtime** - Windows Full FX - based on **microsoft/dotnet:2.1-runtime** - Windows dotnet core -- based on **microsoft/dotnet-framework:4.7.2-runtime** - linux Full FX - on mono -- based on **microsoft/dotnet:2.1-runtime** - linux dotnet core +- based on **mono:5.18** - Linux Full FX - on mono +- based on **microsoft/dotnet:2.1-runtime** - Linux dotnet core To run on windows container run this -`docker run --rm -v "$(pwd):c:/repo" gittools/gitversion-fullfx:windows-4.0.0 c:/repo` +`docker run --rm -v "$(pwd):c:/repo" gittools/gitversion:latest-windows-net472 c:/repo` -`docker run --rm -v "$(pwd):c:/repo" gittools/gitversion-dotnetcore:windows-4.0.0 c:/repo` +`docker run --rm -v "$(pwd):c:/repo" gittools/gitversion:latest-windows-netcoreapp2.1 c:/repo` To run on linux container run this -`docker run --rm -v "$(pwd):/repo" gittools/gitversion-fullfx:linux-4.0.0 /repo` +`docker run --rm -v "$(pwd):/repo" gittools/gitversion:latest-linux-net472 /repo` -`docker run --rm -v "$(pwd):/repo" gittools/gitversion-dotnetcore:linux-4.0.0 /repo` +`docker run --rm -v "$(pwd):/repo" gittools/gitversion:latest-linux-netcoreapp2.1 /repo` diff --git a/src/Docker/linux/fullfx/Dockerfile b/src/Docker/linux/debian/net472/Dockerfile similarity index 95% rename from src/Docker/linux/fullfx/Dockerfile rename to src/Docker/linux/debian/net472/Dockerfile index 441c78954c..5bacefc9d5 100644 --- a/src/Docker/linux/fullfx/Dockerfile +++ b/src/Docker/linux/debian/net472/Dockerfile @@ -1,4 +1,4 @@ -FROM mono:5.14 +FROM mono:5.18 LABEL maintainers="GitTools Maintainers" ARG contentFolder diff --git a/src/Docker/linux/dotnetcore/Dockerfile b/src/Docker/linux/debian/netcoreapp2.1/Dockerfile similarity index 100% rename from src/Docker/linux/dotnetcore/Dockerfile rename to src/Docker/linux/debian/netcoreapp2.1/Dockerfile diff --git a/src/Docker/windows/dotnetcore/Dockerfile b/src/Docker/windows/nano/netcoreapp2.1/Dockerfile similarity index 100% rename from src/Docker/windows/dotnetcore/Dockerfile rename to src/Docker/windows/nano/netcoreapp2.1/Dockerfile diff --git a/src/Docker/windows/fullfx/Dockerfile b/src/Docker/windows/windowsservercore/net472/Dockerfile similarity index 100% rename from src/Docker/windows/fullfx/Dockerfile rename to src/Docker/windows/windowsservercore/net472/Dockerfile