diff --git a/.github/workflows/build-and-test.yml b/.github/workflows/build-and-test.yml index 65472559..edad9a11 100644 --- a/.github/workflows/build-and-test.yml +++ b/.github/workflows/build-and-test.yml @@ -12,7 +12,7 @@ jobs: uses: actions/setup-dotnet@v4 with: dotnet-version: | - 8.0.x + 9.0.x - name: Install dependencies run: dotnet restore - name: Build diff --git a/.nuke/build.schema.json b/.nuke/build.schema.json index 76be051b..39d2202b 100644 --- a/.nuke/build.schema.json +++ b/.nuke/build.schema.json @@ -122,10 +122,6 @@ "SkipTests": { "type": "boolean", "description": "skip-tests" - }, - "Solution": { - "type": "string", - "description": "Path to a solution file that is automatically loaded. Default is Avalonia.Controls.TreeDataGrid.sln" } } }, diff --git a/azure-pipelines.yml b/azure-pipelines.yml index e19a47f2..ef84f2a0 100644 --- a/azure-pipelines.yml +++ b/azure-pipelines.yml @@ -11,18 +11,12 @@ steps: - task: UseDotNet@2 displayName: 'Use .NET SDK' inputs: - version: 8.0.x + version: 9.0.x -- task: CmdLine@2 - displayName: 'Install Nuke' - inputs: - script: | - dotnet tool install --global Nuke.GlobalTool --version 6.0.3 - -- script: nuke --target RunTests --configuration Release +- script: dotnet run --project $(Build.SourcesDirectory)/nukebuild/_build.csproj -- RunTests --configuration Release displayName: 'Run Unit Tests' -- script: nuke --target Package --configuration Release +- script: dotnet run --project $(Build.SourcesDirectory)/nukebuild/_build.csproj -- Package --configuration Release displayName: 'Generate Nuget Package' - task: PublishBuildArtifacts@1 diff --git a/nukebuild/Build.cs b/nukebuild/Build.cs index a48300e8..858e503a 100644 --- a/nukebuild/Build.cs +++ b/nukebuild/Build.cs @@ -18,27 +18,6 @@ partial class Build : NukeBuild { - [Solution("Avalonia.Controls.TreeDataGrid.sln")] readonly Solution Solution; - - static Lazy MsBuildExe = new Lazy(() => - { - if (!RuntimeInformation.IsOSPlatform(OSPlatform.Windows)) - return null; - - var msBuildDirectory = VSWhere("-latest -nologo -property installationPath -format value -prerelease").FirstOrDefault().Text; - - if (!string.IsNullOrWhiteSpace(msBuildDirectory)) - { - string msBuildExe = Path.Combine(msBuildDirectory, @"MSBuild\Current\Bin\MSBuild.exe"); - if (!System.IO.File.Exists(msBuildExe)) - msBuildExe = Path.Combine(msBuildDirectory, @"MSBuild\15.0\Bin\MSBuild.exe"); - - return msBuildExe; - } - - return null; - }, false); - BuildParameters Parameters { get; set; } protected override void OnBuildInitialized() { @@ -46,7 +25,7 @@ protected override void OnBuildInitialized() Information("Building version {0} of Avalonia.Controls.TreeDataGrid ({1}) using version {2} of Nuke.", Parameters.Version, Parameters.Configuration, - typeof(NukeBuild).Assembly.GetName().Version.ToString()); + typeof(NukeBuild).Assembly.GetName()?.Version?.ToString()); if (Parameters.IsLocalBuild) { @@ -69,29 +48,12 @@ protected override void OnBuildInitialized() void ExecWait(string preamble, string command, string args) { Console.WriteLine(preamble); - Process.Start(new ProcessStartInfo(command, args) {UseShellExecute = false}).WaitForExit(); + Process.Start(new ProcessStartInfo(command, args) {UseShellExecute = false})?.WaitForExit(); } ExecWait("dotnet version:", "dotnet", "--info"); ExecWait("dotnet workloads:", "dotnet", "workload list"); } - IReadOnlyCollection MsBuildCommon( - string projectFile, - Configure configurator = null) - { - return MSBuild(c => c - .SetProjectFile(projectFile) - // This is required for VS2019 image on Azure Pipelines - .When(_ => Parameters.IsRunningOnWindows && Parameters.IsRunningOnAzure, _ => _ - .AddProperty("JavaSdkDirectory", GetVariable("JAVA_HOME_11_X64"))) - .AddProperty("PackageVersion", Parameters.Version) - .AddProperty("iOSRoslynPathHackRequired", true) - .SetProcessToolPath(MsBuildExe.Value) - .SetConfiguration(Parameters.Configuration) - .SetVerbosity(MSBuildVerbosity.Minimal) - .Apply(configurator)); - } - Target Clean => _ => _.Executes(() => { Parameters.BuildDirs.ForEach(p => p.DeleteDirectory()); @@ -107,18 +69,11 @@ IReadOnlyCollection MsBuildCommon( .DependsOn(Clean) .Executes(() => { - if (Parameters.IsRunningOnWindows) - MsBuildCommon(Parameters.MSBuildSolution, c => c - .SetProcessAdditionalArguments("/r") - .AddTargets("Build") - ); - - else - DotNetBuild(c => c - .SetProjectFile(Parameters.MSBuildSolution) - .AddProperty("PackageVersion", Parameters.Version) - .SetConfiguration(Parameters.Configuration) - ); + DotNetBuild(c => c + .SetProjectFile(Parameters.MSBuildSolution) + .AddProperty("PackageVersion", Parameters.Version) + .SetConfiguration(Parameters.Configuration) + ); }); Target RunCoreLibsTests => _ => _ @@ -165,15 +120,10 @@ IReadOnlyCollection MsBuildCommon( .After(RunTests) .Executes(() => { - if (Parameters.IsRunningOnWindows) - - MsBuildCommon(Parameters.MSBuildSolution, c => c - .AddTargets("Pack")); - else - DotNetPack(c => c - .SetProject(Parameters.MSBuildSolution) - .SetConfiguration(Parameters.Configuration) - .AddProperty("PackageVersion", Parameters.Version)); + DotNetPack(c => c + .SetProject(Parameters.MSBuildSolution) + .SetConfiguration(Parameters.Configuration) + .AddProperty("PackageVersion", Parameters.Version)); }); Target RunTests => _ => _ @@ -199,11 +149,3 @@ public static int Main() => ? Execute(x => x.Package) : Execute(x => x.RunTests); } - -public static class ToolSettingsExtensions -{ - public static T Apply(this T settings, Configure configurator) - { - return configurator != null ? configurator(settings) : settings; - } -} diff --git a/nukebuild/_build.csproj b/nukebuild/_build.csproj index 497faaa7..4b6188a1 100644 --- a/nukebuild/_build.csproj +++ b/nukebuild/_build.csproj @@ -2,7 +2,7 @@ Exe - net8.0 + net9.0 false False