From 077aed525c37568cc82f4e599dd25f7a4d2a608e Mon Sep 17 00:00:00 2001 From: Max Katz Date: Fri, 8 Mar 2024 17:59:45 -0800 Subject: [PATCH 1/4] Replace PRNumber with VersionNumber+nuke --- azure-pipelines.yml | 32 ++++++++++---------------------- nukebuild/Build.cs | 8 ++++++++ nukebuild/BuildParameters.cs | 7 ++++++- 3 files changed, 24 insertions(+), 23 deletions(-) diff --git a/azure-pipelines.yml b/azure-pipelines.yml index fb9d98ef80a..95206b48cfc 100644 --- a/azure-pipelines.yml +++ b/azure-pipelines.yml @@ -2,35 +2,23 @@ jobs: - job: GetPRNumber pool: - vmImage: 'windows-2022' + vmImage: 'ubuntu-20.04' variables: SolutionDir: '$(Build.SourcesDirectory)' steps: - - task: PowerShell@2 - displayName: Get PR Number + - task: UseDotNet@2 + displayName: 'Use .NET 8.0 SDK' inputs: - targetType: 'inline' - script: | - $Namespace = @{ msbuild = "http://schemas.microsoft.com/developer/msbuild/2003" } - $versionBase = Select-Xml -Path build\SharedVersion.props -XPath /msbuild:Project/msbuild:PropertyGroup/msbuild:Version -Namespace $Namespace |ForEach-Object {$_.Node.Innerxml} - Write-Host "Base Version Number is:-" $versionBase - - $prId = $env:System_PullRequest_PullRequestNumber - Write-Host "PR Number is:-" $env:System_PullRequest_PullRequestNumber - - if (!([string]::IsNullOrWhiteSpace($prId))) - { - Set-Content -Path $env:Build_ArtifactStagingDirectory\prId.txt -Value $prId - } - if (!([string]::IsNullOrWhiteSpace($versionBase))) - { - Set-Content -Path $env:Build_ArtifactStagingDirectory\versionBase.txt -Value $versionBase - } - + packageType: sdk + useGlobalJson: true + - task: CmdLine@2 + displayName: 'Run Build' + inputs: + script: ./build.sh --target OutputVersion --version-output=$(Build.ArtifactStagingDirectory) - task: PublishBuildArtifacts@1 inputs: PathtoPublish: '$(Build.ArtifactStagingDirectory)' - ArtifactName: 'PRNumber' + ArtifactName: 'VersionNumber' publishLocation: 'Container' - job: Linux diff --git a/nukebuild/Build.cs b/nukebuild/Build.cs index 685512f5770..c9731d926dc 100644 --- a/nukebuild/Build.cs +++ b/nukebuild/Build.cs @@ -150,6 +150,14 @@ DotNetTestSettings ApplySetting(DotNetTestSettings c, Configure _ => _ + .Requires(() => VersionOutput) + .Executes(() => + { + var currentBuildVersion = Parameters.Version; + File.WriteAllText(Parameters.VersionOutput, currentBuildVersion); + }); + void RunCoreTest(string projectName) { Information($"Running tests from {projectName}"); diff --git a/nukebuild/BuildParameters.cs b/nukebuild/BuildParameters.cs index d9705c042f6..587a375e252 100644 --- a/nukebuild/BuildParameters.cs +++ b/nukebuild/BuildParameters.cs @@ -25,10 +25,13 @@ public partial class Build [Parameter(Name = "api-baseline")] public string ApiValidationBaseline { get; set; } - + [Parameter(Name = "update-api-suppression")] public bool? UpdateApiValidationSuppression { get; set; } + [Parameter(Name = "version-output")] + public AbsolutePath VersionOutput { get; set; } + public class BuildParameters { public string Configuration { get; } @@ -70,6 +73,7 @@ public class BuildParameters public string ApiValidationBaseline { get; } public bool UpdateApiValidationSuppression { get; } public AbsolutePath ApiValidationSuppressionFiles { get; } + public AbsolutePath VersionOutput { get; } public BuildParameters(Build b, bool isPackingToLocalCache) { @@ -146,6 +150,7 @@ public BuildParameters(Build b, bool isPackingToLocalCache) ZipCoreArtifacts = ZipRoot / ("Avalonia-" + FileZipSuffix); ZipNuGetArtifacts = ZipRoot / ("Avalonia-NuGet-" + FileZipSuffix); ApiValidationSuppressionFiles = RootDirectory / "api"; + VersionOutput = b.VersionOutput; } string GetVersion() From bb19fe42921e3eabdc60599a3a71196c253dc3bc Mon Sep 17 00:00:00 2001 From: Max Katz Date: Fri, 8 Mar 2024 18:11:29 -0800 Subject: [PATCH 2/4] Restore prId file --- .nuke/build.schema.json | 5 +++++ azure-pipelines.yml | 2 +- nukebuild/Build.cs | 11 +++++++++-- nukebuild/BuildParameters.cs | 8 ++++---- 4 files changed, 19 insertions(+), 7 deletions(-) diff --git a/.nuke/build.schema.json b/.nuke/build.schema.json index dade9df344a..f833ddd89a4 100644 --- a/.nuke/build.schema.json +++ b/.nuke/build.schema.json @@ -85,6 +85,7 @@ "CreateNugetPackages", "GenerateCppHeaders", "OutputApiDiff", + "OutputVersion", "Package", "RunCoreLibsTests", "RunHtmlPreviewerTests", @@ -121,6 +122,7 @@ "CreateNugetPackages", "GenerateCppHeaders", "OutputApiDiff", + "OutputVersion", "Package", "RunCoreLibsTests", "RunHtmlPreviewerTests", @@ -145,6 +147,9 @@ "Quiet", "Verbose" ] + }, + "version-output-dir": { + "type": "string" } } } diff --git a/azure-pipelines.yml b/azure-pipelines.yml index 95206b48cfc..a39b062165a 100644 --- a/azure-pipelines.yml +++ b/azure-pipelines.yml @@ -14,7 +14,7 @@ jobs: - task: CmdLine@2 displayName: 'Run Build' inputs: - script: ./build.sh --target OutputVersion --version-output=$(Build.ArtifactStagingDirectory) + script: ./build.sh --target OutputVersion --version-output-dir $(Build.ArtifactStagingDirectory) - task: PublishBuildArtifacts@1 inputs: PathtoPublish: '$(Build.ArtifactStagingDirectory)' diff --git a/nukebuild/Build.cs b/nukebuild/Build.cs index c9731d926dc..d2e476ec9b9 100644 --- a/nukebuild/Build.cs +++ b/nukebuild/Build.cs @@ -151,11 +151,18 @@ DotNetTestSettings ApplySetting(DotNetTestSettings c, Configure _ => _ - .Requires(() => VersionOutput) + .Requires(() => VersionOutputDir) .Executes(() => { + var versionFile = Path.Combine(Parameters.VersionOutputDir, "version.txt"); var currentBuildVersion = Parameters.Version; - File.WriteAllText(Parameters.VersionOutput, currentBuildVersion); + Console.WriteLine("Version is: " + currentBuildVersion); + File.WriteAllText(versionFile, currentBuildVersion); + + var prIdFile = Path.Combine(Parameters.VersionOutputDir, "prId.txt"); + var prId = Environment.GetEnvironmentVariable("System_PullRequest_PullRequestNumber"); + Console.WriteLine("PR Number is: " + prId); + File.WriteAllText(versionFile, prIdFile); }); void RunCoreTest(string projectName) diff --git a/nukebuild/BuildParameters.cs b/nukebuild/BuildParameters.cs index 587a375e252..b17812cc410 100644 --- a/nukebuild/BuildParameters.cs +++ b/nukebuild/BuildParameters.cs @@ -29,8 +29,8 @@ public partial class Build [Parameter(Name = "update-api-suppression")] public bool? UpdateApiValidationSuppression { get; set; } - [Parameter(Name = "version-output")] - public AbsolutePath VersionOutput { get; set; } + [Parameter(Name = "version-output-dir")] + public AbsolutePath VersionOutputDir { get; set; } public class BuildParameters { @@ -73,7 +73,7 @@ public class BuildParameters public string ApiValidationBaseline { get; } public bool UpdateApiValidationSuppression { get; } public AbsolutePath ApiValidationSuppressionFiles { get; } - public AbsolutePath VersionOutput { get; } + public AbsolutePath VersionOutputDir { get; } public BuildParameters(Build b, bool isPackingToLocalCache) { @@ -150,7 +150,7 @@ public BuildParameters(Build b, bool isPackingToLocalCache) ZipCoreArtifacts = ZipRoot / ("Avalonia-" + FileZipSuffix); ZipNuGetArtifacts = ZipRoot / ("Avalonia-NuGet-" + FileZipSuffix); ApiValidationSuppressionFiles = RootDirectory / "api"; - VersionOutput = b.VersionOutput; + VersionOutputDir = b.VersionOutputDir; } string GetVersion() From 694f8b3d60173abf264104b874d1d8ff27cd6d26 Mon Sep 17 00:00:00 2001 From: Max Katz Date: Fri, 8 Mar 2024 18:31:09 -0800 Subject: [PATCH 3/4] Fix env var name --- nukebuild/Build.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/nukebuild/Build.cs b/nukebuild/Build.cs index d2e476ec9b9..9157e4c44b0 100644 --- a/nukebuild/Build.cs +++ b/nukebuild/Build.cs @@ -160,9 +160,9 @@ DotNetTestSettings ApplySetting(DotNetTestSettings c, Configure Date: Fri, 8 Mar 2024 18:46:43 -0800 Subject: [PATCH 4/4] Change artifact name back for compatibility --- azure-pipelines.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/azure-pipelines.yml b/azure-pipelines.yml index a39b062165a..b49266417ff 100644 --- a/azure-pipelines.yml +++ b/azure-pipelines.yml @@ -18,7 +18,7 @@ jobs: - task: PublishBuildArtifacts@1 inputs: PathtoPublish: '$(Build.ArtifactStagingDirectory)' - ArtifactName: 'VersionNumber' + ArtifactName: 'PRNumber' publishLocation: 'Container' - job: Linux