forked from wieslawsoltes/Core2D
-
Notifications
You must be signed in to change notification settings - Fork 0
/
build.cake
127 lines (114 loc) · 3.69 KB
/
build.cake
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
#addin "nuget:?package=Polly&version=4.2.0"
#tool "nuget:?package=xunit.runner.console&version=2.1.0"
using System;
using Polly;
var target = Argument("target", "Default");
var platform = Argument("platform", "AnyCPU");
var configuration = Argument("configuration", "Release");
var msBuildSolution = "./Core2D.sln";
var xBuildSolution = "./Core2D.mono.sln";
var artifactsDir = (DirectoryPath)Directory("./artifacts");
var testResultsDir = artifactsDir.Combine("test-results");
var binSourceDirs = GetDirectories("./src/**/bin/" + platform + "/" + configuration);
var objSourceDirs = GetDirectories("./src/**/obj/" + platform + "/" + configuration);
var binTestsDirs = GetDirectories("./tests/**/bin/" + platform + "/" + configuration);
var objTestsDirs = GetDirectories("./testssrc/**/obj/" + platform + "/" + configuration);
var binDependenciesDirs = GetDirectories("./dependencies/**/bin/" + platform + "/" + configuration);
var objDependenciesDirs = GetDirectories("./dependencies/**/obj/" + platform + "/" + configuration);
Task("Clean")
.Does(() =>
{
CleanDirectory(artifactsDir);
CleanDirectory(testResultsDir);
CleanDirectories(binSourceDirs);
CleanDirectories(objSourceDirs);
CleanDirectories(binTestsDirs);
CleanDirectories(objTestsDirs);
CleanDirectories(binDependenciesDirs);
CleanDirectories(objDependenciesDirs);
});
Task("Restore-NuGet-Packages")
.IsDependentOn("Clean")
.Does(() =>
{
var maxRetryCount = 5;
var toolTimeout = 1d;
Policy
.Handle<Exception>()
.Retry(maxRetryCount, (exception, retryCount, context) => {
if (retryCount == maxRetryCount)
{
throw exception;
}
else
{
Verbose("{0}", exception);
toolTimeout+=0.5;
}})
.Execute(()=> {
if(IsRunningOnWindows())
{
NuGetRestore(msBuildSolution, new NuGetRestoreSettings {
ToolTimeout = TimeSpan.FromMinutes(toolTimeout)
});
}
else
{
NuGetRestore(xBuildSolution, new NuGetRestoreSettings {
ToolTimeout = TimeSpan.FromMinutes(toolTimeout)
});
}
});
});
Task("Build")
.IsDependentOn("Restore-NuGet-Packages")
.Does(() =>
{
if(IsRunningOnWindows())
{
MSBuild(msBuildSolution, settings => {
settings.SetConfiguration(configuration);
settings.WithProperty("Platform", platform);
settings.SetVerbosity(Verbosity.Minimal);
});
}
else
{
XBuild(xBuildSolution, settings => {
settings.SetConfiguration(configuration);
settings.WithProperty("Platform", platform);
settings.SetVerbosity(Verbosity.Minimal);
});
}
});
Task("Run-Unit-Tests")
.IsDependentOn("Build")
.Does(() =>
{
string pattern = "./tests/**/bin/" + platform + "/" + configuration + "/*.UnitTests.dll";
if (platform == "x86")
{
XUnit2(pattern, new XUnit2Settings {
ToolPath = "./tools/xunit.runner.console/tools/xunit.console.x86.exe",
OutputDirectory = testResultsDir,
XmlReportV1 = true,
NoAppDomain = true
});
}
else
{
XUnit2(pattern, new XUnit2Settings {
ToolPath = "./tools/xunit.runner.console/tools/xunit.console.exe",
OutputDirectory = testResultsDir,
XmlReportV1 = true,
NoAppDomain = true
});
}
});
Task("Default")
.IsDependentOn("Run-Unit-Tests");
Task("AppVeyor")
.IsDependentOn("Run-Unit-Tests");
Task("Travis")
.IsDependentOn("Run-Unit-Tests");
RunTarget(target);