Make Build Preparation an async process
What does this MR do and why?
In support of the Admission Controller and after discussion at #132770 the BuildPrerequisite
process needs to become async to allow for call and response to/from the Admission Controller.
This MR implements this by introducing a worker to handle driving each job perquisite asynchronously, a service to handle the completion of the workers, and the requisite endpoint in the Build
model to handle the new workflow, as well as updating the logic of the Prerequisite
classes to support this model.
How to set up and validate locally
- In rails console enable the experiment fully
Feature.enable(:admission_controller_hook)
- Run a CI job of any kind. This MR is a functional No-op so nothing should change.
@ayufan @ajwalker This is a first pass at making the prereq process async as per #132770
Related to #378322