Skip to content

Commit 2365f5a

Browse files
committed
(docker) using a template of dockerfile, reading the docker configs from docker.json
1 parent 720d23a commit 2365f5a

File tree

13 files changed

+58
-77
lines changed

13 files changed

+58
-77
lines changed

build/utils/artifacts.cake

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -98,10 +98,21 @@ public class DockerImages
9898
{
9999
public ICollection<DockerImage> Images { get; private set; }
100100

101-
public static DockerImages GetDockerImages(BuildParameters parameters, FilePath[] dockerfiles)
101+
public static DockerImages GetDockerImages(ICakeContext context, BuildParameters parameters)
102102
{
103-
var toDockerImage = DockerImage();
104-
var dockerImages = dockerfiles.Select(toDockerImage).ToArray();
103+
var dockerJson = context.ParseJsonFromFile("./src/Docker/docker.json");
104+
105+
var dockerImages = new List<DockerImage>();
106+
foreach (var osItem in dockerJson.Properties())
107+
{
108+
foreach (var targetFramework in ((JObject)osItem.Value).Properties())
109+
{
110+
foreach (var distro in ((JArray)targetFramework.Value))
111+
{
112+
dockerImages.Add(new DockerImage(os: osItem.Name, distro: distro.ToString(), targetFramework: $"netcoreapp{targetFramework.Name}"));
113+
}
114+
}
115+
}
105116

106117
var windowsImages = dockerImages.Where(x => x.OS == "windows").ToArray();
107118
var linuxImages = dockerImages.Where(x => x.OS == "linux").ToArray();
@@ -116,17 +127,6 @@ public class DockerImages
116127
Images = images
117128
};
118129
}
119-
120-
private static Func<FilePath, DockerImage> DockerImage()
121-
{
122-
return dockerFile => {
123-
var segments = dockerFile.Segments.Reverse().ToArray();
124-
var distro = segments[1];
125-
var os = segments[2];
126-
var targetFramework = segments[3];
127-
return new DockerImage(os: os, distro: distro, targetFramework: targetFramework);
128-
};
129-
}
130130
}
131131

132132
public class DockerImage

build/utils/docker.cake

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ void DockerStdinLogin(string username, string password)
2626
void DockerBuild(DockerImage dockerImage, BuildParameters parameters)
2727
{
2828
var (os, distro, targetframework) = dockerImage;
29-
var workDir = DirectoryPath.FromString($"./src/Docker/{targetframework}/{os}/{distro}");
29+
var workDir = DirectoryPath.FromString($"./src/Docker");
3030

3131
var sourceDir = targetframework.StartsWith("netcoreapp")
3232
? parameters.Paths.Directories.ArtifactsBinCoreFx.Combine("tools")
@@ -41,7 +41,7 @@ void DockerBuild(DockerImage dockerImage, BuildParameters parameters)
4141
Rm = true,
4242
Tag = tags,
4343
File = $"{workDir}/Dockerfile",
44-
BuildArg = new []{ $"contentFolder=/content" },
44+
BuildArg = new []{ $"contentFolder=/content", "DOTNET_VARIANT=runtime", $"DOTNET_VERSION={targetframework.Replace("netcoreapp", "")}", $"DISTRO={distro}" },
4545
// Pull = true,
4646
// Platform = platform // TODO this one is not supported on docker versions < 18.02
4747
};
@@ -99,7 +99,7 @@ string[] GetDockerTags(DockerImage dockerImage, BuildParameters parameters) {
9999
$"{name}:{parameters.Version.SemVersion}-{os}-{distro}-{targetframework}",
100100
};
101101

102-
if (distro == "debian" && targetframework == parameters.CoreFxVersion || distro == "nano") {
102+
if (distro == "debian-9" && targetframework == parameters.CoreFxVersion || distro == "nanoserver-1809") {
103103
tags.AddRange(new[] {
104104
$"{name}:{parameters.Version.Version}-{os}",
105105
$"{name}:{parameters.Version.SemVersion}-{os}",

build/utils/parameters.cake

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -61,8 +61,9 @@ public class BuildParameters
6161
var target = context.Argument("target", "Default");
6262
var buildSystem = context.BuildSystem();
6363

64-
var dockerCliPlatform = buildSystem.IsRunningOnAzurePipelinesHosted
65-
&& context.Environment.Platform.Family != PlatformFamily.OSX
64+
var dockerCliPlatform = (buildSystem.IsRunningOnAzurePipelinesHosted
65+
&& context.Environment.Platform.Family != PlatformFamily.OSX)
66+
|| buildSystem.IsLocalBuild
6667
? GetDockerCliPlatform(context) : "";
6768

6869
return new BuildParameters {
@@ -102,8 +103,7 @@ public class BuildParameters
102103

103104
Paths = BuildPaths.GetPaths(context, this, Configuration, Version);
104105

105-
var dockerFiles = context.GetFiles("./src/**/Dockerfile").ToArray();
106-
Docker = DockerImages.GetDockerImages(this, dockerFiles);
106+
Docker = DockerImages.GetDockerImages(context, this);
107107

108108
Packages = BuildPackages.GetPackages(
109109
Paths.Directories.NugetRoot,

src/Docker/Dockerfile

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
ARG DISTRO='debian-9'
2+
ARG DOTNET_VERSION='2.1'
3+
ARG DOTNET_VARIANT='runtime'
4+
5+
FROM gittools/build-images:$DISTRO-$DOTNET_VARIANT-$DOTNET_VERSION
6+
ARG contentFolder
7+
8+
WORKDIR /app
9+
COPY $contentFolder/ ./
10+
11+
ENTRYPOINT ["dotnet", "GitVersion.dll"]

src/Docker/docker.json

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
{
2+
"linux": {
3+
"2.1": [
4+
"centos-7",
5+
"debian-9",
6+
"fedora-27",
7+
"ubuntu-16.04",
8+
"ubuntu-18.04"
9+
],
10+
"2.2": [
11+
"centos-7",
12+
"debian-9",
13+
"fedora-27",
14+
"ubuntu-16.04",
15+
"ubuntu-18.04"
16+
]
17+
},
18+
"windows": {
19+
"2.1": [
20+
"nanoserver-1809"
21+
],
22+
"2.2": [
23+
"nanoserver-1809"
24+
]
25+
}
26+
}

src/Docker/netcoreapp2.1/linux/centos-7/Dockerfile

Lines changed: 0 additions & 7 deletions
This file was deleted.

src/Docker/netcoreapp2.1/linux/debian-9/Dockerfile

Lines changed: 0 additions & 7 deletions
This file was deleted.

src/Docker/netcoreapp2.1/linux/fedora-27/Dockerfile

Lines changed: 0 additions & 7 deletions
This file was deleted.

src/Docker/netcoreapp2.1/windows/nano/Dockerfile

Lines changed: 0 additions & 7 deletions
This file was deleted.

src/Docker/netcoreapp2.2/linux/centos-7/Dockerfile

Lines changed: 0 additions & 7 deletions
This file was deleted.

0 commit comments

Comments
 (0)