* Fix artifact match string.
* Completed first attempt for a complete Maui SOD run. Added ios_scenarios tests, setup file copies, uploads, and downloads; and setup perf branch to use as partner testing branch.
* Reset performance-setup.ps1 file to use main perf branch.
* Reenable yml jobs disabled for testing.
runJobTemplate: /eng/pipelines/coreclr/templates/run-scenarios-job.yml
logicalmachine: 'perfpixel4a'
- # run mono iOS scenarios
+ # run mono and maui iOS scenarios
- template: /eng/pipelines/common/platform-matrix.yml
parameters:
jobTemplate: /eng/pipelines/coreclr/templates/perf-job.yml
- Android_x64
- Android_arm
- Android_arm64
+ - MacCatalyst_x64
+ - iOSSimulator_x64
jobParameters:
buildArgs: -s mono+libs+host+packs -c $(_BuildConfig)
nameSuffix: Maui_Packs_Mono
extraStepsTemplate: /eng/pipelines/common/upload-intermediate-artifacts-step.yml
extraStepsParameters:
name: MonoRuntimePacks
- # Eventual platforms to add
- # - MacCatalyst_x64
- # - MacCatalyst_arm64
- # - iOS_arm
- # - iOS_arm64
- # - OSX_x64
- # - OSX_arm64
# build maui app
- template: /eng/pipelines/common/platform-matrix.yml
- Build_Android_arm64_release_Maui_Packs_Mono
- Build_Android_x86_release_Maui_Packs_Mono
- Build_Android_x64_release_Maui_Packs_Mono
+ - Build_MacCatalyst_x64_release_Maui_Packs_Mono
+ - Build_iOSSimulator_x64_release_Maui_Packs_Mono
buildArgs: -s mono -c $(_BuildConfig)
nameSuffix: MACiOSAndroidMaui
isOfficialBuild: false
+ pool:
+ vmImage: 'macos-11'
extraStepsTemplate: /eng/pipelines/coreclr/templates/build-perf-maui-apps.yml
extraStepsParameters:
rootFolder: '$(Build.SourcesDirectory)/artifacts/'
path: $(Build.SourcesDirectory)/MauiTesting/ArtifactPacks
patterns: |
IntermediateArtifacts/MonoRuntimePacks/Shipping/Microsoft.NETCore.App.Runtime.Mono.android-!(*.symbols).nupkg
+ IntermediateArtifacts/MonoRuntimePacks/Shipping/Microsoft.NETCore.App.Runtime.Mono.ios-!(*.symbols).nupkg
+ IntermediateArtifacts/MonoRuntimePacks/Shipping/Microsoft.NETCore.App.Runtime.Mono.iossimulator-!(*.symbols).nupkg
+ IntermediateArtifacts/MonoRuntimePacks/Shipping/Microsoft.NETCore.App.Runtime.Mono.maccatalyst-!(*.symbols).nupkg
# Other artifacts to include once they are being built
- # IntermediateArtifacts/MonoRuntimePacks/Shipping/Microsoft.NETCore.App.Runtime.Mono.ios-*.nupkg
- # IntermediateArtifacts/MonoRuntimePacks/Shipping/Microsoft.NETCore.App.Runtime.Mono.iossimulator-*.nupkg
# IntermediateArtifacts/MonoRuntimePacks/Shipping/Microsoft.NETCore.App.Runtime.Mono.maccatalyst-*.nupkg
- task: CopyFiles@2
destinationFolder: $(Build.SourcesDirectory)/MauiTesting/ArtifactPacks/Microsoft.NETCore.App.Runtime.Mono.android-x64
overwriteExistingFiles: true
cleanDestinationFolder: false
+ - task: ExtractFiles@1
+ displayName: Extract maccatalyst-x64 runtime
+ inputs:
+ archiveFilePatterns: $(Build.SourcesDirectory)/MauiTesting/ArtifactPacks/Microsoft.NETCore.App.Runtime.Mono.maccatalyst-x64.*.zip
+ destinationFolder: $(Build.SourcesDirectory)/MauiTesting/ArtifactPacks/Microsoft.NETCore.App.Runtime.Mono.maccatalyst-x64
+ overwriteExistingFiles: true
+ cleanDestinationFolder: false
+ - task: ExtractFiles@1
+ displayName: Extract iossimulator-x64 runtime
+ inputs:
+ archiveFilePatterns: $(Build.SourcesDirectory)/MauiTesting/ArtifactPacks/Microsoft.NETCore.App.Runtime.Mono.iossimulator-x64.*.zip
+ destinationFolder: $(Build.SourcesDirectory)/MauiTesting/ArtifactPacks/Microsoft.NETCore.App.Runtime.Mono.iossimulator-x64
+ overwriteExistingFiles: true
+ cleanDestinationFolder: false
- script: |
curl -o ./rollback.json 'maui.blob.core.windows.net/metadata/rollbacks/main.json'
displayName: Build MAUI Android
workingDirectory: $(Build.SourcesDirectory)/MauiTesting
+ - script: |
+ chmod -R a+r .
+ ../dotnet.sh publish -bl:MauiiOS.binlog -f net6.0-ios -c Release
+ mv ./bin/Release/net6.0-ios/iossimulator-x64/MauiTesting.app ./MauiiOSDefault.app
+ displayName: Build MAUI iOS
+ workingDirectory: $(Build.SourcesDirectory)/MauiTesting
+
+ - script: |
+ chmod -R a+r .
+ ../dotnet.sh publish -bl:MauiMacCatalyst.binlog -f net6.0-maccatalyst -c Release
+ mv ./bin/Release/net6.0-maccatalyst/maccatalyst-x64/MauiTesting.app ./MauiMacCatalystDefault.app
+ displayName: Build MAUI MacCatalyst
+ workingDirectory: $(Build.SourcesDirectory)/MauiTesting
+
- task: PublishBuildArtifacts@1
displayName: 'Publish MauiAndroid binlog'
inputs:
pathtoPublish: $(Build.SourcesDirectory)/MauiTesting/MauiAndroid.binlog
artifactName: ${{ parameters.artifactName }}
+ - task: PublishBuildArtifacts@1
+ displayName: 'Publish MauiiOS binlog'
+ inputs:
+ pathtoPublish: $(Build.SourcesDirectory)/MauiTesting/MauiiOS.binlog
+ artifactName: ${{ parameters.artifactName }}
+
+ - task: PublishBuildArtifacts@1
+ displayName: 'Publish MauiMacCatalyst binlog'
+ inputs:
+ pathtoPublish: $(Build.SourcesDirectory)/MauiTesting/MauiMacCatalyst.binlog
+ artifactName: ${{ parameters.artifactName }}
+
- template: /eng/pipelines/common/upload-artifact-step.yml
parameters:
rootFolder: $(Build.SourcesDirectory)/MauiTesting/MauiAndroidDefault.apk
archiveType: tar
tarCompression: gz
+ - template: /eng/pipelines/common/upload-artifact-step.yml
+ parameters:
+ rootFolder: $(Build.SourcesDirectory)/MauiTesting/MauiiOSDefault.app
+ includeRootFolder: true
+ displayName: Maui iOS App
+ artifactName: MauiiOSDefault
+ archiveExtension: '.tar.gz'
+ archiveType: tar
+ tarCompression: gz
+
+ - template: /eng/pipelines/common/upload-artifact-step.yml
+ parameters:
+ rootFolder: $(Build.SourcesDirectory)/MauiTesting/MauiMacCatalystDefault.app
+ includeRootFolder: true
+ displayName: Maui MacCatalyst App
+ artifactName: MauiMacCatalystDefault
+ archiveExtension: '.tar.gz'
+ archiveType: tar
+ tarCompression: gz
+
- script: rm -r -f ./bin
workingDirectory: $(Build.SourcesDirectory)/MauiTesting
displayName: Clean bin directory
archiveExtension: ${{ parameters.archiveExtension }}
archiveType: ${{ parameters.archiveType }}
tarCompression: ${{ parameters.tarCompression }}
-
\ No newline at end of file
- ${{ 'Build_iOS_arm64_release_MACiOSAndroidMaui' }}
- ${{ if eq(parameters.runtimeType, 'iOSMono')}}:
- ${{ 'build_iOS_arm64_release_iOSMono' }}
+ - ${{ 'Build_iOS_arm64_release_MACiOSAndroidMaui' }}
${{ if and(eq(parameters.osGroup, 'windows'), not(in(parameters.runtimeType, 'AndroidMono', 'iOSMono'))) }}:
${{ if eq(parameters.runtimeType, 'mono') }}:
- script: "mkdir -p $(librariesDownloadDir)/bin/aot/sgen;mkdir -p $(librariesDownloadDir)/bin/aot/pack;cp -r $(librariesDownloadDir)/LinuxMonoAOT/artifacts/obj/mono/Linux.${{ parameters.archType }}.Release/mono/* $(librariesDownloadDir)/bin/aot/sgen;cp -r $(librariesDownloadDir)/LinuxMonoAOT/artifacts/bin/microsoft.netcore.app.runtime.linux-${{ parameters.archType }}/Release/* $(librariesDownloadDir)/bin/aot/pack"
displayName: "Create aot directory (Linux)"
- # Download AndroidMono
+ # Download AndroidMono and MauiAndroid
- ${{ if eq(parameters.runtimeType, 'AndroidMono')}}:
- template: /eng/pipelines/common/download-artifact-step.yml
parameters:
displayName: 'Maui Android App'
- # Download iOSMono tests
+ # Download iOSMono tests and MauiiOS/MacCatalyst
- ${{ if eq(parameters.runtimeType, 'iOSMono') }}:
- template: /eng/pipelines/common/download-artifact-step.yml
parameters:
artifactFileName: 'iOSSampleAppLLVM.tar.gz'
artifactName: 'iOSSampleAppLLVM'
displayName: 'iOS Sample App LLVM'
+ - template: /eng/pipelines/common/download-artifact-step.yml
+ parameters:
+ unpackFolder: $(Build.SourcesDirectory)/MauiiOSDefault
+ cleanUnpackFolder: false
+ artifactFileName: 'MauiiOSDefault.tar.gz'
+ artifactName: 'MauiiOSDefault'
+ displayName: 'Maui iOS App'
+ - template: /eng/pipelines/common/download-artifact-step.yml
+ parameters:
+ unpackFolder: $(Build.SourcesDirectory)/MauiMacCatalystDefault
+ cleanUnpackFolder: false
+ artifactFileName: 'MauiMacCatalystDefault.tar.gz'
+ artifactName: 'MauiMacCatalystDefault'
+ displayName: 'Maui MacCatalyst App'
# Create Core_Root
- script: $(Build.SourcesDirectory)/src/tests/build$(scriptExt) $(buildConfig) $(archType) generatelayoutonly $(librariesOverrideArg)
<Command>$(Python) test.py sod --scenario-name "%(Identity)"</Command>
<PostCommands>$(Python) post.py</PostCommands>
</HelixWorkItem>
+ <HelixWorkItem Include="SOD - Maui iOS .app Size" Condition="'$(iOSLlvmBuild)' == 'False'">
+ <PayloadDirectory>$(WorkItemDirectory)</PayloadDirectory>
+ <PreCommands>cd $(ScenarioDirectory)mauiios;xcopy %HELIX_CORRELATION_PAYLOAD%\MauiiOSDefault .\app\/e;$(Python) pre.py</PreCommands>
+ <Command>$(Python) test.py sod --scenario-name "%(Identity)"</Command>
+ <PostCommands>$(Python) post.py</PostCommands>
+ </HelixWorkItem>
+ <HelixWorkItem Include="SOD - Maui MacCatalyst .app Size" Condition="'$(iOSLlvmBuild)' == 'False'">
+ <PayloadDirectory>$(WorkItemDirectory)</PayloadDirectory>
+ <PreCommands>cd $(ScenarioDirectory)mauiios;xcopy %HELIX_CORRELATION_PAYLOAD%\MauiMacCatalystDefault .\app\/e;$(Python) pre.py</PreCommands>
+ <Command>$(Python) test.py sod --scenario-name "%(Identity)"</Command>
+ <PostCommands>$(Python) post.py</PostCommands>
+ </HelixWorkItem>
</ItemGroup>
-</Project>
\ No newline at end of file
+</Project>
Copy-Item -path "$SourceDirectory\iosHelloWorld\llvm" $PayloadDirectory\iosHelloWorld\llvm -Recurse
} else {
Copy-Item -path "$SourceDirectory\iosHelloWorld\nollvm" $PayloadDirectory\iosHelloWorld\nollvm -Recurse
+ Copy-Item -path "$SourceDirectory\MauiiOSDefault" $PayloadDirectory\MauiiOSDefault -Recurse
+ Copy-Item -path "$SourceDirectory\MauiMacCatalystDefault" $PayloadDirectory\MauiMacCatalystDefault -Recurse
}
$SetupArguments = $SetupArguments -replace $Architecture, 'arm64'
Write-PipelineSetVariable -Name 'HelixSourcePrefix' -Value "$HelixSourcePrefix" -IsMultiJobVariable $false
Write-PipelineSetVariable -Name '_BuildConfig' -Value "$Architecture.$Kind.$Framework" -IsMultiJobVariable $false
-exit 0
\ No newline at end of file
+exit 0
Condition="'%(ResolvedRuntimePack.FrameworkName)' == 'Microsoft.NETCore.App' and '%(ResolvedRuntimePack.RuntimeIdentifier)' == 'android-x86'" />
<ResolvedRuntimePack PackageDirectory="$(MicrosoftNetCoreAppRuntimePackDir)/Microsoft.NETCore.App.Runtime.Mono.android-x64"
Condition="'%(ResolvedRuntimePack.FrameworkName)' == 'Microsoft.NETCore.App' and '%(ResolvedRuntimePack.RuntimeIdentifier)' == 'android-x64'" />
+ <ResolvedRuntimePack PackageDirectory="$(MicrosoftNetCoreAppRuntimePackDir)/Microsoft.NETCore.App.Runtime.Mono.maccatalyst-x64"
+ Condition="'%(ResolvedRuntimePack.FrameworkName)' == 'Microsoft.NETCore.App' and '%(ResolvedRuntimePack.RuntimeIdentifier)' == 'maccatalyst-x64'" />
+ <ResolvedRuntimePack PackageDirectory="$(MicrosoftNetCoreAppRuntimePackDir)/Microsoft.NETCore.App.Runtime.Mono.iossimulator-x64"
+ Condition="'%(ResolvedRuntimePack.FrameworkName)' == 'Microsoft.NETCore.App' and '%(ResolvedRuntimePack.RuntimeIdentifier)' == 'iossimulator-x64'" />
</ItemGroup>
</Target>
</Project>