Browse Source

Update to Cake 0.28

pull/1663/head
Jeremy Koritzinsky 8 years ago
parent
commit
2f1c94ef30
  1. 164
      build.cake
  2. 2
      parameters.cake
  3. 2
      tools/packages.config

164
build.cake

@ -34,20 +34,31 @@ using NuGet;
// PARAMETERS // PARAMETERS
////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////
Parameters parameters = new Parameters(Context); class AvaloniaBuildData
Packages packages = new Packages(Context, parameters); {
public AvaloniaBuildData(Parameters parameters, Packages packages)
{
Parameters = parameters;
Packages = packages;
}
public Parameters Parameters { get; }
public Packages Packages { get; }
}
/////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////
// SETUP // SETUP
/////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////
Setup(context => Setup<AvaloniaBuildData>(context =>
{ {
Information("Building version {0} of Avalonia ({1}, {2}, {3}) using version {4} of Cake.", var parameters = new Parameters(context);
var buildContext = new AvaloniaBuildData(parameters, new Packages(context, parameters));
Information("Building version {0} of Avalonia ({1}, {2}) using version {3} of Cake.",
parameters.Version, parameters.Version,
parameters.Platform, parameters.Platform,
parameters.Configuration, parameters.Configuration,
parameters.Target,
typeof(ICakeContext).Assembly.GetName().Version.ToString()); typeof(ICakeContext).Assembly.GetName().Version.ToString());
if (parameters.IsRunningOnAppVeyor) if (parameters.IsRunningOnAppVeyor)
@ -55,8 +66,7 @@ Setup(context =>
Information("Repository Name: " + BuildSystem.AppVeyor.Environment.Repository.Name); Information("Repository Name: " + BuildSystem.AppVeyor.Environment.Repository.Name);
Information("Repository Branch: " + BuildSystem.AppVeyor.Environment.Repository.Branch); Information("Repository Branch: " + BuildSystem.AppVeyor.Environment.Repository.Branch);
} }
Information("Target:" + context.TargetTask.Name);
Information("Target: " + parameters.Target);
Information("Platform: " + parameters.Platform); Information("Platform: " + parameters.Platform);
Information("Configuration: " + parameters.Configuration); Information("Configuration: " + parameters.Configuration);
Information("IsLocalBuild: " + parameters.IsLocalBuild); Information("IsLocalBuild: " + parameters.IsLocalBuild);
@ -70,13 +80,15 @@ Setup(context =>
Information("IsReleasable: " + parameters.IsReleasable); Information("IsReleasable: " + parameters.IsReleasable);
Information("IsMyGetRelease: " + parameters.IsMyGetRelease); Information("IsMyGetRelease: " + parameters.IsMyGetRelease);
Information("IsNuGetRelease: " + parameters.IsNuGetRelease); Information("IsNuGetRelease: " + parameters.IsNuGetRelease);
return buildContext;
}); });
/////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////
// TEARDOWN // TEARDOWN
/////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////
Teardown(context => Teardown<AvaloniaBuildData>((context, buildContext) =>
{ {
Information("Finished running tasks."); Information("Finished running tasks.");
}); });
@ -86,19 +98,19 @@ Teardown(context =>
/////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////
Task("Clean") Task("Clean")
.Does(() => .Does<AvaloniaBuildData>(data =>
{ {
CleanDirectories(parameters.BuildDirs); CleanDirectories(data.Parameters.BuildDirs);
CleanDirectory(parameters.ArtifactsDir); CleanDirectory(data.Parameters.ArtifactsDir);
CleanDirectory(parameters.NugetRoot); CleanDirectory(data.Parameters.NugetRoot);
CleanDirectory(parameters.ZipRoot); CleanDirectory(data.Parameters.ZipRoot);
CleanDirectory(parameters.BinRoot); CleanDirectory(data.Parameters.BinRoot);
}); });
Task("Restore-NuGet-Packages") Task("Restore-NuGet-Packages")
.IsDependentOn("Clean") .IsDependentOn("Clean")
.WithCriteria(parameters.IsRunningOnWindows) .WithCriteria<AvaloniaBuildData>((context, data) => data.Parameters.IsRunningOnWindows)
.Does(() => .Does<AvaloniaBuildData>(data =>
{ {
var maxRetryCount = 5; var maxRetryCount = 5;
var toolTimeout = 2d; var toolTimeout = 2d;
@ -115,13 +127,13 @@ Task("Restore-NuGet-Packages")
toolTimeout+=0.5; toolTimeout+=0.5;
}}) }})
.Execute(()=> { .Execute(()=> {
NuGetRestore(parameters.MSBuildSolution, new NuGetRestoreSettings { NuGetRestore(data.Parameters.MSBuildSolution, new NuGetRestoreSettings {
ToolTimeout = TimeSpan.FromMinutes(toolTimeout) ToolTimeout = TimeSpan.FromMinutes(toolTimeout)
}); });
}); });
}); });
void DotNetCoreBuild() void DotNetCoreBuild(Parameters parameters)
{ {
var settings = new DotNetCoreBuildSettings var settings = new DotNetCoreBuildSettings
{ {
@ -137,14 +149,14 @@ void DotNetCoreBuild()
Task("Build") Task("Build")
.IsDependentOn("Restore-NuGet-Packages") .IsDependentOn("Restore-NuGet-Packages")
.Does(() => .Does<AvaloniaBuildData>(data =>
{ {
if(parameters.IsRunningOnWindows) if(data.Parameters.IsRunningOnWindows)
{ {
MSBuild(parameters.MSBuildSolution, settings => { MSBuild(data.Parameters.MSBuildSolution, settings => {
settings.SetConfiguration(parameters.Configuration); settings.SetConfiguration(data.Parameters.Configuration);
settings.SetVerbosity(Verbosity.Minimal); settings.SetVerbosity(Verbosity.Minimal);
settings.WithProperty("Platform", "\"" + parameters.Platform + "\""); settings.WithProperty("Platform", "\"" + data.Parameters.Platform + "\"");
settings.WithProperty("UseRoslynPathHack", "true"); settings.WithProperty("UseRoslynPathHack", "true");
settings.UseToolVersion(MSBuildToolVersion.VS2017); settings.UseToolVersion(MSBuildToolVersion.VS2017);
settings.WithProperty("Windows", "True"); settings.WithProperty("Windows", "True");
@ -154,7 +166,7 @@ Task("Build")
} }
else else
{ {
DotNetCoreBuild(); DotNetCoreBuild(data.Parameters);
} }
}); });
@ -185,66 +197,66 @@ Task("Run-Unit-Tests")
.IsDependentOn("Build") .IsDependentOn("Build")
.IsDependentOn("Run-Designer-Tests") .IsDependentOn("Run-Designer-Tests")
.IsDependentOn("Run-Render-Tests") .IsDependentOn("Run-Render-Tests")
.WithCriteria(() => !parameters.SkipTests) .WithCriteria<AvaloniaBuildData>((context, data) => !data.Parameters.SkipTests)
.Does(() => { .Does<AvaloniaBuildData>(data => {
RunCoreTest("./tests/Avalonia.Base.UnitTests", parameters, false); RunCoreTest("./tests/Avalonia.Base.UnitTests", data.Parameters, false);
RunCoreTest("./tests/Avalonia.Controls.UnitTests", parameters, false); RunCoreTest("./tests/Avalonia.Controls.UnitTests", data.Parameters, false);
RunCoreTest("./tests/Avalonia.Input.UnitTests", parameters, false); RunCoreTest("./tests/Avalonia.Input.UnitTests", data.Parameters, false);
RunCoreTest("./tests/Avalonia.Interactivity.UnitTests", parameters, false); RunCoreTest("./tests/Avalonia.Interactivity.UnitTests", data.Parameters, false);
RunCoreTest("./tests/Avalonia.Layout.UnitTests", parameters, false); RunCoreTest("./tests/Avalonia.Layout.UnitTests", data.Parameters, false);
RunCoreTest("./tests/Avalonia.Markup.UnitTests", parameters, false); RunCoreTest("./tests/Avalonia.Markup.UnitTests", data.Parameters, false);
RunCoreTest("./tests/Avalonia.Markup.Xaml.UnitTests", parameters, false); RunCoreTest("./tests/Avalonia.Markup.Xaml.UnitTests", data.Parameters, false);
RunCoreTest("./tests/Avalonia.Styling.UnitTests", parameters, false); RunCoreTest("./tests/Avalonia.Styling.UnitTests", data.Parameters, false);
RunCoreTest("./tests/Avalonia.Visuals.UnitTests", parameters, false); RunCoreTest("./tests/Avalonia.Visuals.UnitTests", data.Parameters, false);
if (parameters.IsRunningOnWindows) if (data.Parameters.IsRunningOnWindows)
{ {
RunCoreTest("./tests/Avalonia.Direct2D1.UnitTests", parameters, true); RunCoreTest("./tests/Avalonia.Direct2D1.UnitTests", data.Parameters, true);
} }
}); });
Task("Run-Designer-Tests") Task("Run-Designer-Tests")
.IsDependentOn("Build") .IsDependentOn("Build")
.WithCriteria(() => !parameters.SkipTests) .WithCriteria<AvaloniaBuildData>((context, data) => !data.Parameters.SkipTests)
.Does(() => { .Does<AvaloniaBuildData>(data => {
RunCoreTest("./tests/Avalonia.DesignerSupport.Tests", parameters, false); RunCoreTest("./tests/Avalonia.DesignerSupport.Tests", data.Parameters, false);
}); });
Task("Run-Render-Tests") Task("Run-Render-Tests")
.IsDependentOn("Build") .IsDependentOn("Build")
.WithCriteria(() => !parameters.SkipTests && parameters.IsRunningOnWindows) .WithCriteria<AvaloniaBuildData>((context, data) => !data.Parameters.SkipTests && data.Parameters.IsRunningOnWindows)
.Does(() => { .Does<AvaloniaBuildData>(data => {
RunCoreTest("./tests/Avalonia.Skia.RenderTests/Avalonia.Skia.RenderTests.csproj", parameters, true); RunCoreTest("./tests/Avalonia.Skia.RenderTests/Avalonia.Skia.RenderTests.csproj", data.Parameters, true);
RunCoreTest("./tests/Avalonia.Direct2D1.RenderTests/Avalonia.Direct2D1.RenderTests.csproj", parameters, true); RunCoreTest("./tests/Avalonia.Direct2D1.RenderTests/Avalonia.Direct2D1.RenderTests.csproj", data.Parameters, true);
}); });
Task("Copy-Files") Task("Copy-Files")
.IsDependentOn("Run-Unit-Tests") .IsDependentOn("Run-Unit-Tests")
.Does(() => .Does<AvaloniaBuildData>(data =>
{ {
CopyFiles(packages.BinFiles, parameters.BinRoot); CopyFiles(data.Packages.BinFiles, data.Parameters.BinRoot);
}); });
Task("Zip-Files") Task("Zip-Files")
.IsDependentOn("Copy-Files") .IsDependentOn("Copy-Files")
.Does(() => .Does<AvaloniaBuildData>(data =>
{ {
Zip(parameters.BinRoot, parameters.ZipCoreArtifacts); Zip(data.Parameters.BinRoot, data.Parameters.ZipCoreArtifacts);
Zip(parameters.ZipSourceControlCatalogDesktopDirs, Zip(data.Parameters.ZipSourceControlCatalogDesktopDirs,
parameters.ZipTargetControlCatalogDesktopDirs, data.Parameters.ZipTargetControlCatalogDesktopDirs,
GetFiles(parameters.ZipSourceControlCatalogDesktopDirs.FullPath + "/*.dll") + GetFiles(data.Parameters.ZipSourceControlCatalogDesktopDirs.FullPath + "/*.dll") +
GetFiles(parameters.ZipSourceControlCatalogDesktopDirs.FullPath + "/*.config") + GetFiles(data.Parameters.ZipSourceControlCatalogDesktopDirs.FullPath + "/*.config") +
GetFiles(parameters.ZipSourceControlCatalogDesktopDirs.FullPath + "/*.so") + GetFiles(data.Parameters.ZipSourceControlCatalogDesktopDirs.FullPath + "/*.so") +
GetFiles(parameters.ZipSourceControlCatalogDesktopDirs.FullPath + "/*.dylib") + GetFiles(data.Parameters.ZipSourceControlCatalogDesktopDirs.FullPath + "/*.dylib") +
GetFiles(parameters.ZipSourceControlCatalogDesktopDirs.FullPath + "/*.exe")); GetFiles(data.Parameters.ZipSourceControlCatalogDesktopDirs.FullPath + "/*.exe"));
}); });
Task("Create-NuGet-Packages") Task("Create-NuGet-Packages")
.IsDependentOn("Run-Unit-Tests") .IsDependentOn("Run-Unit-Tests")
.IsDependentOn("Inspect") .IsDependentOn("Inspect")
.Does(() => .Does<AvaloniaBuildData>(data =>
{ {
foreach(var nuspec in packages.NuspecNuGetSettings) foreach(var nuspec in data.Packages.NuspecNuGetSettings)
{ {
NuGetPack(nuspec); NuGetPack(nuspec);
} }
@ -252,12 +264,12 @@ Task("Create-NuGet-Packages")
Task("Publish-MyGet") Task("Publish-MyGet")
.IsDependentOn("Create-NuGet-Packages") .IsDependentOn("Create-NuGet-Packages")
.WithCriteria(() => !parameters.IsLocalBuild) .WithCriteria<AvaloniaBuildData>((context, data) => !data.Parameters.IsLocalBuild)
.WithCriteria(() => !parameters.IsPullRequest) .WithCriteria<AvaloniaBuildData>((context, data) => !data.Parameters.IsPullRequest)
.WithCriteria(() => parameters.IsMainRepo) .WithCriteria<AvaloniaBuildData>((context, data) => data.Parameters.IsMainRepo)
.WithCriteria(() => parameters.IsMasterBranch) .WithCriteria<AvaloniaBuildData>((context, data) => data.Parameters.IsMasterBranch)
.WithCriteria(() => parameters.IsMyGetRelease) .WithCriteria<AvaloniaBuildData>((context, data) => data.Parameters.IsMyGetRelease)
.Does(() => .Does<AvaloniaBuildData>(data =>
{ {
var apiKey = EnvironmentVariable("MYGET_API_KEY"); var apiKey = EnvironmentVariable("MYGET_API_KEY");
if(string.IsNullOrEmpty(apiKey)) if(string.IsNullOrEmpty(apiKey))
@ -271,7 +283,7 @@ Task("Publish-MyGet")
throw new InvalidOperationException("Could not resolve MyGet API url."); throw new InvalidOperationException("Could not resolve MyGet API url.");
} }
foreach(var nupkg in packages.NugetPackages) foreach(var nupkg in data.Packages.NugetPackages)
{ {
NuGetPush(nupkg, new NuGetPushSettings { NuGetPush(nupkg, new NuGetPushSettings {
Source = apiUrl, Source = apiUrl,
@ -286,11 +298,11 @@ Task("Publish-MyGet")
Task("Publish-NuGet") Task("Publish-NuGet")
.IsDependentOn("Create-NuGet-Packages") .IsDependentOn("Create-NuGet-Packages")
.WithCriteria(() => !parameters.IsLocalBuild) .WithCriteria<AvaloniaBuildData>((context, data) => !data.Parameters.IsLocalBuild)
.WithCriteria(() => !parameters.IsPullRequest) .WithCriteria<AvaloniaBuildData>((context, data) => !data.Parameters.IsPullRequest)
.WithCriteria(() => parameters.IsMainRepo) .WithCriteria<AvaloniaBuildData>((context, data) => data.Parameters.IsMainRepo)
.WithCriteria(() => parameters.IsNuGetRelease) .WithCriteria<AvaloniaBuildData>((context, data) => data.Parameters.IsNuGetRelease)
.Does(() => .Does<AvaloniaBuildData>(data =>
{ {
var apiKey = EnvironmentVariable("NUGET_API_KEY"); var apiKey = EnvironmentVariable("NUGET_API_KEY");
if(string.IsNullOrEmpty(apiKey)) if(string.IsNullOrEmpty(apiKey))
@ -304,7 +316,7 @@ Task("Publish-NuGet")
throw new InvalidOperationException("Could not resolve NuGet API url."); throw new InvalidOperationException("Could not resolve NuGet API url.");
} }
foreach(var nupkg in packages.NugetPackages) foreach(var nupkg in data.Packages.NugetPackages)
{ {
NuGetPush(nupkg, new NuGetPushSettings { NuGetPush(nupkg, new NuGetPushSettings {
ApiKey = apiKey, ApiKey = apiKey,
@ -318,7 +330,7 @@ Task("Publish-NuGet")
}); });
Task("Run-Leak-Tests") Task("Run-Leak-Tests")
.WithCriteria(parameters.IsRunningOnWindows) .WithCriteria<AvaloniaBuildData>((context, data) => data.Parameters.IsRunningOnWindows)
.IsDependentOn("Build") .IsDependentOn("Build")
.Does(() => .Does(() =>
{ {
@ -358,7 +370,7 @@ Task("Run-Leak-Tests")
}); });
Task("Inspect") Task("Inspect")
.WithCriteria(parameters.IsRunningOnWindows) .WithCriteria<AvaloniaBuildData>((context, data) => data.Parameters.IsRunningOnWindows)
.IsDependentOn("Restore-NuGet-Packages") .IsDependentOn("Restore-NuGet-Packages")
.Does(() => .Does(() =>
{ {
@ -396,9 +408,9 @@ Task("Inspect")
Task("Package") Task("Package")
.IsDependentOn("Create-NuGet-Packages"); .IsDependentOn("Create-NuGet-Packages");
Task("Default").Does(() => Task("Default").Does<AvaloniaBuildData>(data =>
{ {
if(parameters.IsRunningOnWindows) if(data.Parameters.IsRunningOnWindows)
RunTarget("Package"); RunTarget("Package");
else else
RunTarget("Run-Unit-Tests"); RunTarget("Run-Unit-Tests");
@ -415,4 +427,4 @@ Task("Travis")
// EXECUTE // EXECUTE
/////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////
RunTarget(parameters.Target); RunTarget(Context.Argument("target", "Default"));

2
parameters.cake

@ -1,6 +1,5 @@
public class Parameters public class Parameters
{ {
public string Target { get; private set; }
public string Platform { get; private set; } public string Platform { get; private set; }
public string Configuration { get; private set; } public string Configuration { get; private set; }
public bool SkipTests { get; private set; } public bool SkipTests { get; private set; }
@ -43,7 +42,6 @@ public class Parameters
var buildSystem = context.BuildSystem(); var buildSystem = context.BuildSystem();
// ARGUMENTS // ARGUMENTS
Target = context.Argument("target", "Default");
Platform = context.Argument("platform", "Any CPU"); Platform = context.Argument("platform", "Any CPU");
Configuration = context.Argument("configuration", "Release"); Configuration = context.Argument("configuration", "Release");
SkipTests = context.HasArgument("skip-tests"); SkipTests = context.HasArgument("skip-tests");

2
tools/packages.config

@ -1,4 +1,4 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<packages> <packages>
<package id="Cake" version="0.25.0" /> <package id="Cake" version="0.28.0" />
</packages> </packages>

Loading…
Cancel
Save