-
Notifications
You must be signed in to change notification settings - Fork 5.3k
Build coreclr targetGeneric tests separately for CI #34790
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
Conversation
|
Tagging @ViktorHofer as an area owner |
|
Will be able to take a look tomorrow morning. |
|
I am waiting on a review on this before investing more in this.
Is this the correct approach? |
|
To test this in CI, you need to change the |
d54ee5f to
b008eb3
Compare
|
The Windows tests runs are failing because they are trying to download |
|
Hmm, that is annoying. I recall that @jashook mentioned some limitations regarding what compression tools are available on the various build machines; I guess we need to figure out whether it's easier to use zip on OSX or tar.gz on Windows. |
|
Looks like I have some control, if I chose to not use the default. |
d28b60a to
77e3cab
Compare
|
Tests are now running. A lot of them are COM Interop tests. I would guess they should be marked There were also Libraries test run failures (some on one Mono leg, and some on one CoreCLR leg). It is not clear to me whether these are related failures or not. I will assume not until I clean up the CoreCLR test legs. |
|
The PR was clean last night. So this change is now ready for review. edit... |
+ Build coreclr targetGeneric tests separately for CI + Build coreclr targetGeneric tests separately in runtime.yml + Distinguish generic build based on Libraries config + Build OSX release libraries when CoreCLR changed + Always use tar.gz compression for generic tests
trylek
left a comment
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.
Thanks Steve, this looks like a solid step forward but I believe a few things are still missing:
-
At the bottom of your "PR conversation" I see that your
runtimepipeline didn't even start. I believe this is due to incorrect handling oftestPriorityin the two templates (build-test-job, run-test-job) as I described in another review comment. -
I suspect we're missing an execution of
build-testinrun-test-jobto build the target-specific tests in phased mode. -
I cannot find the counterpart changes to the
src/coreclr/build-test.cmd / shscripts implementing the newtargetSpecificandtargetGenericswitches. I'm not seeing any such logic in the scripts as they stand today.
As a side note, Vlad mentioned in your yesterday meeting that he was hitting some issues with the item-based test traits and mentioned that we might need to rethink this bit and instead use project properties to declare them. Once you manage to fix the issues per my bullets 1-3, be prepared that you may hit difficulties in the test split because of that.
Thanks
Tomas
|
@trylek Thanks for the review.
#34658 Added properties because that was how existing |
|
I guess. I need to change code base on the Mono file relocation too... |
|
The YAML is parsing again. I would expect the test run to pass. Do we need to trigger a build somewhere else to the the changes in |
|
https://dev.azure.com/dnceng/public/_build?definitionId=655&_a=summary runtime-coreclr outerloop |
|
Innerloop looks good to me minus spurious failures. I don't have permissions at the moment to re-run failed jobs due to dotnet/core-eng#9655 Edit -- retriggered failed innerloop jobs.... |
trylek
left a comment
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.
Ship it!
|
And if for whatever reason we haven't managed to scare you off further infra work yet, I think the following items are up for grabs:
Thanks for your great work, tenacity, and patience! Tomas |
I added
I can take this on.
I don't really know how to do this monitoring. If someone monitors it, I'd be happy to refactor this. |
|
All your responses sound great to me, thank you! |
| - template: /eng/pipelines/common/platform-matrix.yml | ||
| parameters: | ||
| jobTemplate: /eng/pipelines/libraries/build-job.yml | ||
| buildConfig: Release |
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.
@sdmaclea do we need to build libraries in Release here? We already build it on Debug: https://github.com/dotnet/runtime/blob/master/eng/pipelines/runtime.yml#L382
Do we need the release build?
Also, this will introduce a duplicate job of the libraries on rolling builds because there's already a libraries job for Release in OSX, because https://github.com/dotnet/runtime/blob/master/eng/pipelines/runtime.yml#L382 will be built on release. See, variables.debugOnPrReleaseOnRolling.
@trylek this might be the reason of the break
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.
I agree this is definitely at least part of the problem, thanks for pointing that out. I'm investigating whether it's the only one.
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.
The duplicate job was prevented by the conditional logic below
condition: >-
and(
ne(variables['debugOnPrReleaseOnRolling'], 'Release'),
or(
eq(dependencies.checkout.outputs['SetPathVars_coreclr.containsChange'], true),
eq(variables['isFullMatrix'], true)))* Build CoreClr tests separately * Build coreclr targetGeneric tests separately for CI * Build coreclr targetGeneric tests separately in runtime.yml * Distinguish generic build based on Libraries config * Build OSX release libraries when CoreCLR changed * Always use tar.gz compression for generic tests * Mark all CoreCLR Interop/COM projects OsSpecific
* Build coreclr targetGeneric tests separately for CI (#34790) * Build CoreClr tests separately * Build coreclr targetGeneric tests separately for CI * Build coreclr targetGeneric tests separately in runtime.yml * Distinguish generic build based on Libraries config * Build OSX release libraries when CoreCLR changed * Always use tar.gz compression for generic tests * Mark all CoreCLR Interop/COM projects OsSpecific * Assume debug/release libraries doesn't matter during test build * Add comments
Fixes #34508
This PR change splits the building of
targetGenericandtargetSpecifictests in ci.ymltestBuildPhaseparameter to build-test-jobtargetGenericbuildtestBuildPhasedparameter to run-test jobDependsOnas neededtestBuildPhase:targetGenericand once withtestBuildPhase:targetSpecifictestBuildPhased:true