There are two parts of this I think should be discussed.
1. Core-Ci for emulator, ovmf, armvirt packages.
a. I think there is some value here for those package maintainers. The core ci does spell checks, char encoding checks, lib class declaration, etc. Those seem valuable to help keep the package clean.
B. The core ci works on an assumption that the DSC builds every module within the package and for that I think you would want to create new DSC file in those packages that included every module in the package and used NULL libs to resolve as many dependencies as possible. That DSC would be only for Core CI.
2. Platform Ci for emulator, ovmf, armvirt packages.
a. I think this is what we want long term. It would compile the platform and ideally do boot testing and checks.
b. Platform Ci should scale out to all sorts of platforms (open and closed src) that want to register for CI and are willing to keep their platform current.
c. Should be a signal into the PR process. I don't think it should block by policy, but reviewers should use the results to evaluate the impact of the PR.
d. I have setup a branch here with Platform CI.
1. Code changes to enable pytool to build of OVMF and EmulatorPkg. https://github.com/spbrogan/edk2/tree/ci-for-ovmf
2. 4 pipelines here: https://dev.azure.com/tianocore/edk2-ci-play/_build?treeState=XEVtdWxhdG9yUGtnJFxPVk1G&view=folders
3. OVMF GCC5: 8 builds. see the matrix here https://dev.azure.com/tianocore/edk2-ci-play/_build/results?buildId=4915&view=results and https://github.com/spbrogan/edk2/blob/ci-for-ovmf/.azurepipelines/platforms/Ovmf/Ubuntu-GCC5.yml#L22 . This worked without issue.
4. OVMF VS2019: Same 8 builds. Results here: https://dev.azure.com/tianocore/edk2-ci-play/_build/results?buildId=4916&view=results and matrix file here https://github.com/spbrogan/edk2/blob/ci-for-ovmf/.azurepipelines/platforms/Ovmf/Windows-VS2019.yml#L22 . The full build fails 2 of the "flavors". See https://bugzilla.tianocore.org/show_bug.cgi?id=2636
5. EmulatorPkg GCC: 2 builds. https://dev.azure.com/tianocore/edk2-ci-play/_build?definitionId=39&_a=summary IA32 fails so it currently only builds X64
6. EmulatorPkg VS2019: 2 builds https://dev.azure.com/tianocore/edk2-ci-play/_build?definitionId=40&_a=summary IA32 fails so it currently only builds X64.
Feedback wanted. Happy to add more if there is some agreement that you like this direction.
Also if you have ideas how to run the images and then exit from the shell with a status so we can tell success/failure that would be great.
Thanks
Sean