Browse Source

Update NUKE to 0.24

pull/3596/head
Matthias Koch 6 years ago
parent
commit
e870f6c6e4
  1. 54
      nukebuild/Build.cs
  2. 8
      nukebuild/Shims.cs
  3. 8
      nukebuild/_build.csproj

54
nukebuild/Build.cs

@ -26,7 +26,7 @@ using static Nuke.Common.Tools.VSWhere.VSWhereTasks;
running and debugging a particular target (optionally without deps) would be way easier running and debugging a particular target (optionally without deps) would be way easier
ReSharper/Rider - https://plugins.jetbrains.com/plugin/10803-nuke-support ReSharper/Rider - https://plugins.jetbrains.com/plugin/10803-nuke-support
VSCode - https://marketplace.visualstudio.com/items?itemName=nuke.support VSCode - https://marketplace.visualstudio.com/items?itemName=nuke.support
*/ */
partial class Build : NukeBuild partial class Build : NukeBuild
@ -54,7 +54,7 @@ partial class Build : NukeBuild
protected override void OnBuildInitialized() protected override void OnBuildInitialized()
{ {
Parameters = new BuildParameters(this); Parameters = new BuildParameters(this);
Information("Building version {0} of Avalonia ({1}) using version {2} of Nuke.", Information("Building version {0} of Avalonia ({1}) using version {2} of Nuke.",
Parameters.Version, Parameters.Version,
Parameters.Configuration, Parameters.Configuration,
typeof(NukeBuild).Assembly.GetName().Version.ToString()); typeof(NukeBuild).Assembly.GetName().Version.ToString());
@ -93,8 +93,10 @@ partial class Build : NukeBuild
string projectFile, string projectFile,
Configure<MSBuildSettings> configurator = null) Configure<MSBuildSettings> configurator = null)
{ {
return MSBuild(projectFile, c => return MSBuild(c =>
{ {
c = c.SetProjectFile(projectFile);
// This is required for VS2019 image on Azure Pipelines // This is required for VS2019 image on Azure Pipelines
if (Parameters.IsRunningOnWindows && Parameters.IsRunningOnAzure) if (Parameters.IsRunningOnWindows && Parameters.IsRunningOnAzure)
{ {
@ -114,8 +116,8 @@ partial class Build : NukeBuild
} }
Target Clean => _ => _.Executes(() => Target Clean => _ => _.Executes(() =>
{ {
DeleteDirectories(Parameters.BuildDirs); Parameters.BuildDirs.ForEach(DeleteDirectory);
EnsureCleanDirectories(Parameters.BuildDirs); Parameters.BuildDirs.ForEach(DeleteDirectory);
EnsureCleanDirectory(Parameters.ArtifactsDir); EnsureCleanDirectory(Parameters.ArtifactsDir);
EnsureCleanDirectory(Parameters.NugetIntermediateRoot); EnsureCleanDirectory(Parameters.NugetIntermediateRoot);
EnsureCleanDirectory(Parameters.NugetRoot); EnsureCleanDirectory(Parameters.NugetRoot);
@ -134,12 +136,13 @@ partial class Build : NukeBuild
); );
else else
DotNetBuild(Parameters.MSBuildSolution, c => c DotNetBuild(c => c
.SetProjectFile(Parameters.MSBuildSolution)
.AddProperty("PackageVersion", Parameters.Version) .AddProperty("PackageVersion", Parameters.Version)
.SetConfiguration(Parameters.Configuration) .SetConfiguration(Parameters.Configuration)
); );
}); });
void RunCoreTest(string project) void RunCoreTest(string project)
{ {
if(!project.EndsWith(".csproj")) if(!project.EndsWith(".csproj"))
@ -153,13 +156,13 @@ partial class Build : NukeBuild
var targets = xdoc.Root.Descendants("TargetFrameworks").FirstOrDefault(); var targets = xdoc.Root.Descendants("TargetFrameworks").FirstOrDefault();
if (targets != null) if (targets != null)
frameworks = targets.Value.Split(';').Where(f => !string.IsNullOrWhiteSpace(f)).ToList(); frameworks = targets.Value.Split(';').Where(f => !string.IsNullOrWhiteSpace(f)).ToList();
else else
frameworks = new List<string> {xdoc.Root.Descendants("TargetFramework").First().Value}; frameworks = new List<string> {xdoc.Root.Descendants("TargetFramework").First().Value};
foreach(var fw in frameworks) foreach(var fw in frameworks)
{ {
if (fw.StartsWith("net4") if (fw.StartsWith("net4")
&& RuntimeInformation.IsOSPlatform(OSPlatform.Linux) && RuntimeInformation.IsOSPlatform(OSPlatform.Linux)
&& Environment.GetEnvironmentVariable("FORCE_LINUX_TESTS") != "1") && Environment.GetEnvironmentVariable("FORCE_LINUX_TESTS") != "1")
{ {
Information($"Skipping {fw} tests on Linux - https://github.com/mono/mono/issues/13969"); Information($"Skipping {fw} tests on Linux - https://github.com/mono/mono/issues/13969");
@ -184,7 +187,7 @@ partial class Build : NukeBuild
} }
Target RunCoreLibsTests => _ => _ Target RunCoreLibsTests => _ => _
.OnlyWhen(() => !Parameters.SkipTests) .OnlyWhenStatic(() => !Parameters.SkipTests)
.DependsOn(Compile) .DependsOn(Compile)
.Executes(() => .Executes(() =>
{ {
@ -204,7 +207,7 @@ partial class Build : NukeBuild
}); });
Target RunRenderTests => _ => _ Target RunRenderTests => _ => _
.OnlyWhen(() => !Parameters.SkipTests) .OnlyWhenStatic(() => !Parameters.SkipTests)
.DependsOn(Compile) .DependsOn(Compile)
.Executes(() => .Executes(() =>
{ {
@ -212,9 +215,9 @@ partial class Build : NukeBuild
if (RuntimeInformation.IsOSPlatform(OSPlatform.Windows)) if (RuntimeInformation.IsOSPlatform(OSPlatform.Windows))
RunCoreTest("./tests/Avalonia.Direct2D1.RenderTests/Avalonia.Direct2D1.RenderTests.csproj"); RunCoreTest("./tests/Avalonia.Direct2D1.RenderTests/Avalonia.Direct2D1.RenderTests.csproj");
}); });
Target RunDesignerTests => _ => _ Target RunDesignerTests => _ => _
.OnlyWhen(() => !Parameters.SkipTests && Parameters.IsRunningOnWindows) .OnlyWhenStatic(() => !Parameters.SkipTests && Parameters.IsRunningOnWindows)
.DependsOn(Compile) .DependsOn(Compile)
.Executes(() => .Executes(() =>
{ {
@ -224,7 +227,7 @@ partial class Build : NukeBuild
[PackageExecutable("JetBrains.dotMemoryUnit", "dotMemoryUnit.exe")] readonly Tool DotMemoryUnit; [PackageExecutable("JetBrains.dotMemoryUnit", "dotMemoryUnit.exe")] readonly Tool DotMemoryUnit;
Target RunLeakTests => _ => _ Target RunLeakTests => _ => _
.OnlyWhen(() => !Parameters.SkipTests && Parameters.IsRunningOnWindows) .OnlyWhenStatic(() => !Parameters.SkipTests && Parameters.IsRunningOnWindows)
.DependsOn(Compile) .DependsOn(Compile)
.Executes(() => .Executes(() =>
{ {
@ -235,7 +238,7 @@ partial class Build : NukeBuild
}); });
Target ZipFiles => _ => _ Target ZipFiles => _ => _
.After(CreateNugetPackages, Compile, RunCoreLibsTests, Package) .After(CreateNugetPackages, Compile, RunCoreLibsTests, Package)
.Executes(() => .Executes(() =>
{ {
var data = Parameters; var data = Parameters;
@ -259,9 +262,10 @@ partial class Build : NukeBuild
MsBuildCommon(Parameters.MSBuildSolution, c => c MsBuildCommon(Parameters.MSBuildSolution, c => c
.AddTargets("Pack")); .AddTargets("Pack"));
else else
DotNetPack(Parameters.MSBuildSolution, c => DotNetPack(c => c
c.SetConfiguration(Parameters.Configuration) .SetProject(Parameters.MSBuildSolution)
.AddProperty("PackageVersion", Parameters.Version)); .SetConfiguration(Parameters.Configuration)
.AddProperty("PackageVersion", Parameters.Version));
}); });
Target CreateNugetPackages => _ => _ Target CreateNugetPackages => _ => _
@ -274,29 +278,29 @@ partial class Build : NukeBuild
new NumergeNukeLogger())) new NumergeNukeLogger()))
throw new Exception("Package merge failed"); throw new Exception("Package merge failed");
}); });
Target RunTests => _ => _ Target RunTests => _ => _
.DependsOn(RunCoreLibsTests) .DependsOn(RunCoreLibsTests)
.DependsOn(RunRenderTests) .DependsOn(RunRenderTests)
.DependsOn(RunDesignerTests) .DependsOn(RunDesignerTests)
.DependsOn(RunLeakTests); .DependsOn(RunLeakTests);
Target Package => _ => _ Target Package => _ => _
.DependsOn(RunTests) .DependsOn(RunTests)
.DependsOn(CreateNugetPackages); .DependsOn(CreateNugetPackages);
Target CiAzureLinux => _ => _ Target CiAzureLinux => _ => _
.DependsOn(RunTests); .DependsOn(RunTests);
Target CiAzureOSX => _ => _ Target CiAzureOSX => _ => _
.DependsOn(Package) .DependsOn(Package)
.DependsOn(ZipFiles); .DependsOn(ZipFiles);
Target CiAzureWindows => _ => _ Target CiAzureWindows => _ => _
.DependsOn(Package) .DependsOn(Package)
.DependsOn(ZipFiles); .DependsOn(ZipFiles);
public static int Main() => public static int Main() =>
RuntimeInformation.IsOSPlatform(OSPlatform.Windows) RuntimeInformation.IsOSPlatform(OSPlatform.Windows)
? Execute<Build>(x => x.Package) ? Execute<Build>(x => x.Package)

8
nukebuild/Shims.cs

@ -19,9 +19,9 @@ public partial class Build
Logger.Info(info, args); Logger.Info(info, args);
} }
private void Zip(PathConstruction.AbsolutePath target, params string[] paths) => Zip(target, paths.AsEnumerable()); private void Zip(AbsolutePath target, params string[] paths) => Zip(target, paths.AsEnumerable());
private void Zip(PathConstruction.AbsolutePath target, IEnumerable<string> paths) private void Zip(AbsolutePath target, IEnumerable<string> paths)
{ {
var targetPath = target.ToString(); var targetPath = target.ToString();
bool finished = false, atLeastOneFileAdded = false; bool finished = false, atLeastOneFileAdded = false;
@ -38,7 +38,7 @@ public partial class Build
fileStream.CopyTo(entryStream); fileStream.CopyTo(entryStream);
atLeastOneFileAdded = true; atLeastOneFileAdded = true;
} }
foreach (var path in paths) foreach (var path in paths)
{ {
if (Directory.Exists(path)) if (Directory.Exists(path))
@ -64,7 +64,7 @@ public partial class Build
finished = true; finished = true;
} }
finally finally
{ {
try try
{ {

8
nukebuild/_build.csproj

@ -2,7 +2,7 @@
<PropertyGroup> <PropertyGroup>
<OutputType>Exe</OutputType> <OutputType>Exe</OutputType>
<TargetFramework>netcoreapp2.0</TargetFramework> <TargetFramework>netcoreapp3.0</TargetFramework>
<AppendTargetFrameworkToOutputPath>false</AppendTargetFrameworkToOutputPath> <AppendTargetFrameworkToOutputPath>false</AppendTargetFrameworkToOutputPath>
<RootNamespace></RootNamespace> <RootNamespace></RootNamespace>
<IsPackable>False</IsPackable> <IsPackable>False</IsPackable>
@ -10,7 +10,7 @@
</PropertyGroup> </PropertyGroup>
<ItemGroup> <ItemGroup>
<PackageReference Include="Nuke.Common" Version="0.12.3" /> <PackageReference Include="Nuke.Common" Version="0.24.0" />
<PackageReference Include="xunit.runner.console" Version="2.3.1" /> <PackageReference Include="xunit.runner.console" Version="2.3.1" />
<PackageReference Include="JetBrains.dotMemoryUnit" Version="3.0.20171219.105559" /> <PackageReference Include="JetBrains.dotMemoryUnit" Version="3.0.20171219.105559" />
<PackageReference Include="vswhere" Version="2.6.7" Condition=" '$(OS)' == 'Windows_NT' " /> <PackageReference Include="vswhere" Version="2.6.7" Condition=" '$(OS)' == 'Windows_NT' " />
@ -20,11 +20,11 @@
<NukeMetadata Include="**\*.json" Exclude="bin\**;obj\**" /> <NukeMetadata Include="**\*.json" Exclude="bin\**;obj\**" />
<NukeExternalFiles Include="**\*.*.ext" Exclude="bin\**;obj\**" /> <NukeExternalFiles Include="**\*.*.ext" Exclude="bin\**;obj\**" />
<None Remove="*.csproj.DotSettings;*.ref.*.txt" /> <None Remove="*.csproj.DotSettings;*.ref.*.txt" />
<!-- Common build related files --> <!-- Common build related files -->
<None Include="..\build.ps1" /> <None Include="..\build.ps1" />
<None Include="..\build.sh" /> <None Include="..\build.sh" />
<None Include="..\.nuke" /> <None Include="..\.nuke" />
<None Include="..\global.json" Condition="Exists('..\global.json')" /> <None Include="..\global.json" Condition="Exists('..\global.json')" />
<None Include="..\nuget.config" Condition="Exists('..\nuget.config')" /> <None Include="..\nuget.config" Condition="Exists('..\nuget.config')" />
<None Include="..\Jenkinsfile" Condition="Exists('..\Jenkinsfile')" /> <None Include="..\Jenkinsfile" Condition="Exists('..\Jenkinsfile')" />

Loading…
Cancel
Save