Skip to content

Commit 9dd9330

Browse files
committed
(build) test the native binaries
1 parent 844101b commit 9dd9330

File tree

3 files changed

+50
-32
lines changed

3 files changed

+50
-32
lines changed

build/pack.cake

Lines changed: 43 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -2,29 +2,7 @@ Task("Pack-Prepare")
22
.IsDependentOn("Validate-Version")
33
.Does<BuildParameters>((parameters) =>
44
{
5-
// publish single file for all native runtimes (self contained)
6-
foreach(var runtime in parameters.NativeRuntimes)
7-
{
8-
var runtimeName = runtime.Value;
9-
10-
var settings = new DotNetCorePublishSettings
11-
{
12-
Framework = parameters.CoreFxVersion31,
13-
Runtime = runtimeName,
14-
NoRestore = false,
15-
Configuration = parameters.Configuration,
16-
OutputDirectory = parameters.Paths.Directories.Native.Combine(runtimeName),
17-
MSBuildSettings = parameters.MSBuildSettings,
18-
};
19-
20-
settings.ArgumentCustomization =
21-
arg => arg
22-
.Append("/p:PublishSingleFile=true")
23-
.Append("/p:PublishTrimmed=true")
24-
.Append("/p:IncludeSymbolsInSingleFile=true");
25-
26-
DotNetCorePublish("./src/GitVersionExe/GitVersionExe.csproj", settings);
27-
}
5+
PackPrepareNative(Context, parameters);
286

297
var frameworks = new[] { parameters.CoreFxVersion21, parameters.FullFxVersion472 };
308

@@ -132,11 +110,46 @@ Task("Zip-Files")
132110
.IsDependentOn("Pack-Prepare")
133111
.Does<BuildParameters>((parameters) =>
134112
{
135-
foreach(var runtime in parameters.NativeRuntimes)
136-
{
137-
var sourceDir = parameters.Paths.Directories.Native.Combine(runtime.Value);
138-
var fileName = $"gitversion-{runtime.Key}-{parameters.Version.SemVersion}.tar.gz".ToLower();
139-
var tarFile = parameters.Paths.Directories.Artifacts.CombineWithFilePath(fileName);
140-
GZipCompress(sourceDir, tarFile);
141-
}
113+
var platform = Context.Environment.Platform.Family.ToString().ToLower();
114+
115+
var sourceDir = parameters.Paths.Directories.Native.Combine(platform);
116+
var targetDir = parameters.Paths.Directories.ArtifactsRoot.Combine("native");
117+
EnsureDirectoryExists(targetDir);
118+
var fileName = $"gitversion-{platform}-{parameters.Version.SemVersion}.tar.gz".ToLower();
119+
var tarFile = targetDir.CombineWithFilePath(fileName);
120+
GZipCompress(sourceDir, tarFile);
142121
});
122+
123+
void PackPrepareNative(ICakeContext context, BuildParameters parameters)
124+
{
125+
// publish single file for all native runtimes (self contained)
126+
var platform = Context.Environment.Platform.Family;
127+
var runtime = parameters.NativeRuntimes[platform];
128+
var outputPath = parameters.Paths.Directories.Native.Combine(platform.ToString().ToLower());
129+
130+
var settings = new DotNetCorePublishSettings
131+
{
132+
Framework = parameters.CoreFxVersion31,
133+
Runtime = runtime,
134+
NoRestore = false,
135+
Configuration = parameters.Configuration,
136+
OutputDirectory = outputPath,
137+
MSBuildSettings = parameters.MSBuildSettings,
138+
};
139+
140+
settings.ArgumentCustomization =
141+
arg => arg
142+
.Append("/p:PublishSingleFile=true")
143+
.Append("/p:PublishTrimmed=true")
144+
.Append("/p:IncludeSymbolsInSingleFile=true");
145+
146+
context.DotNetCorePublish("./src/GitVersionExe/GitVersionExe.csproj", settings);
147+
148+
context.Information("Validating native lib:");
149+
150+
var nativeExe = outputPath.CombineWithFilePath(IsRunningOnWindows() ? "gitversion.exe" : "gitversion");
151+
var output = context.ExecuteCommand(nativeExe, "/showvariable FullSemver");
152+
var outputStr = string.Concat(output);
153+
154+
Assert.Equal(parameters.Version.GitVersion.FullSemVer, outputStr);
155+
}

build/release.cake

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ Task("Release-Notes")
1818
TargetCommitish = "master"
1919
});
2020

21-
var zipFiles = GetFiles(parameters.Paths.Directories.Artifacts + "/*.tar.gz").Select(x => x.ToString());
21+
var zipFiles = GetFiles(parameters.Paths.Directories.ArtifactsRoot + "/*.tar.gz").Select(x => x.ToString());
2222
var assets = string.Join(",", zipFiles);
2323
GitReleaseManagerAddAssets(token, repoOwner, repository, parameters.Version.Milestone, assets);
2424
GitReleaseManagerClose(token, repoOwner, repository, parameters.Version.Milestone);

build/utils/paths.cake

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,8 @@ public class BuildPaths
2727

2828
var rootDir = (DirectoryPath)(context.Directory("."));
2929
var sourceDir = rootDir.Combine("src");
30-
var artifactsDir = rootDir.Combine("artifacts").Combine("v" + semVersion);
30+
var artifactsRootDir = rootDir.Combine("artifacts");
31+
var artifactsDir = artifactsRootDir.Combine("v" + semVersion);
3132
var artifactsBinDir = artifactsDir.Combine("bin");
3233
var artifactsBinPortableDir = artifactsBinDir.Combine("portable");
3334
var artifactsBinCmdlineDir = artifactsBinDir.Combine("cmdline");
@@ -46,6 +47,7 @@ public class BuildPaths
4647
var buildDirectories = new BuildDirectories(
4748
rootDir,
4849
sourceDir,
50+
artifactsRootDir,
4951
artifactsDir,
5052
nativeDir,
5153
buildArtifactDir,
@@ -92,6 +94,7 @@ public class BuildDirectories
9294
{
9395
public DirectoryPath Root { get; private set; }
9496
public DirectoryPath Source { get; private set; }
97+
public DirectoryPath ArtifactsRoot { get; private set; }
9598
public DirectoryPath Artifacts { get; private set; }
9699
public DirectoryPath Native { get; private set; }
97100
public DirectoryPath NugetRoot { get; private set; }
@@ -108,6 +111,7 @@ public class BuildDirectories
108111
public BuildDirectories(
109112
DirectoryPath rootDir,
110113
DirectoryPath sourceDir,
114+
DirectoryPath artifactsRootDir,
111115
DirectoryPath artifactsDir,
112116
DirectoryPath nativeDir,
113117
DirectoryPath buildArtifactDir,
@@ -123,6 +127,7 @@ public class BuildDirectories
123127
{
124128
Root = rootDir;
125129
Source = sourceDir;
130+
ArtifactsRoot = artifactsRootDir;
126131
Artifacts = artifactsDir;
127132
Native = nativeDir;
128133
BuildArtifact = buildArtifactDir;

0 commit comments

Comments
 (0)