Skip to content

Commit 0f2c61e

Browse files
arturcicArtur Stolear
authored andcommitted
GH-1583 - (build) added msbuld artifact testing
1 parent 14fe731 commit 0f2c61e

File tree

6 files changed

+93
-29
lines changed

6 files changed

+93
-29
lines changed

build/artifacts-test.cake

Lines changed: 25 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -6,35 +6,39 @@ Task("Artifacts-DotnetTool-Test")
66
.IsDependentOnWhen("Pack-Nuget", singleStageRun)
77
.Does<BuildParameters>((parameters) =>
88
{
9-
var currentDir = MakeAbsolute(Directory("."));
10-
var rootDir = parameters.IsDockerForWindows ? "c:/" : "/";
11-
var settings = new DockerContainerRunSettings
12-
{
13-
Rm = true,
14-
Volume = new[]
15-
{
16-
$"{currentDir}:{rootDir}repo",
17-
$"{currentDir}/artifacts/v{parameters.Version.SemVersion}/nuget:{rootDir}nuget"
18-
}
19-
};
9+
var rootPrefix = parameters.DockerRootPrefix;
10+
var version = parameters.Version.NugetVersion;
2011

2112
foreach(var dockerImage in parameters.Docker.Images)
2213
{
23-
var (os, distro, targetframework) = dockerImage;
24-
var tag = $"gittools/build-images:{distro}-sdk-{targetframework.Replace("netcoreapp", "")}";
25-
Information("Docker tag: {0}", tag);
26-
27-
var version = parameters.Version.NugetVersion;
14+
var cmd = $"dotnet tool install GitVersion.Tool --version {version} --tool-path {rootPrefix}/gitversion --add-source {rootPrefix}/nuget | out-null; ";
15+
cmd += $"{rootPrefix}/gitversion/dotnet-gitversion {rootPrefix}/repo /showvariable FullSemver;";
16+
17+
DockerTestArtifact(dockerImage, parameters, cmd);
18+
}
19+
});
2820

29-
var cmd = $"dotnet tool install GitVersion.Tool --version {version} --tool-path {rootDir}gitversion --add-source {rootDir}nuget | out-null; ";
30-
cmd += $"{rootDir}gitversion/dotnet-gitversion {rootDir}repo /showvariable FullSemver;";
31-
Information("Docker cmd: {0}", cmd);
21+
Task("Artifacts-MsBuild-Test")
22+
.WithCriteria<BuildParameters>((context, parameters) => !parameters.IsRunningOnMacOS, "Artifacts-MsBuild-Test can be tested only on Windows or Linux agents.")
23+
.WithCriteria<BuildParameters>((context, parameters) => parameters.IsRunningOnAzurePipeline, "Artifacts-MsBuild-Test works only on AzurePipeline.")
24+
.IsDependentOnWhen("Pack-Nuget", singleStageRun)
25+
.Does<BuildParameters>((parameters) =>
26+
{
27+
var rootPrefix = parameters.DockerRootPrefix;
28+
var version = parameters.Version.NugetVersion;
3229

33-
DockerTestRun(settings, parameters, tag, "pwsh", cmd);
30+
foreach(var dockerImage in parameters.Docker.Images)
31+
{
32+
var (os, distro, targetframework) = dockerImage;
33+
var cmd = $"dotnet build {rootPrefix}/repo/test --source {rootPrefix}/nuget --source https://api.nuget.org/v3/index.json -p:GitVersionTaskVersion={version} -p:TargetFramework={targetframework} | out-null; ";
34+
cmd += $"dotnet {rootPrefix}/repo/test/build/corefx/{targetframework}/TestRepo.dll;";
35+
36+
DockerTestArtifact(dockerImage, parameters, cmd);
3437
}
3538
});
3639

3740
Task("Artifacts-Test")
3841
.WithCriteria<BuildParameters>((context, parameters) => !parameters.IsRunningOnMacOS, "Artifacts-Test can be tested only on Windows or Linux agents.")
3942
.WithCriteria<BuildParameters>((context, parameters) => parameters.IsRunningOnAzurePipeline, "Artifacts-Test works only on AzurePipeline.")
40-
.IsDependentOn("Artifacts-DotnetTool-Test");
43+
.IsDependentOn("Artifacts-DotnetTool-Test")
44+
.IsDependentOn("Artifacts-MsBuild-Test");

build/docker.cake

Lines changed: 2 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -18,20 +18,14 @@ Task("Docker-Test")
1818
.IsDependentOn("Docker-Build")
1919
.Does<BuildParameters>((parameters) =>
2020
{
21-
var currentDir = MakeAbsolute(Directory("."));
22-
var containerDir = parameters.IsDockerForWindows ? "c:/repo" : "/repo";
23-
var settings = new DockerContainerRunSettings
24-
{
25-
Rm = true,
26-
Volume = new[] { $"{currentDir}:{containerDir}" }
27-
};
21+
var settings = GetDockerRunSettings(parameters);
2822

2923
foreach(var dockerImage in parameters.Docker.Images)
3024
{
3125
var tags = GetDockerTags(dockerImage, parameters);
3226
foreach (var tag in tags)
3327
{
34-
DockerTestRun(settings, parameters, tag, containerDir, "/showvariable", "FullSemver");
28+
DockerTestRun(settings, parameters, tag, $"{parameters.DockerRootPrefix}/repo", "/showvariable", "FullSemver");
3529
}
3630
}
3731
});

build/utils/docker.cake

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -94,6 +94,33 @@ void DockerTestRun(DockerContainerRunSettings settings, BuildParameters paramete
9494
Assert.Equal(parameters.Version.GitVersion.FullSemVer, output);
9595
}
9696

97+
void DockerTestArtifact(DockerImage dockerImage, BuildParameters parameters, string cmd)
98+
{
99+
var settings = GetDockerRunSettings(parameters);
100+
var (os, distro, targetframework) = dockerImage;
101+
var tag = $"gittools/build-images:{distro}-sdk-{targetframework.Replace("netcoreapp", "")}";
102+
Information("Docker tag: {0}", tag);
103+
Information("Docker cmd: {0}", cmd);
104+
105+
DockerTestRun(settings, parameters, tag, "pwsh", cmd);
106+
}
107+
108+
DockerContainerRunSettings GetDockerRunSettings(BuildParameters parameters)
109+
{
110+
var currentDir = MakeAbsolute(Directory("."));
111+
var settings = new DockerContainerRunSettings
112+
{
113+
Rm = true,
114+
Volume = new[]
115+
{
116+
$"{currentDir}:{parameters.DockerRootPrefix}/repo",
117+
$"{currentDir}/artifacts/v{parameters.Version.SemVersion}/nuget:{parameters.DockerRootPrefix}/nuget"
118+
}
119+
};
120+
121+
return settings;
122+
}
123+
97124
string[] GetDockerTags(DockerImage dockerImage, BuildParameters parameters) {
98125
var name = $"gittools/gitversion";
99126
var (os, distro, targetframework) = dockerImage;

build/utils/parameters.cake

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@ public class BuildParameters
2828

2929
public bool IsDockerForWindows { get; private set; }
3030
public bool IsDockerForLinux { get; private set; }
31+
public string DockerRootPrefix { get; private set; }
3132

3233
public bool IsLocalBuild { get; private set; }
3334
public bool IsRunningOnAppVeyor { get; private set; }
@@ -95,6 +96,7 @@ public class BuildParameters
9596

9697
IsDockerForWindows = dockerCliPlatform == "windows",
9798
IsDockerForLinux = dockerCliPlatform == "linux",
99+
DockerRootPrefix = dockerCliPlatform == "windows" ? "c:" : "",
98100

99101
IsPullRequest = buildSystem.IsPullRequest,
100102
IsMainRepo = IsOnMainRepo(context),

test/Program.cs

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
using System;
2+
using System.Reflection;
3+
4+
namespace TestRepo
5+
{
6+
class Program
7+
{
8+
static void Main(string[] args)
9+
{
10+
Console.Write(Assembly.GetEntryAssembly().GetType("GitVersionInformation").GetField("FullSemVer").GetValue(null));
11+
}
12+
}
13+
}

test/TestRepoCore.csproj

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
<Project Sdk="Microsoft.NET.Sdk">
2+
3+
<PropertyGroup>
4+
<OutputType>Exe</OutputType>
5+
<AssemblyName>TestRepo</AssemblyName>
6+
<RootNamespace>TestRepo</RootNamespace>
7+
<GenerateAssemblyInfo>false</GenerateAssemblyInfo>
8+
<GitVersionTaskVersion Condition=" '$(GitVersionTaskVersion)' == '' ">5.0.0-beta5.53</GitVersionTaskVersion>
9+
<OutputPath>.\build\corefx\</OutputPath>
10+
</PropertyGroup>
11+
12+
<Target Name="Git" DependsOnTargets="GetVersion">
13+
<Message Text="Repo sha: $(GitVersion_Sha)" Importance="high" />
14+
<Message Text="Repo version: $(GitVersion_FullSemVer)" Importance="high" />
15+
</Target>
16+
17+
<ItemGroup>
18+
<PackageReference Include="GitVersionTask" Version="$(GitVersionTaskVersion)">
19+
<PrivateAssets>all</PrivateAssets>
20+
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
21+
</PackageReference>
22+
</ItemGroup>
23+
24+
</Project>

0 commit comments

Comments
 (0)