Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
43 changes: 43 additions & 0 deletions eng/pipelines/sdk-perf-jobs.yml
Original file line number Diff line number Diff line change
Expand Up @@ -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 }}:
Comment thread
matouskozak marked this conversation as resolved.
${{ parameter.key }}: ${{ parameter.value }}

# Maui Android scenario benchmarks (CoreCLR Full R2R) - Release
- template: /eng/pipelines/templates/build-machine-matrix.yml
parameters:
Expand Down Expand Up @@ -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:
Expand Down
4 changes: 2 additions & 2 deletions global.net10.json
Original file line number Diff line number Diff line change
Expand Up @@ -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"
Expand Down
27 changes: 24 additions & 3 deletions src/scenarios/shared/mauisharedpython.py
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Expand Down Expand Up @@ -412,13 +417,15 @@ 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"]

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"
Expand Down Expand Up @@ -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
Comment thread
matouskozak marked this conversation as resolved.

getLogger().info("Setting up NuGet.config merge (maui, android, macios)...")

config_dir = os.path.dirname(self.repo_nuget_config)
Expand Down Expand Up @@ -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
Expand All @@ -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.
Expand All @@ -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")
Expand Down