-
Notifications
You must be signed in to change notification settings - Fork 4.7k
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
CI: Fix conditions for running mono, and coreclr jobs #75645
Conversation
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.
LGTM, thanks for fixing this!
@trylek One of the issues that I run into is that if you have a JobA depending on a JobB, and JobB is skipped for some reason then even JobA will get skipped, because the condition on the jobs has |
Hmm, what is the situation where depending on a skipped job should result in a failure? Normally I would expect that if jobA gets skipped and jobB depends on it it's natural that jobB gets skipped too as it sits on a pruned branch of the build tree. I agree that if jobB requires some jobA to succeed and jobA gets skipped whereas jobB does not, that indeed seems conflicting and should trigger a failure. Can you please share a more detailed example where you're hitting this situation in the yml files? |
I'm thinking that the "leaf" jobs that will run, should have their full dependency also run. At least that makes sense to me in the cases where JobA wants to use results of JobB .
Looking at https://dev.azure.com/dnceng-public/public/_build/results?buildId=7053&view=logs&j=8687d66b-8ae3-5bcb-b2ee-49e1823a16f0 , the job shows:
From the expanded yaml: - job: run_test_p0_monollvmfullaot__Linux_x64_release
condition: >-
and(succeeded(), or(
eq(dependencies.evaluate_paths.outputs['SetPathVars_mono_excluding_wasm.containsChange'], true),
eq(dependencies.evaluate_paths.outputs['SetPathVars_runtimetests.containsChange'], true),
eq(variables['isRollingBuild'], true)))
...
dependsOn:
- evaluate_paths
- mono_common_test_build_p0_AnyOS_AnyCPU_release
- coreclr__product_build_Linux_x64_release
- mono_llvmaot_product_build_Linux_x64_release
- libraries_build_Linux_x64_Debug
displayName: mono llvmfullaot Pri0 Runtime Tests Run Linux x64 release
..
And this became an issue because I have been changing the paths that trigger various builds. And I'm not sure how to catch cases where a build is unexpectedly getting skipped, because I messed up the condition on a dependency. |
In this PR for instances, I broadened the condition so all the mono, and coreclr jobs will get triggered on mono changes. But not all of the coreclr jobs are needed for mono runs - only the desktop ones. |
5049e42
to
5f78c70
Compare
Updated to have better conditions. Still waiting for the |
3dc26e4
to
b805bad
Compare
For all the non-wasm mono runtime tests: - run if runtime tests themselves have changes - or run if there are any mono changes
.. when mono_except_wasm, coreclr, or installer have changes.
.. as they are not currently used.
b805bad
to
a0d2d0d
Compare
.. succeed, otherwise they will fail when trying to get the results of those dependencies. For example, `Installer Build and Test coreclr OSX_arm64 Release` fails with: ``` [error]Artifact CoreCLRProduct___OSX_arm64_release not found for build 17835. Please ensure you have published artifacts in any previous phases of the current build. ``` .. when `CoreCLR Product Build OSX arm64 release` timed out.
a0d2d0d
to
60b7618
Compare
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 previous skipped runtime CI lanes are running now. Thanks for the prompt fix!
The failures on |
src/mono/
changes didn't trigger somemono jobs that depend on corresponding coreclr jobs.
Fix conditions for runtime tests
run coreclr and library build jobs when mono_except_wasm, coreclr, or installer have changes.
Disable AOT offsets, and crossaot jobs for wasm as they are not currently used.
runtime-dev-innerloop: condition jobs for coreclr, or mono accordingly
runtime-linker-tests: adjust conditions for wasm, and non wasm jobs
Run the installer jobs in runtime.yml only if the dependencies succeed