浏览代码

Add OutputVersion nuke target (#14890)

* Replace PRNumber with VersionNumber+nuke

* Restore prId file

* Fix env var name

* Change artifact name back for compatibility
Max Katz 1 年之前
父节点
当前提交
462e4d1a74
共有 4 个文件被更改,包括 35 次插入22 次删除
  1. 5 0
      .nuke/build.schema.json
  2. 9 21
      azure-pipelines.yml
  3. 15 0
      nukebuild/Build.cs
  4. 6 1
      nukebuild/BuildParameters.cs

+ 5 - 0
.nuke/build.schema.json

@@ -85,6 +85,7 @@
               "CreateNugetPackages",
               "CreateNugetPackages",
               "GenerateCppHeaders",
               "GenerateCppHeaders",
               "OutputApiDiff",
               "OutputApiDiff",
+              "OutputVersion",
               "Package",
               "Package",
               "RunCoreLibsTests",
               "RunCoreLibsTests",
               "RunHtmlPreviewerTests",
               "RunHtmlPreviewerTests",
@@ -121,6 +122,7 @@
               "CreateNugetPackages",
               "CreateNugetPackages",
               "GenerateCppHeaders",
               "GenerateCppHeaders",
               "OutputApiDiff",
               "OutputApiDiff",
+              "OutputVersion",
               "Package",
               "Package",
               "RunCoreLibsTests",
               "RunCoreLibsTests",
               "RunHtmlPreviewerTests",
               "RunHtmlPreviewerTests",
@@ -145,6 +147,9 @@
             "Quiet",
             "Quiet",
             "Verbose"
             "Verbose"
           ]
           ]
+        },
+        "version-output-dir": {
+          "type": "string"
         }
         }
       }
       }
     }
     }

+ 9 - 21
azure-pipelines.yml

@@ -2,31 +2,19 @@ jobs:
 
 
 - job: GetPRNumber
 - job: GetPRNumber
   pool:
   pool:
-    vmImage: 'windows-2022'
+    vmImage: 'ubuntu-20.04'
   variables:
   variables:
     SolutionDir: '$(Build.SourcesDirectory)'
     SolutionDir: '$(Build.SourcesDirectory)'
   steps:
   steps:
-  - task: PowerShell@2
-    displayName: Get PR Number
+  - task: UseDotNet@2
+    displayName: 'Use .NET 8.0 SDK'
     inputs:
     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-dir $(Build.ArtifactStagingDirectory)
   - task: PublishBuildArtifacts@1
   - task: PublishBuildArtifacts@1
     inputs:
     inputs:
       PathtoPublish: '$(Build.ArtifactStagingDirectory)'
       PathtoPublish: '$(Build.ArtifactStagingDirectory)'

+ 15 - 0
nukebuild/Build.cs

@@ -150,6 +150,21 @@ partial class Build : NukeBuild
             );
             );
         });
         });
 
 
+    Target OutputVersion => _ => _
+        .Requires(() => VersionOutputDir)
+        .Executes(() =>
+        {
+            var versionFile = Path.Combine(Parameters.VersionOutputDir, "version.txt");
+            var currentBuildVersion = Parameters.Version;
+            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(prIdFile, prId);
+        });
+
     void RunCoreTest(string projectName)
     void RunCoreTest(string projectName)
     {
     {
         Information($"Running tests from {projectName}");
         Information($"Running tests from {projectName}");

+ 6 - 1
nukebuild/BuildParameters.cs

@@ -25,10 +25,13 @@ public partial class Build
 
 
     [Parameter(Name = "api-baseline")]
     [Parameter(Name = "api-baseline")]
     public string ApiValidationBaseline { get; set; }
     public string ApiValidationBaseline { get; set; }
-    
+
     [Parameter(Name = "update-api-suppression")]
     [Parameter(Name = "update-api-suppression")]
     public bool? UpdateApiValidationSuppression { get; set; }
     public bool? UpdateApiValidationSuppression { get; set; }
 
 
+    [Parameter(Name = "version-output-dir")]
+    public AbsolutePath VersionOutputDir { get; set; }
+
     public class BuildParameters
     public class BuildParameters
     {
     {
         public string Configuration { get; }
         public string Configuration { get; }
@@ -70,6 +73,7 @@ public partial class Build
         public string ApiValidationBaseline { get; }
         public string ApiValidationBaseline { get; }
         public bool UpdateApiValidationSuppression { get; }
         public bool UpdateApiValidationSuppression { get; }
         public AbsolutePath ApiValidationSuppressionFiles { get; }
         public AbsolutePath ApiValidationSuppressionFiles { get; }
+        public AbsolutePath VersionOutputDir { get; }
 
 
         public BuildParameters(Build b, bool isPackingToLocalCache)
         public BuildParameters(Build b, bool isPackingToLocalCache)
         {
         {
@@ -146,6 +150,7 @@ public partial class Build
             ZipCoreArtifacts = ZipRoot / ("Avalonia-" + FileZipSuffix);
             ZipCoreArtifacts = ZipRoot / ("Avalonia-" + FileZipSuffix);
             ZipNuGetArtifacts = ZipRoot / ("Avalonia-NuGet-" + FileZipSuffix);
             ZipNuGetArtifacts = ZipRoot / ("Avalonia-NuGet-" + FileZipSuffix);
             ApiValidationSuppressionFiles = RootDirectory / "api";
             ApiValidationSuppressionFiles = RootDirectory / "api";
+            VersionOutputDir = b.VersionOutputDir;
         }
         }
 
 
         string GetVersion()
         string GetVersion()