diff --git a/eng/pipelines/sdk-perf-jobs.yml b/eng/pipelines/sdk-perf-jobs.yml index 2f646c41674..d3fb0d8bb9d 100644 --- a/eng/pipelines/sdk-perf-jobs.yml +++ b/eng/pipelines/sdk-perf-jobs.yml @@ -427,6 +427,28 @@ jobs: ${{ each parameter in parameters.jobParameters }}: ${{ parameter.key }}: ${{ parameter.value }} + # Maui Android scenario benchmarks (SDK Default Baseline) - Release + - template: /eng/pipelines/templates/build-machine-matrix.yml + parameters: + jobTemplate: /eng/pipelines/templates/run-scenarios-job.yml + buildMachines: + - win-x64-android-arm64-pixel + - win-x64-android-arm64-galaxy + isPublic: false + jobParameters: + runKind: maui_scenarios_android + projectFileName: maui_scenarios_android.proj + channels: + - 10.0 + runtimeFlavor: mono # Update to coreclr when the baseline moves to .NET 11. + codeGenType: Default + buildConfig: Release + variables: + - name: MAUI_WORKLOAD_MODE + value: stable + ${{ each parameter in parameters.jobParameters }}: + ${{ parameter.key }}: ${{ parameter.value }} + # Maui Android scenario benchmarks (CoreCLR Full R2R) - Release - template: /eng/pipelines/templates/build-machine-matrix.yml parameters: @@ -527,6 +549,27 @@ jobs: ${{ each parameter in parameters.jobParameters }}: ${{ parameter.key }}: ${{ parameter.value }} + # Maui iOS scenario benchmarks (SDK Default Baseline) - Release + - template: /eng/pipelines/templates/build-machine-matrix.yml + parameters: + jobTemplate: /eng/pipelines/templates/run-scenarios-job.yml + buildMachines: + - osx-x64-ios-arm64 + isPublic: false + jobParameters: + runKind: maui_scenarios_ios + projectFileName: maui_scenarios_ios.proj + channels: + - 10.0 + runtimeFlavor: mono # Update to coreclr when the baseline moves to .NET 11. + codeGenType: Default + buildConfig: Release + variables: + - name: MAUI_WORKLOAD_MODE + value: stable + ${{ each parameter in parameters.jobParameters }}: + ${{ parameter.key }}: ${{ parameter.value }} + # Maui iOS scenario benchmarks (CoreCLR NativeAOT) - Release - template: /eng/pipelines/templates/build-machine-matrix.yml parameters: diff --git a/global.net10.json b/global.net10.json index 1d7aa9f4829..26a3d28914a 100644 --- a/global.net10.json +++ b/global.net10.json @@ -8,8 +8,8 @@ "dotnet": "10.0.100" }, "msbuild-sdks": { - "Microsoft.DotNet.Arcade.Sdk": "10.0.0-beta.25604.105", - "Microsoft.DotNet.Helix.Sdk": "10.0.0-beta.25604.105" + "Microsoft.DotNet.Arcade.Sdk": "10.0.0-beta.26376.103", + "Microsoft.DotNet.Helix.Sdk": "10.0.0-beta.26376.103" }, "native-tools": { "python3": "3.7.1" diff --git a/src/scenarios/shared/mauisharedpython.py b/src/scenarios/shared/mauisharedpython.py index 51bacdba11f..f43ac960f00 100644 --- a/src/scenarios/shared/mauisharedpython.py +++ b/src/scenarios/shared/mauisharedpython.py @@ -9,6 +9,11 @@ from shared.precommands import PreCommands from logging import getLogger +STABLE_WORKLOAD_MODE = "stable" + +def use_stable_maui_workload() -> bool: + return os.environ.get("MAUI_WORKLOAD_MODE", "").lower() == STABLE_WORKLOAD_MODE + # Remove the aab files as we don't need them, this saves space in the correlation payload def remove_aab_files(output_dir="."): file_list = os.listdir(output_dir) @@ -412,6 +417,7 @@ class MauiNuGetConfigContext: and dotnet/macios into the repo's NuGet.config. This is necessary because dotnet new doesn't support --configfile parameter. Finds NuGet.config relative to current working directory to support both local and CorrelationStaging scenarios. + The context is a no-op when MAUI_WORKLOAD_MODE selects stable workloads. ''' # Repos whose NuGet.configs are merged into the repo config UPSTREAM_REPOS = ["dotnet/maui", "dotnet/android", "dotnet/macios"] @@ -419,6 +425,7 @@ class MauiNuGetConfigContext: def __init__(self, precommands: PreCommands): self.precommands = precommands self.target_framework = precommands.framework + self.use_stable_maui_workload = use_stable_maui_workload() # Find NuGet.config by walking up from current directory self.repo_nuget_config = self._find_repo_nuget_config() self.backup_path = self.repo_nuget_config + ".maui_backup" @@ -491,6 +498,10 @@ def _merge_sources_from_config(config_path: str, repo_sources: ET.Element, exist return added def __enter__(self): + if self.use_stable_maui_workload: + getLogger().info("Using the latest stable MAUI workload") + return self + getLogger().info("Setting up NuGet.config merge (maui, android, macios)...") config_dir = os.path.dirname(self.repo_nuget_config) @@ -561,6 +572,9 @@ def __enter__(self): return self def __exit__(self, exc_type, exc_val, exc_tb): + if self.use_stable_maui_workload: + return False + getLogger().info("Restoring original NuGet.config...") # Restore the original NuGet.config @@ -586,8 +600,8 @@ def install_latest_maui( workload_name: str = 'maui' ): ''' - Install the latest MAUI workload using the provided feed. - Creates a rollback file and installs the workload using that file. + Install a MAUI workload using either the selected SDK's default manifests or + the latest packages from the provided feed. Args: precommands: PreCommands instance for running dotnet commands. @@ -600,12 +614,19 @@ def install_latest_maui( (e.g., 'maui', 'maui-android'). ''' - getLogger().info(f"########## Installing latest {workload_name} workload ##########") + use_stable = use_stable_maui_workload() + install_kind = "latest stable" if use_stable else "latest" + getLogger().info(f"########## Installing {install_kind} {workload_name} workload ##########") if precommands.has_workload: getLogger().info(f"Skipping {workload_name} installation due to --has-workload=true") return + if use_stable: + precommands.install_workload(workload_name, []) + getLogger().info(f"########## Finished installing latest stable {workload_name} workload ##########") + return + if feed is None: feed = extract_latest_dotnet_feed_from_nuget_config( path=os.path.join(get_repo_root_path(), "NuGet.config")