Skip to content

Commit 4b96381

Browse files
committed
Test Xcode provision
1 parent 3d304ab commit 4b96381

File tree

4 files changed

+36
-1
lines changed

4 files changed

+36
-1
lines changed

eng/performance/maui_scenarios_ios.proj

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,10 @@
1515

1616
<_MSBuildArgs Condition="'$(RuntimeFlavor)' == 'mono'">/p:UseMonoRuntime=true</_MSBuildArgs>
1717
<_MSBuildArgs Condition="'$(RuntimeFlavor)' == 'coreclr'">/p:UseMonoRuntime=false</_MSBuildArgs>
18+
19+
<!-- Xcode version for xcode-select, can be overridden via environment variable -->
20+
<XcodeVersion Condition="'$(XcodeVersion)' == ''">26.1.0</XcodeVersion>
21+
<XcodeAppPath>/Applications/Xcode_$(XcodeVersion).app</XcodeAppPath>
1822
</PropertyGroup>
1923

2024
<Target Name="RemoveDotnetFromCorrelationStaging" BeforeTargets="BeforeTest">
@@ -51,7 +55,7 @@
5155

5256
<ItemGroup>
5357
<PreparePayloadWorkItem Include="@(MAUIiOSScenario)">
54-
<Command>sudo xcode-select -s /Applications/Xcode_26.0.1.app; $(Python) pre.py publish -f $(PERFLAB_Framework)-ios --self-contained -c Release -r ios-arm64 $(NativeAOTCommandProps) --binlog $(PreparePayloadWorkItemBaseDirectory)%(PreparePayloadWorkItem.ScenarioDirectoryName)/%(PreparePayloadWorkItem.ScenarioDirectoryName).binlog -o $(PreparePayloadWorkItemBaseDirectory)%(PreparePayloadWorkItem.ScenarioDirectoryName); cd ../; zip -r %(PreparePayloadWorkItem.ScenarioDirectoryName).zip %(PreparePayloadWorkItem.ScenarioDirectoryName)</Command>
58+
<Command>sudo xcode-select -s $(XcodeAppPath); $(Python) pre.py publish -f $(PERFLAB_Framework)-ios --self-contained -c Release -r ios-arm64 $(NativeAOTCommandProps) --binlog $(PreparePayloadWorkItemBaseDirectory)%(PreparePayloadWorkItem.ScenarioDirectoryName)/%(PreparePayloadWorkItem.ScenarioDirectoryName).binlog -o $(PreparePayloadWorkItemBaseDirectory)%(PreparePayloadWorkItem.ScenarioDirectoryName); cd ../; zip -r %(PreparePayloadWorkItem.ScenarioDirectoryName).zip %(PreparePayloadWorkItem.ScenarioDirectoryName)</Command>
5559
<WorkingDirectory>%(PreparePayloadWorkItem.PayloadDirectory)</WorkingDirectory>
5660
</PreparePayloadWorkItem>
5761
</ItemGroup>

eng/pipelines/sdk-perf-jobs.yml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -504,6 +504,8 @@ jobs:
504504
runtimeFlavor: mono
505505
codeGenType: FullAOT
506506
additionalJobIdentifier: Mono
507+
provisionXcode: true
508+
xcodeVersion: '26.1.0'
507509
${{ each parameter in parameters.jobParameters }}:
508510
${{ parameter.key }}: ${{ parameter.value }}
509511

@@ -522,6 +524,8 @@ jobs:
522524
runtimeFlavor: coreclr
523525
codeGenType: Interpreter
524526
additionalJobIdentifier: CoreCLR
527+
provisionXcode: true
528+
xcodeVersion: '26.1.0'
525529
${{ each parameter in parameters.jobParameters }}:
526530
${{ parameter.key }}: ${{ parameter.value }}
527531

@@ -540,6 +544,8 @@ jobs:
540544
runtimeFlavor: coreclr
541545
codeGenType: NativeAOT
542546
additionalJobIdentifier: CoreCLR
547+
provisionXcode: true
548+
xcodeVersion: '26.1.0'
543549
${{ each parameter in parameters.jobParameters }}:
544550
${{ parameter.key }}: ${{ parameter.value }}
545551

eng/pipelines/templates/run-performance-job.yml

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,8 @@ parameters:
5454
javascriptEngine: '' # optional -- JavaScript engine to use
5555
iOSLlvmBuild: false # optional -- Whether to build iOS with LLVM
5656
iOSStripSymbols: true # optional -- Whether to strip symbols from the iOS build
57+
provisionXcode: false # optional -- Whether to provision Xcode using Provisionator (for iOS scenarios)
58+
xcodeVersion: '' # optional -- Xcode version to provision (e.g., '26.1.0')
5759
additionalSetupParameters: '' # optional -- Additional arguments to pass to the script
5860
liveLibrariesBuildConfig: '' # optional -- Build configuration when generating Core_Root for libraries
5961
crossBuild: false # optional -- Whether the Core_Root is being cross-compiled
@@ -143,6 +145,16 @@ jobs:
143145
fetchDepth: ${{ parameters.checkoutFetchDepth }}
144146
- ${{ each step in parameters.steps }}:
145147
- ${{ step }}
148+
# Provision Xcode for iOS scenarios using Provisionator
149+
- ${{ if and(eq(parameters.provisionXcode, true), ne(parameters.xcodeVersion, '')) }}:
150+
- task: provisionator@2
151+
displayName: 'Provision Xcode ${{ parameters.xcodeVersion }}'
152+
inputs:
153+
provisioning_script: $(performanceRepoDir)/eng/provisioning/xcode.csx
154+
provisioning_extra_args: '-vvvv'
155+
env:
156+
REQUIRED_XCODE_VERSION: ${{ parameters.xcodeVersion }}
157+
GITHUB_TOKEN: $(GitHub.Token)
146158
- ${{ if and(ne(variables['System.TeamProject'], 'public'), notin(variables['Build.Reason'], 'PullRequest'), eq(parameters.downloadPdn, true)) }}:
147159
- task: AzureCLI@2
148160
displayName: 'Download PDN'
@@ -237,6 +249,9 @@ jobs:
237249
parameters:
238250
osGroup: ${{ parameters.osGroup }}
239251
projectFile: $(_projectFile)
252+
${{ if ne(parameters.xcodeVersion, '') }}:
253+
environment:
254+
XcodeVersion: ${{ parameters.xcodeVersion }}
240255
- ${{ if eq(parameters.osGroup, 'windows') }}:
241256
- task: PowerShell@2
242257
displayName: Redact Logs

eng/provisioning/xcode.csx

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
// Xcode provisioning script for performance scenarios
2+
// This script is used by Provisionator to install the required Xcode version
3+
4+
// Read the desired Xcode version from environment variable or use default
5+
var xcodeVersion = Environment.GetEnvironmentVariable("REQUIRED_XCODE_VERSION") ?? "26.1.0";
6+
7+
Console.WriteLine($"Desired Xcode: {xcodeVersion}");
8+
9+
// Install Xcode using Provisionator
10+
Item("Xcode", xcodeVersion);

0 commit comments

Comments
 (0)