Skip to content
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

Clarify the acquisition topic #10636

Merged
merged 1 commit into from
Sep 26, 2024
Merged
Changes from all commits
Commits
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
4 changes: 3 additions & 1 deletion documentation/specs/BuildCheck/BuildCheck-Architecture.md
Original file line number Diff line number Diff line change
Expand Up @@ -106,7 +106,7 @@ How we'll internally handle the distributed model:
Planned model:
* Checks factories get registered with the BuildCheck infrastructure (`BuildCheckManager`)
* For inbox checks - this happens on startup.
* For custom checks - this happens on connecting `ILogger` instance in scheduler node receives acquistion event (`BuildCheckAcquisitionEventArgs`). This event is being sent by worker node as soon as it hits a special marker (a magic property function call) during early evaluation. Loading is not processed by worker node as currently we want custom checks only in the main node (as they will be only given data proxied from BuildEventArgs).
* For custom checks - this happens on connecting `ILogger` instance in scheduler node receives acquistion event (`BuildCheckAcquisitionEventArgs`). This event is being sent by worker node as soon as it hits a special marker (a magic property function call) during early evaluation. Loading is not processed by worker node as currently we want custom checks only in the main node (as they will be only given data proxied from BuildEventArgs). Loading in worker node in Evaluation context would result in double work as the custom Check needs to be loaded in the main node anyways.
The `BuildCheckAcquisitionEventArgs` should be sent prior `ProjectEvaluationStartedEventArgs` (buffering will need to take place), or main node will need to replay some initial data after custom check is registered.
* `BuildCheckManager` receives info about new project starting to be build
* On scheduler node the information is sourced from `ProjectEvaluationStartedEventArgs`
Expand Down Expand Up @@ -136,6 +136,8 @@ Since we are unlikely to enable any checks by default in .NET 9, the focus in th

# Acquisition

(For details on internals of processing acquisition by the infrastructure see [Check Lifecycle](#check-lifecycle))

BuildCheck employs two distinct types of checks: inbox and custom. As a result, the acquisition and distribution processes vary.
Inbox rules are integrated into the MSBuild repository, while custom checks can be packaged as NuGet packages and detected by MSBuild provided they adhere to a specific structure.

Expand Down