-
Notifications
You must be signed in to change notification settings - Fork 4.8k
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
Bring up full library test CI runs on iOS / tvOS devices #59503
Conversation
See if zipping each test app first results in not running out of disk space. Changed cleanup steps after each test is built to maximize space utilization.
Tagging subscribers to this area: @Anipik, @safern, @ViktorHofer Issue DetailsThis change enables device runs on CI by building each test app on the helix instance it was deployed to. In past attempts, we looked at enhancing what takes place on the build machine via build tricks, compressing / cleaning up files early, etc and we could not overcome the need for excessively long timeouts and far more disk space. The change also adopts the patterns established in the wasm test build, giving us the opportunity to support different scenario runs as well as workloads testing in the future. Once the test runs turn green, we'll update the yml to only run the configurations on the rolling build.
|
What the change also supports is being able to build and run fullaot on any of the other apple configurations. MacCatalyst being the other one we want to run, but up until this point haven't been able to. |
This change enables device runs on CI by building each test app on the helix instance it was deployed to. In past attempts, we looked at enhancing the build step only via build tricks, compressing / cleaning up files early, etc and we could not overcome the need for excessively long timeouts and far more disk space. The change also adopts the patterns established in the wasm test build, giving us the opportunity to support different scenario runs as well as workloads testing in the future.
785bb9c
to
f7bb825
Compare
src/libraries/sendtohelixhelp.proj
Outdated
@@ -87,6 +91,12 @@ | |||
<HelixPostCommand Include="taskkill.exe /f /im corerun.exe"/> | |||
</ItemGroup> | |||
|
|||
<ItemGroup Condition="'$(TargetOS)' == 'iOS' or '$(TargetOS)' == 'iOSSimulator'"> |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Is it for iOS only for now?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
No, is good for both. Should include tvOS and tvOSSimulator as well
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Should it be added in this PR?
@steveisok if it's the same to you, let's start with tvOS rather than iOS. We just have way more devices there. Or if iOS is more important, I'd prefer to do both to be honest. Let's start getting data and see how the tests go and we can start working on infrastructural issues |
In an effort to better utilize CI resources, this change will only run the System.Runtime library test per PR for Android and Wasm configurations. The full libraries and runtime tests will move to only run on the post-PR validation pipeline. Note: iOS/tvOS/MacCatalyst are excluded until dotnet#59503 lands
Nice! The job was 32 hours of work but done within an hour, this is feasible for a rolling build! |
src/libraries/System.Net.NetworkInformation/tests/FunctionalTests/IPGlobalPropertiesTest.cs
Show resolved
Hide resolved
src/libraries/sendtohelixhelp.proj
Outdated
@@ -87,6 +91,12 @@ | |||
<HelixPostCommand Include="taskkill.exe /f /im corerun.exe"/> | |||
</ItemGroup> | |||
|
|||
<ItemGroup Condition="'$(TargetOS)' == 'iOS' or '$(TargetOS)' == 'iOSSimulator'"> |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Should it be added in this PR?
<UsingTask TaskName="MonoAOTCompiler" AssemblyFile="$(MonoAOTCompilerTasksAssemblyPath)" /> | ||
<UsingTask TaskName="RuntimeConfigParserTask" AssemblyFile="$(MonoTargetsTasksAssemblyPath)" /> | ||
|
||
<!-- TODO: this breaks runtime tests on Helix due to the file not being there for some reason. Once this is fixed we can remove the UpdateRuntimePack target here --> |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Should we get an issue to track this?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Good question. There may be already. Will look
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
we should file an issue for this if it doesn't exist.
@akoeplinger Please give this a review when you have a moment. |
…60727) In an effort to better utilize CI resources, this change will only run the System.Runtime library test per PR for Android and Wasm configurations. The full libraries and runtime tests will move to only run on the post-PR validation pipeline. The summary of changes are: - System.Runtime tests will only trigger per PR for Android x86/x64 and Wasm AOT / EAT - All mono runtime builds will only run on the post PR validation build (rolling build) - WasmBuildTests will only run on the post PR validation build (rolling build) - Wasm on Windows will only build Note: iOS/tvOS/MacCatalyst are excluded until #59503 lands
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Left a few comments but looks great overall :)
<ResolvedFileToPublish TrimMode="$(TrimMode)" /> | ||
|
||
<!-- Don't trim the main assembly. | ||
TrimMode="" is needed so the root assemblies are correctly identified --> | ||
<ResolvedFileToPublish TrimMode="" Condition="'%(FileName)' == '$(AssemblyName)'" /> | ||
|
||
<!-- TODO: find out why these assemblies aren't copied by copyused even though they're referenced --> | ||
<ResolvedFileToPublish TrimMode="Copy" Condition="'$(EnableSoftTrimming)' == 'true' and '%(FileName)' == 'System.ComponentModel.EventBasedAsync'" /> |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
looks like this is still unaddressed, we should have a tracking issue for it
src/libraries/Common/tests/TestUtilities/System/PlatformDetection.cs
Outdated
Show resolved
Hide resolved
src/libraries/System.ComponentModel.TypeConverter/tests/CustomTypeDescriptorTests.cs
Outdated
Show resolved
Hide resolved
src/libraries/System.ComponentModel.TypeConverter/tests/TypeDescriptionProviderTests.cs
Outdated
Show resolved
Hide resolved
src/libraries/System.Net.NetworkInformation/tests/FunctionalTests/IPGlobalPropertiesTest.cs
Show resolved
Hide resolved
src/libraries/System.Private.Xml/tests/Xslt/XslTransformApi/XSLTransform.cs
Outdated
Show resolved
Hide resolved
src/libraries/System.Runtime.Loader/tests/System.Runtime.Loader.Tests.csproj
Show resolved
Hide resolved
<UsingTask TaskName="MonoAOTCompiler" AssemblyFile="$(MonoAOTCompilerTasksAssemblyPath)" /> | ||
<UsingTask TaskName="RuntimeConfigParserTask" AssemblyFile="$(MonoTargetsTasksAssemblyPath)" /> | ||
|
||
<!-- TODO: this breaks runtime tests on Helix due to the file not being there for some reason. Once this is fixed we can remove the UpdateRuntimePack target here --> |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
we should file an issue for this if it doesn't exist.
I'll add the issues and reference them in a separate PR. |
This change enables device runs on CI by building each test app on the helix instance it was deployed to. In past attempts, we looked at enhancing what takes place on the build machine via build tricks, compressing / cleaning up files early, etc and we could not overcome the need for excessively long timeouts and far more disk space.
The change also adopts the patterns established in the wasm test build, giving us the opportunity to support different scenario runs as well as workloads testing in the future.
Once the test runs turn green, we'll update the yml to only run the configurations on the rolling build.