/
build.cake
119 lines (104 loc) · 2.97 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
var target = Argument<string>("target", "Default");
var configuration = Argument<string>("configuration", "Debug");
var buildNumber = Argument<string>("buildnumber", "0");
var nugetApiKey = Argument<string>("nugetApiKey", "");
var solutions = GetFiles("./src/*.sln");
var solutionPaths = solutions.Select(solution => solution.GetDirectory());
var version = "1.0.0";
var packageVersion = string.Format("{0}.{1}", version, buildNumber);
Task("Clean")
.Does(() =>
{
CleanDirectories("./**/bin");
CleanDirectories("./**/obj");
CleanDirectories("./build");
});
Task("Version")
.Does(() => {
CreateAssemblyInfo("./src/CommonAssemblyInfo.cs", new AssemblyInfoSettings {
Version = version,
FileVersion = version,
InformationalVersion = packageVersion
});
});
Task("BootstrapPaket")
.Does(() => {
if(!System.IO.File.Exists("./.paket/paket.exe"))
{
using(var process = StartAndReturnProcess("./.paket/paket.bootstrapper.exe"))
{
Information("Initializing paket");
process.WaitForExit();
Information("Exit code: {0}", process.GetExitCode());
}
}
});
Task("Restore")
.IsDependentOn("BootstrapPaket")
.Does(() =>
{
using(var process = StartAndReturnProcess("./.paket/paket.exe", new ProcessSettings{ Arguments = "restore" }))
{
Information("Restoring packages");
process.WaitForExit();
Information("Exit code: {0}", process.GetExitCode());
}
});
Task("Build")
.IsDependentOn("Clean")
.IsDependentOn("Restore")
.IsDependentOn("Version")
.Does(() =>
{
foreach(var solution in solutions)
{
Information("Building {0}", solution);
DotNetBuild(solution, settings => {
settings.Configuration = configuration;
settings.Targets.Add("Build");
});
}
});
Task("PaketPack")
.IsDependentOn("BootstrapPaket")
.Does(() => {
using(var process = StartAndReturnProcess("./.paket/paket.exe", new ProcessSettings { Arguments = "pack output build buildconfig " + configuration + " version " + packageVersion }))
{
Information("Building packages");
process.WaitForExit();
Information("Exit code: {0}", process.GetExitCode());
}
});
Task("PaketPush")
.IsDependentOn("PaketPack")
.Does(() => {
var packages = System.IO.Directory.GetFiles("./build", "*.nupkg");
foreach(var package in packages)
{
using(var process = StartAndReturnProcess("./.paket/paket.exe", new ProcessSettings { Arguments = "push url https://www.myget.org/F/jajo file \"" + package + "\" apikey " + nugetApiKey }))
{
Information("Pushing packages");
process.WaitForExit();
Information("Exit code: {0}", process.GetExitCode());
}
}
});
Task("Test")
.IsDependentOn("Build")
.Does(() => {
Fixie("**/*.Tests/bin/" + configuration + "/*.Tests.dll", new FixieSettings {
TeamCity = true
});
});
Task("Default")
.IsDependentOn("Build");
Task("ci")
.IsDependentOn("Test")
.IsDependentOn("PaketPush")
.Does(() => {
if(TeamCity.IsRunningOnTeamCity)
{
TeamCity.SetBuildNumber(packageVersion);
}
});
RunTarget(target);