Skip to content

[DRAFT][PERF][MAUI] Add startup time and size mesauresments for dotnet-podcast app #65398

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Closed
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
53 commits
Select commit Hold shift + click to select a range
92f1bf9
Maui Android Size on Disk Integration (#60425)
LoopedBard3 Oct 19, 2021
b30e1ac
Maui File location and target runtime updates (#60784)
LoopedBard3 Oct 22, 2021
e26f37b
Mitigate NU1103 Error showing up during Maui Builds (#60946)
LoopedBard3 Oct 28, 2021
22cc5af
Add Maui iOS and MacCatalyst build steps (#61068)
LoopedBard3 Nov 2, 2021
bd759e4
Add Runtime portion of android startup scenario (#61861)
LoopedBard3 Dec 8, 2021
8f714c2
Set branch for pull back testing.
LoopedBard3 Jan 28, 2022
f530206
Add Android Maui Startup testing (#64121)
LoopedBard3 Jan 31, 2022
53eeda3
Update Maui Workload Install Process for Perf (#64692)
LoopedBard3 Feb 3, 2022
62e2993
Minimize current tests being run to focus change area.
LoopedBard3 Feb 3, 2022
a068ad5
Accidently removed android and ios mono building.
LoopedBard3 Feb 3, 2022
5ead40e
Reactivate all tests for a full run through.
LoopedBard3 Feb 3, 2022
0cc0953
Maui Android Size on Disk Integration (#60425)
LoopedBard3 Oct 19, 2021
90e178d
Maui File location and target runtime updates (#60784)
LoopedBard3 Oct 22, 2021
bbb3332
Mitigate NU1103 Error showing up during Maui Builds (#60946)
LoopedBard3 Oct 28, 2021
11a2055
Add Maui iOS and MacCatalyst build steps (#61068)
LoopedBard3 Nov 2, 2021
2f1bb7e
Add Runtime portion of android startup scenario (#61861)
LoopedBard3 Dec 8, 2021
6933d90
Update Maui Workload Install Process for Perf (#64692)
LoopedBard3 Feb 3, 2022
c4acb2a
Minimize current tests being run to focus change area.
LoopedBard3 Feb 3, 2022
6ef28e4
Accidently removed android and ios mono building.
LoopedBard3 Feb 3, 2022
34ac687
Reactivate all tests for a full run through.
LoopedBard3 Feb 3, 2022
8218504
Rebased to latest release6.0 to check if a merge will actually be suc…
LoopedBard3 Feb 3, 2022
1f7e831
Test a full run with rebased runtime and perf.
LoopedBard3 Feb 4, 2022
7913f4b
Update the path from 6.0.0 to 6.0.3.
LoopedBard3 Feb 4, 2022
e25bcaa
Maui Android Size on Disk Integration (#60425)
LoopedBard3 Oct 19, 2021
724f90a
Maui File location and target runtime updates (#60784)
LoopedBard3 Oct 22, 2021
95f289e
Minimize current tests being run to focus change area.
LoopedBard3 Feb 3, 2022
4874575
Accidently removed android and ios mono building.
LoopedBard3 Feb 3, 2022
7d32035
Reactivate all tests for a full run through.
LoopedBard3 Feb 3, 2022
666a5de
Minimize current tests being run to focus change area.
LoopedBard3 Feb 3, 2022
63448cb
Accidently removed android and ios mono building.
LoopedBard3 Feb 3, 2022
87a2ee8
Reactivate all tests for a full run through.
LoopedBard3 Feb 3, 2022
9a6bfa8
Rebased to latest release6.0 to check if a merge will actually be suc…
LoopedBard3 Feb 3, 2022
c39c819
Test a full run with rebased runtime and perf.
LoopedBard3 Feb 4, 2022
910c989
Merge general/main update in progress to release6.0.
LoopedBard3 Feb 7, 2022
e4aa6ea
Reenable full perf pipeline.
LoopedBard3 Feb 9, 2022
2b8667a
Set perf setup branch to be release/6.0.
LoopedBard3 Feb 9, 2022
bea2d88
Add Maui and Mono scenario pipeline stuff to the scheduled flow and s…
LoopedBard3 Feb 10, 2022
10a3ef7
Setup clone repo for full test post rebase.
LoopedBard3 Feb 10, 2022
86b1998
Setup PR to use release/6.0 branch as it should be.
LoopedBard3 Feb 11, 2022
f44072d
Try to do dotnet-podcast.
Feb 15, 2022
5d15369
Changed perf.yml
Feb 15, 2022
018d420
Updated path to project.
Feb 16, 2022
f243adc
Debugging, added .
Feb 17, 2022
ca78b2e
Changed path.
Feb 17, 2022
30b2209
Changed working directory.
Feb 17, 2022
151c738
Removed a bunch of stuff for faster iteration.
Feb 17, 2022
5fa598e
Removed more stuff from perf.yml
Feb 18, 2022
4070033
Added missing s.
Feb 18, 2022
18a0773
Removed more extra stuff from perf.yml
Feb 18, 2022
a19989c
Added project.
Feb 18, 2022
7b080db
Changed to my fork.
Feb 22, 2022
d656283
Switched to http version of repo.
Feb 22, 2022
dd56743
Remove --from-rollback-file https://aka.ms/dotnet/maui/main.json
Feb 23, 2022
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
371 changes: 138 additions & 233 deletions eng/pipelines/coreclr/perf.yml

Large diffs are not rendered by default.

224 changes: 224 additions & 0 deletions eng/pipelines/coreclr/templates/build-perf-maui-apps.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,224 @@
parameters:
osGroup: ''
osSubgroup: ''
archType: ''
buildConfig: ''
runtimeFlavor: ''
helixQueues: ''
targetRid: ''
nameSuffix: ''
platform: ''
shouldContinueOnError: ''
rootFolder: ''
includeRootFolder: ''
displayName: ''
artifactName: ''
archiveExtension: ''
archiveType: ''
tarCompression: ''


steps:
- task: DownloadPipelineArtifact@2
displayName: Download runtime packages
inputs:
artifact: 'IntermediateArtifacts'
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
# EX. IntermediateArtifacts/MonoRuntimePacks/Shipping/Microsoft.NETCore.App.Runtime.Mono.maccatalyst-*.nupkg

- task: CopyFiles@2
displayName: Flatten packages
inputs:
sourceFolder: $(Build.SourcesDirectory)/MauiTesting/ArtifactPacks
contents: '*/Shipping/*.nupkg'
cleanTargetFolder: false
targetFolder: $(Build.SourcesDirectory)/MauiTesting/ArtifactPacks
flattenFolders: true

- script: |
for file in *.nupkg
do
mv -v "$file" "${file%.nupkg}.zip"
done
displayName: Change nupkgs to zips
workingDirectory: $(Build.SourcesDirectory)/MauiTesting/ArtifactPacks


#Unzip the nuget packages to make the actual runtimes accessible
- task: ExtractFiles@1
displayName: Extract android-arm runtime
inputs:
archiveFilePatterns: $(Build.SourcesDirectory)/MauiTesting/ArtifactPacks/Microsoft.NETCore.App.Runtime.Mono.android-arm.*.zip
destinationFolder: $(Build.SourcesDirectory)/MauiTesting/ArtifactPacks/Microsoft.NETCore.App.Runtime.Mono.android-arm
overwriteExistingFiles: true
cleanDestinationFolder: false
- task: ExtractFiles@1
displayName: Extract android-arm64 runtime
inputs:
archiveFilePatterns: $(Build.SourcesDirectory)/MauiTesting/ArtifactPacks/Microsoft.NETCore.App.Runtime.Mono.android-arm64.*.zip
destinationFolder: $(Build.SourcesDirectory)/MauiTesting/ArtifactPacks/Microsoft.NETCore.App.Runtime.Mono.android-arm64
overwriteExistingFiles: true
cleanDestinationFolder: false
- task: ExtractFiles@1
displayName: Extract android-x86 runtime
inputs:
archiveFilePatterns: $(Build.SourcesDirectory)/MauiTesting/ArtifactPacks/Microsoft.NETCore.App.Runtime.Mono.android-x86.*.zip
destinationFolder: $(Build.SourcesDirectory)/MauiTesting/ArtifactPacks/Microsoft.NETCore.App.Runtime.Mono.android-x86
overwriteExistingFiles: true
cleanDestinationFolder: false
- task: ExtractFiles@1
displayName: Extract android-x64 runtime
inputs:
archiveFilePatterns: $(Build.SourcesDirectory)/MauiTesting/ArtifactPacks/Microsoft.NETCore.App.Runtime.Mono.android-x64.*.zip
destinationFolder: $(Build.SourcesDirectory)/MauiTesting/ArtifactPacks/Microsoft.NETCore.App.Runtime.Mono.android-x64
overwriteExistingFiles: true
cleanDestinationFolder: false
- task: ExtractFiles@1
displayName: Extract ios-arm runtime
inputs:
archiveFilePatterns: $(Build.SourcesDirectory)/MauiTesting/ArtifactPacks/Microsoft.NETCore.App.Runtime.Mono.ios-arm.*.zip
destinationFolder: $(Build.SourcesDirectory)/MauiTesting/ArtifactPacks/Microsoft.NETCore.App.Runtime.Mono.ios-arm
overwriteExistingFiles: true
cleanDestinationFolder: false
- task: ExtractFiles@1
displayName: Extract ios-arm64 runtime
inputs:
archiveFilePatterns: $(Build.SourcesDirectory)/MauiTesting/ArtifactPacks/Microsoft.NETCore.App.Runtime.Mono.ios-arm64.*.zip
destinationFolder: $(Build.SourcesDirectory)/MauiTesting/ArtifactPacks/Microsoft.NETCore.App.Runtime.Mono.ios-arm64
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 dotnet-install.sh 'https://dotnet.microsoft.com/download/dotnet/scripts/v1/dotnet-install.sh'
chmod -R a+rx .
./dotnet-install.sh --channel 6.0.2xx --quality daily --install-dir .
./dotnet --info
./dotnet workload install maui --from-rollback-file https://aka.ms/dotnet/maui/main.json --source https://aka.ms/dotnet6/nuget/index.json --source https://api.nuget.org/v3/index.json
displayName: Install MAUI workload
workingDirectory: $(Build.SourcesDirectory)

- script: |
./dotnet new maui -n MauiTesting
cd MauiTesting
cp $(Build.SourcesDirectory)/src/tests/Common/maui/MauiScenario.props ./Directory.Build.props
cp $(Build.SourcesDirectory)/src/tests/Common/maui/MauiScenario.targets ./Directory.Build.targets
displayName: Setup MAUI Project
workingDirectory: $(Build.SourcesDirectory)

- script: |
chmod -R a+r .
../dotnet publish -bl:MauiAndroid.binlog -f net6.0-android -c Release
mv ./bin/Release/net6.0-android/com.companyname.mauitesting-Signed.apk ./MauiAndroidDefault.apk
displayName: Build MAUI Android
workingDirectory: $(Build.SourcesDirectory)/MauiTesting

- script: |
chmod -R a+r .
../dotnet build -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 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'
condition: always()
inputs:
pathtoPublish: $(Build.SourcesDirectory)/MauiTesting/MauiAndroid.binlog
artifactName: ${{ parameters.artifactName }}

- task: PublishBuildArtifacts@1
displayName: 'Publish MauiiOS binlog'
condition: always()
inputs:
pathtoPublish: $(Build.SourcesDirectory)/MauiTesting/MauiiOS.binlog
artifactName: ${{ parameters.artifactName }}

- task: PublishBuildArtifacts@1
displayName: 'Publish MauiMacCatalyst binlog'
condition: always()
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
includeRootFolder: true
displayName: Maui Android App
artifactName: MauiAndroidApp
archiveExtension: '.tar.gz'
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
condition: succeededOrFailed()

- template: /eng/pipelines/common/upload-artifact-step.yml
parameters:
osGroup: ${{ parameters.osGroup }}
osSubgroup: ${{ parameters.osSubgroup }}
archType: ${{ parameters.archType }}
buildConfig: ${{ parameters.buildConfig }}
runtimeFlavor: ${{ parameters.runtimeFlavor }}
helixQueues: ${{ parameters.helixQueues }}
targetRid: ${{ parameters.targetRid }}
nameSuffix: ${{ parameters.nameSuffix }}
platform: ${{ parameters.platform }}
shouldContinueOnError: ${{ parameters.shouldContinueOnError }}
rootFolder: ${{ parameters.rootFolder }}
includeRootFolder: ${{ parameters.includeRootFolder }}
displayName: ${{ parameters.displayName }}
artifactName: ${{ parameters.artifactName }}
archiveExtension: ${{ parameters.archiveExtension }}
archiveType: ${{ parameters.archiveType }}
tarCompression: ${{ parameters.tarCompression }}
Loading