Repository navigation
ci: stop heavy modules overlapping the AOT test-app publish - #7217
Conversation
#7131 let the reflection-mode engine tests and the NuGet tester AOT publishes run alongside PublishTestProjectAOTModule. On the 3-core, 7 GB macOS runner that contention stretched the publish from 7 to 24-27 minutes, and the macOS pipeline from about 13 to about 26 minutes. It also tripped the 30-minute module timeout. On macOS only, both modules now wait for the publish again. Linux and Windows keep the overlap.
Codex Review SummaryThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
|
Note Currently processing new changes in this PR. This may take a few minutes, please wait... ⚙️ Run configuration
📒 Files selected for processing: 2
✨ Finishing Touches
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
ReviewThe change is small and targeted. I found no blocking issues.
Things to check or consider:
Overall this looks good to merge once the macOS job confirms the timings. |
The overlap from #7131 slowed the publish on Linux and Windows too. On ubuntu it went from 3.5 to 13.5-18.5 minutes and the pipeline from about 9 to 15-20 minutes. The publish is the critical path everywhere, so the reflection-mode engine tests and the NuGet tester AOT publishes now wait for it on every OS. Static DependsOn attributes replace the macOS-only DeclareDependencies overrides.
ReviewSmall, targeted change. I found no blocking issues.
Considerations:
Looks good to merge once the |
[Medium impact] The PR appears safe to merge; no actionable defects were found in the two added dependencies. SummaryMakes
|
…ish optional (#7219) #7217 made PublishNugetTesterAOTModule depend on PublishTestProjectAOTModule. The Windows NuGet job runs only the Packaging and NuGetPackageTests categories, so PublishTestProjectAOTModule is not registered there and the pipeline failed with ModuleNotRegisteredException. An optional dependency still waits where the module runs and is ignored where it does not.
Problem
Since #7131,
PublishTestProjectAOTModuleruns at the same time as the reflection-mode engine tests, packing, the RPC tests, the NuGet package tests andPublishNugetTesterAOTModule. That last module runs three more native AOT (ILC) publishes. On every OS this contention slowed the publish, and the publish is the critical path becauseRunEngineAotTestsModulewaits for it. The whole pipeline step got slower:On macOS the publish now runs close to the default 30-minute module timeout and hit it on 6 PR runs on 2026-10-20. #7216 raises that timeout as a backstop. This PR deals with the contention that causes it.
#7129, which made the suite run fully in CI, landed in the same window and added test modules. That accounts for some of the slowdown, but not a 4–5× slower publish.
Change
On every OS,
RunEngineTestsModuleandPublishNugetTesterAOTModuledeclare[DependsOn<PublishTestProjectAOTModule>]again, as they did before #7131:PublishNugetTesterAOTModuleno longer runs native AOT compiles at the same time as the main publish.The Windows NuGet job (
--categories Packaging NuGetPackageTests) does not run the publish. There ModularPipelines skips the module, a skipped module counts as complete, andPublishNugetTesterAOTModuledoes not wait.Packing and the RPC tests still overlap the publish, because the isolated artifacts tree from #7131 removed the reason they waited. They are the next candidates if the timings stay poor.
Validation
TUnit.Pipelinebuilds.modularpipelinejobs are the real test. I will compare their module timings with the table above.