EDK2 CI and edk2-platforms


Jeff Brasen
 

Hello,

Are there any plans on integrating the CI system (https://github.com/tianocore/edk2/tree/master/.pytool) to be able to test platform/silicon code hosted in the edk2-platforms repository? We are starting to develop some host based tests for our drivers and want to make sure we are supporting these in a way that will transfer well when we upstream in the future.

Would the .pytool be eventually mirrored into the edk2-platforms code or would the code in edk2 eventually expand to build things hosted in edk2-platforms?

Thanks,
Jeff


Laszlo Ersek
 

On 01/07/21 19:00, Jeff Brasen wrote:
Hello,

Are there any plans on integrating the CI system (https://github.com/tianocore/edk2/tree/master/.pytool) to be able to test platform/silicon code hosted in the edk2-platforms repository? We are starting to develop some host based tests for our drivers and want to make sure we are supporting these in a way that will transfer well when we upstream in the future.

Would the .pytool be eventually mirrored into the edk2-platforms code or would the code in edk2 eventually expand to build things hosted in edk2-platforms?
I believe the idea has been floated before; unfortunately I don't
remember any specifics.

Laszlo


Sean
 

There are a few challenges with the model of the edk2-platforms repo given that it doesn't have tracking of edk2 or any other dependency (submodule or otherwise). It also has no clear owner or anyone driving repository wide initiatives (like ci).

Ignoring that, the work to enable a "core ci" and "platform ci" in edk2-platforms would depend on the complexity of the build process of your platform but should be pretty small.

First you need to support the pytools based build process (https://github.com/tianocore/edk2-pytool-extensions). After that it just requires using the existing azurepipeline template files.


As an example see what is needed to enable "platform ci" for OVMF is here (and this includes additional work for automatic execution on qemu).
https://github.com/tianocore/edk2/tree/master/OvmfPkg/PlatformCI

To enable core CI
you need this per package: https://github.com/tianocore/edk2/blob/master/OvmfPkg/OvmfPkg.ci.yaml

And some sort of very simple https://github.com/tianocore/edk2/blob/master/.pytool/CISettings.py

Another example is
EmulatorPkg here
https://github.com/tianocore/edk2/tree/master/EmulatorPkg/PlatformCI

A third example you can compare to for a platform that resides outside the edk2 tree is our Project Mu platform repo here:
https://github.com/microsoft/mu_tiano_platforms
but this is based on the Project Mu version of edk2 code and uses submodules to track dependencies.

Anyway, it has been talked about off and on, for the last few years but in my opinion the platform owners need to enable this.

Here is one effort Jeremiah Cox did to enable a more complicated Intel KBL based minplatform using pytools. (step 1 of getting platform ci) https://github.com/out0xb2/edk2-platforms/tree/feature/openkbl/galagopro3 It was presented at a edk2 community meeting in 2019 but was never picked up by the platform owners.


Thanks
Sean

On 1/7/2021 10:00 AM, Jeff Brasen wrote:
Hello,
Are there any plans on integrating the CI system (https://github.com/tianocore/edk2/tree/master/.pytool) to be able to test platform/silicon code hosted in the edk2-platforms repository? We are starting to develop some host based tests for our drivers and want to make sure we are supporting these in a way that will transfer well when we upstream in the future.
Would the .pytool be eventually mirrored into the edk2-platforms code or would the code in edk2 eventually expand to build things hosted in edk2-platforms?
Thanks,
Jeff