Skip to content

Commit 7a55e94

Browse files
committed
(build) improve build time for multi-stage
1 parent 488b7f4 commit 7a55e94

File tree

3 files changed

+31
-26
lines changed

3 files changed

+31
-26
lines changed

build.cake

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,8 +45,8 @@ bool singleStageRun = true;
4545

4646
Setup<BuildParameters>(context =>
4747
{
48+
EnsureDirectoryExists("artifacts");
4849
var parameters = BuildParameters.GetParameters(context);
49-
Build(parameters.Configuration);
5050
var gitVersion = GetVersion(parameters);
5151
parameters.Initialize(context, gitVersion);
5252

build/pack.cake

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -15,14 +15,6 @@ Task("Clean")
1515
CleanDirectories(parameters.Paths.Directories.ToClean);
1616
});
1717

18-
// This build task can be run to just build
19-
Task("DogfoodBuild")
20-
.IsDependentOn("Clean")
21-
.Does<BuildParameters>((parameters) =>
22-
{
23-
Build(parameters.Configuration);
24-
});
25-
2618
Task("Build")
2719
.IsDependentOn("Clean")
2820
.Does<BuildParameters>((parameters) =>

build/utils/utils.cake

Lines changed: 30 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -36,23 +36,36 @@ void SetRubyGemPushApiKey(string apiKey)
3636

3737
GitVersion GetVersion(BuildParameters parameters)
3838
{
39-
var dllFile = GetFiles($"**/GitVersionExe/bin/{parameters.Configuration}/{parameters.CoreFxVersion}/GitVersion.dll").FirstOrDefault();
40-
var settings = new GitVersionSettings
41-
{
42-
OutputType = GitVersionOutput.Json,
43-
ToolPath = FindToolInPath(IsRunningOnUnix() ? "dotnet" : "dotnet.exe"),
44-
ArgumentCustomization = args => dllFile + " " + args.Render()
45-
};
46-
47-
var gitVersion = GitVersion(settings);
48-
49-
if (!parameters.IsLocalBuild && !(parameters.IsRunningOnAzurePipeline && parameters.IsPullRequest))
50-
{
51-
settings.UpdateAssemblyInfo = true;
52-
settings.LogFilePath = "console";
53-
settings.OutputType = GitVersionOutput.BuildServer;
54-
55-
GitVersion(settings);
39+
GitVersion gitVersion;
40+
var gitVersionFile = ((DirectoryPath)Directory("./artifacts")).CombineWithFilePath("GitVersion.json");
41+
if (FileExists(gitVersionFile)) {
42+
Warning("Using GitVersion information from {0}", gitVersionFile);
43+
gitVersion = DeserializeJsonFromFile<GitVersion>(gitVersionFile);
44+
}
45+
else {
46+
Warning("Dogfood GitVersion to get information");
47+
48+
Build(parameters.Configuration);
49+
var dllFile = GetFiles($"**/GitVersionExe/bin/{parameters.Configuration}/{parameters.CoreFxVersion}/GitVersion.dll").FirstOrDefault();
50+
51+
var settings = new GitVersionSettings
52+
{
53+
OutputType = GitVersionOutput.Json,
54+
ToolPath = FindToolInPath(IsRunningOnUnix() ? "dotnet" : "dotnet.exe"),
55+
ArgumentCustomization = args => dllFile + " " + args.Render()
56+
};
57+
58+
gitVersion = GitVersion(settings);
59+
SerializeJsonToPrettyFile(gitVersionFile, gitVersion);
60+
61+
if (!parameters.IsLocalBuild && !(parameters.IsRunningOnAzurePipeline && parameters.IsPullRequest))
62+
{
63+
settings.UpdateAssemblyInfo = true;
64+
settings.LogFilePath = "console";
65+
settings.OutputType = GitVersionOutput.BuildServer;
66+
67+
GitVersion(settings);
68+
}
5669
}
5770
return gitVersion;
5871
}

0 commit comments

Comments
 (0)