-
Notifications
You must be signed in to change notification settings - Fork 11
/
Copy pathbuild.cake
122 lines (97 loc) · 3.96 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
//////////////////////////////////////////////////////////////////////
// ADDINS
//////////////////////////////////////////////////////////////////////
#addin Cake.FileHelpers&version=3.2.0
//////////////////////////////////////////////////////////////////////
// TOOLS
//////////////////////////////////////////////////////////////////////
#tool GitVersion.CommandLine&version=4.0.0
#tool xunit.runner.console&version=2.4.1
#tool vswhere&version=2.6.7
//////////////////////////////////////////////////////////////////////
// ARGUMENTS
//////////////////////////////////////////////////////////////////////
var target = Argument("target", "Package");
var configuration = Argument("configuration", "Release");
//////////////////////////////////////////////////////////////////////
// PREPARATION
//////////////////////////////////////////////////////////////////////
// Should MSBuild treat any errors as warnings.
var treatWarningsAsErrors = false;
// Get whether or not this is a local build.
var local = BuildSystem.IsLocalBuild;
var isRunningOnWindows = IsRunningOnWindows();
var isRunningOnAppVeyor = AppVeyor.IsRunningOnAppVeyor;
// Parse release notes.
var releaseNotes = ParseReleaseNotes("RELEASENOTES.md");
// Get version.
var version = releaseNotes.Version.ToString();
var epoch = (long)(DateTime.UtcNow - new DateTime(1970, 1, 1)).TotalSeconds;
var semVersion = string.Format("{0}.{1}", version, epoch);
// Define directories. (msbuild /pack requires absolute path)
var artifactDirectory = MakeAbsolute(File("./artifacts/")).ToString();
var solutionFile = new FilePath("src/Cake.AndroidAppManifest.sln");
///////////////////////////////////////////////////////////////////////////////
// SETUP / TEARDOWN
///////////////////////////////////////////////////////////////////////////////
Setup((context) =>
{
Information("Building version {0} of Cake.AndroidAppManifest.", semVersion);
Information("isRunningOnAppVeyor: {0}", isRunningOnAppVeyor);
Information ("Running on Windows: {0}", isRunningOnWindows);
});
//////////////////////////////////////////////////////////////////////
// TASKS
//////////////////////////////////////////////////////////////////////
Task("Build")
.IsDependentOn("RestorePackages")
.IsDependentOn("UpdateAppVeyorBuildNumber")
.Does (() =>
{
Information("Building {0}", solutionFile);
MSBuild(solutionFile, new MSBuildSettings()
.SetConfiguration(configuration)
.WithProperty("NoWarn", "1591") // ignore missing XML doc warnings
.WithProperty("TreatWarningsAsErrors", treatWarningsAsErrors.ToString())
.SetVerbosity(Verbosity.Minimal)
.SetNodeReuse(false));
});
Task("UpdateAppVeyorBuildNumber")
.WithCriteria(() => isRunningOnAppVeyor)
.Does(() =>
{
AppVeyor.UpdateBuildVersion(semVersion);
});
Task("RestorePackages").Does (() =>
{
NuGetRestore(solutionFile);
});
Task("RunUnitTests")
.IsDependentOn("Build")
.Does(() =>
{
XUnit2("./src/Cake.AndroidAppManifest.Tests/bin/Release/Cake.AndroidAppManifest.Tests.dll", new XUnit2Settings {
OutputDirectory = artifactDirectory,
XmlReport = true
});
});
Task("Package")
.IsDependentOn("Build")
.IsDependentOn("RunUnitTests")
.Does (() =>
{
// switched to msbuild-based nuget creation
// see here for parameters: https://docs.microsoft.com/en-us/nuget/schema/msbuild-targets
var settings = new MSBuildSettings()
.SetConfiguration(configuration)
.WithTarget("pack")
.WithProperty("IncludeSymbols", "True")
.WithProperty("PackageVersion", version)
.WithProperty("PackageOutputPath", artifactDirectory);
settings.Properties.Add("PackageReleaseNotes", new List<string>(releaseNotes.Notes));
MSBuild ("./src/Cake.AndroidAppManifest/Cake.AndroidAppManifest.csproj", settings);
});
//////////////////////////////////////////////////////////////////////
// EXECUTION
//////////////////////////////////////////////////////////////////////
RunTarget(target);